This is an old revision of the document!
After performing the initial setup, Linux will try to fork into User Space by starting the init process. For this to happen, the kernel first needs to load a root filesystem. The location of this rootfs is specified as part of the kernel's command line arguments:
$ cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-linux root=/dev/mapper/volgrp0-lv_root rw loglevel=3 quiet
Notice in this example how the root
variable is not /dev/sda
or /dev/nvme0n1
, but instead a Logical Volume (i.e.: an intermediate representational layer that abstracts the backing storage devices – see figure below.) Although the kernel has LVM support, the drivers may be compiled as modules to be loaded after booting into User Space. This puts us in an awkward position where we need the LVM drivers to access the root partition but the modules are located on the very same root partition.