I recently had an issue on my Gentoo desktop which was sort of frustrating, but which I’ve since gotten past. I turned my machine on one day, only to find the mouse and keyboard not responding once the login screen came up. Now, most of the time that’s just what can happen after an update, if you don’t reemerge xorg-server and the xf86-input-whatever packages. Problem was, I couldn’t log in, and for some reason, eth0 hadn’t come up. This meant no SSH, either.
First, a little about my setup. I have two network cards in this machine. One is the onboard gigabit one, which is my main nic (eth0). The other is an extra PCI one (eth1) that I have statically configured for cases when I want to do a direct transfer between machines, or troubleshoot (like in this case). The problem was, eth0 wasn’t coming up, and was instead doing a DHCP timeout (as if it weren’t connected at all). I checked the cables, all looked good.
I ended up booting into the System Rescue CD (which I recommend having on hand if you do anything with computers) and checking a few things out. I checked /var/log/messages and found these lines:
Mar 27 15:18:56 fishingcat kernel: [ 13.847407] ADDRCONF(NETDEV_UP): eth0: link is not ready
Mar 27 15:18:57 fishingcat dhcpcd: eth0: waiting for carrier
This had me puzzled, but then I found this:
Mar 27 15:27:12 fishingcat /etc/init.d/udev-mount: Udev uses a devtmpfs mounted on /dev to manage devices.
Mar 27 15:27:12 fishingcat /etc/init.d/udev-mount: This means that CONFIG_DEVTMPFS=y is required
Mar 27 15:27:12 fishingcat /etc/init.d/udev-mount: in the kernel configuration.
Mar 27 15:27:12 fishingcat /etc/init.d/udev-mount: ERROR: udev-mount failed to start
Mar 27 15:27:12 fishingcat /etc/init.d/udev: ERROR: cannot start udev as udev-mount would not start
Bingo. I had remembered from an encounter at work that udev likes to create persistent naming rules for hardware. This is a new feature, and is generally a good thing: it keeps eth0 as eth0 for the next reboot, same for eth1. But with udev not starting, no dice. So, following the error message, I enabled the appropriate kernel option in make menuconfig. (For me, this was under Device Drivers -> Generic Driver Options -> Maintain a devtmpfs filesystem to mount at /dev.)
I’m not really sure what caused that to become disabled in the first place, but it’s fixed now, so there you go.