please try the attached patch,
should load ide-generic even if udev didn't yet bring it up:
patch -p1  /usr/share/initramfs-tools/scripts/init-premount/udev < 
ide-generic.udev.patch

for this trial please remove any ide-generic or ide-disk 
out of /etc/mkinitramfs/modules, then update-initramfs -u
and reboot,
if it doesn't work out you still need to modprobe manually
ide-generic and disc..

thanks for your feedback.

-- 
maks
--- udev-0.076/extra/initramfs.premount 2005-12-23 12:36:04.000000000 +0100
+++ udev-0.076-ma/extra/initramfs.premount      2005-12-23 12:35:52.000000000 
+0100
@@ -21,6 +21,38 @@ mkdir /dev/.udev/ /dev/.udev/db/ /dev/.u
 udevd --daemon
 
 udevsynthesize
+
+# Our job now is to make the block device for the root filesystem available.
+# This is actually a bit trickier than it first appears because we first need
+# to figure out which driver needs it, and to do that, we need to know what
+# type of bus it's on.  Fortunately we have all that information, this still
+# feels like an ungodly hack though.
+. /conf/initramfs.conf
+. /scripts/functions
+case "${BOOT}" in
+       local)
+       case "${ROOT}" in
+               /dev/root)
+               # An interesting case, this root device was specified as a
+               # major/minor pair.  Fortunately we have that information
+                       case "${major}" in
+                               3|22|33|34|56|57|88|89|90|91)
+                                       # traditional ide
+                                       root_type=ide
+                                       ;;
+                               80|81|82|83|84|85|86|87)
+                                       # ide on i2o
+                                       root_type=ide
+                                       ;;
+                       esac
+                       ;;
+               /dev/hd*)
+                       # Ahh, plain-old traditional ide
+                       root_type=ide
+                       ;;
+       esac
+esac
+
 while [ -d /dev/.udev/queue/ ]; do
     sleep 1
     udevd_timeout=$(($udevd_timeout - 1))
@@ -29,5 +61,13 @@ while [ -d /dev/.udev/queue/ ]; do
     fi
 done
 
+# If we're booting from IDE, we may need to load ide-generic.
+case "${root_type}" in
+       ide)
+               if [ ! -e "${ROOT}" -o "${ROOT}" = "/dev/root" ]; then
+                       modprobe -q ide-generic
+               fi
+esac
+
 # Leave udev running to process events that come in out-of-band (like USB
 # connections)

Reply via email to