On Sun, 2011-02-13 at 13:19 +0000, Peter Maydell wrote: > Package: linux-base > Version: 2.6.32-30 > > I upgraded my Debian box to squeeze today, and after the initial > "install new kernel and udev" the system didn't boot because > linux-base hadn't correctly updated lilo.conf to use UUIDs rather > than /dev/hd*. > > My lilo.conf had a stanza for the kernel like this: > # Linux kernel options: > image=/boot/vmlinuz # where to find it... > initrd=/boot/initrd.img > label=Linux # name to type to boot it > alias=l > root=/dev/hdb2 # Linux partition is D: 2nd partition > read-only # don't allow writes until it's been checked > > ...and linux-base's postinst didn't update the root= parameter. > > This appears to be because _lilo_update() decides whether > to update an image= stanza using this regex: > > $in_generic = ($value =~ m|^/vmlinuz(?:\.old)?$|); > > ...which will only match if you were keeping your kernels > in /, not if they're in /boot/ as mine are. This has nothing to do with where the kernel images are (they are always installed in /boot), but only to do with where the symlinks are created. The default is to create them in /, but I recall there is an option (now deprecated) to create them in /boot. I suppose we could check for that as well. > Given that once you're running the new kernel lilo will > fail to handle the stanzas with /dev/hd* in them: > Fatal: Illegal 'root=' specification: /dev/hdb2 > > it seems to me that the best approach would be to rewrite > them in all image= stanzas. No, this is wrong because custom kernel configurations which do not use an initramfs cannot interpret UUID specifications. Ben. -- Ben Hutchings Once a job is fouled up, anything done to improve it makes it worse.
Attachment:
signature.asc
Description: This is a digitally signed message part