29 Dec

recovering from a dodgy upgrade

Had a bit of a hair-raiser today. I ran an apt-get update; apt-get upgrade today on my two main home machines (both run Fedora), and got a bit of a thrill when the big one, Monolith, which my GF fiancee uses (may her pointy boots stay far from my shins), refused to boot!

The main difference between before and after the upgrade seems to have been a udev package, which replaces the old dev.

The problem manifested itself by the machine running through the Grub boot, then apparently freezing after a line that read:

Red Hat nash version 3.5.22 starting

After a bit of googling, I found that more information can be gotten by removing the “quiet” and “rhgb” (or something) options from the kernel init string in the Grub startup.

Anyway – to cut a long story short, here’s what was happening:

Between Fedora Core 2 and Fedora Core 3, the system was changed to use a udev instead of dev system to access hardware. Something about new dynamic loading or something. Nope, I don’t know either…

However, the dependencies for the new udev RPM do not mention that you also need to upgrade your kernel at the same time to use the new system (the Fedora Core 2 kernel does not load up the udev module, I guess), and that failing to do so will break your system.

Solution:

  • Boot from your Fedora boot disc.
  • Load up the rescue image (type linux rescue and hit enter) when you are asked which image to use.
  • Type chroot /mnt/sysimage when booted, to boot into your system.
  • Now, type apt-get install kernel. A list of options will be presented. Choose the one which fits your system best and has the highest version number. I chose kernel-2.6.9-1.681_FC3.
  • Install the new kernel. In my case it was apt-get install kernel#2.6.9-1.681_FC3.
  • Also in my case, the install fsked up, in that it did not create an entry in /boot/grub/grub.conf for the new kernel. So, edit it, and add a new entry. In my case, I added these to the end of the file:
    title Fedora Core 3 (2.6.9-1.681_FC3)
            root (hd0,0)
            kernel /boot/vmlinuz-2.6.9-1.681_FC3 ro root=LABEL=/1 rhgb quiet
            initrd /boot/initrd-2.6.9-1.681_FC3.img
    
  • Reboot, making sure to remove the boot CD. When the Grub screen comes up, choose the new kernel.
  • That should work fine. If all is well, then edit /boot/grub/grub.conf again, and change the default to the new setup.