What is it ?
s6-linux-init is a set of minimalistic tools used to create a
system, including a /sbin/init binary, on a Linux kernel.
It is a part of the s6 ecosystem.
The resulting architecture follows the Unix philosophy (one job →
one tool) as closely as possible, and is fully dedicated to the s6 way of
managing a system:
runs as process 1 for the whole machine lifetime.
- Every daemon is supervised.
- No logs are ever lost.
- Policy is entirely left to the user. Typically, any service manager
can be run on top of s6-linux-init.
Nevertheless, the architecture is fully compliant with various
empirical and historical specifications. For instance, it provides:
- utmp management compatible with sysvinit
- runlevel management, with a configurable default, overridable from the
kernel command line
- sysvinit-like commands to shut the system down, including a
shutdown command that follows the
- A Linux-based system with a standard C development environment
- GNU make, version 3.81 or later
- skalibs version
184.108.40.206 or later. It's a build-time requirement. It's also a run-time
requirement (for s6-linux-init-maker)
as well as a boot-time requirement (i.e. a run-time requirement for the
programs used when you boot a system created with
s6-linux-init-maker) if you link
against the shared version of the skalibs library.
- execline version
220.127.116.11 or later. It is a build-time and boot-time requirement.
- s6 version
18.104.22.168 or later. It is a build-time and boot-time requirement.
The following optional dependencies are also supported:
- If you're using musl and
want nsswitch-like functionality:
0.2.0.1 or later (build-time and boot-time)
- If you want secure utmp functionality:
0.1.2.0 or later (build-time and boot-time)
All those dependencies are build-time and run-time,
except possibly skalibs, which is not needed at run time if you are linking
all the other packages against the static version of libskarnet.
s6-linux-init is free software. It is available under the
- See the enclosed INSTALL file for installation details.
- This page lists the differences to be aware of between
the previous versions of s6-linux-init and the current one.
Unless more details are provided in an Exit codes section
of a specific page, all these commands exit 0 on success, 111 if they encounter a
temporary error (such as a system call failure) and 100 if they encounter a
permanent error (such as a misuse).
- s6-linux-init is discussed on the
- There is a #s6 IRC channel on OFTC. Sometimes people
are there and even answer questions.