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

[linux-lvm] LVM, defvs and initrd (for lvm rootfs)

I have a system that I am trying to boot with an LVM root filesystem.
The kernel is a 2.4.8 (Mandrake variant) and is using devfs.

The LVM version is unfortunately only 0.9.1_beta3 because that is what
is in the stock kernel at the moment (IIRC).  I am trying to get
Mandrake to update to the latest 1.0.* release but they are resisting
taking what is not the stock kernel until they have some internal
expertise on LVM.  This would be a good reason for you guys to get the
1.0.* code pushed up to Linus.  :-)

Anyhow, I am successfully booting the system fully with the root
filesystem on LVM so I know my initrd is (somewhat :-) correct.  The
problem I am having is that once I am booted, the /dev/<volume group/
directory is empty.  I think this has something to do with the fact
that when the lvm kernel module is actually loaded (and the devfs
nodes registered), the system is booted on the initrd root filesystem
which then gets thrown away (along with the devfs /dev/ directory)
when the real root is mounted.

Here is the order of operations during boot as I can determine them:

1.  mount initrd
2.  kernel mounts devfs
3   load lvm module (which creates devfs nodes)
3.  vgscan, vchange -a y
4.  mount real root (on lvm partition)
5.  kernel mounts devfs again (on real root)
6.  unmount initrd

I think the lvm nodes are created successfully in step 3 but get lost
when devfs is mounted a second time in step 5.

Here is the (relevant) kernel output during the boot.  The line
nubmers on the left of course were just added here so that I could
annotate below.

1.  Linux version 2.4.8-11mdk (chmou no mandrakesoft com) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release / Linux-Mandrake 8.1)) #1 Wed Aug 22 16:22:21 CEST 2001
    [ snip ]
2.  Kernel command line: BOOT_IMAGE=linux ro root=3a00 devfs=mount
    [ snip ]
3.  devfs: v0.107 (20010709) Richard Gooch (rgooch atnf csiro au)
4.  devfs: boot_options: 0x2
    [ snip ]
5.  RAMDISK: Compressed image found at block 0
6.  Uncompressing...............................................................................................................................done.
7.  Freeing initrd memory: 1282k freed
8.  VFS: Mounted root (ext2 filesystem).
9.  Mounted devfs on /dev
10. LVM version 0.9.1_beta3  by Heinz Mauelshagen  (25/01/2001)
11. lvm -- Module successfully initialized
12, devfs: devfs_register(): device already registered: "group"
13, devfs: devfs_register(): device already registered: "lvol1"
14, devfs: devfs_register(): device already registered: "1"
15, VFS: Mounted root (ext2 filesystem) readonly.
16, change_root: old root has d_count=2
17, Mounted devfs on /dev
18, Freeing unused kernel memory: 708k freed

Notice in line 2, the kernel command line does include "devfs=mount".
Notice in lines 5-8, the initial ramdisk is detected and mounted.  In
line 9, the kernel mounts devfs.  Lines 10-11 are the loading of the
lvm driver and lines 12-14 are errors from devfs about devices that
exist, I guess.  I am not sure why I am getting these.

See on line 15, the real root filesystem (on the LVM LV) is mounted
successfully (yay!) and on line 17, devfs is mounted again -- by the

The system boots fine onto the LVM based root filesystem.  The problem
is that the device nodes in /dev/VG (group, lvol1 and 1) are missing
an uncreatable.

Is my theory correct?  Is there a way to work around this?


Brian J. Murrell

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