Dependency based boot sequence

It is possible to converting Debian to order the boot sequence using the LSB headers in the init.d scripts. This will get rid of several bugs in the current boot sequence, and make it easier to keep the sequence correct.

The feature [http://lists.debian.org/debian-devel-announce/2008/01/msg00004.html was announced on debian-devel-announce] 2008-01-17. A [http://lists.debian.org/debian-devel-announce/2008/03/msg00011.html status update message] was sent 2008-03-16.

Advantages

Did you every need to insert a init.d scripts Y before init.d scripts Z and after init.d script X, where both Z and X is started using boot sequence number 20 (as in 20X and 20Z)? Adding your script as 20Y would not cut it, because you need Z to start before X. To do this, in Debian you currently need to talk to the maintainer of packages with scripts Z and X, asking one of them (or both) to move their script into a different number. Dependency based boot sequencing make it possible for each package maintainer to specify the dependencies of its scripts, and leave the number allocation to the dependency resolver.

Example of such problems

Status

This page is created to keep track of the state of this feature, to make it easier to coordinate an effort to implement it for Debian Lenny. It is [http://lists.debian.org/debian-release/2007/06/msg00164.html proposed] as a [http://release.debian.org/lenny-goals.txt release goal] for Lenny.

2007-07-03

2007-07-22

2007-08-08

2007-09-06

2007-10-24

2007-11-14

2007-11-29

2007-12-22

2007-12-30

2008-01-06

2008-01-14

2008-01-26

2008-02-03

2008-02-08

2008-02-20

2008-02-23

2008-03-07

2008-03-09

2008-03-13

2008-03-19

packages with init.d scripts

843

843

845

849

855

852

851

857

860

863

863

864

863

863

866

866

873

873

873

873

fraction with LSB headers

56%

57%

58%

60%

62%

63%

64%

66%

67%

68%

69%

70%

73%

73%

76%

77%

78%

79%

80%

83%

packages without LSB headers

373

363

353

336

325

319

303

292

287

280

269

258

237

229

212

203

187

181

172

148

base packages without LSB headers

2 of 40

1 of 40 (1 of 12 pkgs)

0 of 38 (0 of 10 pkgs)

0

0

0

0

0

0

0

0

0

0

desktop packages without LSB headers

6 of 58

7 of 70 (7 of 39 pkgs)

4 of 75 (4 of 42 pkgs)

With the current rate (2007-12-30) of packages being fixed to include the dependency information, it will take 410 days until all the remaining packages are fixed. Thanks to the default values provided since insserv version 1.09.0-4, most scripts get a useful start sequence position even without an LSB header. Scripts in rcS.d/ need a proper header, still.

All packages installed by more than 0.6% (444 installations) of the population (according to popcon.debian.org) are handled 2008-01-15.

A number of [http://bugs.debian.org/cgi-bin/pkgreport.cgi?usertag=initscripts-ng-devel@lists.alioth.debian.org bug reports] are submitted to request LSB headers in init.d scripts. It is useful to track [http://bugs.debian.org/cgi-bin/pkgreport.cgi?usertag=initscripts-ng-devel@lists.alioth.debian.org&dist=testing the ones open in testing] as well.

Known issues

To see the boot and reboot sequence dependecy graph, use

aptitude install insserv graphviz
/usr/share/insserv/check-initd-order -g > boot.dot
/usr/share/insserv/check-initd-order -g -k > reboot.dot
dotty boot.dot
dotty reboot.dot

The number of packages with init.d scripts was counted using apt-file update && apt-file search etc/init.d|cut -d: -f1|sort -u|wc -l in Debian/Sid. The number of packages missing LSB headers are fetched from [http://lintian.debian.org/reports/tags.html the lintian reports] for the [http://lintian.debian.org/reports/Tinit.d-script-missing-lsb-section.html init.d-script-missing-lsb-section] tag. The number of base and desktop packages missing headers were counted by creating chroots with debootstrap and tasksel.

To enable dependency based boot, the [http://packages.qa.debian.org/i/insserv.html insserv] package can be used. At [http://user.skolelinux.no/~pere/mypapers/200706-bootseq/200706-bootseq.html debconf7] and [http://www.hungry.com/~pere/mypapers/200802-bootsequence/200802-bootsequence.html FOSDEM 2008] ([http://meetings-archive.debian.net/pub/debian-meetings/2008/fosdem/ogg_theora/384x288/Reordering_the_Debian_boot_sequence_for_correctness_and_speed___Petter_Reinholdtsen.ogg video]), Petter Reinholdtsen gave a talk about the dependency based boot system. To enable it, install the insserv package and activate it like this:

aptitude install insserv && dpkg-reconfigure insserv

Make sure to use insserv version 1.09.0-6 or higher.

To usertag related bugs, send an email to request (at) bugs.debian.org, with content like this:

user initscripts-ng-devel (at) lists.alioth.debian.org
usertag 361054 + incorrect-dependency
usertag 361358 + missing-dependency
thanks

Packages left to fix

Generated using dd-list $(lynx -nolist -dump http://lintian.debian.org/reports/tags/init.d-script-missing-lsb-section.html | grep W: | cut -d" " -f2 | sort)

Guenter Geiger (Debian/GNU) <geiger@debian.org>
   realtime-lsm

Peter De Schrijver (p2) <p2@mind.be>
   linux-atm

Stefan Hornburg (Racke) <racke@linuxia.de>
   courier-authlib
   interchange

Cyril Lacoux (Yack) <clacoux@easter-eggs.com>
   digitools

Marco Presi (Zufus) <zufus@debian.org>
   linesrv

Artem Baguinski <artm@v2.nl>
   drscheme (U)

Alan Bain <afrb2@debian.org>
   rbootd

Daniel Baumann <daniel@debian.org>
   ipmasq

Hilko Bengen <bengen@debian.org>
   ulog-acctd

Grzegorz Bizon <verdan@pirx.int.pl>
   specter

Blars Blarson <blarson@blars.org>
   cnews

Achim Bohnet <ach@mpe.mpg.de>
   capisuite (U)

Ed Boraas <ed@debian.org>
   tinyproxy

Cyril Bouthors <cyril@bouthors.org>
   bld
   drbdlinks

Chris Boyle <cmb@debian.org>
   reaim

Adrian Bridgett <bridgett@debian.org>
   dante

Eric Van Buggenhaut <ericvb@debian.org>
   udhcp

Jesus Climent <jesus.climent@hispalinux.es>
   distmp3

Russell Coker <russell@coker.com.au>
   fcron (U)
   memlockd

Jamin W. Collins <jcollins@asgardsrealm.net>
   jabber

Carlo Contavalli <ccontavalli@debian.org>
   wipl

Marco d'Itri <md@linux.it>
   binkd

Julien Danjou <acid@debian.org>
   ledstats
   tetrinetx
   tleds

Debian Icecast team <pkg-icecast-devel@lists.alioth.debian.org>
   icecast2

Debian Multimedia Team <debian-multimedia@lists.debian.org>
   das-watchdog

Debian Nagios Maintainer Group <pkg-nagios-devel@lists.alioth.debian.org>
   nsca

Debian VoIP Team <pkg-voip-maintainers@lists.alioth.debian.org>
   rtpproxy

Bernd Eckenfels <ecki@debian.org>
   net-acct
   transproxy

Free Ekanayaka <freee@debian.org>
   das-watchdog (U)

Nick Estes <debian@nickstoys.com>
   upsd

Bartosz Fenski <fenio@debian.org>
   specter (U)

Martín Ferrari <martin.ferrari@gmail.com>
   vtun

sean finney <seanius@debian.org>
   nsca (U)

Jochen Friedrich <jochen@scram.de>
   isakmpd

Wilmer van der Gaast <wilmer@gaast.net>
   bitlbee

Radovan Garabik <garabik@melkor.dnp.fmph.uniba.sk>
   serpento

Radovan Garabík <garabik@kassiopeia.juls.savba.sk>
   karrigell
   xtell

Hector Garcia <hector@debian.org>
   smail

David Gil <dgil@telefonica.net>
   pads

John Goerzen <jgoerzen@complete.org>
   pygopherd

Daniel Gubser <guterm@debian.org>
   psad

Aurélien GÉRÔME <ag@roxor.cx>
   dancer-ircd
   dancer-services

Marc Haber <mh+debian-packages@zugschlus.de>
   ifupdown-scripts-zg2

Pierre Habouzit <madcoder@debian.org>
   whitelister

David B. Harris <dbharris@debian.org>
   ipband

Henrique de Moraes Holschuh <hmh@debian.org>
   fcron

Qingning Huo <qhuo@mayhq.co.uk>
   log2mail

Mario Iseli <admin@marioiseli.com>
   irmp3

Ian Jackson <ian@davenant.greenend.org.uk>
   userv

Jan Janak <jan@iptel.org>
   rtpproxy (U)

LENART Janos <ocsi@debian.org>
   jmon

Joerg Jaspert <joerg@debian.org>
   muddleftpd

Karl E. Jorgensen <karl@jorgensen.com>
   battery-stats

Takuo KITAME <kitame@debian.org>
   smtpguard

Matthias Klose <doko@debian.org>
   buildbot
   isdnutils (U)

Steve Kowalik <stevenk@debian.org>
   xringd

Antonin Kral <A.Kral@sh.cvut.cz>
   pimd

Kilian Krause <kilian@debian.org>
   rtpproxy (U)

Anand Kumria <wildfire@progsoc.org>
   tspc

Mario Lang <mlang@debian.org>
   filterproxy

Thomas Lange <lange@debian.org>
   fai

Chris Lawrence <lawrencc@debian.org>
   gnome-lokkit

John Lines <john@paladin.demon.co.uk>
   smtpd

Pablo Lorenzzoni <spectra@debian.org>
   tcpspy

Ola Lundqvist <opal@debian.org>
   dhttpd
   ledcontrol

Keita Maehara <maehara@debian.org>
   freewnn

Christoph Martin <christoph.martin@uni-mainz.de>
   mimedefang

Rene Mayrhofer <rene.mayrhofer@gibraltar.at>
   gibraltar-bootcd

Jonathan McDowell <noodles@earth.li>
   l2tpns

Neil McGovern <neilm@debian.org>
   blootbot

Michael Mende <debian@menole.net>
   wackamole

Abraham vd Merwe <abz@debian.org>
   ixbiff

Millis Miller <millis@faztek.org>
   iptotal

Loic Minier <lool@dooz.org>
   termpkg

lantz moore <lmoore@debian.org>
   rplay

Sam Morris <sam@robots.org.uk>
   pymsnt

Gergely Nagy <algernon@debian.org>
   tama

Jaakko Niemi <liiwi@debian.org>
   sfs

Recai Oktaş <roktas@debian.org>
   elog

Masahito Omote <omote@debian.org>
   totd

Sam Hocevar (Debian packages) <sam+deb@zoy.org>
   gnudip
   ipfm
   rinetd

Eloy A. Paris <peloy@debian.org>
   ncpfs

Javier Fernandez-Sanguino Pen~a <jfs@computer.org>
   pads (U)

Víctor Pérez Pereira <vperez@debianvenezuela.org>
   squidtaild

Nick Phillips <nwp@lemon-computing.com>
   teapop

Ari Pollak <ari@debian.org>
   drscheme

Cajus Pollmeier <cajus@debian.org>
   nsca (U)

Daniel J. Priem <danielpriem@flexserv.de>
   capisuite

Celso Providelo <cprov@gwyddion.com>
   sqcwa

Mark Purcell <msp@debian.org>
   hpoj
   rtpproxy (U)

Stephen Quinney <sjq@debian.org>
   ganglia-monitor-core (U)

Martin Quinson <mquinson@debian.org>
   nws

Simon Raven <simon@nuit.ca>
   blootbot (U)

Sebastian Rittau <srittau@debian.org>
   netatalk (U)

Kurt Roeckx <kurt@roeckx.be>
   ircd-irc2

Piotr Roszatycki <dexter@debian.org>
   ldapdns
   systune

Anibal Monsalve Salazar <anibal@debian.org>
   bpalogin
   ncpfs (U)
   pipsecd
   swapspace

Bernd Schumacher <bernd.schumacher@hp.com>
   secvpn

Frederik Schüler <fs@debian.org>
   wackamole (U)

Paul Slootman <paul@debian.org>
   isdnutils
   isdnutils (U)

Jonas Smedegaard <dr@jones.dk>
   icecast2 (U)
   netatalk
   netatalk (U)
   pop-before-smtp
   rpld

Roger So <rogerso@debian.org>
   im-sdk
   im-sdk (U)

Dennis Stampfer <seppy@debian.org>
   timeoutd

Andrew Stribblehill <ads@debian.org>
   ganglia-monitor-core (U)

Stephan A Suerken <absurd@debian.org>
   gom

Ondřej Surý <ondrej@debian.org>
   bird
   nsd
   postfix-policyd

Bryan Sutula <Bryan.Sutula@hp.com>
   openhpi

Akira TAGOH <tagoh@debian.org>
   im-sdk (U)

Jose Luis Tallon <jltallon@adv-solutions.net>
   couriergraph

Stuart Teasdale <sdt@debian.org>
   ganglia-monitor-core

Paul Telford <pxt@debian.org>
   mordor
   mudnames

Michael Tokarev <mjt@corpit.ru>
   rbldnsd

Junichi Uekawa <dancer@debian.org>
   rarpd

Fumitoshi UKAI <ukai@debian.or.jp>
   quickml
   smtpfeed

Santiago Vila <sanvila@debian.org>
   postfix-gld
   rbldnsd (U)

Michael Vogt <mvo@debian.org>
   scanlogd

Martin Waitz <tali@debian.org>
   oidentd

Lucas Wall <lwall@debian.org>
   popfile

Hanna Wallach <hmw26@cam.ac.uk>
   didiwiki

Chad Walstrom <chewie@debian.org>
   clamsmtp

Joerg Wendland <joergland@debian.org>
   ipvsadm

Brian White <bcwhite@pobox.com>
   genpower
   squid-prefetch

Martin Wuertele <maxx@debian.org>
   bopm

Matt Zimmerman <mdz@debian.org>
   umlrun


CategoryDeveloper