Problem with netconsole and eth0 timing

don fisher hdf3 at comcast.net
Thu Sep 27 00:38:27 EDT 2018


On 9/26/18 2:33 PM, valdis.kletnieks at vt.edu wrote:
> On Wed, 26 Sep 2018 13:25:35 -0700, don fisher said:
>> Would you tell me how to tell the driver that it is to be eth0, ip
>> address etc. Maybe on linux command line, but I do not know the format.
> 
> To quote some guy named Don Fisher:
> 
>> my kernel and including the proper command (as shown below) in the linux boot string:
>>    netconsole=64001 at 192.168.7.60/eth0,64001 at 192.168.7.55/34:e6:d7:01:2a:dd
> 
> That's how. The netconsole command gets the info it needs from there, and tells
> the network layer how to configure the ethernet device and the network layer -
> although mostly the network layer.  And the devices will auto-name themselves
> during boot, so all you need to do is know *which* name the kernel gives to the
> port you want to use, and then use that name.
> 
> So grovel around in dmesg, and look for lines like (2 examples I have handy here)
> 
>   grep eth /var/log/dmesg
> [    7.278395] igb 0000:07:00.0: added PHC on eth0
> [    7.278398] igb 0000:07:00.0: eth0: (PCIe:5.0Gb/s:Width x2) 24:6e:96:10:db:64
> [    7.278916] igb 0000:07:00.0: eth0: PBA No: G61346-000
> [    7.368911] igb 0000:07:00.1: added PHC on eth1
> [    7.368913] igb 0000:07:00.1: eth1: (PCIe:5.0Gb/s:Width x2) 24:6e:96:10:db:65
> [    7.369372] igb 0000:07:00.1: eth1: PBA No: G61346-000
> 
> dmesg | grep eth
> [    2.642006] e1000e 0000:00:19.0 eth0: (PCI Express:2.5GT/s:Width x1) f0:1f:af:0c:8a:da
> [    2.642076] e1000e 0000:00:19.0 eth0: Intel(R) PRO/1000 Network Connection
> [    2.642118] e1000e 0000:00:19.0 eth0: MAC: 10, PHY: 11, PBA No: 7011FF-0FF
> [    5.071095] e1000e 0000:00:19.0 eno1: renamed from eth0
> [   44.516004] e1000e 0000:00:19.0 eth0: renamed from eno1
> 
> And find the one that has the MAC address of the port you want to use. Note
> that you want the kernel-assigned device name, not the one that udev/systemd
> finally assign to the device. So for the second example (my laptop), you'd want
> either the eth0 or eno1 name (depending which one was in effect when the
> netconsole module initializes.  The initial eth0 is from pci enumeration, the
> rename to eno1 is courtesy of the kernel, and then the rename back to eth0 by
> systemd.  Some experimentation may be needed (I've got a few servers that have
> 4 1G ports on the motherboard and multiple 10G/40G dual-port cards, so
> sometimes the port wired to our management network ends up at eth6 or eth7...)
> 
> So if the port you want to use gets named eth4 by the kernel, you use
> netconsole=64001 at 192.168.7.60/eth4,64001 at 192.168.7.55/34:e6:d7:01:2a:dd
> 
> (Gory ethernet details follow :)
> 
> Remember that strictly speaking, the ethernet device itself doesn't *need* to
> know what its IP address is - it only needs to know its own MAC address so it
> knows which packets on the wire to accept to hand to the network stack, and
> *maybe* a list of other MAC addresses it should accept.
> 
> And the hardware already knows its own MAC address.. :)
> 
> You can get ethernet devices working with a *very* small set of functions:
> 
> 0) Tell the kernel your hardware state (link/no link, MAC address, a few other things)
> 1) Receive packets for your own MAC address
> 2) Receive broadcast packets
> 3) Receive packets for another specified MAC address (semi-optional)
> 4) Receive packets in promiscuous mode (semi-optional)
> 5) Transmit packet to the MAC address provided
> 
> Pretty much everything else can be done in kernelspace (though modern
> cards often provide offload of some IP and even TCP handling, interrupt
> coalescing, and all sorts of other stuff)
> 
> (I learned far too much about minimalist Ethernet when the Clarkson Packet
> Drivers were getting created in the cubicle next to mine. :)

Thanks. I tried building with the driver embedded in the kernel, but the 
compile failed with a halt. No crash is apparent, just a halt. It turned 
out that this was repeated until I removed the netconsole command during 
boot. System appears stable now. I will try tomorrow to embed the 
driver, then add netconsole option in the command line.

Don






More information about the Kernelnewbies mailing list