Parallel booting enabled by default
-----BEGIN PGP SIGNED MESSAGE-----
Another small step in the improvement of the Debian boot system was
taken last weekend, when sysvinit version 2.88dsf-5 was uploaded. It
concluded an almost 8 year effort to get the Debian boot system to run
boot scripts in parallel. Parallel booting is enabled by default in
unstable at the moment, and will enter testing in some days, unless a
serious problem is found.
Running init.d scripts in parallel was proposed at Debconf in 2002,
and I started working on it early in 2005 after finding the insserv
package from SuSe capable of reordering the boot sequence based on
dependency information header information contained in each init.d
script. The header format is specified in the Linux Software Base
(LSB). Getting this to work required us to add a header to all init.d
scripts in Debian, affecting around 850 packages in the archive. This
was a release goal for Lenny, and enabling dependency based boot
sequencing using these headers has been possible for some years
now. Dependency based boot sequencing was enabled by default in
unstable and testing in last July, and the quality of the init.d
script dependencies have improved as a result of this.
The next natural step is to use the dependency information to run the
scripts in parallel, and this is now enabled when the machine uses
dependency based boot sequencing.
There is still more work left to do. Here are some issues I want to
* The early boot system needs to trigger based on kernel events, to
make sure the devices needed (as in USB or SCSI hard drives to be
mounted at boot) are available when fsck needs them. The most
promising candidate for this is upstart, but the newcomer systemd
looks interesting too.
* Several of the scripts currently started from /etc/rcS.d/ should be
moved to /etc/rc[1-5].d/ to improve the single user mode in Debian,
but also to increase the amount of concurrency during boot.
* Shutdown speed can be improved by removing scripts which only kill
their daemon from /etc/rc.d/ and leaving it to the sendsigs
script to kill all of them at the same time instead.
Petter Reinholdtsen, on behalf of
The sysvinit maintainers
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
-----END PGP SIGNATURE-----