Fedora Update Breaks Boot (NVIDIA driver)

I was a little miffed when this happened. I solved it. Here's the background.

First, the NVIDIA driver installation (which is just marvellous) didn't find pre-compiled kernel interfaces, and so as part of it's installation compiled headers and generated kernel interfaces to the driver.

This broke with a kernel update.

After the F-11 update, boot would come up, and when X started (I was expecting login dialogue), I got a blank, dark screen, no cursor. Unfortunately, Fedora 11 does NOT come with the nice boot screen that Ubuntu does. Fortunately, you can change it. (More on that later).

So no amount of reboot attempts got me anywhere, so I tried Ubuntu - to get to alternate boot device from the ASUS BIOS takes a ALT-F8 key-press at start-up. Paranoid, I picked an Ubuntu "recovery" mode (I have no idea what that is, does, never tried it before). It checked disks, scanned hardware (if I remember correctly) and then rebooted - this time I went into normal boot and it came up.

Phew!

Since NVIDIA was running on Ubuntu (I had dual monitors again) I guessed this must be what happened - new kernel. To test, I wanted to boot to console - init 3 instead of init 5 for Fedora.

'mount' showed me my ubuntu usb was on /dev/sdb1; /dev/sda was my internal drive. Beginning with F-11, Fedora created filesystems with ext4, and ubuntu doesn't support this. I booted from the Fedora live CD and mounted the fedora disk.

I looked at the grub menu from Ubuntu, and compared it with the grub menu in fedora - buggers! I enabled a 10 second timeout in Fedora, and enabled the menus (fedora's grub was still allowing booting in recovery mode, or in past kernels).

I strongly encourage changing this in your Fedora-11:
  • edit /boot/grub/grub.conf;
  • change timeout;
  • comment out hiddenmenu:
    # timeout=0
    timeout=10
    splashimage=(hd0,0)/grub/splash.xpm.gz
    # hiddenmenu
Now, I was able to boot the previous kernel, and indeed everything came up as expected. The next step was to change to runlevel, come up in the updated kernel and re-install the NVIDIA driver (just so it could re-configure the kernel interfaces to itself). I changed /etc/inittab to init 3, and booted. Everything came up fine. As root, I ran the NVIDIA install script, it did it's stuff, recompiled interfaces for this kernel. I changed runlevels - init 5 - and up I was.

While this is annoying, at least it's simple and relatively quick.

I'm not sure - and will watch - if a similar kernel update in Ubuntu will have the same effect (I don't think so, as I've had kernel updates, always used the NVIDIA driver, and never had to do this manually).

Finally, I thought it would be nice to have the ubuntu usb on my Fedora Grub menu. There are a couple of things different between Fedora and Ubuntu grubs (even though they both report grub 0.97):
  • Ubuntu boot menu is in /boot/grub/menu.lst; Fedora is in /boot/grub/grub.conf
  • Ubuntu (nicely) identifies disks by UUID; Fedora grub does not appear capable of this;
I edited the Fedora grub.conf file - adding some boot lines from the Ubuntu menu.lst. In ubuntu, it looks something like this (I've replaced chunks of the long uuid's w/ "....")
title Ubuntu 9.04, kernel 2.6.28-13-generic
uuid 2........02da
kernel /boot/vmlinuz-2.6.28-13-generic root=UUID=2.........02da ro quiet splash
initrd /boot/initrd.img-2.6.28-13-generic
Fedora's grub doesn't like this; I changed the uuid line to:
root (hd1,0)
and this seems to make everything happy (the uuid on the kernel line remains intact) - my other (backup drives) are off of a usb hub, so it seems this usb is always showing as hd1, which is good.

0 comments:

Post a Comment