[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#293481: kernel-image-2.6.8-2-686: Cannot open root device





Thiemo Seufer wrote:



Looks like some driver went missing from this initrd. This would be
a bug in initrd-tools (http://bugs.debian.org/initrd-tools).
Hi Thiemo

Hmm - having to learn more about Linux bootstrapping than I'd like :-).

I tried adding these lines

   ide_generic
   ide_disk
   ata_piix
   sg
   sd_mod

to /etc/mkinitrd/modules as suggested by someone on the initrd-tools bugs page, and rebuilt my initrd image. Didn't help.

I then added some debug "echos" to the linuxrc and init scripts in /usr/share/initrd-tools and rebuilt again. Interestingly there's no change. It doesn't even seem to get as far as running the linuxrc script in the first place. Comparing my working 2.6.6 and 2.6.8 initrd image, there don't seem to be too many differences, but I'll attach the output below. I'm slightly concerned about the warning about /dev/console, and that modprobe.conf and modprobe.d have moved around.

I also wonder if the fact that my Linux root partition (hda5) is inside an "extended" partition (see my original report) could that be causing a problem for the kernel?

Thanks

Nigel

--------
Only in initrd-2.6.6/bin: awk
Only in initrd-2.6.8/bin: e2initrd_helper
File initrd-2.6.6/dev/console is a character special file while file initrd-2.6.8/dev/console is a character special file
Only in initrd-2.6.8/dev: ida
File initrd-2.6.6/dev/null is a character special file while file initrd-2.6.8/dev/null is a character special file
Only in initrd-2.6.6/etc: modprobe.conf
Only in initrd-2.6.8/etc: modprobe.d
Only in initrd-2.6.8: keyscripts
Only in initrd-2.6.6/lib/modules: 2.6.6-1-686
Only in initrd-2.6.8/lib/modules: 2.6.8-2-686
Only in initrd-2.6.6/lib/modules: modprobe.conf
Only in initrd-2.6.8/lib/tls: i686
Only in initrd-2.6.6/lib/tls: libc.so.6
Only in initrd-2.6.6/lib/tls: libdl.so.2
Only in initrd-2.6.6/lib/tls: libm.so.6
diff -ur initrd-2.6.6/linuxrc initrd-2.6.8/linuxrc
--- initrd-2.6.6/linuxrc    1970-01-01 01:00:00.000000000 +0100
+++ initrd-2.6.8/linuxrc    1970-01-01 01:00:00.000000000 +0100
@@ -6,6 +6,7 @@

mount -nt proc proc proc
root=$(cat proc/sys/kernel/real-root-dev)
+echo "linuxrc: root=real-root-dev=$root"
echo 256 > proc/sys/kernel/real-root-dev
mount -nt tmpfs tmpfs bin ||
    mount -nt ramfs ramfs bin
diff -ur initrd-2.6.6/linuxrc.conf initrd-2.6.8/linuxrc.conf
--- initrd-2.6.6/linuxrc.conf    1970-01-01 01:00:00.000000000 +0100
+++ initrd-2.6.8/linuxrc.conf    1970-01-01 01:00:00.000000000 +0100
@@ -2,4 +2,4 @@
BUSYBOX=
FSTYPES=ext3,ext2,vfat,iso9660,reiserfs,ntfs,cramfs
IDE_CORE=ide-core
-VERSION=0.1.70
+VERSION=0.1.77
diff -ur initrd-2.6.6/loadmodules initrd-2.6.8/loadmodules
--- initrd-2.6.6/loadmodules    1970-01-01 01:00:00.000000000 +0100
+++ initrd-2.6.8/loadmodules    1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +1,8 @@
+modprobe -k  ide_generic
+modprobe -k  ide_disk
+modprobe -k  ata_piix
+modprobe -k  sg
+modprobe -k  sd_mod
modprobe -k  vesafb > /dev/null 2>&1
modprobe -k  fbcon 2> /dev/null
modprobe -k  unix 2> /dev/null
diff -ur initrd-2.6.6/sbin/init initrd-2.6.8/sbin/init
--- initrd-2.6.6/sbin/init    1970-01-01 01:00:00.000000000 +0100
+++ initrd-2.6.8/sbin/init    1970-01-01 01:00:00.000000000 +0100
@@ -84,29 +84,34 @@
        ;;
    esac

-    IFS=/
-    set -f
-    set +f ${root#/dev/}
-    IFS=.
-    root=$*
-    unset IFS
-    try_name "$root" && return
-
-    part=${root##*[!0-9]}
-    root=${root%$part}
-    if [ -z "$root" ]; then
-        return
-    fi
-    try_name "$root" $part && return
+    origroot="$root"
+
+    for separator in ! .; do
+        IFS=/
+        set -f
+        set +f ${origroot#/dev/}
+        IFS="$separator"
+        root=$*
+        unset IFS
+        try_name "$root" && return
+
+        part=${root##*[!0-9]}
+        root=${root%$part}
+        if [ -z "$root" ]; then
+            return
+        fi
+        try_name "$root" $part && return
+
+        case $root in
+        *[0-9]p)
+            ;;
+        *)
+            return 0
+            ;;
+        esac
+        try_name "${root%p}" $part && return
+    done

-    case $root in
-    *[0-9]p)
-        ;;
-    *)
-        return 0
-        ;;
-    esac
-    try_name "${root%p}" $part
    return 0
}

@@ -189,37 +194,37 @@
    ret=$1
    case $ret in
    aec62xx)
-        ret='AEC62xx IDE'
+        ret='AEC62xx[ _]IDE'
        ;;
    alim15x3)
-        ret='ALI15x3 IDE'
+        ret='ALI15x3[ _]IDE'
        ;;
    amd74xx)
-        ret='AMD IDE'
+        ret='AMD[ _]IDE'
        ;;
    atiixp)
-        ret='ATIIXP IDE'
+        ret='ATIIXP[ _]IDE'
        ;;
    cmd64x)
-        ret='CMD64x IDE'
+        ret='CMD64x[ _]IDE'
        ;;
    cs5520)
        ret='CyrixIDE'
        ;;
    cs5530)
-        ret='CS5530 IDE'
+        ret='CS5530[ _]IDE'
        ;;
    cy82c693)
-        ret='Cypress IDE'
+        ret='Cypress[ _]IDE'
        ;;
    generic)
-        ret='PCI IDE'
+        ret='PCI[ _]IDE'
        ;;
    hpt34x)
-        ret='HPT34x IDE'
+        ret='HPT34x[ _]IDE'
        ;;
    hpt366)
-        ret='HPT366 IDE'
+        ret='HPT366[ _]IDE'
        ;;
    it8172)
        ret='IT8172IDE'
@@ -228,46 +233,46 @@
        ret='NS87415IDE'
        ;;
    opti621)
-        ret='Opti621 IDE'
+        ret='Opti621[ _]IDE'
        ;;
    pdc202xx_new)
-        ret='Promise IDE'
+        ret='Promise[ _]IDE'
        ;;
    pdc202xx_old)
-        ret='Promise Old IDE'
+        ret='Promise[ _]Old[ _]IDE'
        ;;
    piix)
-        ret='PIIX IDE'
+        ret='PIIX[ _]IDE'
        ;;
    rz1000)
-        ret='RZ1000 IDE'
+        ret='RZ1000[ _]IDE'
        ;;
    sc1200)
-        ret='SC1200 IDE'
+        ret='SC1200[ _]IDE'
        ;;
    serverworks)
-        ret='Serverworks IDE'
+        ret='Serverworks[ _]IDE'
        ;;
    siimage)
-        ret='SiI IDE'
+        ret='SiI[ _]IDE'
        ;;
    sis5513)
-        ret='SIS IDE'
+        ret='SIS[ _]IDE'
        ;;
    sl82c105)
-        ret='W82C105 IDE'
+        ret='W82C105[ _]IDE'
        ;;
    slc90e66)
-        ret='SLC90e66 IDE'
+        ret='SLC90e66[ _]IDE'
        ;;
    triflex)
-        ret='TRIFLEX IDE'
+        ret='TRIFLEX[ _]IDE'
        ;;
    trm290)
-        ret='TRM290 IDE'
+        ret='TRM290[ _]IDE'
        ;;
    via82cxxx)
-        ret='VIA IDE'
+        ret='VIA[ _]IDE'
        ;;
    esac
}
@@ -291,7 +296,9 @@
            continue
        fi

-        set -- /sys/bus/pci/drivers/"$ret"/*:*
+        IFS=''
+        set -- /sys/bus/pci/drivers/$ret/*:*
+        unset IFS
        if [ ! -h "$1" ]; then
            rmmod $i
        fi
@@ -354,6 +361,7 @@
fi

read root < bin/root
+echo "initrd-tools: root=$root"
umount -n bin
echo $root > proc/sys/kernel/real-root-dev

diff -ur initrd-2.6.6/scripts/ext3-add-journal.sh initrd-2.6.8/scripts/ext3-add-journal.sh --- initrd-2.6.6/scripts/ext3-add-journal.sh 1970-01-01 01:00:00.000000000 +0100 +++ initrd-2.6.8/scripts/ext3-add-journal.sh 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +1,7 @@
#!/bin/sh
+#
+# /usr/share/e2fsprogs/initrd.ext3-add-journal
+#
cd /
mount -nt proc proc proc
rootdev=$(cat proc/sys/kernel/real-root-dev)
@@ -6,21 +9,13 @@
umount -n proc
if [ $rootdev != 256 ]; then
    mount -nt tmpfs tmpfs /dev2
-    mount -nt proc proc /proc
-    mount -nt devfs devfs /devfs > /dev/null 2>&1
    get_device
-    mount_device
-    if test -f /mnt/etc/fstab ; then
- ext3root=`awk '!/^ *#/ { if (($2 == "/") && ($3 == "ext3")) {print $1;}}' < /mnt/etc/fstab` - ext2root=`awk '!/^ *#/ { if (($2 == "/") && ($3 == "ext2")) {print $1;}}' < /mnt/etc/fstab`
-    fi
-    umount -n /devfs > /dev/null 2>&1
-    umount -n /mnt > /dev/null 2>&1
-    if test -n "$ext3root" -o -n "$ext2root" ; then
+    roottype=`/bin/e2initrd_helper -r /dev2/root2`
+    if test -n "$roottype" ; then
    mount -nt tmpfs tmpfs /etc
    echo >> /etc/fstab
    echo >> /etc/mtab
-    if test -n "$ext3root" ; then
+    if test "$roottype" = "ext3" ; then
        /sbin/tune2fs -O has_journal /dev2/root2 > /dev/null 2>&1
    else
        /sbin/tune2fs -O ^has_journal /dev2/root2 > /dev/null 2>&1





Reply to: