Go to file
Jonathan Lebon 93651582ae manager: optionally, do a full preset on first boot
A compile time option is added to select behaviour: by default
UNIT_FILE_PRESET_ENABLE_ONLY is still used, but the intent is to change to
UNIT_FILE_PRESET_FULL at some point in the future. Distros that want to
opt-in can use the config option to change the behaviour.

(The option is just a boolean: it would be possible to make it multi-valued,
and allow full, enable-only, disable-only, none. But so far nobody has asked
for this, and it's better not to complicate things needlessly.)

With the configuration option flipped, instead of only doing enablements,
perform a full preset on first boot. The reason is that although
`/etc/machine-id` might be missing, there may be other files provisioned in
`/etc` (in fact, this use case is mentioned in `log_execution_mode`). Some of
those possible files include enablement symlinks even if presets dictate it
should be disabled.

Such a seemingly contradictory situation occurs in {RHEL,Fedora} CoreOS,
where we ship `/etc` as if `preset-all` were called. However, we want to
allow users to disable default-enabled services via Ignition, which does
this by creating preset dropins before switchroot. (For why we do
`preset-all` at compose time, see:
https://github.com/coreos/fedora-coreos-config/pull/77).

For example, the composed FCOS image has a `enable zincati.service`
preset and an enablement for that in `/etc`, while at boot time when we
switch root, there may be a `disable zincati.service` preset with higher
precedence. In that case, we want systemd to disable the service.

This is essentially a revert of 304b3079a2. It seems like systemd
*used* to do this, but it was changed to try to make the container
workflow a bit faster.

Resolves: https://github.com/coreos/fedora-coreos-tracker/issues/392

Co-authored-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
2022-05-04 09:10:54 +02:00
.clusterfuzzlite ci: unpin CFLite 2022-04-26 09:13:57 +00:00
.github build(deps): bump github/super-linter from 4.9.1 to 4.9.2 2022-05-03 05:51:41 +03:00
.lgtm/cpp-queries ci: pack-ify our custom CodeQL queries and enable them in Actions 2021-12-07 14:57:09 +01:00
.semaphore semaphoreci: re-enable rebooting tests 2022-04-07 14:53:49 +09:00
catalog timesyncd: generate a structure log message the first time we set the clock correctly 2022-03-18 23:54:05 +01:00
coccinelle coccinelle: automatically look for timestamp_is_set candidates 2022-02-22 22:47:12 +01:00
docs fix typo 2022-05-03 01:16:32 +09:00
factory meson: also allow setting GIT_VERSION via templates 2022-04-05 22:18:31 +02:00
hwdb.d Adding a description of the keyboard shortcut Fn+F12 for the HP EliteBook 845 G7 device. (#23253) 2022-05-04 05:40:55 +09:00
LICENSES network: license all config files as CC0 2022-01-12 16:05:59 +01:00
man systemctl: stop saying "vendor preset" 2022-05-04 09:10:50 +02:00
mkosi.default.d mkosi: Add centos_epel config 2022-02-25 16:17:29 +00:00
modprobe.d meson: install the right README file in modprobe.d 2021-07-07 14:52:05 +02:00
network network: add example file that enables DHCP on ethernet links 2022-01-12 16:05:59 +01:00
po po: update italian translations 2022-04-26 16:41:30 +02:00
presets units: enable systemd-network-generator by default 2021-12-16 09:49:39 +01:00
rules.d udev: set ID_IGNORE_DISKSEQ for md devices 2022-04-14 00:12:02 +09:00
shell-completion meson: also allow setting GIT_VERSION via templates 2022-04-05 22:18:31 +02:00
src manager: optionally, do a full preset on first boot 2022-05-04 09:10:54 +02:00
sysctl.d meson: also allow setting GIT_VERSION via templates 2022-04-05 22:18:31 +02:00
sysusers.d meson: also allow setting GIT_VERSION via templates 2022-04-05 22:18:31 +02:00
test tests: make valgrind_wrapper track file descriptors 2022-05-03 20:51:56 +00:00
tmpfiles.d meson: Sort lines in tmpfiles.d/meson.build 2022-05-03 20:46:16 +02:00
tools oss-fuzz: turn off fuzz-introspector 2022-04-22 09:08:47 +09:00
units meson: also allow setting GIT_VERSION via templates 2022-04-05 22:18:31 +02:00
xorg xorg/50-systemd-user: add a full license header 2021-10-01 14:45:00 +02:00
.clang-format clang-format: we actually typically use 16ch continuation indentation 2022-02-22 17:32:50 +01:00
.ctags editors: Prevent ctags from following symlinks 2019-02-15 11:01:20 -08:00
.dir-locals.el scripts: use 4 space indentation 2019-04-12 08:30:31 +02:00
.editorconfig editorconfig: set maximum line length to 109 for man/*.xml files 2021-09-30 13:45:34 +02:00
.gitattributes gitattributes: introduce and use "generated" attribute 2021-10-18 09:42:55 +02:00
.gitignore gitignore: ignore mkosi.installdir 2022-03-11 09:34:04 +00:00
.lgtm.yml Revert "lgtm: disable cpp/missing-return (again)" 2022-04-16 10:59:29 +00:00
.mailmap mailmap: two more names 2021-03-30 13:17:58 +02:00
.packit.yml Packit: build SRPMs in Copr 2022-03-09 09:52:41 +00:00
.vimrc scripts: use 4 space indentation 2019-04-12 08:30:31 +02:00
.ycm_extra_conf.py ycm: add doc string for all the functions in configuration file 2017-11-29 13:21:49 -07:00
configure tools: shellcheck-ify tool scripts 2021-09-30 12:27:06 +02:00
LICENSE.GPL2
LICENSE.LGPL2.1 licence: remove references to old FSF address 2012-12-17 11:41:31 +01:00
Makefile tree-wide: add spdx header on all scripts and helpers 2021-01-28 09:55:35 +01:00
meson.build manager: optionally, do a full preset on first boot 2022-05-04 09:10:54 +02:00
meson_options.txt manager: optionally, do a full preset on first boot 2022-05-04 09:10:54 +02:00
mkosi.build ci: check for failed services after boot 2021-12-10 10:25:43 +01:00
mkosi.postinst ci: check for failed services after boot 2021-12-10 10:25:43 +01:00
NEWS tmpfiles: Split networkd entries into a separate file 2022-05-03 20:46:14 +02:00
README README: recommend zstd over xz 2022-04-12 15:28:33 +02:00
README.md README: rawhide -> Rawhide 2022-04-06 23:14:21 +09:00
TODO update TODO 2022-05-02 16:41:52 +02:00

Systemd

System and Service Manager

Count of open issues over time Count of open pull requests over time Semaphore CI 2.0 Build Status
Coverity Scan Status
OSS-Fuzz Status
CIFuzz
CII Best Practices
Language Grade: C/C++
CentOS CI - CentOS 8
CentOS CI - Arch
CentOS CI - Arch (sanitizers)
CentOS CI - Rawhide (SELinux)
Fossies codespell report
Coverage Status
Packaging status

Details

Most documentation is available on systemd's web site.

Assorted, older, general information about systemd can be found in the systemd Wiki.

Information about build requirements is provided in the README file.

Consult our NEWS file for information about what's new in the most recent systemd versions.

Please see the Code Map for information about this repository's layout and content.

Please see the Hacking guide for information on how to hack on systemd and test your modifications.

Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.

When preparing patches for systemd, please follow our Coding Style Guidelines.

If you are looking for support, please contact our mailing list or join our IRC channel.

Stable branches with backported patches are available in the stable repo.