Browse Source

Update the README and add some docs for TODO and HACKING

master
Jeremy Katz 16 years ago
parent
commit
78ad9ceb56
  1. 15
      HACKING
  2. 29
      README
  3. 49
      TODO

15
HACKING

@ -0,0 +1,15 @@ @@ -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.

29
README

@ -1,11 +1,30 @@ @@ -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

49
TODO

@ -0,0 +1,49 @@ @@ -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
Loading…
Cancel
Save