]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - README
Merge pull request #32588 from CodethinkLabs/mkosi-selinux
[thirdparty/systemd.git] / README
diff --git a/README b/README
index d2d1def10164124f7c0868cf843e5dc455e06f5b..e41ab1ab7d3dd59c806ebd0498fe57053f9ccecf 100644 (file)
--- a/README
+++ b/README
@@ -98,6 +98,8 @@ REQUIREMENTS:
           CONFIG_SECCOMP_FILTER (required for seccomp support)
           CONFIG_KCMP (for the kcmp() syscall, used to be under
                        CONFIG_CHECKPOINT_RESTORE before ~5.12)
+          CONFIG_NET_SCHED
+          CONFIG_NET_SCH_FQ_CODEL
 
         Required for CPUShares= in resource control unit settings:
           CONFIG_CGROUP_SCHED
@@ -134,6 +136,10 @@ REQUIREMENTS:
           CONFIG_IMA_ARCH_POLICY
           CONFIG_INTEGRITY_MACHINE_KEYRING
 
+        Required for reading credentials from SMBIOS:
+          CONFIG_DMI
+          CONFIG_DMI_SYSFS
+
         Required for RestrictFileSystems= in service units:
           CONFIG_BPF
           CONFIG_BPF_SYSCALL
@@ -168,6 +174,7 @@ REQUIREMENTS:
         sure to either turn off auditing at runtime using the kernel command
         line option "audit=0", or turn it off at kernel compile time using:
           CONFIG_AUDIT=n
+
         If systemd is compiled with libseccomp support on architectures which do
         not use socketcall() and where seccomp is supported (this effectively
         means x86-64 and ARM, but excludes 32-bit x86!), then nspawn will now
@@ -210,9 +217,9 @@ REQUIREMENTS:
         python-pefile (optional, required for ukify)
         python-lxml (optional, required to build the indices)
         pyelftools (optional, required for systemd-boot)
-        meson >= 0.53.2
+        meson >= 0.60.0
         ninja
-        gcc >= 4.7
+        gcc >= 8.4
         awk, sed, grep, and similar tools
         clang >= 10.0, llvm >= 10.0 (optional, required to build BPF programs
                 from source code in C)
@@ -226,7 +233,6 @@ REQUIREMENTS:
         dbus >= 1.4.0 (strictly speaking optional, but recommended)
                 NOTE: If using dbus < 1.9.18, you should override the default
                 policy directory (--with-dbuspolicydir=/etc/dbus-1/system.d).
-        dracut (optional)
         polkit (optional)
 
         To build in directory build/:
@@ -258,16 +264,16 @@ REQUIREMENTS:
         make use of DynamicUser= now, hence enabling nss-systemd is not
         optional.
 
-        Note that the build prefix for systemd must be /usr. (Moreover, packages
+        Note that the build prefix for systemd must be /usr/. (Moreover, packages
         systemd relies on — such as D-Bus — really should use the same prefix,
-        otherwise you are on your own.) -Dsplit-usr=false (which is the default
-        and does not need to be specified) is the recommended setting.
-        -Dsplit-usr=true can be used to give a semblance of support for systems
-        with programs installed split between / and /usr. Moving everything
-        under /usr is strongly encouraged.
+        otherwise you are on your own.) Split-usr and unmerged-usr systems are no
+        longer supported, and moving everything under /usr/ is required. Systems
+        with a separate /usr/ partition must mount it before transitioning into it
+        (i.e.: from the initrd). For more information see:
+        https://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
+        https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge
 
         Additional packages are necessary to run some tests:
-        - busybox            (used by test/TEST-13-NSPAWN-SMOKE)
         - nc                 (used by test/TEST-12-ISSUE-3171)
         - python             (test-udev which is installed is in python)
         - python-pyparsing
@@ -282,18 +288,62 @@ POLICY FOR SUPPORT OF DISTRIBUTIONS AND ARCHITECTURES:
         latest Ubuntu LTS and non-LTS releases, openSUSE Tumbleweed/Leap,
         CentOS Stream 8 and 9, up-to-date Arch, etc.)  We will generally
         attempt to support also other non-EOL versions of various distros.
-        Features which would break compilation on slightly-older distributions
+        Features which would break compilation on slightly older distributions
         will only be introduced if there are significant reasons for this
         (i.e. supporting them interferes with development or requires too many
         resources to support). In some cases backports of specific libraries or
         tools might be required.
 
-        The policy is similar wrt. architecture support. systemd is regularly
+        The policy is similar for architecture support. systemd is regularly
         tested on popular architectures (currently amd64, i386, arm64, ppc64el,
         and s390x), but should compile and work also on other architectures, for
         which support has been added. systemd will emit warnings when
         architecture-specific constants are not defined.
 
+STATIC COMPILATION AND "STANDALONE" BINARIES:
+        systemd provides a public shared libraries libsystemd.so and
+        libudev.so. The latter is deprecated, and the sd-device APIs in
+        libsystemd should be used instead for new code. In addition, systemd is
+        built with a private shared library, libsystemd-shared-<suffix>.so,
+        that also includes the libsystemd code, and by default most systemd
+        binaries are linked to it. Using shared libraries saves disk space and
+        memory at runtime, because only one copy of the code is needed.
+
+        It is possible to build static versions of systemd public shared
+        libraries (via the configuration options '-Dstatic-libsystemd' and
+        '-Dstatic-libudev'). This allows the libsystemd and libudev code to be
+        linked statically into programs. Note that mixing & matching different
+        versions of libsystemd and systemd is generally not recommended, since
+        various of its APIs wrap internal state and protocols of systemd
+        (e.g. logind and udev databases), which are not considered
+        stable. Hence, using static libraries is not recommended since it
+        generally means that version of the static libsystemd linked into
+        applications and the host systemd are not in sync, and will thus create
+        compatibility problems.
+
+        In addition, it is possible to disable the use of
+        libsystemd-shared-<suffix>.so for various components (via the
+        configuration options '-Dlink-*-shared'). In this mode, the libsystemd
+        and libsystemd-shared code is linked statically into selected
+        binaries. This option is intended for systems where some of the
+        components are intended to be delivered independently of the main
+        systemd package. Finally, some binaries can be compiled in a second
+        version (via the configuration option '-Dstandalone-binaries'). The
+        version suffixed with ".standalone" has the libsystemd and
+        libsystemd-shared code linked statically. Those binaries are intended
+        as replacements to be used in limited installations where the full
+        systemd suite is not installed. Yet another option is to rebuild
+        systemd with a different '-Dshared-lib-tag' setting, allowing different
+        systemd binaries to be linked to instances of the private shared
+        library that can be installed in parallel.
+
+        Again: Using the default shared linking is recommended, building static
+        or "standalone" versions is not. Mixing versions of systemd components
+        that would normally be built and used together (in particular various
+        daemons and the manager) is not recommended: we do not test such
+        combinations upstream and cannot provide support. Distributors making
+        use of those options are responsible if things do not work as expected.
+
 USERS AND GROUPS:
         Default udev rules use the following standard system group names, which
         need to be resolvable by getgrnam() at any time, even in the very early
@@ -338,15 +388,16 @@ GLIBC NSS:
         DynamicUser= setting in unit files.)
 
         To make use of these NSS modules, please add them to the "hosts:",
-        "passwd:" and "group:" lines in /etc/nsswitch.conf. The "resolve" module
-        should replace the glibc "dns" module in this file (and don't worry, it
-        chain-loads the "dns" module if it can't talk to resolved).
+        "passwd:", "group:", "shadow:" and "gshadow:" lines in
+        /etc/nsswitch.conf.
 
         The four modules should be used in the following order:
 
-                passwd: compat systemd
-                group: compat systemd
-                hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
+                passwd: files systemd
+                group: files [SUCCESS=merge] systemd
+                shadow: files systemd
+                gshadow: files systemd
+                hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
 
 SYSV INIT.D SCRIPTS:
         When calling "systemctl enable/disable/is-enabled" on a unit which is a
@@ -360,28 +411,6 @@ SYSV INIT.D SCRIPTS:
         needs to look like, and provide an implementation at the marked places.
 
 WARNINGS and TAINT FLAGS:
-        systemd will warn during early boot if /usr is not already mounted at
-        this point (that means: either located on the same file system as / or
-        already mounted in the initrd). While in systemd itself very little
-        will break if /usr is on a separate late-mounted partition, many of its
-        dependencies very likely will break sooner or later in one form or
-        another. For example, udev rules tend to refer to binaries in /usr,
-        binaries that link to libraries in /usr, or binaries that refer to data
-        files in /usr. Since these breakages are not always directly visible,
-        systemd will warn about this. Such setups are not really supported by
-        the basic set of Linux OS components. Taint flag 'split-usr' will be
-        set when this condition is detected.
-
-        For more information on this issue consult
-        https://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
-
-        systemd will warn if the filesystem is not usr-merged (i.e.: /bin, /sbin
-        and /lib* are not symlinks to their counterparts under /usr). Taint flag
-        'unmerged-usr' will be set when this condition is detected.
-
-        For more information on this issue consult
-        https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge
-
         systemd requires that the /run mount point exists. systemd also
         requires that /var/run is a symlink to /run. Taint flag 'var-run-bad'
         will be set when this condition is detected.