]> git.ipfire.org Git - thirdparty/systemd.git/blame - docs/DISTRO_PORTING.md
fs-util: suppress world-writable warnings if we read /dev/null
[thirdparty/systemd.git] / docs / DISTRO_PORTING.md
CommitLineData
c3e270f4
FB
1---
2title: Porting systemd To New Distributions
3---
4
1d1cb168
FB
5# Porting systemd To New Distributions
6
7## HOWTO
8
9You need to make the follow changes to adapt systemd to your
10distribution:
11
121. Find the right configure parameters for:
13
14 * `-Drootprefix=`
15 * `-Dsysvinit-path=`
16 * `-Dsysvrcnd-path=`
17 * `-Drc-local=`
18 * `-Dhalt-local=`
19 * `-Dloadkeys-path=`
20 * `-Dsetfont-path=`
21 * `-Dtty-gid=`
22 * `-Dntp-servers=`
23 * `-Ddns-servers=`
24 * `-Dsupport-url=`
25
262. Try it out.
27
28 Play around (as an ordinary user) with
29 `/usr/lib/systemd/systemd --test --system` for a test run
30 of systemd without booting. This will read the unit files and
31 print the initial transaction it would execute during boot-up.
32 This will also inform you about ordering loops and suchlike.
33
57903f93
ZJS
34## Compilation options
35
36The default configuration does not enable any optimization or hardening
37options. This is suitable for development and testing, but not for end-user
38installations.
39
40For deployment, optimization (`-O2` or `-O3` compiler options), link time
41optimization (`-Db_lto=true` meson option), and hardening (e.g.
42`-D_FORTIFY_SOURCE=2`, `-fstack-protector-strong`, `-fstack-clash-protection`,
43`-fcf-protection`, `-pie` compiler options, and `-z relro`, `-z now`,
44`--as-needed` linker options) are recommended. The most appropriate set of
45options depends on the architecture and distribution specifics so no default is
46provided.
47
1d1cb168
FB
48## NTP Pool
49
50By default, systemd-timesyncd uses the Google Public NTP servers
51`time[1-4].google.com`, if no other NTP configuration is available.
52They serve time that uses a
53[leap second smear](https://developers.google.com/time/smear)
54and can be up to .5s off from servers that use stepped leap seconds.
55
56If you prefer to use leap second steps, please register your own
57vendor pool at ntp.org and make it the built-in default by
58passing `-Dntp-servers=` to meson. Registering vendor
59pools is [free](http://www.pool.ntp.org/en/vendors.html).
60
61Use `-Dntp-servers=` to direct systemd-timesyncd to different fallback
62NTP servers.
63
64## DNS Servers
65
def3c7c7
IK
66By default, systemd-resolved uses Cloudflare and Google Public DNS servers
67`1.1.1.1`, `8.8.8.8`, `1.0.0.1`, `8.8.4.4`, `2606:4700:4700::1111`, `2001:4860:4860::8888`, `2606:4700:4700::1001`, `2001:4860:4860::8844`
1d1cb168
FB
68as fallback, if no other DNS configuration is available.
69
70Use `-Ddns-servers=` to direct systemd-resolved to different fallback
71DNS servers.
72
73## PAM
74
75The default PAM config shipped by systemd is really bare bones.
76It does not include many modules your distro might want to enable
77to provide a more seamless experience. For example, limits set in
78`/etc/security/limits.conf` will not be read unless you load `pam_limits`.
79Make sure you add modules your distro expects from user services.
80
81Pass `-Dpamconfdir=no` to meson to avoid installing this file and
82instead install your own.
83
84## Contributing Upstream
85
86We generally do no longer accept distribution-specific patches to
87systemd upstream. If you have to make changes to systemd's source code
88to make it work on your distribution, unless your code is generic
89enough to be generally useful, we are unlikely to merge it. Please
90always consider adopting the upstream defaults. If that is not
91possible, please maintain the relevant patches downstream.
92
93Thank you for understanding.