Bug#256714: Incomplete initrd causes failure of ide device detection on kernel upgrade
Package: initrd-tools
Version: 0.1.70
Description:
apt-get installed kernel-images fail to find IDE devices on boot
What I did:
1. installed debian/testing via net installer, everything works fine,
system boots and reboots normally
2. upgraded to debian/unstable, everything still works find, system
boots and reboots normally
3. apt-get install kernel-image-x.x.x-x-xxx
4. reboot and choose the new kernel image from the grub menu, IDE
devices not found
What happens:
-system A (upgrade from 2.6.6-1-686-smp to 2.6.6-2-686-smp)
-P4P800 Deluxe MB
-Pentium 4 2.8Ghz HT, 512k L2 cache
-2 x SAMSUNG SP1213C 120GB S-ATA hard drives
-1 SAMSUNG DVD R/W SH-W08A dvd /rw drive
In this case the system boots normally since the root device is on a
S-ATA hard drive which uses libata. The DVD drive, however, does not
appear, no /dev/hd* nodes are present. rmmod/modprobe cycling the ide-*
and cd modules doesn't help.
-system B (upgrade from 2.6.5-1-386 2.6.6-1-686)
-FS51 MB (from ShuttlX system)
-Pentium 4 2.4 GHz, 512k L2 cache
-1 SAMSUNG SP0802N 80GB IDE hard drive
-1 SAMSUNG DVD R/W SH-W08A dvd r/w drive
This system won't even boot since the root device points to an IDE hard
drive.
Workaround:
Mounting and investigating the initrd image from the non-bootable,
recently installed kernel (on system 1) I found that the 'loadmodules'
file contained something like this:
modprobe -k ata_piix
modprobe -k sg
modprobe -k sd_mod
whereas the old, bootable kernel's initrd had a 'loadmodules' file that
looked like so:
modprobe -k vesafb > /dev/null 2>&1
modprobe -k fbcon 2> /dev/null
modprobe -k unix 2> /dev/null
modprobe -k pdc202xx_new > /dev/null 2>&1
modprobe -k aec62xx > /dev/null 2>&1
modprobe -k alim15x3 > /dev/null 2>&1
modprobe -k amd74xx > /dev/null 2>&1
modprobe -k atiixp > /dev/null 2>&1
modprobe -k cmd64x > /dev/null 2>&1
modprobe -k cs5520 > /dev/null 2>&1
modprobe -k cs5530 > /dev/null 2>&1
modprobe -k cy82c693 > /dev/null 2>&1
modprobe -k generic > /dev/null 2>&1
modprobe -k hpt34x > /dev/null 2>&1
modprobe -k hpt366 > /dev/null 2>&1
modprobe -k ns87415 > /dev/null 2>&1
modprobe -k opti621 > /dev/null 2>&1
modprobe -k pdc202xx_old > /dev/null 2>&1
modprobe -k piix > /dev/null 2>&1
modprobe -k rz1000 > /dev/null 2>&1
modprobe -k sc1200 > /dev/null 2>&1
modprobe -k serverworks > /dev/null 2>&1
modprobe -k siimage > /dev/null 2>&1
modprobe -k sis5513 > /dev/null 2>&1
modprobe -k slc90e66 > /dev/null 2>&1
modprobe -k triflex > /dev/null 2>&1
modprobe -k trm290 > /dev/null 2>&1
modprobe -k via82cxxx > /dev/null 2>&1
modprobe -k ide-generic
modprobe -k ide-disk
modprobe -k ata_piix
modprobe -k sg
modprobe -k sd_mod
Eventually I figured how to add things to this file, namely by adding
lines to /etc/mkinitrd/modules (which in my install had no un-commented
lines). Adding the lines
ide_generic
ide_disk
ata_piix
sg
sd_mod
and re-installing the new kernel allowed the system to boot up and
detect all IDE drives on both systems 1 and 2.
I think this counts as a bug since the kernel installed from the cd
generates a proper initrd, but the one installed via apt-get fails to
generate an appropriate initrd image. Perhaps it has to do with upgrade
from testing to unstable but it seems like the /etc/mkinitrd/modules
file might always want to contain those lines about ide devices to
prevent this from happening. Anyway, hopefully this will save someone
else a day or two of frustration.
Thanks,
Charles
--
The loneliest goat sees the last sunset last...
Reply to: