summaryrefslogtreecommitdiff
path: root/doc/index.html
blob: 663ea52387283a781ed3652f94c3f46947a2bd22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Language" content="en" />
    <title>s6-linux-init - tools for a Linux init system</title>
    <meta name="Description" content="s6-linux-init - tools for a Linux init system" />
    <meta name="Keywords" content="s6 linux init administration root laurent bercot ska skarnet" />
    <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
  </head>
<body>

<p>
<a href="//skarnet.org/software/">Software</a><br />
<a href="//skarnet.org/">skarnet.org</a>
</p>

<h1> s6-linux-init </h1>

<h2> What is it&nbsp;? </h2>

<p>
 s6-linux-init is a set of minimalistic tools used to create a
<a href="//skarnet.org/software/s6/">s6</a>-based init
system, including a <tt>/sbin/init</tt> binary, on a Linux kernel.
It is a part of the <em>s6 ecosystem</em>.
</p>

<p>
 The resulting architecture follows the Unix philosophy (one job &rarr;
one tool) as closely as possible, and is fully dedicated to the s6 way of
managing a system:
</p>

<ul>
 <li> <a href="//skarnet.org/software/s6/s6-svscan.html">s6-svscan</a>
runs as process 1 for the whole machine lifetime. </li>
 <li> Every daemon is supervised. </li>
 <li> No logs are ever lost. </li>
 <li> Policy is entirely left to the user. Typically, <em>any</em> service manager
can be run on top of s6-linux-init. </li>
</ul>

<p>
 Nevertheless, the architecture is fully compliant with various
empirical and historical specifications. For instance, it provides:
</p>

<ul>
 <li> utmp management compatible with sysvinit </li>
 <li> runlevel management, with a configurable default, overridable from the
kernel command line </li>
 <li> sysvinit-like commands to shut the system down, including a
<tt>shutdown</tt> command that follows the
<a href="https://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/shutdown.html">LSB specification</a> </li>
</ul>

<hr />

<ul>
 <li> <a href="why.html">Why</a> s6-linux-init&nbsp;? </li>
 <li> <a href="overview.html">An overview</a> of s6-linux-init </li>
 <li> <a href="quickstart.html">A quickstart guide</a> for the impatient, along with a FAQ </li>
</ul>

<hr />

<h2> Installation </h2>

<h3> Requirements </h3>

<ul>
 <li> A Linux-based system with a standard C development environment </li>
 <li> GNU make, version 3.81 or later </li>
 <li> <a href="//skarnet.org/software/skalibs/">skalibs</a> version
2.11.1.0 or later. It's a build-time requirement. It's also a run-time
requirement (for <a href="s6-linux-init-maker.html">s6-linux-init-maker</a>)
as well as a boot-time requirement (i.e. a run-time requirement for the
programs used when you boot a system created with
<a href="s6-linux-init-maker.html">s6-linux-init-maker</a>) if you link
against the shared version of the skalibs library. </li>
 <li> <a href="//skarnet.org/software/execline/">execline</a> version
2.8.2.0 or later. It is a build-time and boot-time requirement. </li>
 <li> <a href="//skarnet.org/software/s6/">s6</a> version
2.11.0.1 or later. It is a build-time and boot-time requirement. </li>
</ul>

<p>
 The following optional dependencies are also supported:
</p>

<ul>
 <li> If you're using <a href="https://www.musl-libc.org/">musl</a> and
want nsswitch-like functionality:
<a href="//skarnet.org/software/nsss/">nsss</a> version
0.2.0.0 or later (build-time and boot-time) </li>
 <li> If you want secure utmp functionality:
<a href="//skarnet.org/software/utmps/">utmps</a> version
0.1.1.0 or later (build-time and boot-time) </li>
</ul>

<p>
 All those dependencies are <em>build-time</em> and <em>run-time</em>,
except possibly skalibs, which is not needed at run time if you are linking
all the other packages against the <em>static</em> version of libskarnet.
</p>

<h3> Licensing </h3>

<p>
 s6-linux-init is free software. It is available under the
<a href="https://opensource.org/licenses/ISC">ISC license</a>.
</p>

<h3> Download </h3>

<ul>
 <li> The current released version of s6-linux-init is
<a href="s6-linux-init-1.0.7.0.tar.gz">1.0.7.0</a>. </li>
 <li> Alternatively, you can checkout a copy of the
<a href="//git.skarnet.org/cgi-bin/cgit.cgi/s6-linux-init/">s6-linux-init
git repository</a>:
<pre> git clone git://git.skarnet.org/s6-linux-init </pre> </li>
 <li> There's also a
<a href="https://github.com/skarnet/s6-linux-init">GitHub mirror</a>
of the s6-linux-init git repository. </li>
</ul>

<h3> Compilation </h3>

<ul>
 <li> See the enclosed INSTALL file for installation details. </li>
</ul>

<h3> Upgrade notes </h3>

<ul>
 <li> <a href="upgrade.html">This page</a> lists the differences to be aware of between
the previous versions of s6-linux-init and the current one. </li>
</ul>

<hr />

<h2> Reference </h2>

<h3> General </h3>

<ul>
 <li> A <a href="why.html">rationale</a> for this package </li>
 <li> An <a href="overview.html">overview</a> of s6-linux-init </li>
 <li> A <a href="quickstart.html">quickstart page</a> </li>
</ul>

<h3> Commands </h3>

<p>
 Unless more details are provided in an <em>Exit codes</em> 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).
</p>

<ul>
<li><a href="s6-linux-init-maker.html">The <tt>s6-linux-init-maker</tt> program</a></li>
<li><a href="s6-linux-init.html">The <tt>s6-linux-init</tt> program</a></li>
<li><a href="s6-linux-init-hpr.html">The <tt>s6-linux-init-hpr</tt> program</a></li>
<li><a href="s6-linux-init-shutdown.html">The <tt>s6-linux-init-shutdown</tt> program</a></li>
<li><a href="s6-linux-init-shutdownd.html">The <tt>s6-linux-init-shutdownd</tt> program</a></li>
<li><a href="s6-linux-init-telinit.html">The <tt>s6-linux-init-telinit</tt> program</a></li>
<li><a href="s6-linux-init-logouthookd.html">The <tt>s6-linux-init-logouthookd</tt> program</a></li>
<li><a href="s6-linux-init-echo.html">The <tt>s6-linux-init-echo</tt> program</a></li>
<li><a href="s6-linux-init-nuke.html">The <tt>s6-linux-init-nuke</tt> program</a></li>
<li><a href="s6-linux-init-umountall.html">The <tt>s6-linux-init-umountall</tt> program</a></li>
</ul>

<h2> Related resources </h2>

<ul>
 <li> <tt>s6-linux-init</tt> is discussed on the
<a href="//skarnet.org/lists/#skaware">skaware</a> and
<a href="//skarnet.org/lists/#supervision">supervision</a>
mailing-lists. </li>
 <li> There is a <tt>#s6</tt> IRC channel on OFTC. Sometimes people
are there and even answer questions. </li>
</ul>

</body>
</html>