[plug] initrd confusion!
r.steicke at bom.gov.au
Fri Apr 16 11:46:08 WST 2004
On Fri, Apr 16, 2004 at 11:28:12AM +0800, Denis Brown wrote:
> Dear PLUG list members,
> I have a situation where I need to have a modularised kernel, specifically
> with the RAID device as a module. The reason for this, is to allow the
> low level drive monitoring software to work. I have been reading up on
> initrd but find that I am confused, as follows...
> 0. There are no IDE or ATA devices in this box, only SCSI in hardware RAID.
> 1. The RAID driver will be compiled into the kernel as a module. So the
> kernel will not be able to see any file systems until the module is loaded.
> 2. The module will be inaccessible to the kernel because, well, it cannot
> be loaded!
> 3. Initrd would seem to offer help. Initrd basically, if I understand it
> correctly, will load a kernel into ramdisk, load the required RAID driver
> module and then switch over to the "real" file system.
Sort of. My understanding is this:
- lilo or grub loads the kernel into memory, then loads the initrd into
memory as a ramdisk.
- control passes to the kernel, with the ramdisk as the root filesystem.
- The kernel can insmod modules from the ramdisk. Your raid and scsi
drivers must be present in the ramdisk. This is the key point, that
the modules can be loaded _out of RAM_, before the disk is available.
- Shortly after, the real root filesystem (off your raid) is mounted on
a temporary mount point, then pivot_root is called to "rotate" the
mount points so that your real root filesystem ends up at /. See
pivot_root(8) and pivot_root(2).
You should be able to have a peek inside the initrd with something like
mount -t cramfs -o ro,loop /boot/initrd.img-2.4.24 /mnt/tmp
Then have a look at /mnt/tmp/sbin/init, where the latter parts of this
magic are written down for us.
-- Fortune says:
I just want *one* one-armed manager so I never have to hear "On
the other hand", again.
More information about the plug