[syslinux] PXELINUX with Kernel 2.6.15.4: VFS: Cannot open root device "hde1" or unknown-block(0, 0)

Markus Biermaier mbier at office-m.at
Sat Jun 10 01:00:35 PDT 2006


Hello again,

I'm always not able to boot-up my CF-FileSystem. (It works with a  
2.4.x Kernel!)
See: http://syslinux.zytor.com/archives/2006-June/006942.html

I dont't understand, why the kernel can't mount the root-fs on exit  
of "linuxrc".
Before finising "linuxrc" I can work on it, start a "bash"-shell, do  
all sorts of linux-cmds on the root-fs...
But I think I oversee a (tiny) thing.

I've put some "printk" statements in kernel's "init/do_mounts.c" and  
"init/do_mounts_initrd.c".
I found out that in function
"void __init mount_block_root(char *name, int flags)"
of "init/do_mounts.c" there is the statement
...
int err = do_mount_root(name, p, flags, root_mount_data);
...
The value of "name" is "/dev/root" before this statement.
After this "err" is -6 ("No such device or address").

The next lines are:
...
                 /*
                  * Allow the user to distinguish between failed  
sys_open
                  * and bad superblock on root device.
                  */
                 __bdevname(ROOT_DEV, b);
                 printk("VFS: Cannot open root device \"%s\" or %s\n",
                                 root_device_name, b);
                 printk("Please append a correct \"root=\" boot option 
\n");

                 panic("VFS: Unable to mount root fs on %s", b);
         }
         panic("VFS: Unable to mount root fs on %s", __bdevname 
(ROOT_DEV, b));
...

This looks as:
   "VFS: Cannot open root device "hde1" or unknown-block(0,0)
    Please append a correct "root=" boot option
    Kernel panic - not syncinc: VFS: Unable to mount root fs on  
unknown-block(0,0)"

I also tried to set the root-dev with:
"echo 0x3301 > /proc/sys/kernel/real-root-dev" in "linuxrc"

The only difference is that
"VFS: Unable to mount root fs on unknown-block(0,0)"
becomes
"VFS: Unable to mount root fs on unknown-block(51,1)"

I tried in "linuxrc":
--------------------------------------------------
...
mount /dev/hde1
umount /proc
umount /sys
cd /mnt
/mnt/sbin/pivot_root . initrd
mount /sys /sys -t sysfs
/sbin/udevstart
/sbin/pcmcia-socket-startup
mount /proc
echo -n "42" > /sys/bus/pcmcia/devices/1.0/allow_func_id_match
echo 0x3301 > /proc/sys/kernel/real-root-dev
sleep 5
exec <dev/console >dev/console 2>&1
exec chroot . /bin/sh <<EOF
      umount initrd
      /sbin/blockdev --flushbufs /dev/ram0
      sleep 3
      exec /sbin/init 5
EOF
--------------------------------------------------
but the result is alway the same " VFS: Cannot open root device  
"hde1" or unknown-block..."

My "/tftpboot/pxelinux.cfg/Cxxxxxxx":
--------------------------------------------------
DEFAULT standard

  LABEL standard
   KERNEL vmlinuz
   APPEND initrd=initrd ramdisk_size=32768 root=/dev/hde1 rootdelay=5
--------------------------------------------------

Is it possible that there is a problem with kernel modules?

I found that the "init/do_mount*"-functions are running twice. First  
for the initial-RAM-Disk runs without errs and second for the root-fs  
-> panics.
Can there be some stuff from the first mount lying around and makeing  
probs for the second mount?

Thanks for any help.

Markus




More information about the Syslinux mailing list