Please review status update on dep-based boot sequencing
pere at hungry.com
Sun Mar 16 12:00:35 UTC 2008
As it probably is time to give a new status update on the dependency
based boot sequencing release goal, I tried to collect an update in
Anyone got time to review it and suggest changes and improvements?
To: debian-devel-announce at lists.debian.org
Subject: Status of dependency based boot sequencing release goal 2008-03
Here is a small update on the release goal of converting the Debian
boot sequening to use dynamic and dependency based ordering instead of
hardcoded sequence numbers.
The latest status information is available from
<URL: http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot >.
As of 2008-03-07, all packages with missing dependency information in
one of their init.d scripts have been reported to BTS. More than 80%
of the packages with init.d scripts already provide this dependency
information, and the amount is increasing rapidly. We are currently in
the process of NMUing the about 165 source packages without headers,
to get the amount up to 100%. As this is a release goal, 0-day NMUs
are OK, and will be uploaded if the maintainer do not respond fairly
As it is now possible to use the dependency headers in the init.d
scripts, some of us are already using insserv to order the boot. In
most cases, this work just fine, but as this is the first time the
provided dependencies are used, bugs are discovered. Bugs in the
headers are reported as important, as it messes up the boot and
shutdown sequence on machines using dependency based boot sequencing.
There are several classes of bugs:
* Start and stop symlinks are inserted in the wrong rcX.d/
directory. The header should reflect the call done to update-rc.d
in the postinst. A common bug is to list S in default-stop. This
is always a mistake and lintian warn about it.
* Missing dependencies or incorrect dependencies, giving the wrong
order. A common bug is to not depend on $remote_fs when using
files in /usr/, or when having a daemon that should be stopped
before sendsigs kill all processes.
* Listing unwanted and unneeded dependencies, some times creating a
* Failing to remove obsolete init.d scripts on upgrades, leaving
behind a script with incorrect or missing dependency header that
can not be fixed during upgrades.
* Incorrect ordering of update-rc.d calls. Packages with several
init.d scripts need to make sure their postinst script insert them
in dependency order.
Most of these have been fixed already, and insserv will check the
current set of script for consistency before enabling dependency based
boot sequencing. Around 20 such bugs are still open in unstable. I
urge maintainers to check their packages dependencies and upload a
fixed version if there are bugs.
To weed out these bugs, testing is needed. As there are still a lot of
problems with packages not propagating into testing, I would recommend
to limit testing to unstable installations at the moment.
To test dependency based boot sequencing, run
aptitude install insserv && dpkg-reconfigure insserv
and answer yes when asked if it should be enabled. If the consistency
check work out, the boot system will switch to dependency based
ordering. The /usr/ share/insserv/seq-changes script can be used to
summarize the sequence changes done, and
/usr/share/insserv/check-initd-order can be used to verify that the
current sequence is according to the provided dependency headers. It
is possible to disable dependency based boot sequencing. It is
guaranteed to work by simply restoring the old boot order if no new
init.d scripts have been installed since it was enabled. It will try
its best to convert if changes have been made, but that method might
fail if other packages refuse to run their postinst scripts.
It is possible to enable insserv using preseeding, and I have been
told that at least one creator of live Debian CDs is using it to clean
up the boot.
If you want to discuss this release goal, please join us on
#pkg-sysvinit on irc.debian.org and the
<URL: http://lists.alioth.debian.org/mailman/listinfo/initscripts-ng-devel >
More information about the initscripts-ng-devel