Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

The primary source of tasks in the boot sequence comes from the initscripts package, which are implemented as serial shell scripts within the sysv-rc framework. This specification proposes their replacement with event-based upstart jobs.

You may want to look at UbuntuBootupHowto for a practical look on how to use Upstart in ubuntu.

Rationale

Our boot sequence is currently slow, full of race conditions and poor interactions, especially with competition between the series of tasks run by sysv-rc, udev and sometimes just with the kernel. We developed upstart so that we could have a truly event driven boot sequence that would be fast, reliable and flexible; we should take advantage of it.

Use Cases

This specification is the logical next step of the ReplacementInit specification implemented for edgy, see that specification for use cases.

Scope

The boot sequence is a complex series of moving parts, and any replacement should be done in stages with ample testing between. Therefore this specification does not specify the ultimate final result, and instead specifies the pattern of work and draft of the likely outcome.

Design

The new boot sequence will be driven by events received from the kernel, and generated by upstart as a result of running other tasks. Where possible, tasks that do not conflict will be run in parallel, and will only be run once their needs are met.

A draft chart based on the current boot sequence is given below. Note that there are already known bugs in this chart, as these bugs exist in our current boot sequence.

Graph.png

Rationale for Changes

A few changes were made in the above chart compared to the actual current boot sequence, the rationale for these is given below.

Known Bugs

Unconfirmed by Scott:

Implementation

The implementation process of this specification will be performed on a task-by-task basis. We can do this because existing init scripts will continue to be run by upstart once the jobs it manages have been run.

The order of work will be roughly:

Ideally the /etc/rcS.d directory of a fresh install, or one with only packages from main should be empty. We'll continue to run anything here, of course.

If there is time, jobs from rc2 will be tackled. Priorities are:

Care will be taken to use appropriate dependency relationships throughout the development plan, so that partial upgrades are held rather than broken, when all the pieces are not in place. For example, startup-tasks and initscripts will use Breaks to make it obvious that they require similar versions.


CategorySpec

ReplacementInitscripts (last edited 2011-01-19 05:32:02 by 109-170-137-116)