News | About | Get Frugalware | Packages | Documentation | Discussion Forums | Bug Tracker | Wiki | Community | Development

ReplacementInit

From FrugalWiki

Jump to: navigation, search

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.

Personal tools
Namespaces
Variants
Actions