--- /dev/null
+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.
-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
--- /dev/null
+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