]> git.decadent.org.uk Git - i-t-talk.git/blobdiff - index.html
Overview of initramfs-tools
[i-t-talk.git] / index.html
index 11a89d14c9cab9c22c5f00fbbf85b6a8f0553fc0..c0048c9b6b08d3fb77fbe0760c16512c606c0725 100644 (file)
 <h3>Ben&nbsp;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>Questions?</h1>
 </div>
@@ -92,6 +169,9 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       -->
     </li>
+    <li>
+      Xzibit promotional photo &copy; Retna, used for purpose of parody
+    </li>
   </ul>
 </div>