From: Jeremy Katz Date: Tue, 16 Dec 2008 22:24:59 +0000 (-0500) Subject: Update the README and add some docs for TODO and HACKING X-Git-Tag: 0.1~508 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=78ad9ceb561a15a27195567d7d7c2c9ec9347e73;p=thirdparty%2Fdracut.git Update the README and add some docs for TODO and HACKING --- diff --git a/HACKING b/HACKING new file mode 100644 index 000000000..7c9b996ea --- /dev/null +++ b/HACKING @@ -0,0 +1,15 @@ +Right now, I'm doing most of my testing using a qemu/kvm guest and +generating the initramfs on another box. I then can boot the guest +using qemu's -kernel and -initrd options. Currently supported rootfs +types are regular partitions, root-on-lvm and root-on-lvm-on-encrypted-pv. + +generate.sh exists and will build an image. Right now, it depends on +some existing pieces of the Fedora initrd infrastructure, but moving +those out is a priority now that the basic functionality has been +proven. + +To use, just run generate.sh with an output file for the initrd. It +will copy over some binaries as well as the appropriate shared library +dependencies. If you are doing a rootfs type that requires modules +(on Fedora, this is just encrypted root now), you'll want to have the +modules tree to copy in in a modules/ sub directory. diff --git a/README b/README index f2d7b00d0..3d14c2fea 100644 --- a/README +++ b/README @@ -1,11 +1,30 @@ -This is the simple skeleton of a new initrd infrastructure. +This is the simple skeleton of a new initramfs infrastructure. Information about our goals and aims can be found at https://fedoraproject.org/wiki/Initrdrewrite -One of the biggest goals is that we're using common pieces from the -system as much as possible and we also want to do this in a way that -can eventually get some cross-distro buy-in. But for now, it's a -playground to see what of our ideas are actually feasible. +Unlike existing initramfs's, this is an attempt at having as little as +possible hard-coded into the initramfs as possible. The initramfs has +(basically) one purpose in life -- getting the rootfs mounted so that +we can transition to the real rootfs. This is all driven off of +device availability. Therefore, instead of scripts hard-coded to do +various things, we depend on udev to create device nodes for us and +then when we have the rootfs's device node, we mount and carry on. +This helps to keep the time required in the initramfs as little as +possible so that things like a 5 second boot aren't made impossible as +a result of the very existence of an initramfs. It's likely that +we'll grow some hooks for running arbitrary commands in the flow of +the script, but it's worth trying to resist the urge as much as we can +as hooks are guaranteed to be the path to slow-down. + +Also, there is an attempt to keep things as distribution-agnostic as +possible. Every distribution has their own tool here and it's not +something which is really interesting to have separate across them. +So contributions to help decrease the distro-dependencies are welcome. + +The git tree can be found at +git://fedorapeople.org/~katzj/new-initrd.git for now. See the TODO +file for things which still need to be done and HACKING for some +instructions on how to get started Licensed under the GPLv2 diff --git a/TODO b/TODO new file mode 100644 index 000000000..f807ee496 --- /dev/null +++ b/TODO @@ -0,0 +1,49 @@ +Current TODO list, broken into things which are relevant for the +initramfs itself (/init et al) vs the generator + +INITRAMFS TODO +-------------- +* Currently, our switch_root command uses nash's switchroot. Getting +a reasonable switchroot implementation into util-linux-ng is a +pre-condition for support on other distros +* The hard-coded list of udev rules that we care about is kind of +lame. See about getting /lib/udev/initrules.d or similar for storing +the rules that we care about in the initramfs. These could be +symlinks/hardlinks to the main rules in some cases or special-cased +ones +* LVM activation by udev is a bit of a large hammer right now +* dm-crypt (luks) depends on plymouth +* plymouth is hard-coded... this may be reasonable as modesetting goes +into the upstream kernel as a way to get off of fb-splash stuff, but I +can see this being a point of contention for other distros + * plymouth --show-splash should be done as a udev rule so that we + can switch modes first +* root= parsing should be done with udev creating /dev/root symlink +for us appropriately +* Support thaw (resume from hibernate) +* Currently requires the drop-nash branch of plymouth; get merged into +master and released +* Proving some support with a simple network based root would be good + * Do we just call dhclient, etc or try to get NetworkManager going? +* Would be nice not to have to kill and restart udev across switchroot +* mdraid +* dmraid +* multipath +* SELinux policy either needs to be loaded from the initramfs or /init +on the rootfs + + + +GENERATOR TODO +-------------- +* Needs to be written to look at the current kernel and get the +modules so it can be used on a running system. +* Move the needed pieces of Fedora mkinitrd's initrd-functions into +this tree. This should mainly be around shlib resolution/copying at +present +* We should just grab appropriate modules rather than all of them. + * Should default to basically all storage drivers, possibly allow to + specify less + * Maybe use class based specifiers (=ata, =net, etc) that we do + today with Fedora mkinitrd +* Certainly more as this is a huge hack right now