From Fedora Project Wiki

Revision as of 17:51, 10 December 2008 by Davej (talk | contribs) (first edit)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

initrd rewrite.

The current incarnation of mkinitrd sucks for a variety of reasons. This page documents some of the plans to replace it with something better.

Initial ideas:

  • One initrd to rule them all

Instead of one for the livecd, one for the installer, one for the distro

  • Death to nash.

The bits of nash that don't currently exist in other tools need factoring out and putting into util-linux or similar packages.

  • Use the same bits the rest of the distro uses instead of custom functionality.

No custom udev, just use the regular one etc.

  • Include a shell for diagnostic/debugging purposes.
  • Probe at runtime instead of buildtime

Include all drivers, not just the drivers necessary for the hardware being run. (For storage, the common ones will be built-in to the kernel anyway)

  • The initrd will be usable on other distros.

The idea being that it can be included in the upstream kernel, and changed when kernel interfaces change etc to prevent breaking distros.


The first cut of this will just support the simple case of root on a hard disk. Eventually we want to support the numerous esoteric cases the existing initrd supports. Namely root..

  • -on-lvm
  • -on-dmraid
  • -on-mdraid
  • -on-iSCSI
  • -on-mpath
  • -on-nfs
  • -on-nbd
  • -on-dm-crypt

special cases to revisit later:

  • livecd (/ on dm-snapshot over ext3 on squashfs on iso9660)
  • installer
  • kdump

Other tasks performed by the initrd other than mounting /

  • restore from hibernate
  • start 'pretty' plymouth
  • kdump


Utilities to include in the initrd

  • libc
  • udev
  • switchroot
  • bash (no nash!)