<h3>Ben Hutchings</h3>
</div>
+<div class="slide">
+ <h1>What is the initramfs for?</h1>
+ <ul class="incremental">
+ <li>
+ Huge variety of disk drivers, net drivers and filesystems that
+ may be needed to mount root
+ </li>
+ <li>
+ Generic kernel shouldn't have all these built-in
+ </li>
+ <li>
+ Root might also need RAID, LVM, dm-crypt, which generally need
+ to be configured by userland
+ </li>
+ <li>
+ Kernel needs a way to load modules and run scripts but
+ it can't read them from the root filesystem
+ </li>
+ <li>
+ Solution: boot loader provides a bundle of files
+ (initramfs image) to the kernel
+ </li>
+ </ul>
+</div>
+
+<div class="slide">
+ <img src="yo-dawg.jpeg" width="90%" />
+</div>
+
+<div class="slide">
+ <h1>How the kernel uses an initramfs</h1>
+ <ul class="incremental">
+ <li>
+ Kernel <em>always</em> mounts an initial root filesystem using
+ either ramfs or tmpfs
+ </li>
+ <li>
+ If the boot loader provides an initramfs image, kernel
+ unpacks it into this filesystem, then runs <tt>/init</tt>
+ </li>
+ <li>
+ The initramfs init system is then responsible for mounting
+ the real root filesystem and running the real <tt>init</tt>
+ <ul class="incremental">
+ <li>
+ Although it is not <em>required</em> to hand over at all
+ - e.g. debian-installer
+ </li>
+ </ul>
+ </li>
+ </ul>
+</div>
+
+<div class="slide">
+ <h1>Overview</h1>
+ <ul class="incremental">
+ <li>
+ Started in Ubuntu in 2005 and adopted in Debian later that year
+ </li>
+ <li>
+ <tt>mkinitramfs</tt> builds an initramfs image using the
+ included scripts, necessary kernel modules, udev, and utilities
+ from klibc-utils or busybox
+ </li>
+ <li>
+ Uses build-time and boot-time hook scripts for
+ extensibility
+ <ul>
+ <li>Used by btrfs-tools, cryptsetup, lvm2, mdadm, etc.</li>
+ </ul>
+ </li>
+ <li>
+ Supports dependencies within each set of scripts
+ </li>
+ </ul>
+</div>
+
+<div class="slide">
+ <h1>The init system</h1>
+ <ul class="incremental">
+ <li>
+ Mount <tt>devtmpfs</tt>, <tt>devpts</tt>, <tt>procfs</tt>,
+ <tt>sysfs</tt>, <tt>tmpfs</tt> at <tt>/run</tt>
+ </li>
+ <li>
+ Run <tt>init-top</tt> scripts - includes starting udev
+ </li>
+ <li>
+ Load explicitly configured modules
+ </li>
+ <li>
+ Run <tt>init-premount</tt> scripts
+ </li>
+ <li>
+ Run <tt>local-top</tt> or <tt>nfs-top</tt> scripts
+ - e.g. mdadm setup
+ </li>
+ <li>
+ Run <tt>local-premount</tt> or <tt>nfs-premount</tt> scripts
+ - e.g. btrfs scan, resume from disk
+ </li>
+ <li>
+ Mount root filesystem
+ </li>
+ </ul>
+</div>
+
<div class="slide">
<h1>Questions?</h1>
</div>
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-->
</li>
+ <li>
+ Xzibit promotional photo © Retna, used for purpose of parody
+ </li>
</ul>
</div>