]> pere.pagekite.me Git - homepage.git/commitdiff
Mer tekst.
authorPetter Reinholdtsen <pere@hungry.com>
Thu, 21 Feb 2008 21:23:34 +0000 (21:23 +0000)
committerPetter Reinholdtsen <pere@hungry.com>
Thu, 21 Feb 2008 21:23:34 +0000 (21:23 +0000)
mypapers/200802-bootsequence/200802-bootsequence.html

index 8f5741091e68afaf54889c04a061ddea0a267ddd..60926d5afac8acff2b3728c10efce007a67f06b4 100644 (file)
 
 <a href="200706-bootseq/200706-bootseq.html">forrige foredrag</a>
 
-<h1>Reordering the Debian boot sequence for correctness and speed</h1>
+<h1><A href="http://www.fosdem.org/2008/schedule/events/debian_boot">Reordering the Debian boot sequence for correctness and speed</a></h1>
 
-<p>Autodetecting and configuring hardware during installation and at
-   runtime</p>
+<p>There are subtle bugs in the Debian boot and shutdown sequence.
+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>
 
-<div class="presenter">Petter Reinholdtsen
+<div class="presenter">Petter Reinholdtsen - one of the sysvinit maintainers
   <br>pere@hungry.com
   <br>FOSDEM 2008, 2008-02-26</div>
 
+<!--
+
+There are subtle bugs in the debian boot and shutdown sequence. 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.
+
+One way to find these bugs is to document the dependencies of all
+init.d scripts, and use this information to check that the ordering is
+correct. When such information is available, it is also possible to
+reorder the boot and shutdown sequence to make sure all dependencies
+are fulfilled.
+
+It is also possible to run scripts in parallel, to speed up the boot,
+when the order they need to run in is known.
+
+This talk is about how all of this can be done with Debian.
+-->
+
 <h2>Summary</h2>
 
 <!--
@@ -27,7 +50,7 @@
    - runlevels
    - inittab
    - rc*.d/
- - ordering issue
+ - ordering problem
  - how does it work in debian
  - effect on the boot
  - insserv
@@ -106,14 +129,53 @@ maintenance.</p>
   with a minor exception.  All scripts (both start and stop) are
   executed with the <tt>stop</tt> argument.
 
-<h2> about ordering </h2>
+<h2>The ordering problem</h2>
 
 <p>Script ordering is vital for this to work.  And how are the scripts
-ordered?
+ordered?  By numbers.
+
+<p>And the numbers are picked using skills, knowledge and negotiation.
+Getting it right is often hard.
+
+<p>The current Debian default is wrong.  Stop sequence should by
+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:
+
+<p>Package A: script_a sequence 20 (start and stop)
+<br>Package B: script_b sequence 20 (start and stop)
+
+<p>Along come script C, which should run before script_a and after
+script_b.  Current solution is to change packages A and C or packages
+B and C to get something like this:
 
- update-rc.d numbers.
+<p>Package A: script_a start seq. 22, stop seq. 18
+<br>Package B: script_b sequence 20 (start and stop)
+<br>Package C: script_c start seq 21, stop seq 19
 
+<p>If other scripts depend on the old order of script_a, they will
+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>
+
+<p>Let each script document its dependency, and generate sequence
+numbers using this dependency information.  Example:
+
+<p>Package A: script_a depend on nothing
+<br>Package B: script_b depend on nothing
+<br>Package C: script_c depend on script_b, a dependency of script_a
+
+<p>Generated sequence:
+
+<p>script_b start seq 1, stop seq 3
+<br>script_c start seq 2, stop seq 2
+<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>
 
 
 <h2>LSB headers for insserv</h2>
@@ -168,13 +230,9 @@ is needed only by scripts starting services logging to syslog.</p>
 
 <p>Need debian policy updates
 
-<p>
-
- - status in debian
-   - need better doc
-   - fix insserv bugs
-
+<p>Fix insserv bugs
 
+<p>
 
     <h2>Thank you very much</h2>