I spent Monday and tuesday this week in London with a lot of the
people involved in the boot system on Debian and Ubuntu, to see if we
could find more ways to speed up the boot system. This was an Ubuntu
funded
developer
gathering. It was quite productive. We also discussed the future
of boot systems, and ways to handle the increasing number of boot
issues introduced by the Linux kernel becoming more and more
asynchronous and event base. The Ubuntu approach using udev and
upstart might be a good way forward. Time will show.
Anyway, there are a few ways at the moment to speed up the boot
process in Debian. All of these should be applied to get a quick
boot:
- Use dash as /bin/sh.
- Disable the init.d/hwclock*.sh scripts and make sure the hardware
clock is in UTC.
- Install and activate the insserv package to enable
dependency
based boot sequencing, and enable concurrent booting.
These points are based on the Google summer of code work done by
Carlos
Villegas.
Support for makefile-style concurrency during boot was uploaded to
unstable yesterday. When we tested it, we were able to cut 6 seconds
from the boot sequence. It depend on very correct dependency
declaration in all init.d scripts, so I expect us to find edge cases
where the dependences in some scripts are slightly wrong when we start
using this.
On our IRC channel for this effort, #pkg-sysvinit, a new idea was
introduced by Raphael Geissert today, one that could affect the
startup speed as well. Instead of starting some scripts concurrently
from rcS.d/ and another set of scripts from rc2.d/, it would be
possible to run a of them in the same process. A quick way to test
this would be to enable insserv and run 'mv /etc/rc2.d/S* /etc/rcS.d/;
insserv'. Will need to test if that work. :)