udev update killed all HDD dev nodes
Hi all
I built a little ftp server out of an ancient (Pentium II) machine and threw Gentoo on it. It ran fine for about a week, then I got a udev update. After applying the update and rebooting, GRUB was broken (when the computer turned on, it just printed the word "GRUB" to the screen a billion times and never stopped). I booted back into the live CD, reinstalled grub, and that seemed to work fine... However, once the machine boots now, it can't find any /dev/hd* nodes. Oddly, it DOES boot successfully (though it throws errors about the missing drives) and sees all of the root partition (but not my separate boot partition or my ftp data partition). Anyone have any ideas about how this got so broken and how to fix it? This had to have something to do with udev, and I'm not especially familiar with it. Ordinarily I'd just reinstall the OS, but since the machine is so old it took forever to do all the compiling for the Gentoo installation and I'd like to avoid that if possible. Thanks |
Please show us the output of fdisk -l (run as root), and the contents of your /etc/fstab file. And be sure to make it clear which drive is which. Probably you just need to update the fstab entries.
One change that's been going creeping the system recently is that the kernel drivers have been changed so that all drives are created as sd*, and hd* is deprecated. Also, many distros now use uuids or labels in fstab to mount important system partitions, so that changes in the /dev entries don't impact them, but this isn't always true of non-system disks. I'm guessing that this might be what happened to you. My Debian systems had to go through the change a few months ago, but they provided a helpful script to automatically modify my fstab and a warning to check it afterwards. |
Hi David,
I forgot to point out before that fdisk -l returns nothing at all... I've run into the hd*/sd* problem before, but since this machine is so old, I didn't think that was the issue. Also, when I had those problems with other machines, they wouldn't boot until I made those changes to GRUB and fstab. Even if that were the case, /dev/sd* would at least EXIST (they don't in this case). What boggles my mind is that GRUB's real_root is pointing at /dev/hda1, and that works fine. Like I said, with everything pointing at hd*, the machine still manages to boot somehow, but my non-root partitions aren't recognized and all my /dev/hd* are gone. Note also that when the problem first started, my fstab lines were all UUID based, so it shouldn't matter if it was hd* or sd*. For the record though, my fstab (with the /dev versions commented out) is Code:
UUID=e33e6ec6-c91a-469c-ba5c-44274c777064 /boot ext3 defaults,noatime 1 2 /dev/hdb2 or UUID=828d... is my ftp data partition. It is not mounted and is not seen in /dev. /dev/hda3 or UUID=d8dd... is my root partition. I can see files and directories in here (except the two directories above), but is not seen in /dev. Hopefully that makes it a little more clear why I'm so confused... Thanks! |
Well, that boggles me then. I have no idea what it could be, other than some problem with udev or its rules. Can you try returning to a previous version of it?
Also, what does cat /proc/partitions say? And where do the symlinks in /dev/disk/by-uuid/ point to, if anything? Perhaps you're simply never leaving the initial ramdisk and you're only seeing the rescue shell or something like that. |
Well THAT'S weird...
Code:
$ cat /proc/partitions Code:
$ ls /dev Let me know if you think of anything. Thanks |
Sounds like you're attempting to still use the old PATA support - it's gone and udev won't build the nodes. Move up to libata. Check the gentoo site forums.
|
I think you guys are onto something. libata was the missing piece of my google searches, I think. I hit this:
http://bugs.gentoo.org/show_bug.cgi?id=302173 which sounds a LOT like what's happening to me (my update crossed over udev 150). Previously, when I had transitioned to libata it happened automatically, but in this case, the kernel was not configured for it for some reason. It's recompiling now... will probably have to run overnight, but I'll let you know how it goes. Thanks |
Alright, I think I finally got it fixed.
syg00 was right, for some reason the kernel wasn't configured for libata (I assumed it would be by default... but that's what happens when you assume). Once my new kernel was compiled, I had to change everything to sd*, but for some reason I also had to change the grub boot line from real_root=/dev/sda3 to root=/dev/sda3. I don't know why that should have anything to do with it, but it kernel panicked until I changed that, more or less for lack of other options. Thanks everyone. |
All times are GMT -5. The time now is 10:09 AM. |