ReplacementInit
From FrugalWiki
Contents |
Information
- Last modified: 17/05/2007
- Status: In Progress
- Assignee(s): AlexExtreme
- Targeted Release:0.7
Summary
This specification proposes that the current INIT system used in Frugalware and most other distros, sysvinit, be replaced by a more modern alternative.
Rationale
Currently the boot sequence is based on a series of shell scripts, with little error checking and no dependency checks. These scripts are run one after the other. This is bad for several reasons:
- If a script such as udev fails, then in some cases the system will still attempt to boot, causing a lot of errors when dealing with devices, since they don't exist.
- If DBUS fails to start, HAL and Avahi will still attempt to start, and they'll fail since they can't connect to the DBUS daemon. If DBUS dies, they will also die, and the user will have to restart DBUS and the services that depend on it manually, or reboot. This should be handled completely transparently.
- Slow. Every time a new services is added to boot, it gets slower. There are unnecessary waits in the boot sequence, for example: while waiting for network to be started, why not start everything else that doesn't require network in the meantime?
All these problems could be rectified with a modern replacement for sysvinit.
Use cases
- Bob is a server administrator who wishes for his services to be restarted if they fail, so that he doesn't constantly have to monitor the server, and so that he doesn't get locked out if sshd fails.
- Betty is a casual user who wants to quickly boot her machine to check her email before she leaves. She wants to get it done as quickly as possible, so having her machine boot fast is important to her.
Scope
This specification affects the sysvinit package (to be removed) and all the packages which currently provide an init script
Design
N/A
Implementation
Stage 1 (Completed)
The first implementation step is to pick an INIT system. The candidates are as follows:
This stage has been completed. Upstart has been picked as the new INIT system.
Stage 2 (Completed)
Start a darcs repo for writing the replacement initscripts, and write them.
The core initscripts have been done
Stage 3 (In progress)
Start another darcs repo, init-mess, for packaging the new init system and start converting all packages that use sysvinit in any way
See FwUpstart
Stage 4 (In progress)
Discuss how compatibility will be retained with proprietary applications that provide sysvinit based scripts
Upstart provides a SysV compatibility layer which allows us to easily run these old scripts
Stage 5
Merge the init-mess repo into -current
Code
N/A
Compatibility
See Stage 4 of implementation plan.