chiark / gitweb /
util: mark page_size() as pure
[elogind.git] / README
1 systemd System and Service Manager
2
3 DETAILS:
4         http://0pointer.de/blog/projects/systemd.html
5
6 WEB SITE:
7         http://www.freedesktop.org/wiki/Software/systemd
8
9 GIT:
10         git://anongit.freedesktop.org/systemd/systemd
11         ssh://git.freedesktop.org/git/systemd/systemd
12
13 GITWEB:
14         http://cgit.freedesktop.org/systemd/systemd
15
16 MAILING LIST:
17         http://lists.freedesktop.org/mailman/listinfo/systemd-devel
18         http://lists.freedesktop.org/mailman/listinfo/systemd-commits
19
20 IRC:
21         #systemd on irc.freenode.org
22
23 BUG REPORTS:
24         https://bugs.freedesktop.org/enter_bug.cgi?product=systemd
25
26 AUTHOR:
27         Lennart Poettering
28         Kay Sievers
29         ...and many others
30
31 LICENSE:
32         LGPLv2.1+ for all code
33         - except src/shared/MurmurHash2.c which is Public Domain
34         - except src/shared/siphash24.c which is CC0 Public Domain
35         - except src/journal/lookup3.c which is Public Domain
36         - except src/udev/* which is (currently still) GPLv2, GPLv2+
37
38 REQUIREMENTS:
39         Linux kernel >= 3.7
40         Linux kernel >= 3.8 for Smack support
41
42         Kernel Config Options:
43           CONFIG_DEVTMPFS
44           CONFIG_CGROUPS (it is OK to disable all controllers)
45           CONFIG_INOTIFY_USER
46           CONFIG_SIGNALFD
47           CONFIG_TIMERFD
48           CONFIG_EPOLL
49           CONFIG_NET
50           CONFIG_SYSFS
51           CONFIG_PROC_FS
52           CONFIG_FHANDLE (libudev, mount and bind mount handling)
53
54         udev will fail to work with the legacy sysfs layout:
55           CONFIG_SYSFS_DEPRECATED=n
56
57         Legacy hotplug slows down the system and confuses udev:
58           CONFIG_UEVENT_HELPER_PATH=""
59
60         Userspace firmware loading is not supported and should
61         be disabled in the kernel:
62           CONFIG_FW_LOADER_USER_HELPER=n
63
64         Some udev rules and virtualization detection relies on it:
65           CONFIG_DMIID
66
67         Support for some SCSI devices serial number retrieval, to
68         create additional symlinks in /dev/disk/ and /dev/tape:
69           CONFIG_BLK_DEV_BSG
70
71         Required for PrivateNetwork in service units:
72           CONFIG_NET_NS
73
74         Optional but strongly recommended:
75           CONFIG_IPV6
76           CONFIG_AUTOFS4_FS
77           CONFIG_TMPFS_POSIX_ACL
78           CONFIG_TMPFS_XATTR
79           CONFIG_SECCOMP
80
81         Required for CPUShares in resource control unit settings
82           CONFIG_CGROUP_SCHED
83           CONFIG_FAIR_GROUP_SCHED
84
85         For systemd-bootchart, several proc debug interfaces are required:
86           CONFIG_SCHEDSTATS
87           CONFIG_SCHED_DEBUG
88
89         For UEFI systems:
90           CONFIG_EFIVAR_FS
91           CONFIG_EFI_PARTITION
92
93         Note that kernel auditing is broken when used with systemd's
94         container code. When using systemd in conjunction with
95         containers, please make sure to either turn off auditing at
96         runtime using the kernel command line option "audit=0", or
97         turn it off at kernel compile time using:
98           CONFIG_AUDIT=n
99         If systemd is compiled with libseccomp support on
100         architectures which do not use socketcall() and where seccomp
101         is supported (this effectively means x86-64 and ARM, but
102         excludes 32-bit x86!), then nspawn will now install a
103         work-around seccomp filter that makes containers boot even
104         with audit being enabled. This works correctly only on kernels
105         3.14 and newer though. TL;DR: turn audit off, still.
106
107         glibc >= 2.14
108         libcap
109         libseccomp >= 1.0.0 (optional)
110         libblkid >= 2.20 (from util-linux) (optional)
111         libkmod >= 15 (optional)
112         PAM >= 1.1.2 (optional)
113         libcryptsetup (optional)
114         libaudit (optional)
115         libacl (optional)
116         libselinux (optional)
117         liblzma (optional)
118         liblz4 >= 119 (optional)
119         libgcrypt (optional)
120         libqrencode (optional)
121         libmicrohttpd (optional)
122         libpython (optional)
123         libidn (optional)
124         gobject-introspection > 1.40.0 (optional)
125         elfutils >= 158 (optional)
126         make, gcc, and similar tools
127
128         During runtime, you need the following additional
129         dependencies:
130
131         util-linux >= v2.25 required
132         dbus >= 1.4.0 (strictly speaking optional, but recommended)
133         dracut (optional)
134         PolicyKit (optional)
135
136         When building from git, you need the following additional
137         dependencies:
138
139         docbook-xsl
140         xsltproc
141         automake
142         autoconf
143         libtool
144         intltool
145         gperf
146         gtkdocize (optional)
147         python (optional)
148         python-lxml (optional, but required to build the indices)
149         sphinx (optional)
150
151         When systemd-hostnamed is used, it is strongly recommended to
152         install nss-myhostname to ensure that, in a world of
153         dynamically changing hostnames, the hostname stays resolvable
154         under all circumstances. In fact, systemd-hostnamed will warn
155         if nss-myhostname is not installed.
156
157         To build HTML documentation for python-systemd using sphinx,
158         please first install systemd (using 'make install'), and then
159         invoke sphinx-build with 'make sphinx-<target>', with <target>
160         being 'html' or 'latexpdf'. If using DESTDIR for installation,
161         pass the same DESTDIR to 'make sphinx-html' invocation.
162
163 USERS AND GROUPS:
164         Default udev rules use the following standard system group
165         names, which need to be resolvable by getgrnam() at any time,
166         even in the very early boot stages, where no other databases
167         and network are available:
168
169         audio, cdrom, dialout, disk, input, kmem, lp, tape, tty, video
170
171         During runtime, the journal daemon requires the
172         "systemd-journal" system group to exist. New journal files will
173         be readable by this group (but not writable), which may be used
174         to grant specific users read access.
175
176         It is also recommended to grant read access to all journal
177         files to the system groups "wheel" and "adm" with a command
178         like the following in the post installation script of the
179         package:
180
181         # setfacl -nm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/
182
183         The journal gateway daemon requires the
184         "systemd-journal-gateway" system user and group to
185         exist. During execution this network facing service will drop
186         privileges and assume this uid/gid for security reasons.
187
188         Similarly, the NTP daemon requires the "systemd-timesync" system
189         user and group to exist.
190
191         Similarly, the network management daemon requires the
192         "systemd-network" system user and group to exist.
193
194         Similarly, the name resolution daemon requires the
195         "systemd-resolve" system user and group to exist.
196
197         Similarly, the kdbus dbus1 proxy daemon requires the
198         "systemd-bus-proxy" system user and group to exist.
199
200 NSS:
201         systemd ships with three NSS modules:
202
203         nss-myhostname resolves the local hostname to locally
204         configured IP addresses, as well as "localhost" to
205         127.0.0.1/::1.
206
207         nss-resolve enables DNS resolution via the systemd-resolved
208         DNS/LLMNR caching stub resolver "systemd-resolved".
209
210         nss-mymachines enables resolution of all local containers
211         registered with machined to their respective IP addresses.
212
213         To make use of these NSS modules, please add them to the
214         "hosts: " line in /etc/nsswitch.conf. The "resolve" module
215         should replace the glibc "dns" module in this file.
216
217         The three modules should be used in the following order:
218
219                 hosts: files mymachines resolve myhostname
220
221 WARNINGS:
222         systemd will warn you during boot if /etc/mtab is not a
223         symlink to /proc/mounts. Please ensure that /etc/mtab is a
224         proper symlink.
225
226         systemd will warn you during boot if /usr is on a different
227         file system than /. While in systemd itself very little will
228         break if /usr is on a separate partition, many of its
229         dependencies very likely will break sooner or later in one
230         form or another. For example, udev rules tend to refer to
231         binaries in /usr, binaries that link to libraries in /usr or
232         binaries that refer to data files in /usr. Since these
233         breakages are not always directly visible, systemd will warn
234         about this, since this kind of file system setup is not really
235         supported anymore by the basic set of Linux OS components.
236
237         systemd requires that the /run mount point exists. systemd also
238         requires that /var/run is a a symlink to /run.
239
240         For more information on this issue consult
241         http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
242
243         To run systemd under valgrind, compile with VALGRIND defined
244         (e.g. ./configure CPPFLAGS='... -DVALGRIND=1'). Otherwise,
245         false positives will be triggered by code which violates
246         some rules but is actually safe.
247
248 ENGINEERING AND CONSULTING SERVICES:
249         ENDOCODE <https://endocode.com/> offers professional
250         engineering and consulting services for systemd. Please
251         contact Chris Kühl <chris@endocode.com> for more information.