-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
+ <title>Talk: Reordering the Debian boot sequence for correctness and speed</title>
<link rel="stylesheet" href="../mrtg-td/slides.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Language" content="en">
</head>
<body>
-<a href="200706-bootseq/200706-bootseq.html">forrige foredrag</a>
+<a href="../200706-bootseq/200706-bootseq.html">last related talk</a>
<h1><A href="http://www.fosdem.org/2008/schedule/events/debian_boot">Reordering the Debian boot sequence for correctness and speed</a></h1>
They are hard to find, as they normally only affect rare combination
of packages, and harder to fix, as they normally require the combined
work of several maintainers and changes in several packages. This
-talk is about how we can solve them, and gain a few advantages on the
-way.</p>
+talk is about the release goal for Lenny to solve them, and gain a few
+advantages on the way.</p>
<div class="presenter">Petter Reinholdtsen - one of the sysvinit maintainers
<br>pere@hungry.com
This talk is about how all of this can be done with Debian.
-->
-<h2>Summary</h2>
+<h2>Outline</h2>
<!--
- how does it work in debian
- effect on the boot
- insserv
+ - how to test it
- speed change?
- concurrency
default be the reverse of the start sequence. It isn't.
<p>Reordering is hard and require cooperation between maintainers of
-all packages involved. Given two packages with two scripts inserted
-with the default settings in Debian:
+all packages involved.
+
+<h2>The ordering problem - an example</h2>
+
+<p>Given two packages with two scripts inserted with the default
+settings in Debian:
<p>Package A: script_a sequence 20 (start and stop)
<br>Package B: script_b sequence 20 (start and stop)
have to change their sequence number too. Only way to discover this
is by a lot of testing, or documenting script dependencies.
-<h2>A ordering solution</h2>
+<h2>An ordering solution</h2>
<p>Let each script document its dependency, and generate sequence
numbers using this dependency information. Example:
<br>script_a start seq 3, stop seq 1
<p>An implementation of this system is the dependency based boot
-sequencing, provided in the insserv package.</p>
+sequencing, provided in the insserv package. Uses format specified in
+Linux Software Base to document dependencies.</p>
+
<h2>LSB headers for insserv</h2>
<p>$remote_fs is needed by all scripts using files in /usr/. $syslog
is needed only by scripts starting services logging to syslog.</p>
+<h2>What to list as dependencies II</h2>
+
+<p>In the common case, the start and stop dependencies are identical.
+
+<p>Prefer virtual dependencies over specific dependencies
+
+<h2>Virtual facilities</h2>
+
+<p>Linux Software Base version 3.2 define these virtual facilities:
+
+<dl>
+
+<dt>$local_fs
+<dd>all local file systems are mounted. (In Debian, / and /var/ is available)
+
+<dt>$network
+<dd>basic networking support is available. Example: a server program
+could listen on a socket. (In Debian, network interfaces are up)
+
+<dt>$portmap
+<dd>daemons providing SunRPC/ONCRPC portmapping service as defined in
+RFC 1833: Binding Protocols for ONC RPC Version 2 (if present) are
+running.
+
+<dt>$remote_fs
+<dd>all remote file systems are available. In some configurations,
+file systems such as /usr may be remote. Many applications that
+require $local_fs will probably also require $remote_fs. (In Debian,
+/usr/ and NFS directories are guaranteed to be mounted)
+
+<dt>$time
+<dd>the system time has been set, for example by using a network-based
+time program such as ntp or rdate, or via the hardware Real Time
+Clock.
+
+<dt>$syslog
+<dd>system logger is operational.
+
+<dt>$named
+<dd>IP name-to-address translation, using the interfaces described in
+this specification, are available to the level the system normally
+provides them. Example: if a DNS query daemon normally provides this
+facility, then that daemon has been started.
+
+</dl>
+
+<p>All of these represent points in time during boot and shutdown.
<h2>Status of dependency based boot</h2>
<p>Packages with LSB header: 654 of 866 (76%)
<br>Unsolved BTS reports: XXX
<br>Packages without BTS reports: ~150
+<br>Last package projected fixed 2008-07-19 with the current rate
<p>Need better documentation
<p>
+<h2>References</h2>
+
+http://wiki.debian.org/LSBInitScripts
+http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot
+
<h2>Thank you very much</h2>
<h3>Questions?</h3>