Init
Related articles
Init is the first process started during system boot. It is a a daemon process that continues running until the system is shut down. Init is the direct or indirect ancestor of all other processes, and automatically adopts all orphaned processes. It is started by the kernel using a hard-coded filename; if the kernel is unable to start it, panic will result. Init is typically assigned process identifier 1.
The init scripts (or rc) are launched by the init process to guarantee basic functionality on system start and shutdown. This includes (un)mounting of file systems and launching of daemons. A service manager takes this one step further by providing active control over launched processes, or process supervision. An example is to monitor for crashes and restart processes accordingly.
These components combine to the init system. Some inits include the service manager in the init process, or have init scripts in close relation to them. These inits are below referred to as integrated, though entries in different categories may explicitely depend on each other.
Contents
Inits (integrated)
- systemd — Dependency-based init system with aggressive parallelization, process supervision using cgroups, and the ability to depend on a given mount point or dbus service.
- uselessd — A fork of systemd v208.
- Upstart — Event-based init system which handles starting, stopping and supervising of tasks and services.
- initng — Dependency-based init system with parallelization and asynchronous start.
- Epoch — Single-threaded init system designed for minimal footprint, compatibility and unified configuration.
- finit — Small init system written in Ruby supporting cgroups and socket activation.
Inits
- BusyBox — Utilities for rescue and embedded systems.
- SysVinit — Traditional System V init.
- ninit — Fork from minit
- sinit — Simple init initially based on Rich Felker’s minimal init.
Init scripts
- initscripts-fork — Maintained fork of SysVinit scripts in Arch Linux.
- minirc — Minimal init script designed for BusyBox.
- OpenRC Arch services — OpenRC service scripts compatible to Arch Linux.
- spark-rc — A simple rc script to kickstart your system.
- watchman-sm-services — Examples of services for watchman.
Service managers
- daemontools — Collection of tools for managing UNIX services.
- Monit — Monit is a process supervision tool for Unix and Linux. With monit, system status can be viewed directly from the command line, or via the native HTTP(S) web server.
- OpenRC — Dependency-based rc system that works with the system-provided init, normally SysVinit.
- perp — Persistent process (service) supervisor and managment framework for UNIX.
- runit — UNIX init scheme with service supervision, a replacement for SysVinit, and other init schemes.
- s6 — Small suite of programs for UNIX, designed to allow service supervision in the line of daemontools and runit.
- watchman — A not-so-simple service manager for Linux.
Troubleshooting
This section addresses potential problems when not using systemd.
Cron functionality
Arch uses timer files instead of cron by default. Install archlinux-cronjobs from the AUR for basic cron jobs.
Group permissions
Systemd handles groups with logind
and local sessions. Without them, users should add themselves to the respective groups (such as audio, video) and reboot. See Groups#Group_management for details. Policykit agents require a local session, but group rules can be used instead. See Polkit#Bypass_password_prompt.
Alternatively, see ConsoleKit.
Rootless X (1.16)
See Xorg#Rootless Xorg (v1.16).
Start X on the same TTY
This also prevents interrupting the current Xorg process from a different TTY. See [1] for details.
Syslog-ng
Syslog-ng is configured for journalctl
by default. Edit /etc/syslog-ng/syslog-ng.conf
:
source src { unix-stream("/dev/log"); internal(); file("/proc/kmsg"); };
See Syslog-ng#Sources for details
Replacing the systemd package
The systemd packages include several components besides the init system:
- systemd-udev for device hot-plugging. Alternatives include eudev, mdev and smdev.
- systemd libraries linked against software such as Xorg. In case libsystemd is not desired (for example when using eudev, which provides its own
libudev.so
), install libsystemd-standalone or eudev-systemdcompat. - Helper utilities such as systemd-tmpfiles and systemd-sysusers used in pacman
.install
files.