]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
Update the README and add some docs for TODO and HACKING
authorJeremy Katz <katzj@redhat.com>
Tue, 16 Dec 2008 22:24:59 +0000 (17:24 -0500)
committerJeremy Katz <katzj@redhat.com>
Tue, 16 Dec 2008 22:24:59 +0000 (17:24 -0500)
HACKING [new file with mode: 0644]
README
TODO [new file with mode: 0644]

diff --git a/HACKING b/HACKING
new file mode 100644 (file)
index 0000000..7c9b996
--- /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 f2d7b00d0260b4b297e4fa7ad308f933b133e9e0..3d14c2fea03871bbae29f628c6c4982de729cbe2 100644 (file)
--- 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 (file)
index 0000000..f807ee4
--- /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