I'm quite surprised to find this problem; if I remember well, I did this a
few times before with success:
On a quadruple-boot, I copied all partitions (copy&paste from 'mount')
/dev/hda12 on / type ext3 (rw,errors=remount-ro)
/dev/hda11 on /boot type ext3 (rw)
/dev/hda13 on /usr type ext3 (rw)
/dev/hda16 on /home type ext3 (rw)
with knoppix to
/dev/hda6
/dev/hda3
/dev/hda7
/dev/hda8
Then I changed the fstab on hda6 to:
/dev/hda6 / ext3 errors=remount-ro 0 1
/dev/hda5 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/hda3 /boot ext3 defaults 0 2
/dev/hda7 /usr ext3 defaults 0 2
/dev/hda8 /home ext3 defaults 0 2
without problem.
But now, when I boot (grub),
GNU GRUB version 0.94
[...]
grub> root (hd0,2)
filesystem type is ext2fs, partition type 0x83
grub> kernel /vmlinuz-2.6.5-1-686 ro root=/dev/hda6
[Linux-bzImage, setup=0x1400, size=0x1114cd]
grub> initrd /initrd.img-2.6.5-1-686
[Linix-initrd @ 0x17aff000, 0x468000 bytes]
grub> boot
to my greatest surprise, it still boots and mounts the earlier partitions
(see above) !! with root=/dev/hda12 !!
I'm stumped !
What I've done so far:
$ dmesg | grep Kernel
Kernel command line: ro root=/dev/hda6 (so this looks good !)
$ mount
/dev/hda12 on / type ext3 (rw,errors=remount-ro) (this doesn't look okay)
proc on /proc type proc (rw)
[...]
# cd /mnt/
debian:/mnt# mount /dev/hda6 homeRH/
debian:/mnt# cat homeRH/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/hda6 / ext3 errors=remount-ro 0 1
/dev/hda5 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto user,noauto 0 0
/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
/dev/hda3 /boot ext3 defaults 0 2
/dev/hda7 /usr ext3 defaults 0 2
[...]
The kernel receives root=/dev/hda6;
hda6 contains the mount point for '/' to be /dev/hda6 in its /etc/fstab.
But what it mounts to '/' is /dev/hda12 !!
So where does it get its mountpoints if not from /etc/fstab ??
I could only vaguely guess that initrd is the culprit here.
But is initrd supposed to overrule fstab ?
Should not the Kernel command line, as passed correctly by grub, point to
a respective fstab for the mount points ?
Okay, did another test:
[...]
grub> kernel /vmlinuz-2.6.5-1-686 ro
[Linux-bzImage, setup=0x1400, size=0x1114cd]
[...]
This works just as well ! (I left out the 'root' definition.)
In my opinion, it ought to panic; but no, it boots nicely and mounts hda12
as '/' and so on ... !
Any help will be appreciated !