Why didn’t the Linux server start with an active network connection

driversethernetipnetworking

I booted my Linux server today via WOL. When it came up, I couldn't SSH onto it. I checked the server and it had booted into the OS but wasn't reachable on the network. I checked my router which showed it as an active client (this may have been a hangover from it being up a few minutes previous) but with no connections. So, I rebooted it locally and the next time it booted up as normal with an active network connection. I performed a grep on dmesg for 'eth' and compared it to the successful boot. See below:

Boot with networking:

[    1.331587] skge 0000:01:04.0: eth0: addr 00:0e:a6:15:17:76
[    1.353667] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.64.
[    1.353930] forcedeth 0000:00:04.0: PCI INT A -> Link[APCH] -> GSI 22 (level, high) -> IRQ 22
[    1.353937] forcedeth 0000:00:04.0: setting latency timer to 64
[    1.872912] forcedeth 0000:00:04.0: ifname eth1, PHY OUI 0x732 @ 1, addr 00:0e:a6:15:0e:a1
[    1.872917] forcedeth 0000:00:04.0: timirq lnktim desc-v1
[   16.614650] eth1: no link during initialization.
[   16.615258] ADDRCONF(NETDEV_UP): eth1: link is not ready
[   16.649234] skge 0000:01:04.0: eth0: enabling interface
[   16.668500] ADDRCONF(NETDEV_UP): eth0: link is not ready
[   18.416816] skge 0000:01:04.0: eth0: Link is up at 100 Mbps, full duplex, flow control both
[   18.417081] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   28.592014] eth0: no IPv6 routers present

Boot without networking:

[    1.293152] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.64.
[    1.293484] forcedeth 0000:00:04.0: PCI INT A -> Link[APCH] -> GSI 22 (level, high) -> IRQ 22
[    1.293491] forcedeth 0000:00:04.0: setting latency timer to 64
[    1.353544] skge 0000:01:04.0: bad (zero?) ethernet address in rom
[    1.354130] skge 0000:01:04.0: eth0: addr 00:00:00:00:00:00
[    1.812906] forcedeth 0000:00:04.0: ifname eth1, PHY OUI 0x732 @ 1, addr 00:0e:a6:15:0e:a1
[    1.812911] forcedeth 0000:00:04.0: timirq lnktim desc-v1
[   17.384526] eth1: no link during initialization.
[   17.396719] ADDRCONF(NETDEV_UP): eth1: link is not ready

The obvious culprit seems to be the line [ 1.353544] skge 0000:01:04.0: bad (zero?) ethernet address in rom but I don't know what would cause this situation to occur.

Here's some of the output around this line:

[    1.353449] ACPI: PCI Interrupt Link [APC2] enabled at IRQ 17
[    1.353456]   alloc irq_desc for 17 on node -1
[    1.353459]   alloc kstat_irqs on node -1
[    1.353470] skge 0000:01:04.0: PCI INT A -> Link[APC2] -> GSI 17 (level, high) -> IRQ 17
[    1.353533] skge: 1.13 addr 0xe8008000 irq 17 chip Yukon-Lite rev 7
[    1.353544] skge 0000:01:04.0: bad (zero?) ethernet address in rom
[    1.354130] skge 0000:01:04.0: eth0: addr 00:00:00:00:00:00

Has anyone any suggestions?


In case it's pertinent, the Linux server has a static IP defined on the router. When the server starts up, it should request an IP address from the DHCP server which in this case it my router and it should always get the IP address 192.168.2.103.

Best Answer

This has all the hallmarks of a driver-related problem. Perhaps this motherboard is too new for the kernel version of your distro-of-choice. It also looks like a timing issue of some kind relating to when certain modules load into the kernel, the skge lines in the non-working output occur a half second sooner than the ones in the working one, and perhaps that's where things are failing.

Related Topic