initrd question

Richard W.M. Jones rjones at redhat.com
Sat Feb 28 17:40:05 UTC 2009


At the moment mkinitrd goes through a big hoo-hah where it tries to
determine what precise set of kernel modules are needed to mount the
root filesystem, and no more.

But I don't understand why we don't just put every possible block
device driver / LVM / crypto module / etc. into the initrd.  The
ramdisk is discarded as soon as the root filesystem is mounted, so at
most we're saving a few kilobytes of disk space.  At the same time,
mkinitrd is massively more complicated than it really needs to be, and
initrd images are non-portable between machines[*].

The particular problem I am encountering is with P2V and V2V
conversions.  Because typically virtio-blk drivers aren't included, we
have to take extra steps to run 'mkinitrd --with virtio_pci --with
virtio_blk'.  Doing this from a script is not just massively
complicated (we have to run it within the context of a guest
filesystem probably located inside a raw disk image), but completely
unnecessary if initrd just included all the drivers in the first
place.

Thoughts?

Rich.

[*] They would still hard-code the root and swap partition names, but
I think it should be possible to get rid of those too and make initrd
images really portable.

-- 
Richard Jones, Emerging Technologies, Red Hat  http://et.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v




More information about the fedora-devel-list mailing list