Merge ~enr0n/ubuntu/+source/systemd:ubuntu-kinetic-merge-251.2-2 into ~ubuntu-core-dev/ubuntu/+source/systemd:ubuntu-kinetic

Proposed by Nick Rosbrook
Status: Merged
Merged at revision: c47976dc6fb21d8a2e4b61ef4841a41f5192406d
Proposed branch: ~enr0n/ubuntu/+source/systemd:ubuntu-kinetic-merge-251.2-2
Merge into: ~ubuntu-core-dev/ubuntu/+source/systemd:ubuntu-kinetic
Diff against target: 689154 lines (+302397/-188921)
3163 files modified
.clang-format (+1/-1)
.clusterfuzzlite/Dockerfile (+5/-0)
.editorconfig (+10/-0)
.gitattributes (+10/-1)
.github/ISSUE_TEMPLATE/Bug_report.md (+2/-2)
.github/ISSUE_TEMPLATE/Feature_request.md (+1/-1)
.github/ISSUE_TEMPLATE/config.yml (+9/-0)
.github/codeql-config.yml (+12/-0)
.github/codeql-custom.qls (+36/-0)
.github/dependabot.yml (+19/-0)
.github/labeler.yml (+2/-0)
.github/workflows/build_test.sh (+42/-11)
.github/workflows/build_test.yml (+12/-8)
.github/workflows/cflite_pr.yml (+39/-0)
.github/workflows/cifuzz.yml (+8/-1)
.github/workflows/codeql-analysis.yml (+57/-0)
.github/workflows/coverity.yml (+6/-2)
.github/workflows/labeler.yml (+11/-1)
.github/workflows/linter.yml (+44/-0)
.github/workflows/mkosi.yml (+59/-16)
.github/workflows/requirements.txt (+18/-0)
.github/workflows/run_mkosi.sh (+39/-0)
.github/workflows/unit_tests.sh (+36/-5)
.github/workflows/unit_tests.yml (+16/-4)
.gitignore (+4/-7)
.lgtm.yml (+25/-0)
.lgtm/cpp-queries/PotentiallyDangerousFunction.ql (+6/-4)
.lgtm/cpp-queries/UninitializedVariableWithCleanup.ql (+110/-0)
.lgtm/cpp-queries/qlpack.yml (+11/-0)
.packit.yml (+8/-5)
.semaphore/semaphore-runner.sh (+37/-26)
.semaphore/semaphore.yml (+2/-6)
LICENSES/BSD-2-Clause.txt (+9/-0)
LICENSES/BSD-3-Clause.txt (+27/-0)
LICENSES/CC0-1.0.txt (+121/-0)
LICENSES/LGPL-2.0-or-later.txt (+174/-0)
LICENSES/Linux-syscall-note.txt (+12/-0)
LICENSES/MIT.txt (+9/-0)
LICENSES/OFL-1.1.txt (+97/-0)
LICENSES/README.md (+67/-0)
LICENSES/lookup3-public-domain.txt (+1/-0)
LICENSES/murmurhash2-public-domain.txt (+2/-0)
NEWS (+1478/-2)
README (+143/-92)
README.md (+5/-3)
TODO (+553/-162)
catalog/meson.build (+14/-15)
catalog/systemd.catalog.in (+17/-0)
catalog/systemd.pl.catalog.in (+18/-0)
coccinelle/bool-cast.cocci (+1/-0)
coccinelle/close-above-stdio.cocci (+1/-0)
coccinelle/cmp.cocci (+1/-0)
coccinelle/const-strlen.disabled (+1/-0)
coccinelle/debug-logging.cocci (+1/-0)
coccinelle/div-round-up.cocci (+1/-0)
coccinelle/dup-fcntl.cocci (+1/-0)
coccinelle/empty-or-dash.cocci (+1/-0)
coccinelle/empty-or-root.cocci (+1/-0)
coccinelle/empty-to-null.cocci (+1/-0)
coccinelle/empty-to-root.cocci (+1/-0)
coccinelle/enotsup.cocci (+1/-0)
coccinelle/equals-null.cocci (+1/-0)
coccinelle/errno-check.cocci (+1/-0)
coccinelle/errno.cocci (+1/-0)
coccinelle/exit-0.cocci (+1/-0)
coccinelle/flags-set.cocci (+1/-0)
coccinelle/fopen-unlocked.cocci (+1/-0)
coccinelle/free_and_replace.cocci (+1/-0)
coccinelle/hashmap_free.cocci (+1/-0)
coccinelle/htonl.cocci (+1/-0)
coccinelle/in_set.cocci (+1/-0)
coccinelle/iovec-make.cocci (+1/-0)
coccinelle/isempty.cocci (+1/-0)
coccinelle/log-json.cocci (+1/-0)
coccinelle/macros.h (+4/-2)
coccinelle/malloc_multiply.cocci (+1/-0)
coccinelle/mempcpy.cocci (+13/-0)
coccinelle/memzero.cocci (+1/-0)
coccinelle/mfree.cocci (+1/-0)
coccinelle/mfree_return.cocci (+1/-0)
coccinelle/no-if-assignments.cocci (+1/-0)
coccinelle/not_in_set.cocci (+1/-0)
coccinelle/o-ndelay.cocci (+1/-0)
coccinelle/reallocarray.cocci (+1/-0)
coccinelle/redundant-if.cocci (+1/-0)
coccinelle/run-coccinelle.sh (+17/-12)
coccinelle/safe_close-no-if.cocci (+1/-0)
coccinelle/safe_close.cocci (+1/-0)
coccinelle/safe_closedir.cocci (+1/-0)
coccinelle/safe_fclose.cocci (+1/-0)
coccinelle/sd_event_source_disable_unref.cocci (+1/-0)
coccinelle/set_ensure_put.cocci (+1/-0)
coccinelle/strdupa.cocci (+11/-0)
coccinelle/strempty.cocci (+1/-0)
coccinelle/strjoin.cocci (+1/-0)
coccinelle/strjoina.cocci (+1/-0)
coccinelle/strv_free.cocci (+1/-0)
coccinelle/swap-two.cocci (+1/-0)
coccinelle/synthetic-errno.cocci (+1/-0)
coccinelle/take-fd.cocci (+1/-0)
coccinelle/take-ptr.cocci (+1/-0)
coccinelle/timestamp-is-set.cocci (+73/-0)
coccinelle/while-true.cocci (+1/-0)
coccinelle/xsprintf.cocci (+1/-0)
coccinelle/zz-drop-braces.cocci (+1/-0)
configure (+13/-12)
debian/changelog (+515/-0)
debian/control (+42/-57)
debian/copyright (+54/-25)
debian/extra/systemd-oomd-defaults/-.slice.d/10-oomd-root-slice-defaults.conf (+1/-1)
debian/gbp.conf (+1/-1)
debian/gitlab-ci.yml (+11/-0)
debian/libnss-myhostname.lintian-overrides (+2/-0)
debian/libnss-mymachines.lintian-overrides (+2/-0)
debian/libnss-resolve.lintian-overrides (+3/-0)
debian/libnss-systemd.lintian-overrides (+2/-0)
debian/libpam-systemd.install (+1/-1)
debian/libpam-systemd.lintian-overrides (+2/-0)
debian/libsystemd0.symbols (+11/-0)
debian/patches/0001-Revert-tests-add-test-case-for-UMask-BindPaths-combi.patch (+9/-11)
debian/patches/Do-not-require-a-valid-version-when-parsing-sd-boot-loade.patch (+44/-0)
debian/patches/Revert-network-if-sys-is-rw-then-udev-should-be-around.patch (+4/-19)
debian/patches/debian/Add-env-variable-for-machine-ID-path.patch (+5/-5)
debian/patches/debian/Don-t-enable-audit-by-default.patch (+2/-2)
debian/patches/debian/Downgrade-a-couple-of-warnings-to-debug.patch (+8/-8)
debian/patches/debian/Make-run-lock-tmpfs-an-API-fs.patch (+9/-9)
debian/patches/debian/Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-back-to-.patch (+1/-1)
debian/patches/debian/Only-start-logind-if-dbus-is-installed.patch (+1/-1)
debian/patches/debian/Re-enable-journal-forwarding-to-syslog.patch (+2/-2)
debian/patches/debian/Revert-core-one-step-back-again-for-nspawn-we-actual.patch (+2/-2)
debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch (+11/-12)
debian/patches/debian/Skip-filesystem-check-if-already-done-by-the-initram.patch (+5/-5)
debian/patches/debian/UBUNTU-Support-system-image-read-only-etc.patch (+12/-16)
debian/patches/debian/UBUNTU-src-test-test-execute.c-Skip-parts-of-test-execute-in-con.patch (+19/-9)
debian/patches/debian/UBUNTU-src-test-testmount-util.c-Skip-parts-of-test-mount-util-in-LXC.patch (+6/-8)
debian/patches/debian/Ubuntu-UseDomains-by-default.patch (+30/-32)
debian/patches/debian/Use-Debian-specific-config-files.patch (+16/-16)
debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch (+18/-20)
debian/patches/debian/systemctl-do-not-shutdown-immediately-on-scheduled-shutdo.patch (+16/-34)
debian/patches/debian/udev-drop-SystemCallArchitectures-native-from-systemd-ude.patch (+3/-1)
debian/patches/hwdb-implement-root-option-for-systemd-hwdb-query.patch (+94/-0)
debian/patches/lp1950794-Revert-sd-dhcp-do-not-use-detect_container-to-guess-.patch (+8/-7)
debian/patches/lp1978079-pstore-Run-after-modules-are-loaded.patch (+43/-0)
debian/patches/lp1979215-boot-efi-missing-.note.GNU-stack-section-implies-executab.patch (+32/-0)
debian/patches/lp1979236-boot-efi-set-no-warn-rwx-segments-on-arm.patch (+34/-0)
debian/patches/sd-hwdb-add-sd_hwdb_new_from_path.patch (+199/-0)
debian/patches/series (+9/-49)
debian/patches/sha256-fix-compilation-on-efi-ia32.patch (+39/-0)
debian/patches/test-copy-libgcc_s.so.1-to-TPM2-test-image-on-Debian-like.patch (+41/-0)
debian/patches/test-increase-QEMU_MEM-for-some-tests.patch (+282/-0)
debian/rules (+64/-113)
debian/shlibs.local.in (+1/-0)
debian/source/lintian-overrides (+3/-0)
debian/systemd-container.lintian-overrides (+7/-1)
debian/systemd-coredump.lintian-overrides (+3/-0)
debian/systemd-journal-remote.lintian-overrides (+5/-0)
debian/systemd-oomd.install (+6/-3)
debian/systemd-oomd.lintian-overrides (+4/-0)
debian/systemd-tests.lintian-overrides (+10/-0)
debian/systemd-timesyncd.install (+1/-1)
debian/systemd-timesyncd.lintian-overrides (+3/-0)
debian/systemd.NEWS (+34/-0)
debian/systemd.bug-control (+1/-1)
debian/systemd.install (+6/-6)
debian/systemd.lintian-overrides (+25/-0)
debian/systemd.postinst (+24/-3)
debian/systemd.triggers (+1/-0)
debian/tests/boot-and-services (+14/-0)
debian/tests/boot-smoke (+6/-0)
debian/tests/control (+25/-3)
debian/tests/logind (+10/-4)
debian/tests/tests-in-lxd (+1/-0)
debian/tests/unit-config (+14/-13)
debian/udev-udeb.install (+5/-5)
debian/udev.install (+4/-4)
debian/udev.lintian-overrides (+8/-0)
debian/watch (+1/-1)
dev/null (+0/-27)
docs/.gitattributes (+2/-0)
docs/ARCHITECTURE.md (+75/-23)
docs/AUTOMATIC_BOOT_ASSESSMENT.md (+2/-1)
docs/BLOCK_DEVICE_LOCKING.md (+21/-1)
docs/BOOT_LOADER_INTERFACE.md (+9/-8)
docs/BOOT_LOADER_SPECIFICATION.md (+259/-76)
docs/BUILDING_IMAGES.md (+275/-0)
docs/CGROUP_DELEGATION.md (+24/-5)
docs/CODE_OF_CONDUCT.md (+1/-0)
docs/CODE_QUALITY.md (+15/-13)
docs/CODING_STYLE.md (+114/-23)
docs/CONTAINER_INTERFACE.md (+21/-15)
docs/CONTRIBUTING.md (+49/-1)
docs/CONVERTING_TO_HOMED.md (+5/-4)
docs/COREDUMP_PACKAGE_METADATA.md (+52/-28)
docs/CREDENTIALS.md (+388/-0)
docs/DESKTOP_ENVIRONMENTS.md (+5/-4)
docs/DISCOVERABLE_PARTITIONS.md (+240/-90)
docs/DISTRO_PORTING.md (+1/-0)
docs/ENVIRONMENT.md (+153/-18)
docs/GROUP_RECORD.md (+3/-2)
docs/GVARIANT-SERIALIZATION.md (+2/-1)
docs/HACKING.md (+163/-38)
docs/HOME_DIRECTORY.md (+28/-27)
docs/INITRD_INTERFACE.md (+7/-8)
docs/JOURNAL_EXPORT_FORMATS.md (+158/-0)
docs/JOURNAL_FILE_FORMAT.md (+8/-6)
docs/JOURNAL_NATIVE_PROTOCOL.md (+4/-3)
docs/NETWORK_ONLINE.md (+261/-0)
docs/PASSWORD_AGENTS.md (+2/-1)
docs/PORTABILITY_AND_STABILITY.md (+9/-7)
docs/PORTABLE_SERVICES.md (+125/-69)
docs/PORTING_TO_NEW_ARCHITECTURES.md (+58/-0)
docs/PREDICTABLE_INTERFACE_NAMES.md (+1/-0)
docs/RANDOM_SEEDS.md (+10/-33)
docs/RELEASE.md (+15/-13)
docs/RESOLVED-VPNS.md (+7/-6)
docs/ROOT_STORAGE_DAEMONS.md (+5/-5)
docs/SECURITY.md (+1/-0)
docs/TEMPORARY_DIRECTORIES.md (+1/-0)
docs/TESTING_WITH_SANITIZERS.md (+1/-0)
docs/TRANSIENT-SETTINGS.md (+9/-0)
docs/TRANSLATORS.md (+10/-9)
docs/UIDS-GIDS.md (+31/-8)
docs/USERDB_AND_DESKTOPS.md (+6/-6)
docs/USER_GROUP_API.md (+6/-6)
docs/USER_NAMES.md (+2/-1)
docs/USER_RECORD.md (+57/-24)
docs/_config.yml (+1/-0)
docs/_includes/footer.html (+3/-1)
docs/_includes/head.html (+4/-4)
docs/_includes/header.html (+5/-1)
docs/_layouts/default.html (+2/-0)
docs/assets/systemd-logo.svg (+7/-0)
docs/favicon.svg (+1/-0)
docs/index.md (+44/-41)
docs/style.css (+397/-228)
docs/sysvinit/meson.build (+1/-2)
docs/var-log/meson.build (+2/-2)
factory/templates/locale.conf.in (+3/-0)
factory/templates/meson.build (+11/-0)
hwdb.d/20-OUI.hwdb (+8355/-153)
hwdb.d/20-acpi-vendor.hwdb (+51/-3)
hwdb.d/20-acpi-vendor.hwdb.patch (+49/-49)
hwdb.d/20-dmi-id.hwdb (+4/-0)
hwdb.d/20-pci-classes.hwdb (+13/-1)
hwdb.d/20-pci-vendor-model.hwdb (+2692/-127)
hwdb.d/20-usb-vendor-model.hwdb (+465/-18)
hwdb.d/60-autosuspend-fingerprint-reader.hwdb (+56/-3)
hwdb.d/60-autosuspend.hwdb (+25/-1)
hwdb.d/60-evdev.hwdb (+55/-6)
hwdb.d/60-input-id.hwdb (+10/-11)
hwdb.d/60-keyboard.hwdb (+121/-13)
hwdb.d/60-sensor.hwdb (+70/-13)
hwdb.d/70-analyzers.hwdb (+44/-0)
hwdb.d/70-av-production.hwdb (+147/-0)
hwdb.d/70-cameras.hwdb (+25/-0)
hwdb.d/70-mouse.hwdb (+25/-5)
hwdb.d/70-pda.hwdb (+50/-0)
hwdb.d/70-pointingstick.hwdb (+7/-4)
hwdb.d/80-ieee1394-unit-function.hwdb (+54/-12)
hwdb.d/acpi-update.py (+1/-0)
hwdb.d/acpi_id_registry.html (+5/-0)
hwdb.d/ids_parser.py (+9/-2)
hwdb.d/ma-large.txt (+107148/-96447)
hwdb.d/ma-medium.txt (+17128/-14155)
hwdb.d/ma-small.txt (+11843/-8918)
hwdb.d/meson.build (+33/-30)
hwdb.d/parse_hwdb.py (+9/-1)
hwdb.d/pci.ids (+1021/-82)
hwdb.d/pnp_id_registry.html (+14/-3)
hwdb.d/usb.ids (+167/-18)
man/.dir-locals.el (+1/-0)
man/50-xdg-data-dirs.sh (+3/-2)
man/90-rearrange-path.py (+1/-0)
man/binfmt.d.xml (+5/-5)
man/bootctl.xml (+250/-55)
man/bootup.xml (+15/-15)
man/busctl.xml (+4/-4)
man/check-os-release.py (+3/-2)
man/check-os-release.sh (+1/-0)
man/common-variables.xml (+4/-1)
man/coredump.conf.xml (+7/-3)
man/coredumpctl.xml (+7/-0)
man/crypttab.xml (+23/-7)
man/custom-entities.ent.in (+3/-2)
man/dnssec-trust-anchors.d.xml (+1/-1)
man/event-quick-child.c (+42/-0)
man/fido2-crypttab.sh (+2/-0)
man/file-hierarchy.xml (+72/-56)
man/glib-event-glue.c (+1/-1)
man/halt.xml (+2/-7)
man/homectl.xml (+121/-16)
man/html.in (+1/-0)
man/hwdb-usb-device.c (+4/-2)
man/id128-app-specific.c (+2/-0)
man/inotify-watch-tmp.c (+2/-0)
man/integritytab.xml (+161/-0)
man/journal-iterate-poll.c (+2/-0)
man/journal-iterate-unique.c (+2/-0)
man/journal-iterate-wait.c (+2/-0)
man/kernel-command-line.xml (+57/-4)
man/kernel-install.xml (+160/-54)
man/libudev.xml (+4/-2)
man/loader.conf.xml (+102/-16)
man/locale.conf.xml (+13/-12)
man/logind.conf.xml (+34/-39)
man/machine-id.xml (+7/-7)
man/machine-info.xml (+23/-7)
man/machinectl.xml (+10/-8)
man/man.in (+2/-0)
man/meson.build (+68/-43)
man/networkctl.xml (+10/-4)
man/nss-myhostname.xml (+1/-1)
man/nss-resolve.xml (+52/-3)
man/org.freedesktop.home1.xml (+26/-6)
man/org.freedesktop.hostname1.xml (+12/-6)
man/org.freedesktop.import1.xml (+1/-6)
man/org.freedesktop.locale1.xml (+1/-1)
man/org.freedesktop.login1.xml (+60/-9)
man/org.freedesktop.machine1.xml (+6/-6)
man/org.freedesktop.network1.xml (+502/-0)
man/org.freedesktop.oom1.xml (+1/-6)
man/org.freedesktop.portable1.xml (+20/-6)
man/org.freedesktop.resolve1.xml (+2/-7)
man/org.freedesktop.systemd1.xml (+486/-49)
man/org.freedesktop.timedate1.xml (+1/-6)
man/os-release.xml (+84/-23)
man/path-documents.c (+2/-0)
man/portablectl.xml (+12/-2)
man/print-unit-path.c (+2/-0)
man/repart.d.xml (+23/-3)
man/resolved.conf.xml (+8/-6)
man/rules/meson.build (+60/-12)
man/sd-bus-container-append.c (+2/-0)
man/sd-bus-container-read.c (+2/-0)
man/sd-device.xml (+62/-0)
man/sd-id128.xml (+4/-1)
man/sd_bus_add_object.xml (+1/-1)
man/sd_bus_error-example.c (+18/-0)
man/sd_bus_error.xml (+47/-21)
man/sd_bus_message_new.xml (+4/-5)
man/sd_bus_message_read.xml (+17/-1)
man/sd_bus_message_read_basic.xml (+3/-3)
man/sd_bus_new.xml (+5/-7)
man/sd_bus_slot_ref.xml (+2/-2)
man/sd_device_get_syspath.xml (+200/-0)
man/sd_device_ref.xml (+83/-0)
man/sd_event_add_child.xml (+32/-18)
man/sd_event_add_defer.xml (+16/-11)
man/sd_event_add_inotify.xml (+51/-15)
man/sd_event_add_io.xml (+20/-20)
man/sd_event_add_signal.xml (+16/-13)
man/sd_event_add_time.xml (+23/-18)
man/sd_event_source_set_ratelimit.xml (+17/-5)
man/sd_event_source_unref.xml (+8/-12)
man/sd_id128_randomize.xml (+7/-7)
man/sd_id128_to_string.xml (+59/-36)
man/sd_journal_next.xml (+1/-1)
man/sd_journal_print.xml (+1/-1)
man/sd_listen_fds.xml (+6/-6)
man/sd_notify.xml (+3/-2)
man/send-unit-files-changed.c (+2/-0)
man/shutdown.xml (+18/-18)
man/standard-specifiers.xml (+8/-0)
man/system-or-user-ns.xml (+16/-0)
man/systemctl.xml (+20/-7)
man/systemd-analyze.xml (+486/-3)
man/systemd-bless-boot-generator.xml (+1/-1)
man/systemd-bless-boot.service.xml (+1/-1)
man/systemd-boot-system-token.service.xml (+1/-1)
man/systemd-boot.xml (+64/-40)
man/systemd-cgls.xml (+14/-0)
man/systemd-creds.xml (+420/-0)
man/systemd-cryptenroll.xml (+85/-16)
man/systemd-debug-generator.xml (+1/-1)
man/systemd-detect-virt.xml (+1/-1)
man/systemd-fsck@.service.xml (+12/-3)
man/systemd-fstab-generator.xml (+12/-0)
man/systemd-getty-generator.xml (+33/-0)
man/systemd-gpt-auto-generator.xml (+11/-0)
man/systemd-id128.xml (+5/-3)
man/systemd-integritysetup-generator.xml (+48/-0)
man/systemd-integritysetup@.service.xml (+98/-0)
man/systemd-journal-upload.service.xml (+4/-1)
man/systemd-journald.service.xml (+1/-1)
man/systemd-machine-id-setup.xml (+1/-1)
man/systemd-makefs@.service.xml (+6/-1)
man/systemd-network-generator.service.xml (+3/-0)
man/systemd-networkd-wait-online.service.xml (+25/-4)
man/systemd-notify.xml (+2/-2)
man/systemd-nspawn.xml (+36/-14)
man/systemd-oomd.service.xml (+47/-32)
man/systemd-random-seed.service.xml (+2/-1)
man/systemd-resolved.service.xml (+10/-3)
man/systemd-run.xml (+11/-7)
man/systemd-stdio-bridge.xml (+91/-0)
man/systemd-stub.xml (+298/-0)
man/systemd-sysext.xml (+1/-1)
man/systemd-system.conf.xml (+108/-33)
man/systemd-sysupdate.xml (+287/-0)
man/systemd-sysusers.xml (+10/-4)
man/systemd-sysv-generator.xml (+5/-1)
man/systemd-timesyncd.service.xml (+5/-4)
man/systemd-tmpfiles.xml (+1/-1)
man/systemd-udevd.service.xml (+40/-0)
man/systemd-veritysetup-generator.xml (+10/-2)
man/systemd-xdg-autostart-generator.xml (+49/-0)
man/systemd.automount.xml (+31/-16)
man/systemd.device.xml (+8/-1)
man/systemd.exec.xml (+458/-106)
man/systemd.generator.xml (+148/-113)
man/systemd.journal-fields.xml (+1/-1)
man/systemd.link.xml (+323/-44)
man/systemd.mount.xml (+7/-7)
man/systemd.net-naming-scheme.xml (+29/-3)
man/systemd.netdev.xml (+230/-138)
man/systemd.network.xml (+2689/-2064)
man/systemd.nspawn.xml (+12/-2)
man/systemd.path.xml (+24/-4)
man/systemd.resource-control.xml (+97/-33)
man/systemd.scope.xml (+16/-1)
man/systemd.service.xml (+66/-17)
man/systemd.slice.xml (+8/-0)
man/systemd.socket.xml (+30/-35)
man/systemd.special.xml (+9/-0)
man/systemd.swap.xml (+6/-8)
man/systemd.target.xml (+8/-0)
man/systemd.timer.xml (+8/-3)
man/systemd.unit.xml (+129/-50)
man/systemd.xml (+43/-8)
man/sysupdate.d.xml (+885/-0)
man/timesyncd.conf.xml (+12/-0)
man/tmpfiles.d.xml (+9/-7)
man/tpm2-crypttab.sh (+2/-0)
man/udev.xml (+1/-1)
man/udevadm.xml (+298/-5)
man/userdbctl.xml (+41/-2)
man/vconsole.conf.xml (+7/-7)
man/veritytab.xml (+1/-1)
man/vtable-example.c (+27/-9)
man/vtable-example.xml (+1/-0)
man/yubikey-crypttab.sh (+2/-0)
meson.build (+824/-448)
meson_options.txt (+49/-8)
mkosi.build (+17/-62)
mkosi.default.d/arch/10-mkosi.arch (+17/-0)
mkosi.default.d/centos_epel/10-mkosi.centos_epel (+86/-0)
mkosi.default.d/debian/10-mkosi.debian (+12/-1)
mkosi.default.d/fedora/10-mkosi.fedora (+15/-3)
mkosi.default.d/opensuse/10-mkosi.opensuse (+4/-1)
mkosi.default.d/ubuntu/10-mkosi.ubuntu (+6/-0)
mkosi.postinst (+16/-0)
network/80-6rd-tunnel.network (+22/-0)
network/80-container-host0.network (+10/-6)
network/80-container-vb.network (+26/-0)
network/80-container-ve.network (+10/-6)
network/80-container-vz.network (+10/-6)
network/80-ethernet.network.example (+17/-0)
network/80-vm-vt.network (+10/-6)
network/80-wifi-adhoc.network (+13/-0)
network/80-wifi-ap.network.example (+11/-0)
network/80-wifi-station.network.example (+11/-0)
network/99-default.link (+10/-6)
network/meson.build (+4/-2)
po/.gitattributes (+1/-0)
po/LINGUAS (+7/-4)
po/POTFILES.in (+2/-0)
po/POTFILES.skip (+4/-0)
po/be.po (+0/-1)
po/be@latin.po (+0/-1)
po/bg.po (+0/-1)
po/ca.po (+0/-1)
po/cs.po (+0/-2)
po/da.po (+0/-1)
po/de.po (+54/-73)
po/el.po (+0/-1)
po/es.po (+68/-113)
po/fi.po (+938/-0)
po/fr.po (+0/-1)
po/gl.po (+0/-1)
po/hr.po (+33/-41)
po/hu.po (+0/-1)
po/id.po (+90/-164)
po/it.po (+40/-23)
po/ja.po (+40/-22)
po/ka.po (+920/-0)
po/kab.po (+6/-7)
po/ko.po (+6/-3)
po/lt.po (+0/-1)
po/nl.po (+5/-6)
po/pa.po (+0/-1)
po/pl.po (+27/-12)
po/pt.po (+955/-0)
po/pt_BR.po (+5/-6)
po/ro.po (+0/-1)
po/ru.po (+0/-1)
po/si.po (+10/-8)
po/sk.po (+2/-2)
po/sr.po (+1/-3)
po/sv.po (+2/-2)
po/systemd.pot (+1/-5)
po/tr.po (+0/-1)
po/uk.po (+1/-1)
po/zh_CN.po (+0/-2)
po/zh_TW.po (+26/-65)
presets/90-systemd.preset (+1/-0)
rules.d/50-udev-default.rules.in (+13/-2)
rules.d/60-autosuspend.rules (+8/-0)
rules.d/60-persistent-storage-tape.rules (+2/-2)
rules.d/60-persistent-storage.rules (+5/-0)
rules.d/70-camera.rules (+9/-0)
rules.d/70-uaccess.rules.in (+15/-0)
rules.d/README (+1/-1)
rules.d/meson.build (+71/-50)
shell-completion/bash/bootctl (+5/-2)
shell-completion/bash/coredumpctl (+1/-1)
shell-completion/bash/meson.build (+5/-5)
shell-completion/bash/oomctl (+57/-0)
shell-completion/bash/resolvectl (+25/-6)
shell-completion/bash/systemd-analyze (+36/-4)
shell-completion/bash/systemd-cgls (+1/-1)
shell-completion/bash/systemd-nspawn (+2/-2)
shell-completion/bash/systemd-resolve (+1/-1)
shell-completion/bash/systemd-run (+1/-1)
shell-completion/bash/timedatectl (+1/-1)
shell-completion/bash/udevadm (+60/-8)
shell-completion/zsh/_bootctl (+3/-0)
shell-completion/zsh/_busctl (+1/-1)
shell-completion/zsh/_coredumpctl (+1/-0)
shell-completion/zsh/_oomctl (+28/-0)
shell-completion/zsh/_systemd-analyze (+40/-26)
shell-completion/zsh/_systemd-nspawn (+1/-0)
shell-completion/zsh/_systemd-path (+1/-0)
shell-completion/zsh/_systemd-run (+1/-1)
shell-completion/zsh/_udevadm (+42/-11)
shell-completion/zsh/meson.build (+5/-5)
src/ac-power/ac-power.c (+2/-2)
src/activate/activate.c (+35/-71)
src/analyze/analyze-blame.c (+65/-0)
src/analyze/analyze-blame.h (+4/-0)
src/analyze/analyze-calendar.c (+144/-0)
src/analyze/analyze-calendar.h (+1/-3)
src/analyze/analyze-capability.c (+52/-0)
src/analyze/analyze-capability.h (+4/-0)
src/analyze/analyze-cat-config.c (+46/-0)
src/analyze/analyze-cat-config.h (+4/-0)
src/analyze/analyze-condition.c (+40/-8)
src/analyze/analyze-condition.h (+1/-3)
src/analyze/analyze-critical-chain.c (+235/-0)
src/analyze/analyze-critical-chain.h (+4/-0)
src/analyze/analyze-dot.c (+182/-0)
src/analyze/analyze-dot.h (+4/-0)
src/analyze/analyze-dump.c (+64/-0)
src/analyze/analyze-dump.h (+4/-0)
src/analyze/analyze-exit-status.c (+52/-0)
src/analyze/analyze-exit-status.h (+4/-0)
src/analyze/analyze-filesystems.c (+225/-0)
src/analyze/analyze-filesystems.h (+4/-0)
src/analyze/analyze-inspect-elf.c (+134/-0)
src/analyze/analyze-inspect-elf.h (+4/-0)
src/analyze/analyze-log-control.c (+18/-0)
src/analyze/analyze-log-control.h (+4/-0)
src/analyze/analyze-plot.c (+395/-0)
src/analyze/analyze-plot.h (+4/-0)
src/analyze/analyze-security.c (+930/-195)
src/analyze/analyze-security.h (+1/-3)
src/analyze/analyze-service-watchdogs.c (+41/-0)
src/analyze/analyze-service-watchdogs.h (+4/-0)
src/analyze/analyze-syscall-filter.c (+186/-0)
src/analyze/analyze-syscall-filter.h (+4/-0)
src/analyze/analyze-time-data.c (+297/-0)
src/analyze/analyze-time-data.h (+54/-0)
src/analyze/analyze-time.c (+22/-0)
src/analyze/analyze-time.h (+4/-0)
src/analyze/analyze-timespan.c (+72/-0)
src/analyze/analyze-timespan.h (+4/-0)
src/analyze/analyze-timestamp.c (+94/-0)
src/analyze/analyze-timestamp.h (+4/-0)
src/analyze/analyze-unit-files.c (+50/-0)
src/analyze/analyze-unit-files.h (+4/-0)
src/analyze/analyze-unit-paths.c (+20/-0)
src/analyze/analyze-unit-paths.h (+4/-0)
src/analyze/analyze-verify-util.c (+347/-0)
src/analyze/analyze-verify-util.h (+23/-0)
src/analyze/analyze-verify.c (+36/-253)
src/analyze/analyze-verify.h (+1/-7)
src/analyze/analyze.c (+345/-2174)
src/analyze/analyze.h (+44/-0)
src/analyze/meson.build (+53/-12)
src/analyze/test-verify.c (+8/-11)
src/ask-password/ask-password.c (+1/-2)
src/backlight/backlight.c (+5/-4)
src/basic/alloc-util.h (+50/-25)
src/basic/architecture.c (+121/-121)
src/basic/architecture.h (+48/-38)
src/basic/arphrd-to-name.awk (+1/-1)
src/basic/arphrd-util.c (+21/-1)
src/basic/arphrd-util.h (+5/-0)
src/basic/build.c (+13/-1)
src/basic/capability-util.c (+1/-1)
src/basic/cgroup-util.c (+156/-84)
src/basic/cgroup-util.h (+35/-1)
src/basic/chase-symlinks.c (+564/-0)
src/basic/chase-symlinks.h (+32/-0)
src/basic/chattr-util.c (+52/-14)
src/basic/chattr-util.h (+18/-3)
src/basic/check-filesystems.sh (+36/-0)
src/basic/compress.c (+20/-22)
src/basic/compress.h (+61/-40)
src/basic/conf-files.c (+29/-26)
src/basic/coverage.h (+19/-0)
src/basic/def.h (+11/-1)
src/basic/devnum-util.c (+135/-0)
src/basic/devnum-util.h (+51/-0)
src/basic/dirent-util.c (+46/-24)
src/basic/dirent-util.h (+36/-12)
src/basic/efivars.c (+73/-29)
src/basic/efivars.h (+13/-11)
src/basic/env-file.c (+39/-59)
src/basic/env-util.c (+99/-42)
src/basic/env-util.h (+5/-1)
src/basic/errno-to-name.awk (+1/-1)
src/basic/errno-util.h (+42/-6)
src/basic/escape.c (+18/-19)
src/basic/escape.h (+6/-5)
src/basic/ether-addr-util.c (+153/-57)
src/basic/ether-addr-util.h (+55/-5)
src/basic/fd-util.c (+197/-124)
src/basic/fd-util.h (+23/-4)
src/basic/fileio.c (+107/-89)
src/basic/fileio.h (+19/-21)
src/basic/filesystems-gperf.gperf (+131/-0)
src/basic/filesystems.c (+177/-0)
src/basic/filesystems.h (+42/-0)
src/basic/format-util.c (+41/-21)
src/basic/format-util.h (+25/-11)
src/basic/fs-util.c (+248/-735)
src/basic/fs-util.h (+7/-46)
src/basic/gcrypt-util.c (+2/-0)
src/basic/gcrypt-util.h (+12/-7)
src/basic/generate-errno-list.sh (+4/-0)
src/basic/generate-filesystem-list.py (+15/-0)
src/basic/generate-filesystem-switch-case.py (+53/-0)
src/basic/glyph-util.c (+137/-0)
src/basic/glyph-util.h (+60/-0)
src/basic/hash-funcs.c (+8/-2)
src/basic/hash-funcs.h (+3/-4)
src/basic/hashmap.c (+29/-5)
src/basic/hexdecoct.c (+46/-5)
src/basic/hexdecoct.h (+5/-1)
src/basic/hmac.c (+62/-0)
src/basic/hmac.h (+12/-0)
src/basic/hostname-util.c (+36/-46)
src/basic/hostname-util.h (+31/-3)
src/basic/in-addr-util.c (+106/-61)
src/basic/in-addr-util.h (+13/-8)
src/basic/inotify-util.c (+41/-0)
src/basic/inotify-util.h (+38/-0)
src/basic/io-util.c (+1/-2)
src/basic/ioprio-util.c (+31/-0)
src/basic/ioprio-util.h (+27/-0)
src/basic/limits-util.c (+38/-14)
src/basic/linux/batman_adv.h (+626/-626)
src/basic/linux/btrfs.h (+13/-4)
src/basic/linux/btrfs_tree.h (+39/-3)
src/basic/linux/can/netlink.h (+30/-2)
src/basic/linux/cfm_bridge.h (+64/-0)
src/basic/linux/genetlink.h (+102/-0)
src/basic/linux/if_bonding.h (+1/-11)
src/basic/linux/if_bridge.h (+174/-0)
src/basic/linux/if_ether.h (+6/-1)
src/basic/linux/if_link.h (+25/-0)
src/basic/linux/in.h (+35/-10)
src/basic/linux/in6.h (+1/-0)
src/basic/linux/l2tp.h (+1/-0)
src/basic/linux/mrp_bridge.h (+74/-0)
src/basic/linux/netfilter/nf_tables.h (+67/-2)
src/basic/linux/netfilter/nfnetlink.h (+5/-4)
src/basic/linux/netlink.h (+4/-3)
src/basic/linux/nexthop.h (+46/-1)
src/basic/linux/nl80211.h (+346/-8)
src/basic/linux/pkt_sched.h (+5/-0)
src/basic/linux/rtnetlink.h (+28/-5)
src/basic/linux/update.sh (+1/-5)
src/basic/list.h (+36/-24)
src/basic/locale-util.c (+3/-120)
src/basic/locale-util.h (+1/-43)
src/basic/log.c (+60/-45)
src/basic/log.h (+27/-5)
src/basic/macro.h (+65/-57)
src/basic/memfd-util.c (+5/-24)
src/basic/memory-util.c (+6/-7)
src/basic/memory-util.h (+23/-3)
src/basic/meson.build (+319/-246)
src/basic/missing_fs.h (+4/-5)
src/basic/missing_ioprio.h (+59/-0)
src/basic/missing_keyctl.h (+1/-0)
src/basic/missing_loop.h (+4/-0)
src/basic/missing_magic.h (+155/-0)
src/basic/missing_mount.h (+1/-0)
src/basic/missing_network.h (+15/-0)
src/basic/missing_securebits.h (+1/-0)
src/basic/missing_syscall.h (+86/-1)
src/basic/missing_syscall_def.h (+34/-0)
src/basic/missing_syscalls.py (+3/-0)
src/basic/mkdir.c (+60/-59)
src/basic/mkdir.h (+10/-15)
src/basic/mountpoint-util.c (+27/-39)
src/basic/namespace-util.c (+41/-6)
src/basic/namespace-util.h (+2/-0)
src/basic/nulstr-util.c (+4/-4)
src/basic/nulstr-util.h (+5/-1)
src/basic/ordered-set.c (+0/-1)
src/basic/ordered-set.h (+12/-0)
src/basic/os-util.c (+115/-10)
src/basic/parse-util.c (+8/-37)
src/basic/parse-util.h (+14/-8)
src/basic/path-lookup.c (+75/-62)
src/basic/path-lookup.h (+13/-7)
src/basic/path-util.c (+104/-189)
src/basic/path-util.h (+2/-12)
src/basic/pcapng.h (+115/-0)
src/basic/percent-util.c (+5/-5)
src/basic/percent-util.h (+4/-3)
src/basic/prioq.c (+10/-0)
src/basic/prioq.h (+1/-0)
src/basic/process-util.c (+117/-201)
src/basic/process-util.h (+19/-31)
src/basic/procfs-util.c (+21/-47)
src/basic/procfs-util.h (+3/-1)
src/basic/random-util.c (+18/-237)
src/basic/random-util.h (+2/-8)
src/basic/recurse-dir.c (+452/-0)
src/basic/recurse-dir.h (+80/-0)
src/basic/rlimit-util.c (+11/-13)
src/basic/set.h (+3/-1)
src/basic/signal-util.c (+39/-10)
src/basic/signal-util.h (+3/-0)
src/basic/socket-util.c (+59/-33)
src/basic/socket-util.h (+14/-8)
src/basic/sort-util.c (+1/-1)
src/basic/sort-util.h (+20/-14)
src/basic/sparse-endian.h (+6/-6)
src/basic/special.h (+1/-0)
src/basic/stat-util.c (+75/-127)
src/basic/stat-util.h (+10/-35)
src/basic/static-destruct.h (+7/-3)
src/basic/stdio-util.h (+8/-3)
src/basic/string-table.h (+1/-1)
src/basic/string-util.c (+43/-0)
src/basic/string-util.h (+22/-27)
src/basic/strv.c (+72/-104)
src/basic/strv.h (+58/-42)
src/basic/strxcpyx.c (+48/-19)
src/basic/strxcpyx.h (+26/-7)
src/basic/sync-util.c (+163/-0)
src/basic/sync-util.h (+11/-0)
src/basic/syscall-list.txt (+5/-2)
src/basic/syscalls-alpha.txt (+1/-0)
src/basic/syscalls-arc.txt (+1/-0)
src/basic/syscalls-arm.txt (+1/-0)
src/basic/syscalls-arm64.txt (+1/-0)
src/basic/syscalls-i386.txt (+1/-0)
src/basic/syscalls-ia64.txt (+1/-0)
src/basic/syscalls-loongarch64.txt (+601/-0)
src/basic/syscalls-m68k.txt (+1/-0)
src/basic/syscalls-mips64.txt (+1/-0)
src/basic/syscalls-mips64n32.txt (+1/-0)
src/basic/syscalls-mipso32.txt (+1/-0)
src/basic/syscalls-powerpc.txt (+1/-0)
src/basic/syscalls-powerpc64.txt (+1/-0)
src/basic/syscalls-riscv32.txt (+1/-0)
src/basic/syscalls-riscv64.txt (+1/-0)
src/basic/syscalls-s390.txt (+1/-0)
src/basic/syscalls-s390x.txt (+1/-0)
src/basic/syscalls-sparc.txt (+1/-0)
src/basic/syscalls-x86_64.txt (+1/-0)
src/basic/sysctl-util.c (+40/-33)
src/basic/terminal-util.c (+59/-22)
src/basic/terminal-util.h (+9/-4)
src/basic/time-util.c (+101/-121)
src/basic/time-util.h (+31/-19)
src/basic/tmpfile-util.c (+42/-22)
src/basic/tmpfile-util.h (+2/-0)
src/basic/unit-def.h (+1/-1)
src/basic/unit-file.c (+281/-103)
src/basic/unit-file.h (+12/-11)
src/basic/unit-name.c (+111/-5)
src/basic/unit-name.h (+5/-0)
src/basic/user-util.c (+15/-10)
src/basic/user-util.h (+27/-0)
src/basic/utf8.c (+33/-6)
src/basic/utf8.h (+2/-0)
src/basic/util.c (+0/-66)
src/basic/util.h (+22/-14)
src/basic/virt.c (+170/-177)
src/basic/virt.h (+11/-9)
src/basic/xattr-util.c (+138/-109)
src/basic/xattr-util.h (+25/-14)
src/binfmt/binfmt.c (+49/-43)
src/boot/bless-boot.c (+14/-9)
src/boot/boot-check-no-failures.c (+1/-1)
src/boot/bootctl.c (+670/-289)
src/boot/efi/assert.c (+12/-0)
src/boot/efi/bcd.c (+335/-0)
src/boot/efi/bcd.h (+6/-0)
src/boot/efi/boot.c (+1372/-1146)
src/boot/efi/console.c (+201/-112)
src/boot/efi/console.h (+25/-8)
src/boot/efi/cpio.c (+468/-0)
src/boot/efi/cpio.h (+17/-0)
src/boot/efi/devicetree.c (+147/-0)
src/boot/efi/devicetree.h (+13/-0)
src/boot/efi/disk.c (+21/-18)
src/boot/efi/drivers.c (+124/-0)
src/boot/efi/drivers.h (+9/-0)
src/boot/efi/fuzz-bcd.c (+27/-0)
src/boot/efi/graphics.c (+5/-39)
src/boot/efi/initrd.c (+140/-0)
src/boot/efi/initrd.h (+11/-0)
src/boot/efi/linux.c (+151/-53)
src/boot/efi/linux.h (+5/-84)
src/boot/efi/linux_x86.c (+201/-0)
src/boot/efi/measure.c (+108/-243)
src/boot/efi/measure.h (+35/-1)
src/boot/efi/meson.build (+423/-282)
src/boot/efi/missing_efi.h (+315/-50)
src/boot/efi/pe.c (+192/-83)
src/boot/efi/pe.h (+19/-5)
src/boot/efi/random-seed.c (+57/-48)
src/boot/efi/random-seed.h (+6/-0)
src/boot/efi/secure-boot.c (+19/-4)
src/boot/efi/secure-boot.h (+2/-0)
src/boot/efi/shim.c (+33/-60)
src/boot/efi/splash.c (+56/-32)
src/boot/efi/splash.h (+1/-1)
src/boot/efi/stub.c (+239/-56)
src/boot/efi/test-bcd.c (+161/-0)
src/boot/efi/ticks.c (+101/-0)
src/boot/efi/ticks.h (+2/-3)
src/boot/efi/util.c (+417/-90)
src/boot/efi/util.h (+114/-28)
src/boot/efi/xbootldr.c (+265/-0)
src/boot/efi/xbootldr.h (+9/-0)
src/busctl/busctl-introspect.c (+2/-3)
src/busctl/busctl-introspect.h (+1/-0)
src/busctl/busctl.c (+33/-37)
src/busctl/meson.build (+6/-0)
src/busctl/test-busctl-introspect.c (+364/-0)
src/cgls/cgls.c (+47/-25)
src/cgtop/cgtop.c (+32/-32)
src/core/apparmor-setup.c (+0/-1)
src/core/automount.c (+60/-25)
src/core/automount.h (+1/-0)
src/core/bpf-devices.c (+17/-16)
src/core/bpf-devices.h (+1/-1)
src/core/bpf-firewall.c (+105/-85)
src/core/bpf-foreign.c (+22/-23)
src/core/bpf-foreign.h (+5/-2)
src/core/bpf-lsm.c (+360/-0)
src/core/bpf-lsm.h (+28/-0)
src/core/bpf-socket-bind.c (+22/-31)
src/core/bpf-socket-bind.h (+1/-1)
src/core/bpf-util.c (+34/-0)
src/core/bpf-util.h (+5/-0)
src/core/bpf/meson.build (+87/-0)
src/core/bpf/restrict_fs/meson.build (+24/-0)
src/core/bpf/restrict_fs/restrict-fs-skel.h (+14/-0)
src/core/bpf/restrict_fs/restrict-fs.bpf.c (+78/-0)
src/core/bpf/restrict_ifaces/meson.build (+24/-0)
src/core/bpf/restrict_ifaces/restrict-ifaces-skel.h (+14/-0)
src/core/bpf/restrict_ifaces/restrict-ifaces.bpf.c (+52/-0)
src/core/bpf/socket_bind/meson.build (+23/-13)
src/core/bpf/socket_bind/socket-bind-skel.h (+14/-0)
src/core/cgroup.c (+329/-170)
src/core/cgroup.h (+18/-7)
src/core/core-varlink.c (+160/-39)
src/core/crash-handler.c (+166/-0)
src/core/crash-handler.h (+7/-0)
src/core/dbus-automount.c (+4/-0)
src/core/dbus-cgroup.c (+178/-86)
src/core/dbus-execute.c (+366/-76)
src/core/dbus-job.c (+6/-8)
src/core/dbus-manager.c (+505/-589)
src/core/dbus-path.c (+8/-1)
src/core/dbus-scope.c (+4/-0)
src/core/dbus-service.c (+18/-17)
src/core/dbus-socket.c (+3/-6)
src/core/dbus-timer.c (+1/-4)
src/core/dbus-unit.c (+101/-111)
src/core/dbus-unit.h (+3/-2)
src/core/dbus-util.c (+2/-5)
src/core/dbus.c (+7/-3)
src/core/device.c (+154/-180)
src/core/dynamic-user.c (+2/-2)
src/core/efi-random.c (+5/-6)
src/core/emergency-action.c (+1/-1)
src/core/execute.c (+800/-264)
src/core/execute.h (+43/-3)
src/core/fuzz-unit-file.c (+4/-4)
src/core/generator-setup.c (+1/-1)
src/core/import-creds.c (+551/-0)
src/core/import-creds.h (+4/-0)
src/core/job.c (+77/-47)
src/core/job.h (+1/-0)
src/core/kmod-setup.c (+45/-19)
src/core/load-dropin.c (+10/-10)
src/core/load-fragment-gperf.gperf.in (+34/-9)
src/core/load-fragment.c (+494/-86)
src/core/load-fragment.h (+11/-2)
src/core/locale-setup.c (+2/-3)
src/core/main.c (+433/-393)
src/core/main.h (+9/-0)
src/core/manager-dump.c (+2/-3)
src/core/manager-serialize.c (+551/-0)
src/core/manager-serialize.h (+13/-0)
src/core/manager.c (+434/-773)
src/core/manager.h (+41/-28)
src/core/meson.build (+48/-14)
src/core/mount.c (+73/-34)
src/core/namespace.c (+227/-53)
src/core/namespace.h (+3/-0)
src/core/path.c (+67/-43)
src/core/path.h (+3/-0)
src/core/restrict-ifaces.c (+200/-0)
src/core/restrict-ifaces.h (+16/-0)
src/core/scope.c (+25/-8)
src/core/scope.h (+1/-0)
src/core/selinux-access.c (+17/-11)
src/core/selinux-access.h (+7/-3)
src/core/selinux-setup.c (+1/-2)
src/core/service.c (+301/-182)
src/core/service.h (+18/-5)
src/core/slice.c (+1/-5)
src/core/smack-setup.c (+5/-8)
src/core/socket.c (+65/-85)
src/core/swap.c (+46/-33)
src/core/system.conf.in (+4/-2)
src/core/target.c (+1/-0)
src/core/timer.c (+41/-47)
src/core/timer.h (+1/-1)
src/core/transaction.c (+28/-33)
src/core/unit-dependency-atom.c (+16/-10)
src/core/unit-dependency-atom.h (+15/-13)
src/core/unit-printf.c (+39/-42)
src/core/unit-serialize.c (+32/-10)
src/core/unit.c (+156/-89)
src/core/unit.h (+34/-5)
src/coredump/coredump-vacuum.c (+3/-5)
src/coredump/coredump.c (+59/-52)
src/coredump/coredumpctl.c (+18/-17)
src/coredump/meson.build (+7/-14)
src/creds/creds.c (+927/-0)
src/cryptenroll/cryptenroll-fido2.c (+5/-3)
src/cryptenroll/cryptenroll-fido2.h (+2/-2)
src/cryptenroll/cryptenroll-password.c (+5/-12)
src/cryptenroll/cryptenroll-pkcs11.c (+1/-1)
src/cryptenroll/cryptenroll-recovery.c (+2/-2)
src/cryptenroll/cryptenroll-tpm2.c (+88/-6)
src/cryptenroll/cryptenroll-tpm2.h (+2/-2)
src/cryptenroll/cryptenroll-wipe.c (+1/-1)
src/cryptenroll/cryptenroll.c (+65/-18)
src/cryptsetup/cryptsetup-fido2.c (+38/-15)
src/cryptsetup/cryptsetup-generator.c (+10/-10)
src/cryptsetup/cryptsetup-keyfile.c (+0/-1)
src/cryptsetup/cryptsetup-pkcs11.c (+14/-84)
src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c (+224/-0)
src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c (+143/-0)
src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c (+286/-0)
src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c (+58/-0)
src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.h (+38/-0)
src/cryptsetup/cryptsetup-tokens/cryptsetup-token.h (+19/-0)
src/cryptsetup/cryptsetup-tokens/cryptsetup-token.sym (+19/-0)
src/cryptsetup/cryptsetup-tokens/luks2-fido2.c (+157/-0)
src/cryptsetup/cryptsetup-tokens/luks2-fido2.h (+24/-0)
src/cryptsetup/cryptsetup-tokens/luks2-pkcs11.c (+271/-0)
src/cryptsetup/cryptsetup-tokens/luks2-pkcs11.h (+21/-0)
src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c (+176/-0)
src/cryptsetup/cryptsetup-tokens/luks2-tpm2.h (+30/-0)
src/cryptsetup/cryptsetup-tokens/meson.build (+28/-0)
src/cryptsetup/cryptsetup-tpm2.c (+163/-7)
src/cryptsetup/cryptsetup-tpm2.h (+22/-2)
src/cryptsetup/cryptsetup.c (+386/-124)
src/debug-generator/debug-generator.c (+2/-4)
src/delta/delta.c (+14/-16)
src/detect-virt/detect-virt.c (+14/-13)
src/dissect/dissect.c (+116/-42)
src/environment-d-generator/environment-d-generator.c (+0/-1)
src/escape/escape.c (+31/-3)
src/firstboot/firstboot.c (+36/-34)
src/fsck/fsck.c (+2/-5)
src/fstab-generator/fstab-generator.c (+37/-21)
src/fundamental/bootspec-fundamental.c (+62/-0)
src/fundamental/bootspec-fundamental.h (+17/-0)
src/fundamental/efivars-fundamental.c (+42/-0)
src/fundamental/efivars-fundamental.h (+23/-0)
src/fundamental/macro-fundamental.h (+138/-29)
src/fundamental/meson.build (+12/-11)
src/fundamental/sbat.h (+8/-0)
src/fundamental/sha256.c (+88/-70)
src/fundamental/sha256.h (+15/-9)
src/fundamental/string-util-fundamental.c (+4/-4)
src/fundamental/string-util-fundamental.h (+17/-0)
src/fundamental/types-fundamental.h (+39/-0)
src/fuzz/fuzz-bootspec-gen.py (+21/-0)
src/fuzz/fuzz-bootspec.c (+125/-0)
src/fuzz/fuzz-bootspec.options (+1/-1)
src/fuzz/fuzz-calendarspec.c (+39/-5)
src/fuzz/fuzz-compress.c (+5/-16)
src/fuzz/fuzz-env-file.c (+2/-3)
src/fuzz/fuzz-env-file.options (+1/-1)
src/fuzz/fuzz-hostname-setup.c (+1/-5)
src/fuzz/fuzz-json.c (+94/-9)
src/fuzz/fuzz.h (+21/-0)
src/fuzz/meson.build (+12/-10)
src/getty-generator/getty-generator.c (+43/-5)
src/gpt-auto-generator/gpt-auto-generator.c (+57/-40)
src/hibernate-resume/hibernate-resume-generator.c (+2/-2)
src/hibernate-resume/hibernate-resume.c (+4/-9)
src/home/home-util.c (+4/-0)
src/home/home-util.h (+14/-0)
src/home/homectl-fido2.c (+3/-1)
src/home/homectl-fido2.h (+1/-1)
src/home/homectl-pkcs11.c (+1/-1)
src/home/homectl-recovery-key.c (+2/-2)
src/home/homectl.c (+438/-198)
src/home/homed-home-bus.c (+51/-66)
src/home/homed-home.c (+466/-86)
src/home/homed-home.h (+56/-3)
src/home/homed-manager-bus.c (+146/-169)
src/home/homed-manager.c (+563/-100)
src/home/homed-manager.h (+25/-2)
src/home/homed-varlink.c (+1/-5)
src/home/homework-cifs.c (+124/-89)
src/home/homework-cifs.h (+3/-3)
src/home/homework-directory.c (+105/-34)
src/home/homework-directory.h (+4/-4)
src/home/homework-fscrypt.c (+70/-18)
src/home/homework-fscrypt.h (+4/-3)
src/home/homework-luks.c (+1358/-622)
src/home/homework-luks.h (+14/-11)
src/home/homework-mount.c (+233/-25)
src/home/homework-mount.h (+4/-2)
src/home/homework-password-cache.c (+57/-0)
src/home/homework-password-cache.h (+28/-0)
src/home/homework-pkcs11.c (+0/-1)
src/home/homework-quota.c (+2/-2)
src/home/homework.c (+331/-118)
src/home/homework.h (+43/-17)
src/home/meson.build (+73/-71)
src/home/org.freedesktop.home1.conf (+4/-0)
src/home/pam_systemd_home.c (+29/-3)
src/home/user-record-pwquality.c (+1/-2)
src/home/user-record-util.c (+146/-36)
src/home/user-record-util.h (+3/-0)
src/hostname/hostnamectl.c (+53/-17)
src/hostname/hostnamed.c (+289/-141)
src/hostname/org.freedesktop.hostname1.policy (+20/-0)
src/hwdb/hwdb.c (+3/-3)
src/id128/id128.c (+2/-3)
src/import/curl-util.c (+1/-1)
src/import/export-raw.c (+1/-1)
src/import/export-tar.c (+3/-6)
src/import/export.c (+1/-1)
src/import/import-common.c (+44/-59)
src/import/import-common.h (+15/-6)
src/import/import-compress.c (+1/-1)
src/import/import-fs.c (+170/-104)
src/import/import-raw.c (+165/-60)
src/import/import-raw.h (+1/-1)
src/import/import-tar.c (+59/-43)
src/import/import.c (+279/-102)
src/import/importd.c (+12/-12)
src/import/meson.build (+45/-54)
src/import/pull-common.c (+171/-89)
src/import/pull-common.h (+20/-12)
src/import/pull-job.c (+213/-112)
src/import/pull-job.h (+11/-4)
src/import/pull-raw.c (+307/-170)
src/import/pull-raw.h (+1/-1)
src/import/pull-tar.c (+217/-108)
src/import/pull-tar.h (+1/-1)
src/import/pull.c (+304/-106)
src/integritysetup/integrity-util.c (+70/-0)
src/integritysetup/integrity-util.h (+19/-0)
src/integritysetup/integritysetup-generator.c (+181/-0)
src/integritysetup/integritysetup.c (+203/-0)
src/journal-remote/fuzz-journal-remote.c (+4/-5)
src/journal-remote/journal-gatewayd.c (+2/-2)
src/journal-remote/journal-remote-main.c (+21/-16)
src/journal-remote/journal-remote-parse.c (+2/-2)
src/journal-remote/journal-remote-parse.h (+1/-1)
src/journal-remote/journal-remote-write.c (+19/-18)
src/journal-remote/journal-remote-write.h (+6/-7)
src/journal-remote/journal-remote.c (+37/-24)
src/journal-remote/journal-remote.h (+2/-4)
src/journal-remote/journal-upload-journal.c (+4/-5)
src/journal-remote/journal-upload.c (+10/-10)
src/journal-remote/log-generator.py (+4/-12)
src/journal-remote/meson.build (+29/-28)
src/journal-remote/microhttpd-util.c (+3/-4)
src/journal/cat.c (+1/-1)
src/journal/fuzz-journald-stream.c (+1/-1)
src/journal/journalctl.c (+72/-56)
src/journal/journald-audit.c (+51/-61)
src/journal/journald-kmsg.c (+19/-6)
src/journal/journald-rate-limit.c (+12/-10)
src/journal/journald-server.c (+214/-116)
src/journal/journald-server.h (+8/-3)
src/journal/journald-stream.c (+7/-6)
src/journal/journald.c (+2/-2)
src/journal/managed-journal-file.c (+526/-0)
src/journal/managed-journal-file.h (+41/-0)
src/journal/meson.build (+65/-46)
src/journal/test-journal-config.c (+3/-6)
src/journal/test-journal-flush.c (+8/-5)
src/journal/test-journal-interleaving.c (+52/-44)
src/journal/test-journal-stream.c (+16/-12)
src/journal/test-journal-syslog.c (+40/-29)
src/journal/test-journal-verify.c (+20/-13)
src/journal/test-journal.c (+256/-0)
src/kernel-install/50-depmod.install (+15/-11)
src/kernel-install/90-loaderentry.install (+89/-74)
src/kernel-install/install.conf (+11/-0)
src/kernel-install/kernel-install.in (+366/-0)
src/kernel-install/meson.build (+6/-8)
src/libsystemd-network/arp-util.c (+13/-21)
src/libsystemd-network/arp-util.h (+2/-2)
src/libsystemd-network/dhcp-identifier.c (+88/-47)
src/libsystemd-network/dhcp-identifier.h (+20/-6)
src/libsystemd-network/dhcp-internal.h (+5/-5)
src/libsystemd-network/dhcp-lease-internal.h (+10/-4)
src/libsystemd-network/dhcp-network.c (+37/-29)
src/libsystemd-network/dhcp-option.c (+2/-3)
src/libsystemd-network/dhcp-packet.c (+33/-13)
src/libsystemd-network/dhcp-protocol.h (+18/-9)
src/libsystemd-network/dhcp-server-internal.h (+17/-7)
src/libsystemd-network/dhcp6-internal.h (+66/-108)
src/libsystemd-network/dhcp6-lease-internal.h (+31/-21)
src/libsystemd-network/dhcp6-network.c (+4/-0)
src/libsystemd-network/dhcp6-option.c (+494/-389)
src/libsystemd-network/dhcp6-option.h (+104/-0)
src/libsystemd-network/dhcp6-protocol.c (+84/-0)
src/libsystemd-network/dhcp6-protocol.h (+84/-48)
src/libsystemd-network/fuzz-dhcp-client.c (+79/-0)
src/libsystemd-network/fuzz-dhcp-server-relay.c (+46/-0)
src/libsystemd-network/fuzz-dhcp-server.c (+45/-22)
src/libsystemd-network/fuzz-dhcp6-client.c (+69/-24)
src/libsystemd-network/fuzz-lldp-rx.c (+9/-9)
src/libsystemd-network/fuzz-ndisc-rs.c (+1/-1)
src/libsystemd-network/icmp6-util.c (+6/-7)
src/libsystemd-network/lldp-neighbor.c (+99/-82)
src/libsystemd-network/lldp-neighbor.h (+4/-4)
src/libsystemd-network/lldp-network.c (+8/-16)
src/libsystemd-network/lldp-rx-internal.h (+12/-12)
src/libsystemd-network/meson.build (+72/-60)
src/libsystemd-network/ndisc-internal.h (+3/-5)
src/libsystemd-network/ndisc-router.c (+29/-47)
src/libsystemd-network/network-common.c (+3/-12)
src/libsystemd-network/network-common.h (+27/-1)
src/libsystemd-network/network-internal.h (+1/-1)
src/libsystemd-network/radv-internal.h (+66/-20)
src/libsystemd-network/sd-dhcp-client.c (+79/-93)
src/libsystemd-network/sd-dhcp-lease.c (+202/-96)
src/libsystemd-network/sd-dhcp-server.c (+395/-258)
src/libsystemd-network/sd-dhcp6-client.c (+664/-1021)
src/libsystemd-network/sd-dhcp6-lease.c (+482/-167)
src/libsystemd-network/sd-ipv4acd.c (+22/-17)
src/libsystemd-network/sd-ipv4ll.c (+7/-8)
src/libsystemd-network/sd-lldp-rx.c (+199/-196)
src/libsystemd-network/sd-lldp-tx.c (+630/-0)
src/libsystemd-network/sd-ndisc.c (+36/-57)
src/libsystemd-network/sd-radv.c (+268/-231)
src/libsystemd-network/test-acd.c (+1/-1)
src/libsystemd-network/test-dhcp-client.c (+12/-23)
src/libsystemd-network/test-dhcp-option.c (+24/-27)
src/libsystemd-network/test-dhcp-server.c (+85/-13)
src/libsystemd-network/test-dhcp6-client.c (+649/-669)
src/libsystemd-network/test-ipv4ll-manual.c (+1/-1)
src/libsystemd-network/test-ipv4ll.c (+3/-3)
src/libsystemd-network/test-lldp-rx.c (+38/-38)
src/libsystemd-network/test-ndisc-ra.c (+32/-56)
src/libsystemd-network/test-ndisc-rs.c (+16/-56)
src/libsystemd-network/test-sd-dhcp-lease.c (+8/-15)
src/libsystemd/libsystemd.sym (+16/-0)
src/libsystemd/meson.build (+137/-154)
src/libsystemd/sd-bus/bus-common-errors.c (+2/-0)
src/libsystemd/sd-bus/bus-common-errors.h (+2/-0)
src/libsystemd/sd-bus/bus-container.c (+5/-3)
src/libsystemd/sd-bus/bus-dump.c (+110/-64)
src/libsystemd/sd-bus/bus-dump.h (+1/-1)
src/libsystemd/sd-bus/bus-error.c (+9/-4)
src/libsystemd/sd-bus/bus-error.h (+1/-1)
src/libsystemd/sd-bus/bus-gvariant.c (+5/-5)
src/libsystemd/sd-bus/bus-introspect.c (+2/-2)
src/libsystemd/sd-bus/bus-introspect.h (+2/-2)
src/libsystemd/sd-bus/bus-match.c (+7/-17)
src/libsystemd/sd-bus/bus-message.c (+28/-13)
src/libsystemd/sd-bus/bus-objects.c (+29/-47)
src/libsystemd/sd-bus/bus-slot.c (+1/-1)
src/libsystemd/sd-bus/bus-socket.c (+20/-15)
src/libsystemd/sd-bus/bus-track.c (+25/-21)
src/libsystemd/sd-bus/fuzz-bus-match.c (+3/-0)
src/libsystemd/sd-bus/fuzz-bus-match.options (+2/-0)
src/libsystemd/sd-bus/sd-bus.c (+17/-14)
src/libsystemd/sd-bus/test-bus-address.c (+5/-12)
src/libsystemd/sd-bus/test-bus-benchmark.c (+1/-1)
src/libsystemd/sd-bus/test-bus-error.c (+9/-15)
src/libsystemd/sd-bus/test-bus-gvariant.c (+5/-19)
src/libsystemd/sd-bus/test-bus-introspect.c (+8/-10)
src/libsystemd/sd-bus/test-bus-marshal.c (+3/-1)
src/libsystemd/sd-bus/test-bus-objects.c (+39/-0)
src/libsystemd/sd-bus/test-bus-signature.c (+1/-1)
src/libsystemd/sd-bus/test-bus-track.c (+72/-29)
src/libsystemd/sd-daemon/sd-daemon.c (+9/-12)
src/libsystemd/sd-device/device-enumerator-private.h (+17/-3)
src/libsystemd/sd-device/device-enumerator.c (+490/-213)
src/libsystemd/sd-device/device-internal.h (+3/-1)
src/libsystemd/sd-device/device-monitor.c (+4/-3)
src/libsystemd/sd-device/device-private.c (+122/-125)
src/libsystemd/sd-device/device-private.h (+15/-8)
src/libsystemd/sd-device/sd-device.c (+447/-263)
src/libsystemd/sd-device/test-device-util.c (+2/-9)
src/libsystemd/sd-device/test-sd-device-monitor.c (+7/-14)
src/libsystemd/sd-device/test-sd-device.c (+195/-64)
src/libsystemd/sd-event/event-source.h (+2/-1)
src/libsystemd/sd-event/event-util.c (+63/-0)
src/libsystemd/sd-event/event-util.h (+24/-4)
src/libsystemd/sd-event/sd-event.c (+169/-103)
src/libsystemd/sd-event/test-event.c (+67/-41)
src/libsystemd/sd-hwdb/hwdb-internal.h (+1/-0)
src/libsystemd/sd-id128/id128-util.c (+25/-35)
src/libsystemd/sd-id128/id128-util.h (+2/-4)
src/libsystemd/sd-id128/sd-id128.c (+30/-24)
src/libsystemd/sd-journal/audit_type-to-name.awk (+5/-2)
src/libsystemd/sd-journal/catalog.c (+5/-10)
src/libsystemd/sd-journal/journal-authenticate.c (+18/-19)
src/libsystemd/sd-journal/journal-def.h (+7/-20)
src/libsystemd/sd-journal/journal-file.c (+715/-884)
src/libsystemd/sd-journal/journal-file.h (+86/-49)
src/libsystemd/sd-journal/journal-send.c (+2/-2)
src/libsystemd/sd-journal/journal-vacuum.c (+16/-21)
src/libsystemd/sd-journal/journal-verify.c (+307/-241)
src/libsystemd/sd-journal/mmap-cache.c (+73/-125)
src/libsystemd/sd-journal/mmap-cache.h (+6/-5)
src/libsystemd/sd-journal/sd-journal.c (+62/-79)
src/libsystemd/sd-journal/test-audit-type.c (+3/-5)
src/libsystemd/sd-journal/test-journal-send.c (+8/-7)
src/libsystemd/sd-journal/test-mmap-cache.c (+6/-6)
src/libsystemd/sd-login/sd-login.c (+9/-14)
src/libsystemd/sd-login/test-login.c (+10/-13)
src/libsystemd/sd-netlink/netlink-genl.c (+488/-0)
src/libsystemd/sd-netlink/netlink-genl.h (+3/-1)
src/libsystemd/sd-netlink/netlink-internal.h (+40/-16)
src/libsystemd/sd-netlink/netlink-message-nfnl.c (+82/-67)
src/libsystemd/sd-netlink/netlink-message-rtnl.c (+53/-54)
src/libsystemd/sd-netlink/netlink-message.c (+238/-174)
src/libsystemd/sd-netlink/netlink-slot.c (+6/-20)
src/libsystemd/sd-netlink/netlink-socket.c (+41/-43)
src/libsystemd/sd-netlink/netlink-types-genl.c (+240/-0)
src/libsystemd/sd-netlink/netlink-types-internal.h (+49/-0)
src/libsystemd/sd-netlink/netlink-types-nfnl.c (+197/-0)
src/libsystemd/sd-netlink/netlink-types-rtnl.c (+1232/-0)
src/libsystemd/sd-netlink/netlink-types.c (+74/-1764)
src/libsystemd/sd-netlink/netlink-types.h (+23/-98)
src/libsystemd/sd-netlink/netlink-util.c (+57/-27)
src/libsystemd/sd-netlink/netlink-util.h (+23/-12)
src/libsystemd/sd-netlink/sd-netlink.c (+314/-258)
src/libsystemd/sd-netlink/test-netlink.c (+134/-11)
src/libsystemd/sd-network/network-util.c (+14/-75)
src/libsystemd/sd-network/network-util.h (+2/-8)
src/libsystemd/sd-network/sd-network.c (+87/-67)
src/libsystemd/sd-path/sd-path.c (+6/-6)
src/libsystemd/sd-resolve/sd-resolve.c (+4/-4)
src/libsystemd/sd-resolve/test-resolve.c (+8/-7)
src/libudev/libudev-enumerate.c (+1/-1)
src/libudev/libudev-list.c (+2/-5)
src/libudev/libudev.pc.in (+1/-0)
src/libudev/meson.build (+8/-13)
src/libudev/test-libudev.c (+1/-1)
src/locale/keymap-util.c (+9/-13)
src/locale/localectl.c (+6/-9)
src/locale/localed.c (+1/-2)
src/locale/meson.build (+10/-10)
src/locale/test-keymap-util.c (+9/-26)
src/login/inhibit.c (+4/-8)
src/login/loginctl.c (+17/-31)
src/login/logind-action.c (+108/-25)
src/login/logind-action.h (+22/-1)
src/login/logind-button.c (+177/-20)
src/login/logind-core.c (+17/-3)
src/login/logind-dbus.c (+694/-765)
src/login/logind-dbus.h (+4/-1)
src/login/logind-device.c (+0/-1)
src/login/logind-gperf.gperf (+6/-2)
src/login/logind-inhibit.c (+11/-21)
src/login/logind-polkit.c (+1/-1)
src/login/logind-polkit.h (+1/-1)
src/login/logind-seat-dbus.c (+10/-13)
src/login/logind-seat.c (+9/-21)
src/login/logind-session-dbus.c (+53/-76)
src/login/logind-session-device.c (+13/-16)
src/login/logind-session.c (+4/-8)
src/login/logind-user-dbus.c (+5/-7)
src/login/logind-user.c (+7/-17)
src/login/logind-utmp.c (+32/-30)
src/login/logind.c (+16/-16)
src/login/logind.conf.in (+6/-2)
src/login/logind.h (+18/-14)
src/login/meson.build (+63/-70)
src/login/pam_systemd.c (+92/-35)
src/login/sysfs-show.c (+1/-1)
src/login/systemd-user.in (+1/-0)
src/login/test-login-shared.c (+3/-9)
src/login/user-runtime-dir.c (+5/-3)
src/machine-id-setup/machine-id-setup-main.c (+2/-3)
src/machine/image-dbus.c (+39/-6)
src/machine/machine-dbus.c (+115/-88)
src/machine/machine.c (+6/-14)
src/machine/machinectl.c (+50/-72)
src/machine/machined-dbus.c (+201/-306)
src/machine/machined-varlink.c (+5/-5)
src/machine/machined.c (+7/-12)
src/machine/meson.build (+21/-20)
src/machine/operation.c (+1/-0)
src/modules-load/modules-load.c (+1/-2)
src/mount/mount-tool.c (+5/-5)
src/network/fuzz-netdev-parser.c (+4/-1)
src/network/fuzz-netdev-parser.options (+2/-0)
src/network/fuzz-network-parser.c (+2/-2)
src/network/fuzz-network-parser.options (+1/-1)
src/network/generator/main.c (+6/-5)
src/network/generator/network-generator.c (+151/-52)
src/network/generator/network-generator.h (+12/-5)
src/network/generator/test-network-generator.c (+18/-2)
src/network/meson.build (+226/-197)
src/network/netdev/bareudp.c (+10/-62)
src/network/netdev/batadv.c (+37/-24)
src/network/netdev/bond.c (+31/-27)
src/network/netdev/bridge.c (+55/-37)
src/network/netdev/bridge.h (+4/-7)
src/network/netdev/dummy.c (+3/-0)
src/network/netdev/fou-tunnel.c (+32/-24)
src/network/netdev/geneve.c (+66/-123)
src/network/netdev/ifb.c (+3/-0)
src/network/netdev/ipoib.c (+162/-0)
src/network/netdev/ipoib.h (+30/-0)
src/network/netdev/ipvlan.c (+11/-10)
src/network/netdev/l2tp-tunnel.c (+262/-98)
src/network/netdev/l2tp-tunnel.h (+4/-2)
src/network/netdev/macsec.c (+57/-56)
src/network/netdev/macsec.h (+3/-3)
src/network/netdev/macvlan.c (+12/-8)
src/network/netdev/netdev-gperf.gperf (+27/-14)
src/network/netdev/netdev-util.c (+100/-0)
src/network/netdev/netdev-util.h (+27/-0)
src/network/netdev/netdev.c (+469/-405)
src/network/netdev/netdev.h (+54/-42)
src/network/netdev/netdevsim.c (+3/-0)
src/network/netdev/nlmon.c (+5/-2)
src/network/netdev/tunnel.c (+587/-331)
src/network/netdev/tunnel.h (+39/-1)
src/network/netdev/tuntap.c (+8/-6)
src/network/netdev/vcan.c (+3/-1)
src/network/netdev/veth.c (+27/-24)
src/network/netdev/veth.h (+1/-1)
src/network/netdev/vlan.c (+11/-9)
src/network/netdev/vrf.c (+6/-3)
src/network/netdev/vxcan.c (+9/-9)
src/network/netdev/vxlan.c (+162/-83)
src/network/netdev/vxlan.h (+3/-1)
src/network/netdev/wireguard.c (+411/-158)
src/network/netdev/wireguard.h (+20/-6)
src/network/netdev/wlan.c (+260/-0)
src/network/netdev/wlan.h (+22/-0)
src/network/netdev/xfrm.c (+6/-3)
src/network/networkctl.c (+128/-201)
src/network/networkd-address-generation.c (+441/-0)
src/network/networkd-address-generation.h (+14/-0)
src/network/networkd-address-label.c (+66/-43)
src/network/networkd-address-label.h (+4/-5)
src/network/networkd-address-pool.c (+0/-18)
src/network/networkd-address.c (+629/-591)
src/network/networkd-address.h (+63/-27)
src/network/networkd-bridge-fdb.c (+73/-64)
src/network/networkd-bridge-fdb.h (+1/-4)
src/network/networkd-bridge-mdb.c (+75/-103)
src/network/networkd-bridge-mdb.h (+1/-3)
src/network/networkd-bridge-vlan.c (+5/-7)
src/network/networkd-can.c (+248/-92)
src/network/networkd-can.h (+6/-0)
src/network/networkd-conf.c (+1/-3)
src/network/networkd-dhcp-common.c (+234/-108)
src/network/networkd-dhcp-common.h (+22/-2)
src/network/networkd-dhcp-prefix-delegation.c (+1310/-0)
src/network/networkd-dhcp-prefix-delegation.h (+25/-0)
src/network/networkd-dhcp-server-bus.c (+9/-5)
src/network/networkd-dhcp-server-bus.h (+4/-2)
src/network/networkd-dhcp-server-static-lease.c (+7/-7)
src/network/networkd-dhcp-server-static-lease.h (+3/-3)
src/network/networkd-dhcp-server.c (+139/-111)
src/network/networkd-dhcp-server.h (+1/-3)
src/network/networkd-dhcp4.c (+449/-470)
src/network/networkd-dhcp4.h (+5/-2)
src/network/networkd-dhcp6.c (+288/-1324)
src/network/networkd-dhcp6.h (+5/-19)
src/network/networkd-gperf.gperf (+1/-1)
src/network/networkd-ipv4acd.c (+80/-94)
src/network/networkd-ipv4acd.h (+2/-1)
src/network/networkd-ipv4ll.c (+16/-5)
src/network/networkd-ipv6-proxy-ndp.c (+40/-37)
src/network/networkd-ipv6-proxy-ndp.h (+0/-2)
src/network/networkd-ipv6ll.c (+248/-0)
src/network/networkd-ipv6ll.h (+37/-0)
src/network/networkd-json.c (+1339/-52)
src/network/networkd-link-bus.c (+17/-10)
src/network/networkd-link-bus.h (+2/-1)
src/network/networkd-link.c (+621/-375)
src/network/networkd-link.h (+37/-45)
src/network/networkd-lldp-rx.c (+19/-45)
src/network/networkd-lldp-rx.h (+0/-1)
src/network/networkd-lldp-tx.c (+52/-378)
src/network/networkd-lldp-tx.h (+2/-16)
src/network/networkd-manager-bus.c (+10/-1)
src/network/networkd-manager-bus.h (+3/-1)
src/network/networkd-manager.c (+286/-88)
src/network/networkd-manager.h (+11/-9)
src/network/networkd-ndisc.c (+487/-914)
src/network/networkd-ndisc.h (+10/-43)
src/network/networkd-neighbor.c (+209/-280)
src/network/networkd-neighbor.h (+8/-15)
src/network/networkd-network-bus.c (+12/-5)
src/network/networkd-network-bus.h (+3/-1)
src/network/networkd-network-gperf.gperf (+135/-78)
src/network/networkd-network.c (+263/-160)
src/network/networkd-network.h (+64/-47)
src/network/networkd-nexthop.c (+356/-367)
src/network/networkd-nexthop.h (+9/-9)
src/network/networkd-queue.c (+202/-228)
src/network/networkd-queue.h (+103/-42)
src/network/networkd-radv.c (+848/-534)
src/network/networkd-radv.h (+24/-10)
src/network/networkd-route-util.c (+554/-0)
src/network/networkd-route-util.h (+49/-0)
src/network/networkd-route.c (+818/-1153)
src/network/networkd-route.h (+28/-25)
src/network/networkd-routing-policy-rule.c (+351/-337)
src/network/networkd-routing-policy-rule.h (+13/-8)
src/network/networkd-setlink.c (+511/-367)
src/network/networkd-setlink.h (+5/-26)
src/network/networkd-sriov.c (+42/-472)
src/network/networkd-sriov.h (+3/-40)
src/network/networkd-state-file.c (+95/-82)
src/network/networkd-sysctl.c (+1/-46)
src/network/networkd-util.c (+82/-64)
src/network/networkd-util.h (+98/-38)
src/network/networkd-wifi.c (+250/-32)
src/network/networkd-wifi.h (+4/-3)
src/network/networkd-wiphy.c (+205/-0)
src/network/networkd-wiphy.h (+52/-0)
src/network/networkd.c (+14/-4)
src/network/tc/cake.c (+466/-8)
src/network/tc/cake.h (+60/-1)
src/network/tc/codel.c (+9/-9)
src/network/tc/drr.c (+4/-4)
src/network/tc/ets.c (+13/-12)
src/network/tc/fifo.c (+10/-12)
src/network/tc/fq-codel.c (+14/-14)
src/network/tc/fq-pie.c (+4/-4)
src/network/tc/fq.c (+14/-14)
src/network/tc/gred.c (+11/-12)
src/network/tc/hhf.c (+4/-4)
src/network/tc/htb.c (+34/-31)
src/network/tc/netem.c (+8/-14)
src/network/tc/pie.c (+4/-4)
src/network/tc/qdisc.c (+374/-69)
src/network/tc/qdisc.h (+16/-14)
src/network/tc/qfq.c (+6/-5)
src/network/tc/sfb.c (+14/-14)
src/network/tc/sfq.c (+6/-5)
src/network/tc/tbf.c (+23/-23)
src/network/tc/tc.c (+19/-66)
src/network/tc/tc.h (+2/-28)
src/network/tc/tclass.c (+373/-51)
src/network/tc/tclass.h (+17/-12)
src/network/tc/teql.c (+7/-16)
src/network/test-network-tables.c (+4/-7)
src/network/test-network.c (+25/-3)
src/network/test-networkd-address.c (+25/-0)
src/network/test-networkd-conf.c (+74/-79)
src/network/test-networkd-util.c (+19/-0)
src/network/wait-online/link.c (+2/-11)
src/network/wait-online/manager.c (+3/-5)
src/network/wait-online/wait-online.c (+1/-1)
src/notify/notify.c (+3/-3)
src/nspawn/fuzz-nspawn-oci.c (+2/-3)
src/nspawn/fuzz-nspawn-settings.c (+2/-3)
src/nspawn/meson.build (+43/-35)
src/nspawn/nspawn-bind-user.c (+9/-15)
src/nspawn/nspawn-cgroup.c (+2/-3)
src/nspawn/nspawn-expose-ports.c (+6/-9)
src/nspawn/nspawn-gperf.gperf (+61/-60)
src/nspawn/nspawn-mount.c (+28/-12)
src/nspawn/nspawn-mount.h (+1/-1)
src/nspawn/nspawn-network.c (+1/-6)
src/nspawn/nspawn-oci.c (+32/-33)
src/nspawn/nspawn-patch-uid.c (+6/-16)
src/nspawn/nspawn-seccomp.c (+0/-1)
src/nspawn/nspawn-settings.c (+26/-29)
src/nspawn/nspawn-settings.h (+9/-6)
src/nspawn/nspawn-setuid.c (+2/-2)
src/nspawn/nspawn-stub-pid1.c (+3/-5)
src/nspawn/nspawn-util.c (+69/-0)
src/nspawn/nspawn-util.h (+4/-0)
src/nspawn/nspawn.c (+257/-177)
src/nspawn/test-nspawn-util.c (+22/-0)
src/nss-myhostname/nss-myhostname.c (+36/-30)
src/nss-resolve/nss-resolve.c (+23/-13)
src/nss-systemd/userdb-glue.c (+1/-1)
src/oom/meson.build (+13/-15)
src/oom/oomctl.c (+3/-3)
src/oom/oomd-manager.c (+163/-83)
src/oom/oomd-manager.h (+10/-3)
src/oom/oomd-util.c (+66/-34)
src/oom/oomd-util.h (+3/-2)
src/oom/oomd.c (+18/-3)
src/oom/test-oomd-util.c (+10/-6)
src/partition/growfs.c (+5/-5)
src/partition/makefs.c (+1/-1)
src/partition/meson.build (+1/-3)
src/partition/repart.c (+313/-341)
src/partition/test-repart.sh (+15/-9)
src/path/path.c (+1/-1)
src/portable/meson.build (+17/-17)
src/portable/portable.c (+220/-143)
src/portable/portable.h (+3/-2)
src/portable/portablectl.c (+32/-13)
src/portable/portabled-bus.c (+28/-0)
src/portable/portabled-image-bus.c (+42/-5)
src/portable/portabled-operation.c (+2/-0)
src/portable/portabled.c (+5/-7)
src/pstore/meson.build (+1/-3)
src/pstore/pstore.c (+0/-1)
src/random-seed/random-seed.c (+28/-3)
src/rc-local-generator/rc-local-generator.c (+1/-1)
src/resolve/dns-type.c (+1/-1)
src/resolve/dns_type-to-name.awk (+5/-2)
src/resolve/fuzz-dns-packet.c (+1/-1)
src/resolve/fuzz-dns-packet.options (+1/-1)
src/resolve/fuzz-etc-hosts.c (+20/-0)
src/resolve/meson.build (+119/-107)
src/resolve/resolvconf-compat.c (+2/-2)
src/resolve/resolvectl.c (+29/-67)
src/resolve/resolved-bus.c (+110/-55)
src/resolve/resolved-conf.c (+8/-16)
src/resolve/resolved-dns-answer.c (+159/-292)
src/resolve/resolved-dns-answer.h (+49/-52)
src/resolve/resolved-dns-cache.c (+16/-32)
src/resolve/resolved-dns-dnssec.c (+539/-213)
src/resolve/resolved-dns-packet.c (+56/-77)
src/resolve/resolved-dns-packet.h (+9/-1)
src/resolve/resolved-dns-query.c (+12/-21)
src/resolve/resolved-dns-rr.c (+15/-22)
src/resolve/resolved-dns-rr.h (+18/-0)
src/resolve/resolved-dns-scope.c (+15/-20)
src/resolve/resolved-dns-search-domain.c (+3/-4)
src/resolve/resolved-dns-server.c (+17/-11)
src/resolve/resolved-dns-stream.c (+67/-60)
src/resolve/resolved-dns-stream.h (+26/-5)
src/resolve/resolved-dns-stub.c (+171/-60)
src/resolve/resolved-dns-synthesize.c (+2/-5)
src/resolve/resolved-dns-transaction.c (+46/-53)
src/resolve/resolved-dns-trust-anchor.c (+4/-3)
src/resolve/resolved-dns-zone.c (+8/-22)
src/resolve/resolved-dnssd-bus.c (+0/-1)
src/resolve/resolved-dnssd.c (+20/-24)
src/resolve/resolved-dnssd.h (+1/-1)
src/resolve/resolved-dnstls-gnutls.c (+19/-7)
src/resolve/resolved-dnstls-openssl.c (+34/-10)
src/resolve/resolved-dnstls.h (+2/-1)
src/resolve/resolved-etc-hosts.c (+1/-4)
src/resolve/resolved-link-bus.c (+2/-3)
src/resolve/resolved-link.c (+80/-75)
src/resolve/resolved-link.h (+5/-0)
src/resolve/resolved-llmnr.c (+5/-9)
src/resolve/resolved-manager.c (+19/-28)
src/resolve/resolved-manager.h (+4/-0)
src/resolve/resolved-mdns.c (+31/-17)
src/resolve/resolved-resolv-conf.c (+3/-8)
src/resolve/resolved-socket-graveyard.c (+3/-3)
src/resolve/resolved-socket-graveyard.h (+1/-1)
src/resolve/resolved-varlink.c (+2/-2)
src/resolve/resolved.c (+1/-1)
src/resolve/test-dnssec.c (+200/-36)
src/resolve/test-resolved-etc-hosts.c (+15/-25)
src/resolve/test-resolved-packet.c (+2/-8)
src/resolve/test-resolved-stream.c (+395/-0)
src/rfkill/rfkill.c (+6/-6)
src/rpm/macros.systemd.in (+23/-19)
src/rpm/meson.build (+9/-6)
src/rpm/systemd-update-helper.in (+119/-0)
src/rpm/triggers.systemd.in (+58/-51)
src/rpm/triggers.systemd.sh.in (+20/-22)
src/run-generator/run-generator.c (+0/-1)
src/run/run.c (+43/-38)
src/shared/acl-util.c (+1/-2)
src/shared/ask-password-api.c (+31/-44)
src/shared/barrier.c (+3/-2)
src/shared/base-filesystem.c (+84/-6)
src/shared/blockdev-util.c (+51/-15)
src/shared/blockdev-util.h (+3/-0)
src/shared/boot-timestamps.c (+5/-13)
src/shared/bootspec.c (+585/-783)
src/shared/bootspec.h (+57/-25)
src/shared/bpf-dlopen.c (+34/-2)
src/shared/bpf-dlopen.h (+6/-1)
src/shared/bpf-link.c (+7/-7)
src/shared/bpf-link.h (+1/-1)
src/shared/bpf-program.c (+50/-55)
src/shared/bpf-program.h (+4/-6)
src/shared/btrfs-util.c (+19/-32)
src/shared/btrfs-util.h (+1/-0)
src/shared/bus-get-properties.c (+1/-1)
src/shared/bus-object.c (+2/-2)
src/shared/bus-polkit.c (+9/-10)
src/shared/bus-polkit.h (+1/-1)
src/shared/bus-print-properties.c (+6/-12)
src/shared/bus-unit-procs.c (+9/-9)
src/shared/bus-unit-util.c (+189/-38)
src/shared/bus-util.c (+20/-4)
src/shared/bus-util.h (+2/-16)
src/shared/calendarspec.c (+57/-42)
src/shared/calendarspec.h (+0/-1)
src/shared/cgroup-setup.c (+116/-36)
src/shared/cgroup-show.c (+129/-32)
src/shared/chown-recursive.c (+1/-5)
src/shared/clean-ipc.c (+0/-2)
src/shared/clock-util.c (+18/-13)
src/shared/clock-util.h (+10/-1)
src/shared/condition.c (+179/-43)
src/shared/condition.h (+3/-0)
src/shared/conf-parser.c (+525/-73)
src/shared/conf-parser.h (+71/-10)
src/shared/copy.c (+297/-77)
src/shared/copy.h (+16/-10)
src/shared/creds-util.c (+160/-64)
src/shared/creds-util.h (+65/-0)
src/shared/cryptsetup-util.h (+7/-1)
src/shared/data-fd-util.c (+2/-7)
src/shared/dev-setup.c (+1/-0)
src/shared/devnode-acl.c (+11/-13)
src/shared/discover-image.c (+14/-9)
src/shared/dissect-image.c (+844/-715)
src/shared/dissect-image.h (+116/-23)
src/shared/dns-domain.c (+22/-13)
src/shared/dns-domain.h (+2/-0)
src/shared/dropin.c (+1/-2)
src/shared/efi-api.c (+548/-0)
src/shared/efi-api.h (+71/-0)
src/shared/efi-loader.c (+16/-562)
src/shared/efi-loader.h (+5/-58)
src/shared/elf-util.c (+819/-0)
src/shared/elf-util.h (+18/-0)
src/shared/ethtool-util.c (+609/-223)
src/shared/ethtool-util.h (+119/-28)
src/shared/exec-util.c (+90/-4)
src/shared/exec-util.h (+2/-0)
src/shared/exit-status.c (+3/-2)
src/shared/exit-status.h (+1/-0)
src/shared/extension-release.c (+26/-3)
src/shared/extension-release.h (+1/-0)
src/shared/fdisk-util.h (+15/-0)
src/shared/fdset.c (+0/-1)
src/shared/find-esp.c (+716/-0)
src/shared/find-esp.h (+12/-0)
src/shared/firewall-util-iptables.c (+1/-1)
src/shared/firewall-util-nft.c (+9/-6)
src/shared/format-table.c (+167/-56)
src/shared/format-table.h (+7/-1)
src/shared/generator.c (+8/-8)
src/shared/gpt.c (+102/-87)
src/shared/gpt.h (+260/-74)
src/shared/group-record.c (+3/-4)
src/shared/hostname-setup.c (+9/-26)
src/shared/hostname-setup.h (+0/-1)
src/shared/hwdb-util.c (+3/-4)
src/shared/import-util.c (+83/-22)
src/shared/import-util.h (+10/-1)
src/shared/in-addr-prefix-util.c (+325/-0)
src/shared/in-addr-prefix-util.h (+23/-0)
src/shared/install-file.c (+270/-0)
src/shared/install-file.h (+14/-0)
src/shared/install-printf.c (+14/-16)
src/shared/install-printf.h (+5/-8)
src/shared/install.c (+791/-658)
src/shared/install.h (+27/-20)
src/shared/journal-importer.c (+4/-4)
src/shared/journal-util.c (+3/-4)
src/shared/json-internal.h (+5/-5)
src/shared/json.c (+484/-223)
src/shared/json.h (+96/-37)
src/shared/kbd-util.c (+80/-51)
src/shared/keyring-util.c (+38/-0)
src/shared/keyring-util.h (+17/-0)
src/shared/killall.c (+11/-11)
src/shared/label.c (+3/-9)
src/shared/label.h (+1/-2)
src/shared/libcrypt-util.c (+0/-1)
src/shared/libfido2-util.c (+92/-6)
src/shared/libfido2-util.h (+8/-0)
src/shared/linux/bpf.h (+1310/-30)
src/shared/linux/bpf_insn.h (+23/-7)
src/shared/linux/dm-ioctl.h (+21/-1)
src/shared/linux/ethtool.h (+111/-35)
src/shared/local-addresses.c (+2/-2)
src/shared/log-link.h (+0/-18)
src/shared/logs-show.c (+14/-18)
src/shared/loop-util.c (+216/-43)
src/shared/loop-util.h (+1/-0)
src/shared/loopback-setup.c (+6/-1)
src/shared/machine-id-setup.c (+2/-2)
src/shared/main-func.h (+1/-0)
src/shared/meson.build (+357/-329)
src/shared/mkdir-label.c (+4/-26)
src/shared/mkdir-label.h (+17/-0)
src/shared/mkfs-util.c (+149/-39)
src/shared/mount-setup.c (+50/-39)
src/shared/mount-util.c (+119/-70)
src/shared/mount-util.h (+20/-5)
src/shared/net-condition.c (+26/-52)
src/shared/net-condition.h (+9/-7)
src/shared/netif-naming-scheme.c (+42/-6)
src/shared/netif-naming-scheme.h (+38/-13)
src/shared/netif-sriov.c (+649/-0)
src/shared/netif-sriov.h (+50/-0)
src/shared/netif-util.c (+206/-0)
src/shared/netif-util.h (+22/-0)
src/shared/nscd-flush.c (+1/-2)
src/shared/numa-util.c (+0/-1)
src/shared/openssl-util.c (+67/-0)
src/shared/openssl-util.h (+55/-1)
src/shared/output-mode.h (+11/-5)
src/shared/pager.c (+23/-22)
src/shared/pager.h (+1/-1)
src/shared/parse-helpers.c (+50/-1)
src/shared/parse-helpers.h (+14/-1)
src/shared/pkcs11-util.c (+139/-44)
src/shared/pkcs11-util.h (+29/-0)
src/shared/pretty-print.c (+5/-3)
src/shared/pretty-print.h (+23/-0)
src/shared/psi-util.c (+0/-2)
src/shared/qrcode-util.c (+9/-6)
src/shared/quota-util.c (+5/-4)
src/shared/quota-util.h (+1/-1)
src/shared/resize-fs.c (+5/-0)
src/shared/resize-fs.h (+2/-0)
src/shared/resolve-util.c (+2/-2)
src/shared/resolve-util.h (+4/-1)
src/shared/rm-rf.c (+6/-8)
src/shared/seccomp-util.c (+117/-8)
src/shared/seccomp-util.h (+12/-0)
src/shared/selinux-util.c (+30/-54)
src/shared/selinux-util.h (+5/-1)
src/shared/serialize.c (+4/-4)
src/shared/service-util.c (+2/-2)
src/shared/sleep-config.c (+2/-2)
src/shared/smack-util.c (+27/-13)
src/shared/smack-util.h (+2/-0)
src/shared/socket-label.c (+4/-5)
src/shared/socket-netlink.c (+1/-1)
src/shared/spawn-ask-password-agent.c (+2/-3)
src/shared/spawn-polkit-agent.c (+2/-3)
src/shared/specifier.c (+144/-42)
src/shared/specifier.h (+28/-23)
src/shared/switch-root.c (+7/-8)
src/shared/tests.c (+34/-14)
src/shared/tests.h (+95/-1)
src/shared/tmpfile-util-label.h (+3/-3)
src/shared/tpm2-util.c (+578/-59)
src/shared/tpm2-util.h (+55/-3)
src/shared/udev-util.c (+168/-8)
src/shared/udev-util.h (+5/-1)
src/shared/uid-alloc-range.c (+123/-0)
src/shared/uid-alloc-range.h (+34/-0)
src/shared/uid-range.c (+74/-14)
src/shared/uid-range.h (+10/-4)
src/shared/user-record-show.c (+89/-95)
src/shared/user-record.c (+142/-175)
src/shared/user-record.h (+26/-36)
src/shared/userdb.c (+12/-13)
src/shared/utmp-wtmp.c (+8/-6)
src/shared/utmp-wtmp.h (+1/-1)
src/shared/varlink.c (+34/-15)
src/shared/verb-log-control.c (+56/-0)
src/shared/verb-log-control.h (+8/-0)
src/shared/watchdog.c (+368/-85)
src/shared/watchdog.h (+4/-2)
src/shared/web-util.c (+15/-2)
src/shared/web-util.h (+1/-0)
src/shared/wifi-util.c (+210/-32)
src/shared/wifi-util.h (+8/-3)
src/shared/xml.c (+1/-1)
src/shutdown/meson.build (+8/-8)
src/shutdown/shutdown.c (+32/-15)
src/shutdown/test-umount.c (+14/-14)
src/shutdown/umount.c (+26/-21)
src/sleep/sleep.c (+4/-7)
src/socket-proxy/socket-proxyd.c (+5/-4)
src/stdio-bridge/stdio-bridge.c (+3/-6)
src/sysctl/sysctl.c (+2/-6)
src/sysext/meson.build (+1/-3)
src/sysext/sysext.c (+31/-15)
src/systemctl/fuzz-systemctl-parse-argv.c (+8/-6)
src/systemctl/meson.build (+4/-3)
src/systemctl/systemctl-add-dependency.c (+5/-3)
src/systemctl/systemctl-add-dependency.h (+1/-1)
src/systemctl/systemctl-cancel-job.c (+2/-3)
src/systemctl/systemctl-cancel-job.h (+1/-1)
src/systemctl/systemctl-clean-or-freeze.c (+2/-3)
src/systemctl/systemctl-clean-or-freeze.h (+1/-1)
src/systemctl/systemctl-compat-halt.c (+29/-34)
src/systemctl/systemctl-compat-runlevel.c (+1/-1)
src/systemctl/systemctl-compat-shutdown.c (+9/-2)
src/systemctl/systemctl-compat-telinit.c (+12/-9)
src/systemctl/systemctl-daemon-reload.c (+31/-14)
src/systemctl/systemctl-daemon-reload.h (+5/-1)
src/systemctl/systemctl-edit.c (+22/-23)
src/systemctl/systemctl-edit.h (+2/-2)
src/systemctl/systemctl-enable.c (+18/-17)
src/systemctl/systemctl-enable.h (+1/-1)
src/systemctl/systemctl-is-active.c (+2/-3)
src/systemctl/systemctl-is-active.h (+2/-2)
src/systemctl/systemctl-is-enabled.c (+2/-3)
src/systemctl/systemctl-is-enabled.h (+1/-1)
src/systemctl/systemctl-is-system-running.c (+1/-1)
src/systemctl/systemctl-is-system-running.h (+1/-1)
src/systemctl/systemctl-kill.c (+2/-2)
src/systemctl/systemctl-kill.h (+1/-1)
src/systemctl/systemctl-list-dependencies.c (+3/-4)
src/systemctl/systemctl-list-dependencies.h (+1/-1)
src/systemctl/systemctl-list-jobs.c (+3/-3)
src/systemctl/systemctl-list-jobs.h (+1/-1)
src/systemctl/systemctl-list-machines.c (+12/-7)
src/systemctl/systemctl-list-machines.h (+7/-4)
src/systemctl/systemctl-list-unit-files.c (+4/-4)
src/systemctl/systemctl-list-unit-files.h (+1/-1)
src/systemctl/systemctl-list-units.c (+6/-7)
src/systemctl/systemctl-list-units.h (+3/-3)
src/systemctl/systemctl-log-setting.c (+9/-57)
src/systemctl/systemctl-log-setting.h (+2/-2)
src/systemctl/systemctl-logind.c (+50/-29)
src/systemctl/systemctl-logind.h (+1/-0)
src/systemctl/systemctl-mount.c (+2/-2)
src/systemctl/systemctl-mount.h (+2/-2)
src/systemctl/systemctl-preset-all.c (+4/-2)
src/systemctl/systemctl-preset-all.h (+1/-1)
src/systemctl/systemctl-reset-failed.c (+2/-3)
src/systemctl/systemctl-reset-failed.h (+1/-1)
src/systemctl/systemctl-service-watchdogs.c (+1/-1)
src/systemctl/systemctl-service-watchdogs.h (+1/-1)
src/systemctl/systemctl-set-default.c (+7/-5)
src/systemctl/systemctl-set-default.h (+2/-2)
src/systemctl/systemctl-set-environment.c (+52/-11)
src/systemctl/systemctl-set-environment.h (+3/-3)
src/systemctl/systemctl-set-property.c (+1/-2)
src/systemctl/systemctl-set-property.h (+1/-1)
src/systemctl/systemctl-show.c (+139/-125)
src/systemctl/systemctl-show.h (+1/-1)
src/systemctl/systemctl-start-special.c (+17/-11)
src/systemctl/systemctl-start-special.h (+2/-2)
src/systemctl/systemctl-start-unit.c (+5/-9)
src/systemctl/systemctl-start-unit.h (+1/-1)
src/systemctl/systemctl-switch-root.c (+1/-1)
src/systemctl/systemctl-switch-root.h (+1/-1)
src/systemctl/systemctl-sysv-compat.c (+14/-15)
src/systemctl/systemctl-trivial-method.c (+1/-1)
src/systemctl/systemctl-trivial-method.h (+1/-1)
src/systemctl/systemctl-util.c (+16/-23)
src/systemctl/systemctl.c (+92/-91)
src/systemctl/systemctl.h (+2/-1)
src/systemd/meson.build (+50/-40)
src/systemd/sd-bus-vtable.h (+41/-38)
src/systemd/sd-device.h (+5/-0)
src/systemd/sd-dhcp-client.h (+169/-60)
src/systemd/sd-dhcp-lease.h (+9/-2)
src/systemd/sd-dhcp-server.h (+5/-2)
src/systemd/sd-dhcp6-client.h (+143/-38)
src/systemd/sd-dhcp6-lease.h (+9/-5)
src/systemd/sd-event.h (+2/-0)
src/systemd/sd-id128.h (+6/-1)
src/systemd/sd-ipv4acd.h (+1/-1)
src/systemd/sd-ipv4ll.h (+1/-1)
src/systemd/sd-lldp-rx.h (+109/-0)
src/systemd/sd-lldp-tx.h (+70/-0)
src/systemd/sd-lldp.h (+15/-90)
src/systemd/sd-messages.h (+19/-0)
src/systemd/sd-ndisc.h (+1/-5)
src/systemd/sd-netlink.h (+28/-35)
src/systemd/sd-network.h (+3/-0)
src/systemd/sd-radv.h (+9/-17)
src/sysupdate/meson.build (+22/-0)
src/sysupdate/sysupdate-cache.c (+88/-0)
src/sysupdate/sysupdate-cache.h (+18/-0)
src/sysupdate/sysupdate-instance.c (+63/-0)
src/sysupdate/sysupdate-instance.h (+67/-0)
src/sysupdate/sysupdate-partition.c (+379/-0)
src/sysupdate/sysupdate-partition.h (+49/-0)
src/sysupdate/sysupdate-pattern.c (+602/-0)
src/sysupdate/sysupdate-pattern.h (+12/-0)
src/sysupdate/sysupdate-resource.c (+633/-0)
src/sysupdate/sysupdate-resource.h (+97/-0)
src/sysupdate/sysupdate-transfer.c (+1247/-0)
src/sysupdate/sysupdate-transfer.h (+62/-0)
src/sysupdate/sysupdate-update-set.c (+63/-0)
src/sysupdate/sysupdate-update-set.h (+32/-0)
src/sysupdate/sysupdate-util.c (+17/-0)
src/sysupdate/sysupdate-util.h (+6/-0)
src/sysupdate/sysupdate.c (+1411/-0)
src/sysupdate/sysupdate.h (+21/-0)
src/sysusers/sysusers.c (+100/-62)
src/sysv-generator/sysv-generator.c (+4/-9)
src/test/meson.build (+258/-190)
src/test/nss-test-util.c (+1/-1)
src/test/test-acl-util.c (+2/-6)
src/test/test-af-list.c (+5/-7)
src/test/test-alloc-util.c (+9/-21)
src/test/test-architecture.c (+4/-2)
src/test/test-arphrd-util.c (+4/-7)
src/test/test-ask-password-api.c (+2/-7)
src/test/test-barrier.c (+33/-49)
src/test/test-bitmap.c (+1/-1)
src/test/test-blockdev-util.c (+2/-6)
src/test/test-boot-timestamps.c (+18/-20)
src/test/test-bootspec.c (+96/-0)
src/test/test-bpf-devices.c (+11/-12)
src/test/test-bpf-firewall.c (+46/-27)
src/test/test-bpf-foreign-programs.c (+7/-9)
src/test/test-bpf-lsm.c (+105/-0)
src/test/test-btrfs.c (+5/-6)
src/test/test-bus-util.c (+5/-13)
src/test/test-calendarspec.c (+58/-46)
src/test/test-cap-list.c (+9/-10)
src/test/test-capability.c (+1/-1)
src/test/test-cgroup-cpu.c (+3/-7)
src/test/test-cgroup-mask.c (+6/-15)
src/test/test-cgroup-setup.c (+17/-16)
src/test/test-cgroup-unit-default.c (+4/-12)
src/test/test-cgroup-util.c (+29/-46)
src/test/test-cgroup.c (+3/-13)
src/test/test-chase-symlinks.c (+6/-6)
src/test/test-chown-rec.c (+4/-6)
src/test/test-clock.c (+4/-8)
src/test/test-compress-benchmark.c (+3/-3)
src/test/test-compress.c (+24/-17)
src/test/test-condition.c (+180/-53)
src/test/test-conf-files.c (+14/-14)
src/test/test-conf-parser.c (+20/-37)
src/test/test-copy.c (+73/-32)
src/test/test-coredump-util.c (+3/-14)
src/test/test-cpu-set-util.c (+10/-20)
src/test/test-cryptolib.c (+16/-10)
src/test/test-data-fd-util.c (+4/-10)
src/test/test-date.c (+4/-5)
src/test/test-device-nodes.c (+3/-6)
src/test/test-devnum-util.c (+124/-0)
src/test/test-dlopen-so.c (+11/-0)
src/test/test-dns-domain.c (+31/-109)
src/test/test-ellipsize.c (+6/-14)
src/test/test-emergency-action.c (+2/-10)
src/test/test-engine.c (+51/-15)
src/test/test-env-file.c (+68/-86)
src/test/test-env-util.c (+99/-82)
src/test/test-errno-list.c (+33/-0)
src/test/test-escape.c (+18/-27)
src/test/test-ether-addr-util.c (+162/-0)
src/test/test-exec-util.c (+73/-88)
src/test/test-execute.c (+319/-27)
src/test/test-exit-status.c (+4/-18)
src/test/test-extract-word.c (+5/-19)
src/test/test-fd-util.c (+256/-22)
src/test/test-fdset.c (+11/-22)
src/test/test-fileio.c (+57/-107)
src/test/test-firewall-util.c (+3/-3)
src/test/test-format-table.c (+90/-61)
src/test/test-format-util.c (+16/-6)
src/test/test-fs-util.c (+212/-58)
src/test/test-fstab-util.c (+6/-12)
src/test/test-glob-util.c (+6/-20)
src/test/test-gpt.c (+50/-0)
src/test/test-hash-funcs.c (+2/-8)
src/test/test-hashmap-plain.c (+40/-138)
src/test/test-hashmap.c (+23/-37)
src/test/test-hexdecoct.c (+52/-38)
src/test/test-hmac.c (+68/-0)
src/test/test-hostname-setup.c (+4/-11)
src/test/test-hostname-util.c (+25/-42)
src/test/test-id128.c (+37/-17)
src/test/test-import-util.c (+64/-0)
src/test/test-in-addr-prefix-util.c (+92/-0)
src/test/test-in-addr-util.c (+15/-39)
src/test/test-install-file.c (+64/-0)
src/test/test-install-root.c (+266/-289)
src/test/test-install.c (+36/-36)
src/test/test-io-util.c (+3/-6)
src/test/test-ip-protocol-list.c (+17/-12)
src/test/test-job-type.c (+19/-22)
src/test/test-journal-importer.c (+3/-10)
src/test/test-json.c (+140/-90)
src/test/test-kbd-util.c (+27/-0)
src/test/test-libcrypt-util.c (+0/-2)
src/test/test-libmount.c (+2/-7)
src/test/test-list.c (+10/-4)
src/test/test-load-fragment.c (+223/-74)
src/test/test-local-addresses.c (+3/-5)
src/test/test-locale-util.c (+17/-27)
src/test/test-log.c (+14/-11)
src/test/test-loop-block.c (+92/-31)
src/test/test-macro.c (+468/-0)
src/test/test-manager.c (+29/-0)
src/test/test-mkdir.c (+30/-0)
src/test/test-modhex.c (+5/-5)
src/test/test-mount-util.c (+8/-28)
src/test/test-mountpoint-util.c (+21/-26)
src/test/test-namespace.c (+33/-38)
src/test/test-net-naming-scheme.c (+22/-0)
src/test/test-ns.c (+3/-0)
src/test/test-nss-hosts.c (+23/-27)
src/test/test-nss-users.c (+1/-3)
src/test/test-ordered-set.c (+6/-20)
src/test/test-os-util.c (+59/-5)
src/test/test-parse-argument.c (+4/-16)
src/test/test-parse-helpers.c (+7/-3)
src/test/test-parse-util.c (+99/-70)
src/test/test-path-lookup.c (+31/-38)
src/test/test-path-util.c (+59/-143)
src/test/test-path.c (+2/-3)
src/test/test-percent-util.c (+8/-20)
src/test/test-pretty-print.c (+16/-8)
src/test/test-prioq.c (+4/-9)
src/test/test-proc-cmdline.c (+25/-37)
src/test/test-process-util.c (+78/-84)
src/test/test-procfs-util.c (+42/-18)
src/test/test-psi-util.c (+29/-34)
src/test/test-random-util.c (+10/-39)
src/test/test-ratelimit.c (+3/-6)
src/test/test-recurse-dir.c (+168/-0)
src/test/test-replace-var.c (+8/-3)
src/test/test-rlimit-util.c (+48/-43)
src/test/test-rm-rf.c (+2/-10)
src/test/test-sbat.c (+23/-0)
src/test/test-sched-prio.c (+2/-2)
src/test/test-sd-hwdb.c (+13/-24)
src/test/test-sd-path.c (+3/-13)
src/test/test-seccomp.c (+20/-77)
src/test/test-serialize.c (+10/-20)
src/test/test-set-disable-mempool.c (+3/-5)
src/test/test-set.c (+88/-25)
src/test/test-sha256.c (+50/-0)
src/test/test-signal-util.c (+43/-11)
src/test/test-siphash24.c (+22/-21)
src/test/test-sizeof.c (+12/-2)
src/test/test-sleep.c (+20/-24)
src/test/test-socket-bind.c (+6/-8)
src/test/test-socket-netlink.c (+12/-47)
src/test/test-socket-util.c (+92/-94)
src/test/test-specifier.c (+64/-23)
src/test/test-stat-util.c (+71/-117)
src/test/test-static-destruct.c (+4/-4)
src/test/test-strbuf.c (+3/-6)
src/test/test-string-util.c (+85/-146)
src/test/test-strip-tab-ansi.c (+4/-3)
src/test/test-strv.c (+115/-210)
src/test/test-strxcpyx.c (+103/-36)
src/test/test-sysctl-util.c (+40/-9)
src/test/test-tables.c (+1/-2)
src/test/test-terminal-util.c (+7/-28)
src/test/test-time-util.c (+64/-93)
src/test/test-tmpfile-util.c (+7/-18)
src/test/test-tmpfiles.c (+4/-6)
src/test/test-tpm2.c (+17/-20)
src/test/test-udev-util.c (+26/-159)
src/test/test-udev.c (+31/-2)
src/test/test-uid-alloc-range.c (+12/-23)
src/test/test-uid-range.c (+68/-3)
src/test/test-unaligned.c (+5/-9)
src/test/test-unit-file.c (+39/-33)
src/test/test-unit-name.c (+181/-134)
src/test/test-unit-serialize.c (+11/-16)
src/test/test-user-util.c (+48/-79)
src/test/test-utf8.c (+41/-59)
src/test/test-util.c (+76/-361)
src/test/test-varlink.c (+4/-4)
src/test/test-verbs.c (+4/-8)
src/test/test-watch-pid.c (+2/-2)
src/test/test-watchdog.c (+5/-4)
src/test/test-web-util.c (+3/-6)
src/test/test-xattr-util.c (+20/-20)
src/timedate/timedatectl.c (+22/-32)
src/timedate/timedated.c (+43/-54)
src/timesync/meson.build (+6/-4)
src/timesync/org.freedesktop.timesync1.conf (+4/-0)
src/timesync/org.freedesktop.timesync1.policy (+32/-0)
src/timesync/test-timesync.c (+2/-8)
src/timesync/timesyncd-bus.c (+62/-1)
src/timesync/timesyncd-conf.c (+0/-1)
src/timesync/timesyncd-gperf.gperf (+1/-0)
src/timesync/timesyncd-manager.c (+189/-99)
src/timesync/timesyncd-manager.h (+24/-4)
src/timesync/timesyncd-server.c (+44/-22)
src/timesync/timesyncd-server.h (+3/-0)
src/timesync/timesyncd.c (+11/-13)
src/timesync/timesyncd.conf.in (+2/-0)
src/timesync/wait-sync.c (+6/-10)
src/tmpfiles/meson.build (+3/-3)
src/tmpfiles/offline-passwd.c (+1/-3)
src/tmpfiles/test-offline-passwd.c (+4/-4)
src/tmpfiles/tmpfiles.c (+113/-136)
src/tty-ask-password-agent/tty-ask-password-agent.c (+18/-25)
src/udev/cdrom_id/cdrom_id.c (+9/-15)
src/udev/dmi_memory_id/dmi_memory_id.c (+2/-2)
src/udev/fido_id/fuzz-fido-id-desc.c (+2/-1)
src/udev/fido_id/test-fido-id-desc.c (+5/-10)
src/udev/fuzz-udev-rules.c (+3/-0)
src/udev/meson.build (+88/-82)
src/udev/mtd_probe/probe_smartmedia.c (+1/-1)
src/udev/net/fuzz-link-parser.c (+1/-1)
src/udev/net/fuzz-link-parser.options (+1/-1)
src/udev/net/link-config-gperf.gperf (+94/-51)
src/udev/net/link-config.c (+614/-283)
src/udev/net/link-config.h (+36/-21)
src/udev/scsi_id/scsi_id.c (+1/-1)
src/udev/scsi_id/scsi_serial.c (+2/-2)
src/udev/test-udev-builtin.c (+2/-8)
src/udev/test-udev-event.c (+15/-10)
src/udev/test-udev-netlink.c (+157/-0)
src/udev/test-udev-node.c (+2/-8)
src/udev/udev-builtin-blkid.c (+13/-13)
src/udev/udev-builtin-btrfs.c (+3/-2)
src/udev/udev-builtin-hwdb.c (+2/-2)
src/udev/udev-builtin-input_id.c (+80/-58)
src/udev/udev-builtin-keyboard.c (+5/-5)
src/udev/udev-builtin-kmod.c (+3/-5)
src/udev/udev-builtin-net_id.c (+362/-244)
src/udev/udev-builtin-net_setup_link.c (+16/-17)
src/udev/udev-builtin-path_id.c (+22/-13)
src/udev/udev-builtin-uaccess.c (+1/-1)
src/udev/udev-builtin-usb_id.c (+2/-4)
src/udev/udev-builtin.c (+7/-16)
src/udev/udev-builtin.h (+4/-3)
src/udev/udev-ctrl.c (+36/-53)
src/udev/udev-ctrl.h (+34/-35)
src/udev/udev-event.c (+110/-68)
src/udev/udev-event.h (+4/-2)
src/udev/udev-netlink.c (+330/-0)
src/udev/udev-netlink.h (+41/-0)
src/udev/udev-node.c (+418/-240)
src/udev/udev-node.h (+15/-4)
src/udev/udev-rules.c (+253/-145)
src/udev/udev-watch.c (+41/-5)
src/udev/udevadm-control.c (+2/-2)
src/udev/udevadm-hwdb.c (+2/-2)
src/udev/udevadm-info.c (+382/-98)
src/udev/udevadm-lock.c (+397/-0)
src/udev/udevadm-monitor.c (+1/-1)
src/udev/udevadm-settle.c (+3/-3)
src/udev/udevadm-test-builtin.c (+21/-10)
src/udev/udevadm-test.c (+18/-28)
src/udev/udevadm-trigger.c (+68/-33)
src/udev/udevadm-util.c (+55/-14)
src/udev/udevadm-util.h (+2/-0)
src/udev/udevadm-wait.c (+382/-0)
src/udev/udevadm.c (+12/-8)
src/udev/udevadm.h (+2/-0)
src/udev/udevd.c (+684/-451)
src/udev/v4l_id/v4l_id.c (+1/-1)
src/userdb/meson.build (+7/-11)
src/userdb/userdbctl.c (+661/-127)
src/userdb/userdbd-manager.c (+1/-2)
src/userdb/userwork.c (+23/-18)
src/vconsole/vconsole-setup.c (+3/-11)
src/veritysetup/veritysetup-generator.c (+139/-55)
src/veritysetup/veritysetup.c (+56/-50)
src/volatile-root/volatile-root.c (+3/-3)
src/xdg-autostart-generator/fuzz-xdg-desktop.c (+3/-0)
src/xdg-autostart-generator/fuzz-xdg-desktop.options (+2/-0)
src/xdg-autostart-generator/meson.build (+6/-6)
src/xdg-autostart-generator/test-xdg-autostart.c (+9/-14)
src/xdg-autostart-generator/xdg-autostart-condition.c (+0/-1)
src/xdg-autostart-generator/xdg-autostart-generator.c (+15/-13)
src/xdg-autostart-generator/xdg-autostart-service.c (+38/-48)
src/xdg-autostart-generator/xdg-autostart-service.h (+1/-2)
sysctl.d/meson.build (+2/-3)
sysusers.d/meson.build (+25/-8)
sysusers.d/systemd-coredump.conf (+8/-0)
sysusers.d/systemd-journal.conf.in (+8/-0)
sysusers.d/systemd-network.conf.in (+8/-0)
sysusers.d/systemd-oom.conf (+8/-0)
sysusers.d/systemd-remote.conf (+0/-2)
sysusers.d/systemd-resolve.conf.in (+8/-0)
sysusers.d/systemd-timesync.conf.in (+8/-0)
test/README.testsuite (+126/-10)
test/TEST-01-BASIC/Makefile (+2/-0)
test/TEST-01-BASIC/test.sh (+1/-0)
test/TEST-02-UNITTESTS/test.sh (+5/-0)
test/TEST-03-JOBS/test.sh (+1/-0)
test/TEST-04-JOURNAL/test.sh (+1/-0)
test/TEST-05-RLIMITS/test.sh (+1/-0)
test/TEST-06-SELINUX/systemd_test.fc (+1/-0)
test/TEST-06-SELINUX/systemd_test.if (+1/-0)
test/TEST-06-SELINUX/systemd_test.te (+1/-0)
test/TEST-06-SELINUX/test.sh (+6/-5)
test/TEST-07-ISSUE-1981/test.sh (+1/-0)
test/TEST-08-ISSUE-2730/test.sh (+1/-1)
test/TEST-09-ISSUE-2691/test.sh (+1/-0)
test/TEST-10-ISSUE-2467/test.sh (+13/-0)
test/TEST-11-ISSUE-3166/test.sh (+3/-0)
test/TEST-12-ISSUE-3171/test.sh (+1/-0)
test/TEST-13-NSPAWN-SMOKE/test.sh (+11/-1)
test/TEST-14-MACHINE-ID/test.sh (+1/-0)
test/TEST-15-DROPIN/test.sh (+1/-0)
test/TEST-16-EXTEND-TIMEOUT/test.sh (+1/-0)
test/TEST-17-UDEV/deny-list-ubuntu-ci-ppc64el (+0/-0)
test/TEST-17-UDEV/test.sh (+1/-0)
test/TEST-18-FAILUREACTION/test.sh (+1/-0)
test/TEST-19-DELEGATE/test.sh (+1/-0)
test/TEST-20-MAINPIDGAMES/test.sh (+1/-0)
test/TEST-22-TMPFILES/test.sh (+1/-0)
test/TEST-23-TYPE-EXEC/test.sh (+1/-0)
test/TEST-24-CRYPTSETUP/test.sh (+60/-33)
test/TEST-25-IMPORT/test.sh (+1/-0)
test/TEST-26-SETENV/test.sh (+1/-0)
test/TEST-27-STDOUTFILE/test.sh (+1/-0)
test/TEST-28-PERCENTJ-WANTEDBY/test.sh (+1/-0)
test/TEST-29-PORTABLE/test.sh (+1/-1)
test/TEST-30-ONCLOCKCHANGE/test.sh (+1/-0)
test/TEST-31-DEVICE-ENUMERATION/test.sh (+1/-0)
test/TEST-32-OOMPOLICY/test.sh (+1/-0)
test/TEST-33-CLEAN-UNIT/test.sh (+1/-0)
test/TEST-34-DYNAMICUSERMIGRATE/test.sh (+1/-0)
test/TEST-36-NUMAPOLICY/test.sh (+2/-1)
test/TEST-37-RUNTIMEDIRECTORYPRESERVE/test.sh (+1/-0)
test/TEST-38-FREEZER/test.sh (+2/-1)
test/TEST-39-EXECRELOAD/test.sh (+1/-0)
test/TEST-40-EXEC-COMMAND-EX/test.sh (+1/-0)
test/TEST-41-ONESHOT-RESTART/test.sh (+1/-0)
test/TEST-42-EXECSTOPPOST/test.sh (+1/-0)
test/TEST-43-PRIVATEUSER-UNPRIV/test.sh (+12/-0)
test/TEST-44-LOG-NAMESPACE/test.sh (+1/-0)
test/TEST-46-HOMED/test.sh (+16/-1)
test/TEST-47-ISSUE-14566/test.sh (+1/-0)
test/TEST-48-START-STOP-NO-RELOAD/test.sh (+1/-0)
test/TEST-49-RUNTIME-BIND-PATHS/test.sh (+1/-0)
test/TEST-50-DISSECT/test.sh (+6/-1)
test/TEST-51-ISSUE-16115/test.sh (+1/-0)
test/TEST-52-HONORFIRSTSHUTDOWN/test.sh (+2/-1)
test/TEST-53-ISSUE-16347/test.sh (+1/-0)
test/TEST-54-CREDS/test.sh (+9/-0)
test/TEST-55-OOMD/test.sh (+2/-1)
test/TEST-56-EXIT-TYPE/Makefile (+1/-0)
test/TEST-56-EXIT-TYPE/test.sh (+14/-0)
test/TEST-57-ONSUCCESS-UPHOLD/test.sh (+3/-1)
test/TEST-58-REPART/test.sh (+5/-1)
test/TEST-59-RELOADING-RESTART/test.sh (+4/-2)
test/TEST-60-MOUNT-RATELIMIT/test.sh (+4/-1)
test/TEST-61-UNITTESTS-QEMU/test.sh (+1/-0)
test/TEST-62-RESTRICT-IFACES/Makefile (+1/-0)
test/TEST-62-RESTRICT-IFACES/test.sh (+11/-0)
test/TEST-63-ISSUE-17433/Makefile (+1/-0)
test/TEST-63-ISSUE-17433/test.sh (+23/-0)
test/TEST-64-UDEV-STORAGE/Makefile (+1/-0)
test/TEST-64-UDEV-STORAGE/test.sh (+512/-0)
test/TEST-65-ANALYZE/Makefile (+1/-0)
test/TEST-65-ANALYZE/test.sh (+10/-0)
test/TEST-66-DEVICE-ISOLATION/Makefile (+1/-0)
test/TEST-66-DEVICE-ISOLATION/test.sh (+11/-0)
test/TEST-67-INTEGRITY/Makefile (+1/-0)
test/TEST-67-INTEGRITY/test.sh (+26/-0)
test/TEST-68-PROPAGATE-EXIT-STATUS/Makefile (+1/-0)
test/TEST-68-PROPAGATE-EXIT-STATUS/test.sh (+11/-0)
test/TEST-69-SHUTDOWN/Makefile (+1/-0)
test/TEST-69-SHUTDOWN/test.sh (+39/-0)
test/TEST-70-TPM2/Makefile (+6/-0)
test/TEST-70-TPM2/test.sh (+40/-0)
test/TEST-72-SYSUPDATE/Makefile (+1/-0)
test/TEST-72-SYSUPDATE/test.sh (+16/-0)
test/create-busybox-container (+5/-11)
test/dmidecode-dumps/.gitattributes (+1/-0)
test/fuzz/.gitattributes (+8/-1)
test/fuzz/fuzz-bootspec/crash-autoentry (+21/-0)
test/fuzz/fuzz-bootspec/crash-empty-value (+1/-0)
test/fuzz/fuzz-bootspec/crash-json-dispatch (+1/-0)
test/fuzz/fuzz-bootspec/sample1 (+22/-0)
test/fuzz/fuzz-calendarspec/cant-parse-printed (+1/-0)
test/fuzz/fuzz-calendarspec/crash-parse-star-non-star (+1/-0)
test/fuzz/fuzz-calendarspec/print-loses-spec (+1/-0)
test/fuzz/fuzz-json/leak-normalize-fail (+1/-0)
test/fuzz/fuzz-json/leak-normalize-object (+1/-0)
test/fuzz/fuzz-json/leak-sort (+1/-0)
test/fuzz/fuzz-link-parser/directives.link (+43/-0)
test/fuzz/fuzz-netdev-parser/directives.netdev (+13/-0)
test/fuzz/fuzz-network-parser/26-bridge-slave-interface-1 (+1/-0)
test/fuzz/fuzz-network-parser/directives (+54/-0)
test/fuzz/fuzz-unit-file/directives-all.service (+15/-0)
test/fuzz/fuzz-unit-file/directives.automount (+1/-0)
test/fuzz/fuzz-unit-file/directives.mount (+10/-0)
test/fuzz/fuzz-unit-file/directives.path (+2/-0)
test/fuzz/fuzz-unit-file/directives.scope (+4/-0)
test/fuzz/fuzz-unit-file/directives.service (+20/-0)
test/fuzz/fuzz-unit-file/directives.slice (+3/-0)
test/fuzz/fuzz-unit-file/directives.socket (+10/-0)
test/fuzz/fuzz-unit-file/directives.swap (+10/-0)
test/fuzz/meson.build (+10/-12)
test/hwdb-test.sh (+4/-3)
test/journal-data/.gitattributes (+2/-0)
test/meson.build (+64/-15)
test/mkosi-check-and-shutdown.service (+14/-0)
test/mkosi-check-and-shutdown.sh (+9/-0)
test/mkosi.build.networkd-test (+1/-0)
test/mkosi.default.networkd-test (+2/-0)
test/mkosi.nspawn.networkd-test (+2/-0)
test/networkd-test.py (+5/-3)
test/run-integration-tests.sh (+25/-10)
test/run-unit-tests.py (+1/-0)
test/test-bcd/.gitattributes (+2/-0)
test/test-execute/exec-ambientcapabilities-merge-nfsnobody.service (+1/-0)
test/test-execute/exec-ambientcapabilities-merge-nobody.service (+1/-0)
test/test-execute/exec-ambientcapabilities-merge.service (+1/-0)
test/test-execute/exec-ambientcapabilities-nfsnobody.service (+1/-0)
test/test-execute/exec-ambientcapabilities-nobody.service (+1/-0)
test/test-execute/exec-ambientcapabilities.service (+1/-0)
test/test-execute/exec-basic.service (+1/-0)
test/test-execute/exec-bindpaths.service (+1/-0)
test/test-execute/exec-capabilityboundingset-invert.service (+1/-0)
test/test-execute/exec-capabilityboundingset-merge.service (+1/-0)
test/test-execute/exec-capabilityboundingset-reset.service (+1/-0)
test/test-execute/exec-capabilityboundingset-simple.service (+1/-0)
test/test-execute/exec-condition-failed.service (+1/-0)
test/test-execute/exec-condition-skip.service (+1/-0)
test/test-execute/exec-cpuaffinity1.service (+1/-0)
test/test-execute/exec-cpuaffinity2.service (+1/-0)
test/test-execute/exec-cpuaffinity3.service (+1/-0)
test/test-execute/exec-dynamicuser-fixeduser-adm.service (+1/-0)
test/test-execute/exec-dynamicuser-fixeduser-games.service (+1/-0)
test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service (+1/-0)
test/test-execute/exec-dynamicuser-fixeduser.service (+1/-0)
test/test-execute/exec-dynamicuser-runtimedirectory1.service (+1/-0)
test/test-execute/exec-dynamicuser-runtimedirectory2.service (+1/-0)
test/test-execute/exec-dynamicuser-runtimedirectory3.service (+1/-0)
test/test-execute/exec-dynamicuser-statedir-migrate-step1.service (+1/-0)
test/test-execute/exec-dynamicuser-statedir-migrate-step2.service (+1/-0)
test/test-execute/exec-dynamicuser-statedir.service (+2/-1)
test/test-execute/exec-dynamicuser-supplementarygroups.service (+1/-0)
test/test-execute/exec-environment-empty.service (+1/-0)
test/test-execute/exec-environment-multiple.service (+1/-0)
test/test-execute/exec-environment-no-substitute.service (+1/-0)
test/test-execute/exec-environment.service (+1/-0)
test/test-execute/exec-environmentfile.service (+1/-0)
test/test-execute/exec-execsearchpath-environment-path-set.service (+6/-0)
test/test-execute/exec-execsearchpath-environment.service (+6/-0)
test/test-execute/exec-execsearchpath-environmentfile-set.service (+9/-0)
test/test-execute/exec-execsearchpath-environmentfile.service (+9/-0)
test/test-execute/exec-execsearchpath-passenvironment-set.service (+9/-0)
test/test-execute/exec-execsearchpath-passenvironment.service (+9/-0)
test/test-execute/exec-execsearchpath-unit-specifier.service (+8/-0)
test/test-execute/exec-execsearchpath.service (+5/-0)
test/test-execute/exec-group-nfsnobody.service (+1/-0)
test/test-execute/exec-group-nobody.service (+1/-0)
test/test-execute/exec-group-nogroup.service (+1/-0)
test/test-execute/exec-group.service (+1/-0)
test/test-execute/exec-ignoresigpipe-no.service (+1/-0)
test/test-execute/exec-ignoresigpipe-yes.service (+1/-0)
test/test-execute/exec-inaccessiblepaths-mount-propagation.service (+1/-0)
test/test-execute/exec-inaccessiblepaths-sys.service (+1/-0)
test/test-execute/exec-ioschedulingclass-best-effort.service (+1/-0)
test/test-execute/exec-ioschedulingclass-idle.service (+1/-0)
test/test-execute/exec-ioschedulingclass-none.service (+1/-0)
test/test-execute/exec-ioschedulingclass-realtime.service (+1/-0)
test/test-execute/exec-mount-apivfs-no.service (+16/-0)
test/test-execute/exec-noexecpaths-simple.service (+1/-0)
test/test-execute/exec-oomscoreadjust-negative.service (+1/-0)
test/test-execute/exec-oomscoreadjust-positive.service (+1/-0)
test/test-execute/exec-passenvironment-absent.service (+1/-0)
test/test-execute/exec-passenvironment-empty.service (+1/-0)
test/test-execute/exec-passenvironment-repeated.service (+1/-0)
test/test-execute/exec-passenvironment.service (+1/-0)
test/test-execute/exec-personality-aarch64.service (+1/-0)
test/test-execute/exec-personality-loongarch64.service (+7/-0)
test/test-execute/exec-personality-ppc64.service (+1/-0)
test/test-execute/exec-personality-ppc64le.service (+1/-0)
test/test-execute/exec-personality-s390.service (+1/-0)
test/test-execute/exec-personality-x86-64.service (+1/-0)
test/test-execute/exec-personality-x86.service (+1/-0)
test/test-execute/exec-privatedevices-disabled-by-prefix.service (+1/-0)
test/test-execute/exec-privatedevices-no-capability-mknod.service (+1/-0)
test/test-execute/exec-privatedevices-no-capability-sys-rawio.service (+1/-0)
test/test-execute/exec-privatedevices-no.service (+1/-0)
test/test-execute/exec-privatedevices-yes-capability-mknod.service (+1/-0)
test/test-execute/exec-privatedevices-yes-capability-sys-rawio.service (+1/-0)
test/test-execute/exec-privatedevices-yes-with-group.service (+1/-0)
test/test-execute/exec-privatedevices-yes.service (+1/-0)
test/test-execute/exec-privatenetwork-yes.service (+1/-0)
test/test-execute/exec-privatetmp-disabled-by-prefix.service (+1/-0)
test/test-execute/exec-privatetmp-no.service (+1/-0)
test/test-execute/exec-privatetmp-yes.service (+1/-0)
test/test-execute/exec-protecthome-tmpfs-vs-protectsystem-strict.service (+1/-0)
test/test-execute/exec-protectkernellogs-no-capabilities.service (+1/-0)
test/test-execute/exec-protectkernellogs-yes-capabilities.service (+1/-0)
test/test-execute/exec-protectkernelmodules-no-capabilities.service (+1/-0)
test/test-execute/exec-protectkernelmodules-yes-capabilities.service (+1/-0)
test/test-execute/exec-protectkernelmodules-yes-mount-propagation.service (+1/-0)
test/test-execute/exec-readonlypaths-mount-propagation.service (+1/-0)
test/test-execute/exec-readonlypaths-simple.service (+1/-0)
test/test-execute/exec-readonlypaths-with-bindpaths.service (+1/-0)
test/test-execute/exec-readonlypaths.service (+1/-0)
test/test-execute/exec-readwritepaths-mount-propagation.service (+1/-0)
test/test-execute/exec-restrictnamespaces-merge-all.service (+1/-0)
test/test-execute/exec-restrictnamespaces-merge-and.service (+1/-0)
test/test-execute/exec-restrictnamespaces-merge-or.service (+1/-0)
test/test-execute/exec-restrictnamespaces-mnt-deny-list.service (+1/-0)
test/test-execute/exec-restrictnamespaces-mnt.service (+1/-0)
test/test-execute/exec-restrictnamespaces-no.service (+1/-0)
test/test-execute/exec-restrictnamespaces-yes.service (+1/-0)
test/test-execute/exec-runtimedirectory-mode.service (+1/-0)
test/test-execute/exec-runtimedirectory-owner-nfsnobody.service (+1/-0)
test/test-execute/exec-runtimedirectory-owner-nobody.service (+1/-0)
test/test-execute/exec-runtimedirectory-owner-nogroup.service (+1/-0)
test/test-execute/exec-runtimedirectory-owner.service (+1/-0)
test/test-execute/exec-runtimedirectory.service (+1/-0)
test/test-execute/exec-specifier-credentials-dir.service (+12/-0)
test/test-execute/exec-specifier-interpolation.service (+1/-0)
test/test-execute/exec-specifier.service (+2/-0)
test/test-execute/exec-specifier@.service (+1/-0)
test/test-execute/exec-standardinput-data.service (+1/-0)
test/test-execute/exec-standardinput-file-cat.service (+1/-0)
test/test-execute/exec-standardinput-file.service (+1/-0)
test/test-execute/exec-standardoutput-append.service (+1/-0)
test/test-execute/exec-standardoutput-file.service (+1/-0)
test/test-execute/exec-standardoutput-truncate.service (+1/-0)
test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service (+1/-0)
test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service (+1/-0)
test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service (+1/-0)
test/test-execute/exec-supplementarygroups-single-group-user.service (+1/-0)
test/test-execute/exec-supplementarygroups-single-group.service (+1/-0)
test/test-execute/exec-supplementarygroups.service (+1/-0)
test/test-execute/exec-systemcallerrornumber-name.service (+1/-0)
test/test-execute/exec-systemcallerrornumber-number.service (+1/-0)
test/test-execute/exec-systemcallfilter-failing.service (+1/-0)
test/test-execute/exec-systemcallfilter-failing2.service (+1/-0)
test/test-execute/exec-systemcallfilter-failing3.service (+1/-0)
test/test-execute/exec-systemcallfilter-not-failing.service (+1/-0)
test/test-execute/exec-systemcallfilter-not-failing2.service (+1/-0)
test/test-execute/exec-systemcallfilter-not-failing3.service (+1/-0)
test/test-execute/exec-systemcallfilter-override-error-action.service (+1/-0)
test/test-execute/exec-systemcallfilter-override-error-action2.service (+1/-0)
test/test-execute/exec-systemcallfilter-system-user-nfsnobody.service (+1/-0)
test/test-execute/exec-systemcallfilter-system-user-nobody.service (+1/-0)
test/test-execute/exec-systemcallfilter-system-user.service (+1/-0)
test/test-execute/exec-systemcallfilter-with-errno-in-allow-list.service (+1/-0)
test/test-execute/exec-systemcallfilter-with-errno-multi.service (+1/-0)
test/test-execute/exec-systemcallfilter-with-errno-name.service (+1/-0)
test/test-execute/exec-systemcallfilter-with-errno-number.service (+1/-0)
test/test-execute/exec-temporaryfilesystem-options.service (+1/-0)
test/test-execute/exec-temporaryfilesystem-ro.service (+1/-0)
test/test-execute/exec-temporaryfilesystem-rw.service (+1/-0)
test/test-execute/exec-temporaryfilesystem-usr.service (+1/-0)
test/test-execute/exec-umask-0177.service (+1/-0)
test/test-execute/exec-umask-default.service (+1/-0)
test/test-execute/exec-unsetenvironment.service (+1/-0)
test/test-execute/exec-user-nfsnobody.service (+1/-0)
test/test-execute/exec-user-nobody.service (+1/-0)
test/test-execute/exec-user.service (+1/-0)
test/test-execute/exec-workingdirectory-trailing-dot.service (+1/-0)
test/test-execute/exec-workingdirectory.service (+1/-0)
test/test-fstab-generator.sh (+40/-0)
test/test-fstab-generator/.gitattributes (+1/-0)
test/test-fstab-generator/test-01-dev-nfs.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-01-dev-nfs.input (+1/-0)
test/test-fstab-generator/test-02-dhcp.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-02-dhcp.input (+1/-0)
test/test-fstab-generator/test-03-dhcp6.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-03-dhcp6.input (+1/-0)
test/test-fstab-generator/test-04-nfs.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-04-nfs.input (+1/-0)
test/test-fstab-generator/test-05-nfs4.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-05-nfs4.input (+1/-0)
test/test-fstab-generator/test-06-ipv4.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-06-ipv4.input (+1/-0)
test/test-fstab-generator/test-07-ipv6.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-07-ipv6.input (+1/-0)
test/test-fstab-generator/test-08-implicit-nfs.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-08-implicit-nfs.input (+1/-0)
test/test-fstab-generator/test-09-cifs.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-09-cifs.input (+1/-0)
test/test-fstab-generator/test-10-iscsi.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-10-iscsi.input (+1/-0)
test/test-fstab-generator/test-11-live.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-11-live.input (+1/-0)
test/test-fstab-generator/test-12-dev-sdx.expected/initrd-root-device.target.d/50-root-device.conf (+5/-0)
test/test-fstab-generator/test-12-dev-sdx.expected/initrd-root-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-12-dev-sdx.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-12-dev-sdx.expected/sysroot.mount (+14/-0)
test/test-fstab-generator/test-12-dev-sdx.expected/systemd-fsck-root.service (+16/-0)
test/test-fstab-generator/test-12-dev-sdx.input (+1/-0)
test/test-fstab-generator/test-13-label.expected/initrd-root-device.target.d/50-root-device.conf (+5/-0)
test/test-fstab-generator/test-13-label.expected/initrd-root-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-13-label.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-13-label.expected/sysroot.mount (+14/-0)
test/test-fstab-generator/test-13-label.expected/systemd-fsck-root.service (+16/-0)
test/test-fstab-generator/test-13-label.input (+1/-0)
test/test-fstab-generator/test-14-uuid.expected/initrd-root-device.target.d/50-root-device.conf (+5/-0)
test/test-fstab-generator/test-14-uuid.expected/initrd-root-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-14-uuid.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-14-uuid.expected/sysroot.mount (+14/-0)
test/test-fstab-generator/test-14-uuid.expected/systemd-fsck-root.service (+16/-0)
test/test-fstab-generator/test-14-uuid.input (+1/-0)
test/test-fstab-generator/test-15-partuuid.expected/initrd-root-device.target.d/50-root-device.conf (+5/-0)
test/test-fstab-generator/test-15-partuuid.expected/initrd-root-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-15-partuuid.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-15-partuuid.expected/sysroot.mount (+14/-0)
test/test-fstab-generator/test-15-partuuid.expected/systemd-fsck-root.service (+16/-0)
test/test-fstab-generator/test-15-partuuid.input (+1/-0)
test/test-fstab-generator/test-16-tmpfs.expected/initrd-root-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-16-tmpfs.expected/initrd-usr-fs.target.requires/sysroot.mount (+0/-0)
test/test-fstab-generator/test-16-tmpfs.expected/sysroot.mount (+12/-0)
test/test-fstab-generator/test-16-tmpfs.input (+1/-0)
test/test-functions (+439/-83)
test/test-network-generator-conversion.sh (+5/-2)
test/test-network-generator-conversion/.gitattributes (+1/-0)
test/test-network/.gitattributes (+1/-0)
test/test-network/conf/00-debug-net.rules (+2/-0)
test/test-network/conf/10-dropin-test.netdev (+1/-0)
test/test-network/conf/11-dummy-mtu.netdev (+1/-0)
test/test-network/conf/11-dummy.netdev (+1/-0)
test/test-network/conf/11-dummy.network (+1/-0)
test/test-network/conf/12-dummy-mtu.link (+1/-0)
test/test-network/conf/12-dummy-mtu.netdev (+1/-0)
test/test-network/conf/12-dummy.link (+1/-0)
test/test-network/conf/12-dummy.netdev (+1/-0)
test/test-network/conf/12-dummy.network (+1/-0)
test/test-network/conf/13-dummy.netdev (+4/-0)
test/test-network/conf/13-not-match-udev-property.network (+1/-0)
test/test-network/conf/14-match-udev-property.network (+1/-0)
test/test-network/conf/15-name-conflict-test.netdev (+1/-0)
test/test-network/conf/21-macvlan.netdev (+1/-0)
test/test-network/conf/21-macvtap.netdev (+1/-0)
test/test-network/conf/21-vlan-test1.network (+1/-0)
test/test-network/conf/21-vlan.netdev (+1/-0)
test/test-network/conf/21-vlan.network (+1/-0)
test/test-network/conf/23-active-slave.network (+1/-0)
test/test-network/conf/23-bond199.network (+1/-0)
test/test-network/conf/23-emit-lldp.network (+1/-0)
test/test-network/conf/23-keep-master.network (+22/-0)
test/test-network/conf/23-primary-slave.network (+1/-0)
test/test-network/conf/24-keep-configuration-static.network (+1/-0)
test/test-network/conf/24-lldp.network (+1/-0)
test/test-network/conf/24-search-domain.network (+1/-0)
test/test-network/conf/25-6rd-tunnel.netdev (+1/-0)
test/test-network/conf/25-6rd.network (+7/-0)
test/test-network/conf/25-activation-policy.network (+2/-0)
test/test-network/conf/25-address-ipv4acd-veth99.network (+1/-0)
test/test-network/conf/25-address-link-section.network (+1/-0)
test/test-network/conf/25-address-peer-ipv4.network (+1/-0)
test/test-network/conf/25-address-static.network (+40/-0)
test/test-network/conf/25-agent-client-peer.network (+1/-0)
test/test-network/conf/25-agent-client.network (+8/-0)
test/test-network/conf/25-agent-server-peer.network (+1/-0)
test/test-network/conf/25-agent-server.network (+1/-0)
test/test-network/conf/25-agent-veth-client.netdev (+1/-0)
test/test-network/conf/25-agent-veth-server.netdev (+1/-0)
test/test-network/conf/25-bareudp.netdev (+1/-0)
test/test-network/conf/25-batadv.netdev (+1/-0)
test/test-network/conf/25-bind-carrier.network (+1/-0)
test/test-network/conf/25-bond-active-backup-slave.netdev (+1/-0)
test/test-network/conf/25-bond-balanced-tlb.netdev (+1/-0)
test/test-network/conf/25-bond-slave.network (+1/-0)
test/test-network/conf/25-bond.netdev (+1/-0)
test/test-network/conf/25-bond99.network (+7/-0)
test/test-network/conf/25-bridge-configure-without-carrier.network (+1/-0)
test/test-network/conf/25-bridge.netdev (+1/-0)
test/test-network/conf/25-bridge.network (+1/-0)
test/test-network/conf/25-bridge99-ignore-carrier-loss.network (+1/-0)
test/test-network/conf/25-bridge99.network (+1/-0)
test/test-network/conf/25-dhcp-client-allow-list.network (+6/-0)
test/test-network/conf/25-dhcp-client-anonymize.network (+1/-0)
test/test-network/conf/25-dhcp-client-decline.network (+1/-0)
test/test-network/conf/25-dhcp-client-gateway-ipv4.network (+1/-0)
test/test-network/conf/25-dhcp-client-gateway-ipv6.network (+1/-0)
test/test-network/conf/25-dhcp-client-gateway-onlink-implicit.network (+1/-0)
test/test-network/conf/25-dhcp-client-ipv4-dhcp-settings.network (+2/-0)
test/test-network/conf/25-dhcp-client-ipv4-ipv6ra-prefix-client-with-delay.network (+1/-0)
test/test-network/conf/25-dhcp-client-ipv4-only-ipv6-disabled.network (+1/-0)
test/test-network/conf/25-dhcp-client-ipv4-only.network (+6/-0)
test/test-network/conf/25-dhcp-client-ipv4-use-routes-use-gateway.network (+7/-0)
test/test-network/conf/25-dhcp-client-ipv4-use-routes-use-gateway.network.d/use-dns-and-ntp-routes-False.conf (+3/-0)
test/test-network/conf/25-dhcp-client-ipv4-use-routes-use-gateway.network.d/use-dns-and-ntp-routes-True.conf (+3/-0)
test/test-network/conf/25-dhcp-client-ipv4-use-routes-use-gateway.network.d/use-gateway-False.conf (+2/-0)
test/test-network/conf/25-dhcp-client-ipv4-use-routes-use-gateway.network.d/use-gateway-True.conf (+2/-0)
test/test-network/conf/25-dhcp-client-ipv4-use-routes-use-gateway.network.d/use-routes-False.conf (+2/-0)
test/test-network/conf/25-dhcp-client-ipv4-use-routes-use-gateway.network.d/use-routes-True.conf (+2/-0)
test/test-network/conf/25-dhcp-client-ipv6-only.network (+7/-0)
test/test-network/conf/25-dhcp-client-keep-configuration-dhcp-on-stop.network (+1/-0)
test/test-network/conf/25-dhcp-client-keep-configuration-dhcp.network (+1/-0)
test/test-network/conf/25-dhcp-client-listen-port.network (+1/-0)
test/test-network/conf/25-dhcp-client-reassign-static-routes-ipv4.network (+1/-0)
test/test-network/conf/25-dhcp-client-reassign-static-routes-ipv6.network (+1/-0)
test/test-network/conf/25-dhcp-client-route-metric.network (+1/-0)
test/test-network/conf/25-dhcp-client-route-table.network (+1/-0)
test/test-network/conf/25-dhcp-client-static-lease.network (+1/-0)
test/test-network/conf/25-dhcp-client-timezone-router.network (+1/-0)
test/test-network/conf/25-dhcp-client-use-dns-ipv4-and-ra.network (+1/-0)
test/test-network/conf/25-dhcp-client-use-dns-ipv4.network (+1/-0)
test/test-network/conf/25-dhcp-client-use-dns-no.network (+1/-0)
test/test-network/conf/25-dhcp-client-use-dns-yes.network (+1/-0)
test/test-network/conf/25-dhcp-client-use-domains.network (+10/-0)
test/test-network/conf/25-dhcp-client-vrf.network (+8/-0)
test/test-network/conf/25-dhcp-client-with-ipv4ll.network (+8/-0)
test/test-network/conf/25-dhcp-client-with-static-address.network (+8/-0)
test/test-network/conf/25-dhcp-client.network (+6/-0)
test/test-network/conf/25-dhcp-pd-downstream-dummy97.network (+16/-0)
test/test-network/conf/25-dhcp-pd-downstream-dummy98.network (+16/-0)
test/test-network/conf/25-dhcp-pd-downstream-dummy99.network (+14/-0)
test/test-network/conf/25-dhcp-pd-downstream-test1.network (+16/-0)
test/test-network/conf/25-dhcp-pd-downstream-veth97-peer.network (+11/-0)
test/test-network/conf/25-dhcp-pd-downstream-veth97.network (+20/-0)
test/test-network/conf/25-dhcp-pd-downstream-veth98-peer.network (+11/-0)
test/test-network/conf/25-dhcp-pd-downstream-veth98.network (+21/-0)
test/test-network/conf/25-dhcp-server-decline.network (+1/-0)
test/test-network/conf/25-dhcp-server-downstream.network (+2/-0)
test/test-network/conf/25-dhcp-server-static-lease.network (+2/-1)
test/test-network/conf/25-dhcp-server-timezone-router.network (+18/-0)
test/test-network/conf/25-dhcp-server-uplink.network (+1/-0)
test/test-network/conf/25-dhcp-server-veth-peer.network (+1/-0)
test/test-network/conf/25-dhcp-server-with-ipv6-prefix.network (+20/-0)
test/test-network/conf/25-dhcp-server.network (+4/-6)
test/test-network/conf/25-dhcp-v4-server-veth-peer.network (+1/-0)
test/test-network/conf/25-dhcp4-6rd-server.network (+7/-0)
test/test-network/conf/25-dhcp4-6rd-upstream.network (+12/-2)
test/test-network/conf/25-dhcp6pd-server.network (+7/-0)
test/test-network/conf/25-dhcp6pd-upstream.network (+19/-0)
test/test-network/conf/25-erspan-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-erspan-tunnel.netdev (+1/-0)
test/test-network/conf/25-erspan.network (+8/-0)
test/test-network/conf/25-fibrule-invert.network (+1/-0)
test/test-network/conf/25-fibrule-port-range.network (+1/-0)
test/test-network/conf/25-fibrule-uidrange.network (+1/-0)
test/test-network/conf/25-fou-gre.netdev (+1/-0)
test/test-network/conf/25-fou-gretap.netdev (+1/-0)
test/test-network/conf/25-fou-ipip.netdev (+1/-0)
test/test-network/conf/25-fou-ipproto-gre.netdev (+1/-0)
test/test-network/conf/25-fou-ipproto-ipip.netdev (+1/-0)
test/test-network/conf/25-fou-sit.netdev (+1/-0)
test/test-network/conf/25-gateway-next-static.network (+1/-0)
test/test-network/conf/25-gateway-static.network (+1/-0)
test/test-network/conf/25-geneve.netdev (+1/-0)
test/test-network/conf/25-gre-tunnel-any-any.netdev (+1/-0)
test/test-network/conf/25-gre-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-gre-tunnel-remote-any.netdev (+1/-0)
test/test-network/conf/25-gre-tunnel.netdev (+1/-0)
test/test-network/conf/25-gretap-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-gretap-tunnel.netdev (+1/-0)
test/test-network/conf/25-gretap.network (+8/-0)
test/test-network/conf/25-gretun.network (+1/-0)
test/test-network/conf/25-ifb.netdev (+1/-0)
test/test-network/conf/25-ip6gre-tunnel-any-any.netdev (+1/-0)
test/test-network/conf/25-ip6gre-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-ip6gre-tunnel-remote-any.netdev (+1/-0)
test/test-network/conf/25-ip6gre-tunnel.netdev (+1/-0)
test/test-network/conf/25-ip6gretap-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-ip6gretap-tunnel.netdev (+1/-0)
test/test-network/conf/25-ip6gretap.network (+1/-0)
test/test-network/conf/25-ip6gretun.network (+1/-0)
test/test-network/conf/25-ip6tnl-slaac.network (+5/-2)
test/test-network/conf/25-ip6tnl-tunnel-external.netdev (+8/-0)
test/test-network/conf/25-ip6tnl-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-ip6tnl-tunnel-local-slaac.netdev (+9/-0)
test/test-network/conf/25-ip6tnl-tunnel-local-slaac.network (+6/-3)
test/test-network/conf/25-ip6tnl-tunnel-remote-any.netdev (+1/-0)
test/test-network/conf/25-ip6tnl-tunnel.netdev (+1/-0)
test/test-network/conf/25-ip6tnl.network (+1/-0)
test/test-network/conf/25-ipip-tunnel-any-any.netdev (+1/-0)
test/test-network/conf/25-ipip-tunnel-independent-loopback.netdev (+1/-0)
test/test-network/conf/25-ipip-tunnel-independent.netdev (+1/-0)
test/test-network/conf/25-ipip-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-ipip-tunnel-remote-any.netdev (+1/-0)
test/test-network/conf/25-ipip-tunnel.netdev (+1/-0)
test/test-network/conf/25-ipip.network (+1/-0)
test/test-network/conf/25-ipv6-address-label-section.network (+25/-0)
test/test-network/conf/25-ipv6-prefix-veth-token-prefixstable-without-address.network (+3/-1)
test/test-network/conf/25-ipv6-prefix-veth-token-prefixstable.network (+19/-0)
test/test-network/conf/25-ipv6-prefix-veth-token-static.network (+13/-0)
test/test-network/conf/25-ipv6-prefix-veth.network (+9/-0)
test/test-network/conf/25-ipv6-prefix-with-delay.network (+1/-0)
test/test-network/conf/25-ipv6-prefix.network (+22/-0)
test/test-network/conf/25-ipv6-proxy-ndp.network (+1/-0)
test/test-network/conf/25-ipv6ra-prefix-client-deny-list.network (+13/-0)
test/test-network/conf/25-ipv6ra-prefix-client-with-static-ipv4-address.network (+7/-0)
test/test-network/conf/25-ipv6ra-prefix-client.network (+14/-0)
test/test-network/conf/25-ipv6ra-prefix.network (+34/-0)
test/test-network/conf/25-ipv6ra-uplink.network (+4/-2)
test/test-network/conf/25-ipvlan.netdev (+1/-0)
test/test-network/conf/25-ipvlan.network (+7/-0)
test/test-network/conf/25-ipvtap.netdev (+1/-0)
test/test-network/conf/25-ipvtap.network (+7/-0)
test/test-network/conf/25-isatap-tunnel.netdev (+1/-0)
test/test-network/conf/25-isatap.network (+7/-0)
test/test-network/conf/25-l2tp-dummy.network (+1/-1)
test/test-network/conf/25-l2tp-ip.netdev (+2/-1)
test/test-network/conf/25-l2tp-udp.netdev (+2/-1)
test/test-network/conf/25-l2tp.network (+1/-0)
test/test-network/conf/25-link-local-addressing-no.network (+1/-0)
test/test-network/conf/25-link-local-addressing-yes.network (+1/-0)
test/test-network/conf/25-link-section-unmanaged.network (+1/-0)
test/test-network/conf/25-macsec.netdev (+1/-0)
test/test-network/conf/25-macsec.network (+1/-0)
test/test-network/conf/25-macvlan.network (+7/-0)
test/test-network/conf/25-macvtap.network (+7/-0)
test/test-network/conf/25-neighbor-ip-dummy.network (+1/-0)
test/test-network/conf/25-neighbor-ip.network (+1/-0)
test/test-network/conf/25-neighbor-ipv6.network (+1/-0)
test/test-network/conf/25-neighbor-next.network (+1/-0)
test/test-network/conf/25-neighbor-section.network (+1/-0)
test/test-network/conf/25-nexthop-dummy.network (+1/-0)
test/test-network/conf/25-nexthop-nothing.network (+1/-0)
test/test-network/conf/25-nexthop.network (+1/-0)
test/test-network/conf/25-nlmon.netdev (+1/-0)
test/test-network/conf/25-prefix-route-with-vrf.network (+1/-0)
test/test-network/conf/25-prefix-route-without-vrf.network (+1/-0)
test/test-network/conf/25-qdisc-cake.network (+12/-1)
test/test-network/conf/25-qdisc-clsact-and-htb.network (+1/-0)
test/test-network/conf/25-qdisc-drr.network (+1/-0)
test/test-network/conf/25-qdisc-ets.network (+1/-0)
test/test-network/conf/25-qdisc-fq_pie.network (+1/-0)
test/test-network/conf/25-qdisc-hhf.network (+1/-0)
test/test-network/conf/25-qdisc-ingress-netem-compat.network (+1/-0)
test/test-network/conf/25-qdisc-pie.network (+1/-0)
test/test-network/conf/25-qdisc-qfq.network (+1/-0)
test/test-network/conf/25-route-ipv6-src.network (+1/-0)
test/test-network/conf/25-route-static.network (+1/-1)
test/test-network/conf/25-route-via-ipv6.network (+1/-0)
test/test-network/conf/25-route-vrf.network (+1/-0)
test/test-network/conf/25-routing-policy-rule-dummy98.network (+14/-0)
test/test-network/conf/25-routing-policy-rule-reconfigure1.network (+34/-0)
test/test-network/conf/25-routing-policy-rule-reconfigure2.network (+34/-0)
test/test-network/conf/25-routing-policy-rule-test1.network (+33/-0)
test/test-network/conf/25-sit-tunnel-any-any.netdev (+1/-0)
test/test-network/conf/25-sit-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-sit-tunnel-remote-any.netdev (+1/-0)
test/test-network/conf/25-sit-tunnel.netdev (+1/-0)
test/test-network/conf/25-sit.network (+4/-0)
test/test-network/conf/25-sriov-udev.network (+7/-0)
test/test-network/conf/25-sriov.link (+40/-0)
test/test-network/conf/25-sriov.network (+1/-0)
test/test-network/conf/25-state-file-tests.network (+19/-0)
test/test-network/conf/25-sysctl-disable-ipv6.network (+1/-0)
test/test-network/conf/25-sysctl.network (+1/-0)
test/test-network/conf/25-tap.netdev (+1/-0)
test/test-network/conf/25-test1.network (+1/-0)
test/test-network/conf/25-tun.netdev (+1/-0)
test/test-network/conf/25-tunnel-any-any.network (+1/-0)
test/test-network/conf/25-tunnel-local-any.network (+1/-0)
test/test-network/conf/25-tunnel-remote-any.network (+1/-0)
test/test-network/conf/25-tunnel.network (+1/-0)
test/test-network/conf/25-vcan.netdev (+1/-0)
test/test-network/conf/25-veth-downstream-veth97.netdev (+9/-0)
test/test-network/conf/25-veth-downstream-veth98.netdev (+9/-0)
test/test-network/conf/25-veth-mtu.netdev (+10/-0)
test/test-network/conf/25-veth-peer.network (+1/-0)
test/test-network/conf/25-veth.netdev (+1/-0)
test/test-network/conf/25-vrf.netdev (+1/-0)
test/test-network/conf/25-vrf.network (+1/-0)
test/test-network/conf/25-vti-tunnel-any-any.netdev (+1/-0)
test/test-network/conf/25-vti-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-vti-tunnel-remote-any.netdev (+1/-0)
test/test-network/conf/25-vti-tunnel.netdev (+1/-0)
test/test-network/conf/25-vti.network (+5/-2)
test/test-network/conf/25-vti6-tunnel-local-any.netdev (+1/-0)
test/test-network/conf/25-vti6-tunnel-remote-any.netdev (+1/-0)
test/test-network/conf/25-vti6-tunnel.netdev (+1/-0)
test/test-network/conf/25-vti6.network (+4/-1)
test/test-network/conf/25-vxcan.netdev (+1/-0)
test/test-network/conf/25-vxlan-independent.netdev (+1/-0)
test/test-network/conf/25-vxlan-ipv6.netdev (+8/-0)
test/test-network/conf/25-vxlan-ipv6.network (+25/-0)
test/test-network/conf/25-vxlan-local-slaac.netdev (+8/-0)
test/test-network/conf/25-vxlan-local-slaac.network (+7/-0)
test/test-network/conf/25-vxlan-test1.network (+9/-0)
test/test-network/conf/25-vxlan-veth99.network (+6/-1)
test/test-network/conf/25-vxlan.netdev (+1/-0)
test/test-network/conf/25-vxlan.network (+20/-0)
test/test-network/conf/25-wireguard-23-peers.netdev (+3/-0)
test/test-network/conf/25-wireguard-23-peers.network (+1/-92)
test/test-network/conf/25-wireguard-no-peer.netdev (+1/-0)
test/test-network/conf/25-wireguard-no-peer.network (+1/-0)
test/test-network/conf/25-wireguard.netdev (+7/-1)
test/test-network/conf/25-wireguard.network (+1/-0)
test/test-network/conf/25-xfrm-independent.netdev (+1/-0)
test/test-network/conf/25-xfrm.netdev (+1/-0)
test/test-network/conf/25-xfrm.network (+7/-0)
test/test-network/conf/26-bridge-configure-without-carrier.network (+1/-0)
test/test-network/conf/26-bridge-issue-20373.netdev (+13/-0)
test/test-network/conf/26-bridge-mdb-master.network (+1/-0)
test/test-network/conf/26-bridge-mdb-slave.network (+1/-0)
test/test-network/conf/26-bridge-slave-interface-1.network (+2/-0)
test/test-network/conf/26-bridge-slave-interface-2.network (+1/-0)
test/test-network/conf/26-bridge-vlan-master-issue-20373.network (+21/-0)
test/test-network/conf/26-bridge-vlan-master.network (+1/-0)
test/test-network/conf/26-bridge-vlan-slave-issue-20373.network (+30/-0)
test/test-network/conf/26-bridge-vlan-slave.network (+1/-0)
test/test-network/conf/26-bridge.netdev (+1/-0)
test/test-network/conf/26-link-local-addressing-ipv6.network (+1/-0)
test/test-network/conf/26-macsec.network (+11/-0)
test/test-network/conf/26-netdev-link-local-addressing-yes.network (+28/-0)
test/test-network/conf/80-6rd-tunnel.network (+18/-0)
test/test-network/conf/isc-dhcpd-dhcp6pd.conf (+21/-0)
test/test-network/conf/networkd-manage-foreign-routes-no.conf (+1/-0)
test/test-network/systemd-networkd-tests.py (+1500/-439)
test/test-path-util/script.sh (+3/-2)
test/test-path/basic.target (+1/-8)
test/test-path/path-changed.path (+2/-0)
test/test-path/path-changed.service (+2/-0)
test/test-path/path-directorynotempty.path (+2/-0)
test/test-path/path-directorynotempty.service (+2/-0)
test/test-path/path-exists.path (+2/-0)
test/test-path/path-exists.service (+2/-0)
test/test-path/path-existsglob.path (+2/-0)
test/test-path/path-existsglob.service (+2/-0)
test/test-path/path-makedirectory.path (+2/-0)
test/test-path/path-makedirectory.service (+2/-0)
test/test-path/path-modified.path (+2/-0)
test/test-path/path-modified.service (+2/-0)
test/test-path/path-mycustomunit.service (+2/-0)
test/test-path/path-unit.path (+2/-0)
test/test-path/paths.target (+1/-8)
test/test-path/sysinit.target (+1/-8)
test/test-resolve/.gitattributes (+1/-0)
test/test-resolve/selfsigned.cert (+32/-0)
test/test-resolve/selfsigned.key (+52/-0)
test/test-rpm-macros.sh (+162/-0)
test/test-shutdown.py (+114/-0)
test/test-systemctl-enable.sh (+698/-0)
test/test-systemd-tmpfiles.py (+4/-4)
test/test-sysusers.sh.in (+1/-0)
test/test-sysusers/.gitattributes (+2/-0)
test/test-sysusers/test-1.input (+1/-0)
test/test-sysusers/test-10.input (+1/-0)
test/test-sysusers/test-11.input (+1/-0)
test/test-sysusers/test-12.input (+1/-0)
test/test-sysusers/test-13.input (+1/-0)
test/test-sysusers/test-14.input (+1/-0)
test/test-sysusers/test-2.input (+1/-0)
test/test-sysusers/test-3.input (+1/-0)
test/test-sysusers/test-4.input (+1/-0)
test/test-sysusers/test-5.input (+1/-0)
test/test-sysusers/test-6.input (+1/-0)
test/test-sysusers/test-7.input (+1/-0)
test/test-sysusers/test-8.input (+1/-0)
test/test-sysusers/test-9.input (+1/-0)
test/test-sysusers/unhappy-1.input (+1/-0)
test/test-sysusers/unhappy-2.input (+1/-0)
test/test-sysusers/unhappy-3.input (+1/-0)
test/test-umount/.gitattributes (+1/-0)
test/testsuite-04.units/forever-print-hola.service (+1/-0)
test/testsuite-04.units/silent-success.service (+1/-0)
test/testsuite-06.units/hola.service (+1/-0)
test/testsuite-06.units/load-systemd-test-module.service (+1/-0)
test/testsuite-08.units/-.mount (+2/-2)
test/testsuite-08.units/systemd-remount-fs.service (+1/-0)
test/testsuite-10.units/test10.service (+4/-0)
test/testsuite-10.units/test10.socket (+1/-0)
test/testsuite-11.units/fail-on-restart.service (+1/-0)
test/testsuite-16.units/extend-timeout.sh (+33/-32)
test/testsuite-16.units/fail-runtime.service (+1/-0)
test/testsuite-16.units/fail-start.service (+1/-0)
test/testsuite-16.units/fail-stop.service (+1/-0)
test/testsuite-16.units/success-all.service (+1/-0)
test/testsuite-16.units/success-runtime.service (+1/-0)
test/testsuite-16.units/success-start.service (+1/-0)
test/testsuite-16.units/success-stop.service (+1/-0)
test/testsuite-28.units/specifier-j-depends-wants.service (+1/-0)
test/testsuite-28.units/specifier-j-wants.service (+1/-0)
test/testsuite-28.units/testsuite-28-pre.service (+1/-0)
test/testsuite-30.units/systemd-timedated.service.d/watchdog.conf (+2/-0)
test/testsuite-52.units/test-honor-first-shutdown.service (+1/-0)
test/testsuite-52.units/test-honor-first-shutdown.sh (+2/-0)
test/testsuite-63.units/test63.path (+3/-0)
test/testsuite-63.units/test63.service (+6/-0)
test/udev-dmi-memory-id-test.sh (+2/-1)
test/udev-test.pl (+12/-1)
test/units/a-conj.service (+1/-0)
test/units/a.service (+1/-0)
test/units/autorelabel.service (+1/-0)
test/units/b.service (+1/-0)
test/units/c.service (+1/-0)
test/units/d.service (+1/-0)
test/units/daughter.service (+1/-0)
test/units/dml-discard-empty.service (+1/-0)
test/units/dml-discard-set-ml.service (+1/-0)
test/units/dml-discard.slice (+1/-0)
test/units/dml-override-empty.service (+1/-0)
test/units/dml-override.slice (+1/-0)
test/units/dml-passthrough-empty.service (+1/-0)
test/units/dml-passthrough-set-dml.service (+1/-0)
test/units/dml-passthrough-set-ml.service (+1/-0)
test/units/dml-passthrough.slice (+1/-0)
test/units/dml.slice (+1/-0)
test/units/e.service (+1/-0)
test/units/end.service (+1/-0)
test/units/f.service (+1/-0)
test/units/g.service (+1/-0)
test/units/grandchild.service (+1/-0)
test/units/h.service (+1/-0)
test/units/hello-after-sleep.target (+1/-0)
test/units/hello.service (+1/-0)
test/units/i.service (+1/-0)
test/units/loopy.service (+1/-0)
test/units/loopy.service.d/compat.conf (+1/-0)
test/units/loopy2.service (+1/-0)
test/units/loopy3.service (+1/-0)
test/units/loopy4.service (+1/-0)
test/units/nomem.slice (+1/-0)
test/units/nomemleaf.service (+1/-0)
test/units/parent-deep.slice (+1/-0)
test/units/parent.slice (+1/-0)
test/units/sched_idle_bad.service (+1/-0)
test/units/sched_idle_ok.service (+1/-0)
test/units/sched_rr_bad.service (+1/-0)
test/units/sched_rr_change.service (+1/-0)
test/units/sched_rr_ok.service (+1/-0)
test/units/sleep.service (+1/-0)
test/units/son.service (+1/-0)
test/units/testsuite-01.service (+1/-0)
test/units/testsuite-02.service (+1/-0)
test/units/testsuite-02.sh (+1/-0)
test/units/testsuite-03.service (+1/-0)
test/units/testsuite-03.sh (+1/-0)
test/units/testsuite-04.service (+1/-0)
test/units/testsuite-04.sh (+3/-2)
test/units/testsuite-05.service (+1/-0)
test/units/testsuite-05.sh (+1/-0)
test/units/testsuite-06.service (+1/-0)
test/units/testsuite-06.sh (+1/-0)
test/units/testsuite-07.service (+1/-0)
test/units/testsuite-07.sh (+1/-0)
test/units/testsuite-08.service (+1/-0)
test/units/testsuite-09.service (+1/-0)
test/units/testsuite-10.service (+10/-1)
test/units/testsuite-11.service (+1/-0)
test/units/testsuite-11.sh (+1/-0)
test/units/testsuite-12.service (+1/-0)
test/units/testsuite-12.sh (+3/-0)
test/units/testsuite-13.service (+1/-0)
test/units/testsuite-13.sh (+46/-19)
test/units/testsuite-14.service (+1/-0)
test/units/testsuite-14.sh (+1/-0)
test/units/testsuite-15.service (+1/-0)
test/units/testsuite-15.sh (+24/-3)
test/units/testsuite-16.service (+1/-0)
test/units/testsuite-16.sh (+1/-0)
test/units/testsuite-17.01.sh (+5/-4)
test/units/testsuite-17.02.sh (+1/-0)
test/units/testsuite-17.03.sh (+31/-9)
test/units/testsuite-17.04.sh (+28/-35)
test/units/testsuite-17.05.sh (+7/-8)
test/units/testsuite-17.06.sh (+6/-11)
test/units/testsuite-17.service (+1/-0)
test/units/testsuite-17.sh (+1/-1)
test/units/testsuite-18.service (+1/-0)
test/units/testsuite-18.sh (+1/-0)
test/units/testsuite-19.service (+1/-0)
test/units/testsuite-19.sh (+1/-0)
test/units/testsuite-20.service (+1/-0)
test/units/testsuite-20.sh (+18/-0)
test/units/testsuite-22.01.sh (+1/-2)
test/units/testsuite-22.02.sh (+1/-2)
test/units/testsuite-22.03.sh (+12/-3)
test/units/testsuite-22.04.sh (+1/-2)
test/units/testsuite-22.05.sh (+1/-1)
test/units/testsuite-22.06.sh (+1/-2)
test/units/testsuite-22.07.sh (+1/-2)
test/units/testsuite-22.08.sh (+1/-2)
test/units/testsuite-22.09.sh (+1/-1)
test/units/testsuite-22.10.sh (+1/-1)
test/units/testsuite-22.11.sh (+2/-2)
test/units/testsuite-22.12.sh (+3/-3)
test/units/testsuite-22.13.sh (+75/-0)
test/units/testsuite-22.service (+1/-0)
test/units/testsuite-22.sh (+1/-1)
test/units/testsuite-23.service (+1/-0)
test/units/testsuite-23.sh (+1/-0)
test/units/testsuite-24.service (+1/-0)
test/units/testsuite-25.service (+1/-0)
test/units/testsuite-25.sh (+1/-0)
test/units/testsuite-26.service (+1/-0)
test/units/testsuite-26.sh (+4/-0)
test/units/testsuite-27.service (+1/-0)
test/units/testsuite-27.sh (+1/-0)
test/units/testsuite-28.service (+1/-0)
test/units/testsuite-29.service (+1/-0)
test/units/testsuite-29.sh (+91/-12)
test/units/testsuite-30.service (+1/-0)
test/units/testsuite-30.sh (+1/-0)
test/units/testsuite-31.service (+1/-0)
test/units/testsuite-31.sh (+1/-0)
test/units/testsuite-32.service (+1/-0)
test/units/testsuite-32.sh (+1/-0)
test/units/testsuite-33.service (+1/-0)
test/units/testsuite-33.sh (+1/-0)
test/units/testsuite-34.service (+1/-0)
test/units/testsuite-34.sh (+75/-27)
test/units/testsuite-36.service (+1/-0)
test/units/testsuite-36.sh (+14/-12)
test/units/testsuite-37.service (+1/-0)
test/units/testsuite-37.sh (+1/-0)
test/units/testsuite-38-sleep.service (+1/-0)
test/units/testsuite-38.service (+1/-0)
test/units/testsuite-38.sh (+1/-0)
test/units/testsuite-39.service (+1/-0)
test/units/testsuite-39.sh (+1/-1)
test/units/testsuite-40.service (+1/-0)
test/units/testsuite-40.sh (+1/-0)
test/units/testsuite-41.service (+1/-0)
test/units/testsuite-41.sh (+1/-0)
test/units/testsuite-42.service (+1/-0)
test/units/testsuite-42.sh (+1/-0)
test/units/testsuite-43.service (+1/-0)
test/units/testsuite-43.sh (+79/-0)
test/units/testsuite-44.service (+1/-0)
test/units/testsuite-44.sh (+1/-0)
test/units/testsuite-46.service (+1/-0)
test/units/testsuite-46.sh (+102/-7)
test/units/testsuite-47-repro.service (+1/-0)
test/units/testsuite-47-repro.sh (+1/-0)
test/units/testsuite-47.service (+1/-0)
test/units/testsuite-47.sh (+1/-0)
test/units/testsuite-48.service (+1/-0)
test/units/testsuite-48.sh (+1/-0)
test/units/testsuite-49-namespaced.service (+1/-0)
test/units/testsuite-49-non-namespaced.service (+1/-0)
test/units/testsuite-49.service (+1/-0)
test/units/testsuite-49.sh (+1/-0)
test/units/testsuite-50.service (+1/-0)
test/units/testsuite-50.sh (+107/-7)
test/units/testsuite-51-repro-1.service (+1/-0)
test/units/testsuite-51-repro-2.service (+1/-0)
test/units/testsuite-51-repro-3.service (+10/-0)
test/units/testsuite-51.service (+1/-0)
test/units/testsuite-51.sh (+3/-0)
test/units/testsuite-52.service (+1/-0)
test/units/testsuite-52.sh (+2/-1)
test/units/testsuite-53.service (+1/-0)
test/units/testsuite-53.sh (+1/-0)
test/units/testsuite-54.service (+1/-0)
test/units/testsuite-54.sh (+79/-0)
test/units/testsuite-55-slowgrowth.sh (+1/-0)
test/units/testsuite-55-testbloat.service (+2/-1)
test/units/testsuite-55-testchill.service (+2/-0)
test/units/testsuite-55-testmunch.service (+2/-1)
test/units/testsuite-55-workload.slice (+2/-1)
test/units/testsuite-55.service (+3/-0)
test/units/testsuite-55.sh (+78/-7)
test/units/testsuite-56.service (+6/-0)
test/units/testsuite-56.sh (+80/-0)
test/units/testsuite-57-binds-to.service (+1/-0)
test/units/testsuite-57-bound-by.service (+1/-0)
test/units/testsuite-57-fail.service (+1/-0)
test/units/testsuite-57-prop-stop-one.service (+1/-0)
test/units/testsuite-57-prop-stop-two.service (+1/-0)
test/units/testsuite-57-short-lived.service (+1/-0)
test/units/testsuite-57-short-lived.sh (+1/-1)
test/units/testsuite-57-success.service (+1/-0)
test/units/testsuite-57-uphold.service (+1/-0)
test/units/testsuite-57.service (+1/-0)
test/units/testsuite-57.sh (+1/-0)
test/units/testsuite-58.service (+1/-0)
test/units/testsuite-58.sh (+160/-7)
test/units/testsuite-59.service (+1/-0)
test/units/testsuite-59.sh (+1/-0)
test/units/testsuite-60.service (+1/-0)
test/units/testsuite-60.sh (+20/-0)
test/units/testsuite-61.service (+1/-0)
test/units/testsuite-61.sh (+3/-1)
test/units/testsuite-62-1.service (+9/-0)
test/units/testsuite-62-2.service (+10/-0)
test/units/testsuite-62-3.service (+10/-0)
test/units/testsuite-62-4.service (+10/-0)
test/units/testsuite-62-5.service (+11/-0)
test/units/testsuite-62.service (+8/-0)
test/units/testsuite-62.sh (+66/-0)
test/units/testsuite-63.service (+30/-0)
test/units/testsuite-64.service (+10/-0)
test/units/testsuite-64.sh (+747/-0)
test/units/testsuite-65.service (+8/-0)
test/units/testsuite-65.sh (+613/-0)
test/units/testsuite-66-deviceisolation.service (+10/-0)
test/units/testsuite-66.service (+8/-0)
test/units/testsuite-66.sh (+27/-0)
test/units/testsuite-67.service (+9/-0)
test/units/testsuite-67.sh (+98/-0)
test/units/testsuite-68.service (+7/-0)
test/units/testsuite-68.sh (+217/-0)
test/units/testsuite-69.service (+7/-0)
test/units/testsuite-70.service (+7/-0)
test/units/testsuite-70.sh (+48/-0)
test/units/testsuite-72.service (+8/-0)
test/units/testsuite-72.sh (+170/-0)
test/units/testsuite.target (+1/-0)
test/units/unit-.service.d/10-override.conf (+1/-0)
test/units/unit-with-.service.d/20-override.conf (+1/-0)
test/units/unit-with-multiple-.service.d/20-override.conf (+1/-0)
test/units/unit-with-multiple-.service.d/30-override.conf (+1/-0)
test/units/unit-with-multiple-dashes.service (+1/-0)
test/units/unit-with-multiple-dashes.service.d/10-override.conf (+1/-0)
test/units/unstoppable.service (+1/-0)
tmpfiles.d/etc.conf.in (+1/-3)
tmpfiles.d/legacy.conf.in (+30/-0)
tmpfiles.d/meson.build (+26/-19)
tmpfiles.d/systemd-network.conf (+13/-0)
tmpfiles.d/systemd-resolve.conf (+10/-0)
tmpfiles.d/systemd.conf.in (+0/-6)
tmpfiles.d/x11.conf (+0/-1)
tools/check-api-docs.sh (+1/-1)
tools/check-directives.sh (+4/-4)
tools/check-help.sh (+11/-5)
tools/check-version.sh (+36/-0)
tools/chromiumos/gen_autosuspend_rules.py (+2/-1)
tools/dbus_exporter.py (+42/-0)
tools/debug-sd-boot.sh (+85/-0)
tools/get-coverity.sh (+18/-14)
tools/git-contrib.sh (+5/-3)
tools/list-discoverable-partitions.py (+191/-0)
tools/meson-build.sh (+3/-2)
tools/meson-render-jinja2.py (+13/-4)
tools/oss-fuzz.sh (+81/-22)
tools/update-dbus-docs.py (+8/-0)
tools/update-man-rules.py (+15/-6)
units/console-getty.service.in (+3/-1)
units/container-getty@.service.in (+3/-1)
units/factory-reset.target (+12/-0)
units/getty@.service.in (+3/-1)
units/integritysetup-pre.target (+14/-0)
units/integritysetup.target (+12/-0)
units/meson-add-wants.sh (+1/-0)
units/meson.build (+20/-11)
units/serial-getty@.service.in (+3/-1)
units/systemd-boot-update.service (+24/-0)
units/systemd-coredump@.service.in (+1/-2)
units/systemd-fsck-root.service.in (+2/-0)
units/systemd-homed.service.in (+2/-3)
units/systemd-networkd-wait-online@.service.in (+25/-0)
units/systemd-networkd.service.in (+1/-1)
units/systemd-nspawn@.service.in (+1/-1)
units/systemd-oomd.service.in (+2/-0)
units/systemd-oomd.socket (+21/-0)
units/systemd-resolved.service.in (+3/-3)
units/systemd-sysupdate-reboot.service.in (+20/-0)
units/systemd-sysupdate-reboot.timer (+20/-0)
units/systemd-sysupdate.service.in (+34/-0)
units/systemd-sysupdate.timer (+30/-0)
units/systemd-tmpfiles-clean.service (+1/-1)
units/systemd-tmpfiles-setup.service (+1/-1)
units/systemd-udev-trigger.service (+1/-2)
units/systemd-udevd.service.in (+1/-0)
units/user@.service.in (+1/-0)
xorg/50-systemd-user.sh (+8/-0)
Reviewer Review Type Date Requested Status
Lukas Märdian Approve
Review via email: mp+425171@code.launchpad.net

Description of the change

This merges systemd 251.2-2 from Debian unstable.

In addition to routine changes like refreshing patches and dropping patches that are now applied upstream, there are a few notable changes for review:

1. Patch debian/Ubuntu-core-in-execute-soft-fail-setting-Nice-priority-when.patch was dropped (details in changelog and git log)
2. Patch Add-support-for-TuxOnIce-hibernation.patch was dropped (details in changelog and git log)
3. The systemd-hwdb patches that allow `query --root` have been pulled in from upstream. This adds a new symbol to libsystemd0 because these patches were not included in the v251 release.

To post a comment you must log in.
Revision history for this message
Nick Rosbrook (enr0n) wrote :
Revision history for this message
Lukas Märdian (slyon) wrote (last edit ):

Sorry for taking a long time to review this!
* The sources match the upstream-stable v251.2 tag & orig tarball.
* The debian/ changes LGTM overall, I have a few remarks below, that we could/should improve upon.
* PPA build is looking fine: https://launchpad.net/~enr0n/+archive/ubuntu/systemd-251

#0 PPA autopkgtests are looking good so far, have there been any test against all the affected packages (i.e. Bileto), to notify them (or at least the 'main' packages) about any fallout?
https://autopkgtest.ubuntu.com/results/autopkgtest-kinetic-enr0n-systemd-251/?format=plain

#1 d/patches/hwdb-implement-root-option-for-systemd-hwdb-query.patch, debian/patches/sd-hwdb-add-sd_hwdb_new_from_path.patch, please mention the upstream commit/fix in patch headers, e.g. using the "Forwarded:" DEP-3 header. It's not clear at first glance that this is a cherry-pick, missing any reference.

#2 d/patches/test-deny-TEST-29-PORTABLE-again.patch: is this needed for all architectures? We used to disable it on ppc64el only in the past, IIRC.

#3 d/control: Package: systemd-oomd => Is "Section: admin" needed? It is dropped in Debian and seems like unnecessary Ubuntu delta.

#4 d/patches/test-install-libgcc_s.so.1-for-TEST-70-TPM2.patch: please add some DEP-3 headers for this new patch. At least a bug reference and/or upstream fix. So we can easily decide when is the correct time to drop that again in the future.

#5 d/libsystemd0.symbols: Fix lintian error about version string, using "~" as suggested.
E: libsystemd0: symbols-file-contains-current-version-with-debian-revision on symbol sd_hwdb_new_from_path@LIBSYSTEMD_251 (libsystemd.so.0) [symbols]
N:
N: Debian revisions should be stripped from versions in symbols files. Not
N: doing so leads to dependencies unsatisfiable by backports (1.0-1~bpo <<
N: 1.0-1 while 1.0-1~bpo >= 1.0). If the Debian revision can't be stripped
N: because the symbol really appeared between two specific Debian revisions,
N: you should postfix the version with a single "~" (example: 1.0-3~ if the
N: symbol appeared in 1.0-3).
N:
N: This problem normally means that the symbols were added automatically by
N: dpkg-gensymbols. dpkg-gensymbols uses the full version number for the
N: dependency associated to any new symbol that it detects. The maintainer
N: must update the debian/<package>.symbols file by adding the new symbols
N: with the corresponding upstream version.

#6 d/control: dh-sequence-package-notes >= 0.8 (Doesn't work with the Jammy version) – Not sure if it's worth introducing Ubuntu delta for this, though. As the people building systemd isn't too big and people are usually in the known.

#7 Debian's 251.2-6 seems to have some interesting changes (features & fixes), but we can do a smaller merge later in the cycle to get those included.

Revision history for this message
Nick Rosbrook (enr0n) wrote :

Thanks for the review, Lukas!

> #0 PPA autopkgtests are looking good so far, have there been any test against
> all the affected packages (i.e. Bileto), to notify them (or at least the
> 'main' packages) about any fallout?
> https://autopkgtest.ubuntu.com/results/autopkgtest-kinetic-
> enr0n-systemd-251/?format=plain

No, unfortunately I never got around to using Bileto.

> #1 d/patches/hwdb-implement-root-option-for-systemd-hwdb-query.patch,
> debian/patches/sd-hwdb-add-sd_hwdb_new_from_path.patch, please mention the
> upstream commit/fix in patch headers, e.g. using the "Forwarded:" DEP-3
> header. It's not clear at first glance that this is a cherry-pick, missing any
> reference.

Whoops, thanks for catching this.

> #2 d/patches/test-deny-TEST-29-PORTABLE-again.patch: is this needed for all
> architectures? We used to disable it on ppc64el only in the past, IIRC.

I will take another look at this. I was seeing it locally on amd64.

> #3 d/control: Package: systemd-oomd => Is "Section: admin" needed? It is
> dropped in Debian and seems like unnecessary Ubuntu delta.

I agree, this delta can be dropped.

> #4 d/patches/test-install-libgcc_s.so.1-for-TEST-70-TPM2.patch: please add
> some DEP-3 headers for this new patch. At least a bug reference and/or
> upstream fix. So we can easily decide when is the correct time to drop that
> again in the future.

Ack.

> #5 d/libsystemd0.symbols: Fix lintian error about version string, using "~" as
> suggested.
> E: libsystemd0: symbols-file-contains-current-version-with-debian-revision on
> symbol sd_hwdb_new_from_path@LIBSYSTEMD_251 (libsystemd.so.0) [symbols]
> N:
> N: Debian revisions should be stripped from versions in symbols files. Not
> N: doing so leads to dependencies unsatisfiable by backports (1.0-1~bpo <<
> N: 1.0-1 while 1.0-1~bpo >= 1.0). If the Debian revision can't be stripped
> N: because the symbol really appeared between two specific Debian revisions,
> N: you should postfix the version with a single "~" (example: 1.0-3~ if the
> N: symbol appeared in 1.0-3).
> N:
> N: This problem normally means that the symbols were added automatically by
> N: dpkg-gensymbols. dpkg-gensymbols uses the full version number for the
> N: dependency associated to any new symbol that it detects. The maintainer
> N: must update the debian/<package>.symbols file by adding the new symbols
> N: with the corresponding upstream version.

Ack.

> #6 d/control: dh-sequence-package-notes >= 0.8 (Doesn't work with the Jammy
> version) – Not sure if it's worth introducing Ubuntu delta for this, though.
> As the people building systemd isn't too big and people are usually in the
> known.

Okay, I will leave it as-is for now then.

> #7 Debian's 251.2-6 seems to have some interesting changes (features & fixes),
> but we can do a smaller merge later in the cycle to get those included.

Yeah, I have kept an eye on Debian's revisions, and I figured we would do a smaller merge later (based on the history in debian/changelog).

Revision history for this message
Nick Rosbrook (enr0n) wrote :

After further testing, it seems it was unnecessary to denylist TEST-29-PORTABLE again (must have been a flaky run), so I have dropped that patch.

I believe I addressed all other comments as requested.

Revision history for this message
Lukas Märdian (slyon) wrote (last edit ):

Thank you very much for addressing my concerns, Nick. LGTM!

wrt the other notable changes for review:
We had already discussed those out-of-band and I agree with your assessment for dropping those old patches.

gbp tag'ed & uploaded!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.clang-format b/.clang-format
2index c94866f..6aa4e6a 100644
3--- a/.clang-format
4+++ b/.clang-format
5@@ -1,7 +1,7 @@
6 # This configuration file can be used to auto-format the code base.
7 # Not all guidelines specified in CODING_STYLE are followed, so the
8 # result MUST NOT be committed indiscriminately, but each automated
9-# change should be reviewed and only the appropriate ones commited.
10+# change should be reviewed and only the appropriate ones committed.
11 #
12 # The easiest way to apply the formatting to your changes ONLY,
13 # is to use the git-clang-format script (usually installed with clang-format).
14diff --git a/.clusterfuzzlite/Dockerfile b/.clusterfuzzlite/Dockerfile
15new file mode 100644
16index 0000000..31e442b
17--- /dev/null
18+++ b/.clusterfuzzlite/Dockerfile
19@@ -0,0 +1,5 @@
20+FROM gcr.io/oss-fuzz-base/base-builder:v1
21+ENV MERGE_WITH_OSS_FUZZ_CORPORA=yes
22+COPY . $SRC/systemd
23+WORKDIR $SRC/systemd
24+COPY tools/oss-fuzz.sh $SRC/build.sh
25diff --git a/.editorconfig b/.editorconfig
26index d24acc1..27bb375 100644
27--- a/.editorconfig
28+++ b/.editorconfig
29@@ -18,6 +18,7 @@ charset = utf-8
30 [*.{c,h}]
31 indent_style = space
32 indent_size = 8
33+max_line_length = 109
34
35 [*.sh]
36 indent_style = space
37@@ -30,3 +31,12 @@ indent_size = 8
38 [man/*.xml]
39 indent_size = 2
40 indent_style = space
41+max_line_length = 109
42+
43+[docs/**/*.css]
44+indent_style = space
45+indent_size = 2
46+
47+[docs/**/*.html]
48+indent_style = space
49+indent_size = 2
50diff --git a/.gitattributes b/.gitattributes
51index f89d1fc..c5b9d85 100644
52--- a/.gitattributes
53+++ b/.gitattributes
54@@ -1,2 +1,11 @@
55 *.[ch] whitespace=tab-in-indent,trailing-space
56-test/dmidecode-dumps/*.bin binary
57+*.gpg binary generated
58+*.bmp binary
59+
60+# Mark files as "generated", i.e. no license applies to them.
61+# This includes output from programs, directive lists generated by grepping
62+# for all possibilities, samples from fuzzers, files from /proc, packet samples,
63+# and anything else where no copyright can be asserted.
64+#
65+# Use 'git check-attr generated -- <path>' to query the attribute.
66+[attr]generated
67diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md
68index ca82138..592833e 100644
69--- a/.github/ISSUE_TEMPLATE/Bug_report.md
70+++ b/.github/ISSUE_TEMPLATE/Bug_report.md
71@@ -1,7 +1,7 @@
72 ---
73 name: Bug report
74 about: A report of an error in a recent systemd version
75-
76+SPDX-License-Identifier: LGPL-2.1-or-later
77 ---
78
79 **systemd version the issue has been seen with**
80@@ -10,7 +10,7 @@ about: A report of an error in a recent systemd version
81 <!-- **NOTE:** Do not submit bug reports about anything but the two most recently released *major* systemd versions upstream! -->
82 <!-- If there have been multiple stable releases for that major version, please consider updating to a recent one before reporting an issue. -->
83 <!-- When using a distro package, please make sure that the version reported is meaningful for upstream. -->
84-<!-- See https://github.com/systemd/systemd-stable/releases for the list of most recent releases. -->
85+<!-- See https://github.com/systemd/systemd-stable/tags for the list of most recent releases. -->
86 <!-- For older version please use distribution trackers (see https://systemd.io/CONTRIBUTING#filing-issues). -->
87
88 **Used distribution**
89diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md
90index 3c53d72..ad9f447 100644
91--- a/.github/ISSUE_TEMPLATE/Feature_request.md
92+++ b/.github/ISSUE_TEMPLATE/Feature_request.md
93@@ -1,7 +1,7 @@
94 ---
95 name: Feature request
96 about: Suggest an improvement
97-
98+SPDX-License-Identifier: LGPL-2.1-or-later
99 ---
100
101 **Is your feature request related to a problem? Please describe.**
102diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
103new file mode 100644
104index 0000000..159187e
105--- /dev/null
106+++ b/.github/ISSUE_TEMPLATE/config.yml
107@@ -0,0 +1,9 @@
108+---
109+# vi: ts=2 sw=2 et:
110+# SPDX-License-Identifier: LGPL-2.1-or-later
111+
112+blank_issues_enabled: true
113+contact_links:
114+ - name: systemd-devel mailing list
115+ url: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
116+ about: Please ask (and answer) questions here, use the issue tracker only for issues.
117diff --git a/.github/codeql-config.yml b/.github/codeql-config.yml
118new file mode 100644
119index 0000000..447e53b
120--- /dev/null
121+++ b/.github/codeql-config.yml
122@@ -0,0 +1,12 @@
123+---
124+# vi: ts=2 sw=2 et:
125+# SPDX-License-Identifier: LGPL-2.1-or-later
126+name: "CodeQL config"
127+
128+disable-default-queries: false
129+
130+queries:
131+ - name: Enable possibly useful queries which are disabled by default
132+ uses: ./.github/codeql-custom.qls
133+ - name: systemd-specific CodeQL queries
134+ uses: ./.lgtm/cpp-queries/
135diff --git a/.github/codeql-custom.qls b/.github/codeql-custom.qls
136new file mode 100644
137index 0000000..28a22d3
138--- /dev/null
139+++ b/.github/codeql-custom.qls
140@@ -0,0 +1,36 @@
141+---
142+# vi: ts=2 sw=2 et syntax=yaml:
143+# SPDX-License-Identifier: LGPL-2.1-or-later
144+#
145+# Note: it is not recommended to directly reference the respective queries from
146+# the github/codeql repository, so we have to "dance" around it using
147+# a custom QL suite
148+# See:
149+# - https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#running-additional-queries
150+# - https://github.com/github/codeql-action/issues/430#issuecomment-806092120
151+# - https://codeql.github.com/docs/codeql-cli/creating-codeql-query-suites/
152+
153+- import: codeql-suites/cpp-lgtm.qls
154+ from: codeql/cpp-queries
155+- include:
156+ id:
157+ - cpp/bad-strncpy-size
158+ - cpp/declaration-hides-variable
159+ - cpp/inconsistent-null-check
160+ - cpp/mistyped-function-arguments
161+ - cpp/nested-loops-with-same-variable
162+ - cpp/sizeof-side-effect
163+ - cpp/suspicious-pointer-scaling
164+ - cpp/suspicious-pointer-scaling-void
165+ - cpp/suspicious-sizeof
166+ - cpp/unsafe-strcat
167+ - cpp/unsafe-strncat
168+ - cpp/unsigned-difference-expression-compared-zero
169+ - cpp/unused-local-variable
170+ tags:
171+ - "security"
172+ - "correctness"
173+ severity: "error"
174+- exclude:
175+ id:
176+ - cpp/fixme-comment
177diff --git a/.github/dependabot.yml b/.github/dependabot.yml
178new file mode 100644
179index 0000000..3e067c1
180--- /dev/null
181+++ b/.github/dependabot.yml
182@@ -0,0 +1,19 @@
183+# SPDX-License-Identifier: LGPL-2.1-or-later
184+
185+version: 2
186+updates:
187+ - package-ecosystem: "github-actions"
188+ directory: "/"
189+ schedule:
190+ interval: "monthly"
191+ open-pull-requests-limit: 2
192+ - package-ecosystem: "pip"
193+ directory: "/.github/workflows"
194+ schedule:
195+ interval: "monthly"
196+ open-pull-requests-limit: 2
197+ - package-ecosystem: "docker"
198+ directory: "/.clusterfuzzlite"
199+ schedule:
200+ interval: "monthly"
201+ open-pull-requests-limit: 2
202diff --git a/.github/labeler.yml b/.github/labeler.yml
203index 773d575..7d128f4 100644
204--- a/.github/labeler.yml
205+++ b/.github/labeler.yml
206@@ -1,3 +1,5 @@
207+# SPDX-License-Identifier: LGPL-2.1-or-later
208+
209 hwdb:
210 - hwdb.d/**/*
211 units:
212diff --git a/.github/workflows/build_test.sh b/.github/workflows/build_test.sh
213index 1200fa2..a43c343 100755
214--- a/.github/workflows/build_test.sh
215+++ b/.github/workflows/build_test.sh
216@@ -1,4 +1,5 @@
217-#!/bin/bash
218+#!/usr/bin/env bash
219+# SPDX-License-Identifier: LGPL-2.1-or-later
220
221 set -ex
222
223@@ -8,9 +9,8 @@ success() { echo >&2 -e "\033[32;1m$1\033[0m"; }
224
225 ARGS=(
226 "--optimization=0"
227- "--optimization=2"
228- "--optimization=s"
229- "--optimization=3 -Db_lto=true"
230+ "--optimization=s -Dgnu-efi=true -Defi-cflags=-m32 -Defi-libdir=/usr/lib32"
231+ "--optimization=3 -Db_lto=true -Ddns-over-tls=false"
232 "--optimization=3 -Db_lto=false"
233 "--optimization=3 -Ddns-over-tls=openssl"
234 "--optimization=3 -Dfexecve=true -Dstandalone-binaries=true -Dstatic-libsystemd=true -Dstatic-libudev=true"
235@@ -26,6 +26,8 @@ PACKAGES=(
236 itstool
237 kbd
238 libblkid-dev
239+ libbpf-dev
240+ libc6-dev-i386
241 libcap-dev
242 libcurl4-gnutls-dev
243 libfdisk-dev
244@@ -47,8 +49,8 @@ PACKAGES=(
245 net-tools
246 perl
247 python3-evdev
248- python3-lxml
249 python3-jinja2
250+ python3-lxml
251 python3-pip
252 python3-pyparsing
253 python3-setuptools
254@@ -60,6 +62,8 @@ PACKAGES=(
255 )
256 COMPILER="${COMPILER:?}"
257 COMPILER_VERSION="${COMPILER_VERSION:?}"
258+LINKER="${LINKER:?}"
259+CRYPTOLIB="${CRYPTOLIB:?}"
260 RELEASE="$(lsb_release -cs)"
261
262 bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list"
263@@ -90,7 +94,7 @@ elif [[ "$COMPILER" == gcc ]]; then
264 # Latest gcc stack deb packages provided by
265 # https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
266 add-apt-repository -y ppa:ubuntu-toolchain-r/test
267- PACKAGES+=(gcc-$COMPILER_VERSION)
268+ PACKAGES+=("gcc-$COMPILER_VERSION" "gcc-$COMPILER_VERSION-multilib")
269 else
270 fatal "Unknown compiler: $COMPILER"
271 fi
272@@ -100,11 +104,11 @@ add-apt-repository -y ppa:upstream-systemd-ci/systemd-ci
273 apt-get -y update
274 apt-get -y build-dep systemd
275 apt-get -y install "${PACKAGES[@]}"
276-# Install the latest meson and ninja form pip, since the distro versions don't
277-# support all the features we need (like --optimization=). Since the build-dep
278+# Install more or less recent meson and ninja with pip, since the distro versions don't
279+# always support all the features we need (like --optimization=). Since the build-dep
280 # command above installs the distro versions, let's install the pip ones just
281 # locally and add the local bin directory to the $PATH.
282-pip3 install --user -U meson ninja
283+pip3 install --user -r .github/workflows/requirements.txt --require-hashes
284 export PATH="$HOME/.local/bin:$PATH"
285
286 $CC --version
287@@ -114,15 +118,42 @@ ninja --version
288 for args in "${ARGS[@]}"; do
289 SECONDS=0
290
291+ # meson fails with
292+ # src/boot/efi/meson.build:52: WARNING: Not using lld as efi-ld, falling back to bfd
293+ # src/boot/efi/meson.build:52:16: ERROR: Fatal warnings enabled, aborting
294+ # when LINKER is set to lld so let's just not turn meson warnings into errors with lld
295+ # to make sure that the build systemd can pick up the correct efi-ld linker automatically.
296+
297+ # The install_tag feature introduced in 0.60 causes meson to fail with fatal-meson-warnings
298+ # "Project targeting '>= 0.53.2' but tried to use feature introduced in '0.60.0': install_tag arg in custom_target"
299+ # It can be safely removed from the CI since it isn't actually used anywhere to test anything.
300+ find . -type f -name meson.build -exec sed -i '/install_tag/d' '{}' '+'
301+ if [[ "$LINKER" != lld ]]; then
302+ additional_meson_args="--fatal-meson-warnings"
303+ fi
304 info "Checking build with $args"
305- if ! AR="$AR" CC="$CC" CXX="$CXX" CFLAGS="-Werror" CXXFLAGS="-Werror" meson -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true --werror $args build; then
306+ # shellcheck disable=SC2086
307+ if ! AR="$AR" \
308+ CC="$CC" CC_LD="$LINKER" CFLAGS="-Werror" \
309+ CXX="$CXX" CXX_LD="$LINKER" CXXFLAGS="-Werror" \
310+ meson -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true --werror \
311+ -Dnobody-group=nogroup $additional_meson_args \
312+ -Dcryptolib="${CRYPTOLIB:?}" $args build; then
313+
314+ cat build/meson-logs/meson-log.txt
315 fatal "meson failed with $args"
316 fi
317
318- if ! meson compile -C build; then
319+ if ! meson compile -C build -v; then
320 fatal "'meson compile' failed with $args"
321 fi
322
323+ for loader in build/src/boot/efi/*.efi; do
324+ if sbverify --list "$loader" |& grep -q "gap in section table"; then
325+ fatal "$loader: Gaps found in section table"
326+ fi
327+ done
328+
329 git clean -dxf
330
331 success "Build with $args passed in $SECONDS seconds"
332diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml
333index fa86236..94fb677 100644
334--- a/.github/workflows/build_test.yml
335+++ b/.github/workflows/build_test.yml
336@@ -1,5 +1,6 @@
337 ---
338 # vi: ts=2 sw=2 et:
339+# SPDX-License-Identifier: LGPL-2.1-or-later
340 #
341 name: Build test
342 on:
343@@ -11,24 +12,27 @@ on:
344 - 'src/**'
345 - 'test/fuzz/**'
346
347+permissions:
348+ contents: read
349+
350 jobs:
351 build:
352 runs-on: ubuntu-20.04
353 concurrency:
354- group: ${{ github.workflow }}-${{ matrix.env.COMPILER }}-${{ matrix.env.COMPILER_VERSION }}-${{ github.ref }}
355+ group: ${{ github.workflow }}-${{ toJSON(matrix.env) }}-${{ github.ref }}
356 cancel-in-progress: true
357 strategy:
358 fail-fast: false
359 matrix:
360 env:
361- - { COMPILER: "gcc", COMPILER_VERSION: "10" }
362- - { COMPILER: "gcc", COMPILER_VERSION: "11" }
363- - { COMPILER: "clang", COMPILER_VERSION: "10" }
364- - { COMPILER: "clang", COMPILER_VERSION: "11" }
365- - { COMPILER: "clang", COMPILER_VERSION: "12" }
366+ - { COMPILER: "gcc", COMPILER_VERSION: "10", LINKER: "bfd", CRYPTOLIB: "gcrypt" }
367+ - { COMPILER: "gcc", COMPILER_VERSION: "11", LINKER: "gold", CRYPTOLIB: "openssl" }
368+ - { COMPILER: "clang", COMPILER_VERSION: "12", LINKER: "gold", CRYPTOLIB: "gcrypt" }
369+ - { COMPILER: "clang", COMPILER_VERSION: "13", LINKER: "lld", CRYPTOLIB: "openssl" }
370+ - { COMPILER: "clang", COMPILER_VERSION: "14", LINKER: "bfd", CRYPTOLIB: "auto" }
371 env: ${{ matrix.env }}
372 steps:
373 - name: Repository checkout
374- uses: actions/checkout@v1
375- - name: Build check (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }})
376+ uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
377+ - name: ${{ format('Build check ({0}-{1}-{2}-{3})', env.COMPILER, env.COMPILER_VERSION, env.LINKER, env.CRYPTOLIB) }}
378 run: sudo -E .github/workflows/build_test.sh
379diff --git a/.github/workflows/cflite_pr.yml b/.github/workflows/cflite_pr.yml
380new file mode 100644
381index 0000000..a35a97f
382--- /dev/null
383+++ b/.github/workflows/cflite_pr.yml
384@@ -0,0 +1,39 @@
385+---
386+# vi: ts=2 sw=2 et:
387+# SPDX-License-Identifier: LGPL-2.1-or-later
388+#
389+name: ClusterFuzzLite PR fuzzing
390+on:
391+ pull_request:
392+ branches:
393+ - main
394+ - v[0-9]+-stable
395+
396+permissions: read-all
397+
398+jobs:
399+ PR:
400+ runs-on: ubuntu-latest
401+ if: github.repository != 'systemd/systemd' || github.event.pull_request.user.login == 'dependabot[bot]'
402+ concurrency:
403+ group: ${{ github.workflow }}-${{ matrix.sanitizer }}-${{ github.ref }}
404+ cancel-in-progress: true
405+ strategy:
406+ fail-fast: false
407+ matrix:
408+ sanitizer: [address, undefined, memory]
409+ steps:
410+ - name: Build Fuzzers (${{ matrix.sanitizer }})
411+ id: build
412+ uses: google/clusterfuzzlite/actions/build_fuzzers@v1
413+ with:
414+ sanitizer: ${{ matrix.sanitizer }}
415+ github-token: ${{ secrets.GITHUB_TOKEN }}
416+ - name: Run Fuzzers (${{ matrix.sanitizer }})
417+ id: run
418+ uses: google/clusterfuzzlite/actions/run_fuzzers@v1
419+ with:
420+ github-token: ${{ secrets.GITHUB_TOKEN }}
421+ fuzz-seconds: 1200
422+ mode: 'code-change'
423+ sanitizer: ${{ matrix.sanitizer }}
424diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml
425index 8ab2a4c..f674d43 100644
426--- a/.github/workflows/cifuzz.yml
427+++ b/.github/workflows/cifuzz.yml
428@@ -1,8 +1,13 @@
429 ---
430 # vi: ts=2 sw=2 et:
431+# SPDX-License-Identifier: LGPL-2.1-or-later
432 # See: https://google.github.io/oss-fuzz/getting-started/continuous-integration/
433
434 name: CIFuzz
435+
436+permissions:
437+ contents: read
438+
439 on:
440 pull_request:
441 paths:
442@@ -34,6 +39,8 @@ jobs:
443 oss-fuzz-project-name: 'systemd'
444 dry-run: false
445 allowed-broken-targets-percentage: 0
446+ # keep-unaffected-fuzz-targets should be removed once https://github.com/google/oss-fuzz/issues/7011 is fixed
447+ keep-unaffected-fuzz-targets: true
448 sanitizer: ${{ matrix.sanitizer }}
449 - name: Run Fuzzers (${{ matrix.sanitizer }})
450 uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
451@@ -43,7 +50,7 @@ jobs:
452 dry-run: false
453 sanitizer: ${{ matrix.sanitizer }}
454 - name: Upload Crash
455- uses: actions/upload-artifact@v1
456+ uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2
457 if: failure() && steps.build.outcome == 'success'
458 with:
459 name: ${{ matrix.sanitizer }}-artifacts
460diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
461new file mode 100644
462index 0000000..4ee50ac
463--- /dev/null
464+++ b/.github/workflows/codeql-analysis.yml
465@@ -0,0 +1,57 @@
466+---
467+# vi: ts=2 sw=2 et:
468+# SPDX-License-Identifier: LGPL-2.1-or-later
469+#
470+name: "CodeQL"
471+
472+on:
473+ pull_request:
474+ branches: [main]
475+ paths:
476+ - .github/codeql-config.yml
477+ - .github/codeql-custom.qls
478+ - .github/workflows/codeql-analysis.yml
479+ - .github/workflows/requirements.txt
480+ - .github/workflows/unit_tests.sh
481+ # It takes the workflow approximately 30 minutes to analyze the code base
482+ # so it doesn't seem to make much sense to trigger it on every PR or commit.
483+ # It runs daily at 01:00 to avoid colliding with the Coverity workflow.
484+ schedule:
485+ - cron: '0 1 * * *'
486+
487+permissions:
488+ contents: read
489+
490+jobs:
491+ analyze:
492+ name: Analyze
493+ runs-on: ubuntu-latest
494+ concurrency:
495+ group: ${{ github.workflow }}-${{ matrix.language }}-${{ github.ref }}
496+ cancel-in-progress: true
497+ permissions:
498+ actions: read
499+ security-events: write
500+
501+ strategy:
502+ fail-fast: false
503+ matrix:
504+ language: [ 'cpp', 'python' ]
505+
506+ steps:
507+ - name: Checkout repository
508+ uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
509+
510+ - name: Initialize CodeQL
511+ uses: github/codeql-action/init@28eead240834b314f7def40f6fcba65d100d99b1
512+ with:
513+ languages: ${{ matrix.language }}
514+ config-file: ./.github/codeql-config.yml
515+
516+ - run: sudo -E .github/workflows/unit_tests.sh SETUP
517+
518+ - name: Autobuild
519+ uses: github/codeql-action/autobuild@28eead240834b314f7def40f6fcba65d100d99b1
520+
521+ - name: Perform CodeQL Analysis
522+ uses: github/codeql-action/analyze@28eead240834b314f7def40f6fcba65d100d99b1
523diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml
524index a0eb0f0..1c29c8b 100644
525--- a/.github/workflows/coverity.yml
526+++ b/.github/workflows/coverity.yml
527@@ -1,5 +1,6 @@
528 ---
529 # vi: ts=2 sw=2 et:
530+# SPDX-License-Identifier: LGPL-2.1-or-later
531 #
532 name: Coverity
533
534@@ -8,6 +9,9 @@ on:
535 # Run Coverity daily at midnight
536 - cron: '0 0 * * *'
537
538+permissions:
539+ contents: read
540+
541 jobs:
542 build:
543 runs-on: ubuntu-20.04
544@@ -21,10 +25,10 @@ jobs:
545 CURRENT_REF: "${{ github.ref }}"
546 steps:
547 - name: Repository checkout
548- uses: actions/checkout@v1
549+ uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
550 # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
551 - name: Set the $COVERITY_SCAN_NOTIFICATION_EMAIL env variable
552- run: echo "COVERITY_SCAN_NOTIFICATION_EMAIL=$(git log -1 ${{ github.sha }} --pretty=\"%aE\")" >> $GITHUB_ENV
553+ run: echo "COVERITY_SCAN_NOTIFICATION_EMAIL=$(git log -1 ${{ github.sha }} --pretty=\"%aE\")" >> "$GITHUB_ENV"
554 - name: Install Coverity tools
555 run: tools/get-coverity.sh
556 # Reuse the setup phase of the unit test script to avoid code duplication
557diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
558index 76d67a3..680a2c1 100644
559--- a/.github/workflows/labeler.yml
560+++ b/.github/workflows/labeler.yml
561@@ -1,12 +1,22 @@
562+---
563+# vi: ts=2 sw=2 et:
564+# SPDX-License-Identifier: LGPL-2.1-or-later
565+#
566 name: "Pull Request Labeler"
567+
568 on:
569 - pull_request_target
570
571+permissions:
572+ contents: read
573+
574 jobs:
575 triage:
576 runs-on: ubuntu-latest
577+ permissions:
578+ pull-requests: write
579 steps:
580- - uses: actions/labeler@main
581+ - uses: actions/labeler@9fd24f1f9d6ceb64ba34d181b329ee72f99978a0
582 with:
583 repo-token: "${{ secrets.GITHUB_TOKEN }}"
584 configuration-path: .github/labeler.yml
585diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml
586new file mode 100644
587index 0000000..ecdd797
588--- /dev/null
589+++ b/.github/workflows/linter.yml
590@@ -0,0 +1,44 @@
591+---
592+# vi: ts=2 sw=2 et:
593+# SPDX-License-Identifier: LGPL-2.1-or-later
594+# https://github.com/marketplace/actions/super-linter
595+name: Lint Code Base
596+
597+on:
598+ pull_request:
599+ branches:
600+ - main
601+ - v[0-9]+-stable
602+
603+permissions:
604+ contents: read
605+
606+jobs:
607+ build:
608+ name: Lint Code Base
609+ runs-on: ubuntu-latest
610+ concurrency:
611+ group: ${{ github.workflow }}-${{ github.ref }}
612+ cancel-in-progress: true
613+
614+ steps:
615+ - name: Repo checkout
616+ uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
617+ with:
618+ # We need a full repo clone
619+ fetch-depth: 0
620+
621+ - name: Lint Code Base
622+ uses: github/super-linter/slim@ae4e373c56efad95924d9cc6b89624fdb2333007
623+ env:
624+ DEFAULT_BRANCH: main
625+ MULTI_STATUS: false
626+ # Excludes:
627+ # - man/.* - all snippets in man pages (false positives due to
628+ # missing shebangs)
629+ # - .*\.(in|SKELETON) - all template/skeleton files
630+ # - tools/coverity\.sh - external file (with some modifications)
631+ FILTER_REGEX_EXCLUDE: .*/(man/.*|.*\.(in|SKELETON)|tools/coverity\.sh)$
632+ VALIDATE_ALL_CODEBASE: false
633+ VALIDATE_BASH: true
634+ VALIDATE_GITHUB_ACTIONS: true
635diff --git a/.github/workflows/mkosi.yml b/.github/workflows/mkosi.yml
636index c8d572a..50dd50b 100644
637--- a/.github/workflows/mkosi.yml
638+++ b/.github/workflows/mkosi.yml
639@@ -1,7 +1,9 @@
640+---
641+# vi: ts=2 sw=2 et:
642+# SPDX-License-Identifier: LGPL-2.1-or-later
643+# Simple boot tests that build and boot the mkosi images generated by the mkosi config files in mkosi.default.d/.
644 name: mkosi
645
646-# Simple boot tests that build and boot the mkosi images generated by the mkosi config files in .mkosi.
647-
648 on:
649 push:
650 branches:
651@@ -12,39 +14,80 @@ on:
652 - main
653 - v[0-9]+-stable
654
655+permissions:
656+ contents: read
657+
658+env:
659+ # Enable debug logging in systemd, but keep udev's log level to info,
660+ # since it's _very_ verbose in the QEMU task
661+ KERNEL_CMDLINE: "systemd.unit=mkosi-check-and-shutdown.service !quiet systemd.log_level=debug systemd.log_target=console udev.log_level=info systemd.default_standard_output=journal+console"
662+
663 jobs:
664 ci:
665 runs-on: ubuntu-20.04
666 concurrency:
667- group: ${{ github.workflow }}-${{ matrix.distro }}-${{ github.ref }}
668+ group: ${{ github.workflow }}-${{ matrix.distro }}-${{ matrix.release }}-${{ github.ref }}
669 cancel-in-progress: true
670 strategy:
671 fail-fast: false
672 matrix:
673- distro:
674- - arch
675- - debian
676- - ubuntu
677- - fedora
678+ include:
679+ - distro: arch
680+ release: rolling
681+ - distro: debian
682+ release: testing
683+ - distro: ubuntu
684+ release: focal
685+ - distro: fedora
686+ release: "36"
687+ - distro: opensuse
688+ release: tumbleweed
689+ - distro: centos_epel
690+ release: 8-stream
691+ - distro: centos_epel
692+ release: 9-stream
693
694 steps:
695- - uses: actions/checkout@v2
696- - uses: systemd/mkosi@v9
697+ - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
698+ - uses: systemd/mkosi@93098e2406e12ea7f06f962d4808952b8a06d345
699
700 - name: Install
701 run: sudo apt-get update && sudo apt-get install --no-install-recommends python3-pexpect python3-jinja2
702
703- - name: Symlink
704- run: ln -s .mkosi/mkosi.${{ matrix.distro }} mkosi.default
705+ - name: Configure
706+ run: |
707+ tee mkosi.default <<- EOF
708+ [Distribution]
709+ Distribution=${{ matrix.distro }}
710+ Release=${{ matrix.release }}
711+
712+ [Content]
713+ Environment=CI_BUILD=1
714+
715+ [Output]
716+ KernelCommandLine=${{ env.KERNEL_CMDLINE }}
717+ EOF
718
719 - name: Build ${{ matrix.distro }}
720- run: sudo python3 -m mkosi --password= --qemu-headless build
721+ run: ./.github/workflows/run_mkosi.sh build
722
723 - name: Show ${{ matrix.distro }} image summary
724- run: sudo python3 -m mkosi --password= --qemu-headless summary
725+ run: ./.github/workflows/run_mkosi.sh summary
726
727 - name: Boot ${{ matrix.distro }} systemd-nspawn
728- run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --password= --qemu-headless boot
729+ run: ./.github/workflows/run_mkosi.sh boot ${{ env.KERNEL_CMDLINE }}
730+
731+ - name: Check ${{ matrix.distro }} systemd-nspawn
732+ run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
733+
734+ # TODO: Remove CentOS exclusion once Ubuntu 22.04 is available in GA.
735+ # See https://github.com/systemd/systemd/pull/22417 and https://github.com/systemd/mkosi/pull/907 for
736+ # more information.
737
738 - name: Boot ${{ matrix.distro }} QEMU
739- run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --password= --qemu-headless qemu
740+ if: ${{ matrix.distro != 'centos_epel' }}
741+ run: ./.github/workflows/run_mkosi.sh qemu
742+
743+ - name: Check ${{ matrix.distro }} QEMU
744+ if: ${{ matrix.distro != 'centos_epel' }}
745+ run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
746diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt
747new file mode 100644
748index 0000000..d7b1365
749--- /dev/null
750+++ b/.github/workflows/requirements.txt
751@@ -0,0 +1,18 @@
752+meson==0.62.0 \
753+ --hash=sha256:00e06dccac7d3b0568b5da82e70c2028c80c359aab6dc517bcbd1825511898c3 \
754+ --hash=sha256:06f8c1cfa51bfdb533c82623ffa524cacdbea02ace6d709145e33aabdad6adcb
755+ninja==1.10.2.3 \
756+ --hash=sha256:0560eea57199e41e86ac2c1af0108b63ae77c3ca4d05a9425a750e908135935a \
757+ --hash=sha256:21a1d84d4c7df5881bfd86c25cce4cf7af44ba2b8b255c57bc1c434ec30a2dfc \
758+ --hash=sha256:279836285975e3519392c93c26e75755e8a8a7fafec9f4ecbb0293119ee0f9c6 \
759+ --hash=sha256:29570a18d697fc84d361e7e6330f0021f34603ae0fcb0ef67ae781e9814aae8d \
760+ --hash=sha256:5ea785bf6a15727040835256577239fa3cf5da0d60e618c307aa5efc31a1f0ce \
761+ --hash=sha256:688167841b088b6802e006f911d911ffa925e078c73e8ef2f88286107d3204f8 \
762+ --hash=sha256:6bd76a025f26b9ae507cf8b2b01bb25bb0031df54ed685d85fc559c411c86cf4 \
763+ --hash=sha256:740d61fefb4ca13573704ee8fe89b973d40b8dc2a51aaa4e9e68367233743bb6 \
764+ --hash=sha256:840a0b042d43a8552c4004966e18271ec726e5996578f28345d9ce78e225b67e \
765+ --hash=sha256:84be6f9ec49f635dc40d4b871319a49fa49b8d55f1d9eae7cd50d8e57ddf7a85 \
766+ --hash=sha256:9ca8dbece144366d5f575ffc657af03eb11c58251268405bc8519d11cf42f113 \
767+ --hash=sha256:cc8b31b5509a2129e4d12a35fc21238c157038022560aaf22e49ef0a77039086 \
768+ --hash=sha256:d5e0275d28997a750a4f445c00bdd357b35cc334c13cdff13edf30e544704fbd \
769+ --hash=sha256:e1b86ad50d4e681a7dbdff05fc23bb52cb773edb90bc428efba33fa027738408
770diff --git a/.github/workflows/run_mkosi.sh b/.github/workflows/run_mkosi.sh
771new file mode 100755
772index 0000000..153ebe3
773--- /dev/null
774+++ b/.github/workflows/run_mkosi.sh
775@@ -0,0 +1,39 @@
776+#!/usr/bin/env bash
777+# SPDX-License-Identifier: LGPL-2.1-or-later
778+# shellcheck disable=SC2064
779+
780+set -eu
781+set -o pipefail
782+
783+EC=0
784+TEMPFILE="$(mktemp)"
785+TEMP_EXTRA_TREE="$(mktemp --directory)"
786+trap "rm -rf '$TEMPFILE' '$TEMP_EXTRA_TREE'" EXIT
787+
788+# We need isc-dhcp-server to be installed for the networkd unit tests, but we don't want to
789+# run it by default. mktemp creates the directory as 700, so change it, otherwise it will
790+# affect the image's root folder permissions.
791+chmod 755 "$TEMP_EXTRA_TREE"
792+mkdir -p "$TEMP_EXTRA_TREE/etc/systemd/system/"
793+ln -s /dev/null "$TEMP_EXTRA_TREE/etc/systemd/system/isc-dhcp-server.service"
794+ln -s /dev/null "$TEMP_EXTRA_TREE/etc/systemd/system/isc-dhcp-server6.service"
795+
796+for ((i = 0; i < 5; i++)); do
797+ EC=0
798+ (sudo python3 -m mkosi --extra-tree="$TEMP_EXTRA_TREE" "$@") |& tee "$TEMPFILE" || EC=$?
799+ if [[ $EC -eq 0 ]]; then
800+ # The command passed — let's return immediately
801+ break
802+ fi
803+
804+ if ! grep -E "Failed to dissect image .+: Connection timed out" "$TEMPFILE"; then
805+ # The command failed for other reason than the dissect-related timeout -
806+ # let's exit with the same EC
807+ exit $EC
808+ fi
809+
810+ # The command failed due to the dissect-related timeout — let's try again
811+ sleep 1
812+done
813+
814+exit $EC
815diff --git a/.github/workflows/test_mkosi_boot.py b/.github/workflows/test_mkosi_boot.py
816deleted file mode 100755
817index 3418fd3..0000000
818--- a/.github/workflows/test_mkosi_boot.py
819+++ /dev/null
820@@ -1,24 +0,0 @@
821-#!/usr/bin/env python3
822-# SPDX-License-Identifier: LGPL-2.1-or-later
823-
824-import pexpect
825-import sys
826-
827-
828-def run() -> None:
829- p = pexpect.spawnu(" ".join(sys.argv[1:]), logfile=sys.stdout, timeout=300)
830-
831- p.expect("#")
832- p.sendline("systemctl poweroff")
833-
834- p.expect(pexpect.EOF)
835-
836-
837-try:
838- run()
839-except pexpect.EOF:
840- print("UNEXPECTED EOF")
841- sys.exit(1)
842-except pexpect.TIMEOUT:
843- print("TIMED OUT")
844- sys.exit(1)
845diff --git a/.github/workflows/unit_tests.sh b/.github/workflows/unit_tests.sh
846index e85c321..442202f 100755
847--- a/.github/workflows/unit_tests.sh
848+++ b/.github/workflows/unit_tests.sh
849@@ -1,5 +1,7 @@
850-#!/bin/bash
851+#!/usr/bin/env bash
852+# SPDX-License-Identifier: LGPL-2.1-or-later
853
854+# shellcheck disable=SC2206
855 PHASES=(${@:-SETUP RUN RUN_ASAN_UBSAN CLEANUP})
856 RELEASE="$(lsb_release -cs)"
857 ADDITIONAL_DEPS=(
858@@ -7,6 +9,7 @@ ADDITIONAL_DEPS=(
859 expect
860 fdisk
861 jekyll
862+ libbpf-dev
863 libfdisk-dev
864 libfido2-dev
865 libp11-kit-dev
866@@ -14,10 +17,12 @@ ADDITIONAL_DEPS=(
867 libqrencode-dev
868 libssl-dev
869 libtss2-dev
870+ libxkbcommon-dev
871 libzstd-dev
872 perl
873 python3-libevdev
874 python3-pyparsing
875+ rpm
876 zstd
877 )
878
879@@ -25,8 +30,17 @@ function info() {
880 echo -e "\033[33;1m$1\033[0m"
881 }
882
883+function run_meson() {
884+ if ! meson "$@"; then
885+ find . -type f -name meson-log.txt -exec cat '{}' +
886+ return 1
887+ fi
888+}
889+
890 set -ex
891
892+MESON_ARGS=(-Dcryptolib=${CRYPTOLIB:-auto})
893+
894 for phase in "${PHASES[@]}"; do
895 case $phase in
896 SETUP)
897@@ -37,28 +51,45 @@ for phase in "${PHASES[@]}"; do
898 apt-get -y update
899 apt-get -y build-dep systemd
900 apt-get -y install "${ADDITIONAL_DEPS[@]}"
901+ pip3 install -r .github/workflows/requirements.txt --require-hashes
902 ;;
903 RUN|RUN_GCC|RUN_CLANG)
904 if [[ "$phase" = "RUN_CLANG" ]]; then
905 export CC=clang
906 export CXX=clang++
907+ # The docs build is slow and is not affected by compiler/flags, so do it just once
908+ MESON_ARGS+=(-Dman=true)
909 fi
910- meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dman=true build
911+ # The install_tag feature introduced in 0.60 causes meson to fail with fatal-meson-warnings
912+ # "Project targeting '>= 0.53.2' but tried to use feature introduced in '0.60.0': install_tag arg in custom_target"
913+ # It can be safely removed from the CI since it isn't actually used anywhere to test anything.
914+ find . -type f -name meson.build -exec sed -i '/install_tag/d' '{}' '+'
915+ MESON_ARGS+=(--fatal-meson-warnings)
916+ run_meson -Dnobody-group=nogroup --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true "${MESON_ARGS[@]}" build
917 ninja -C build -v
918 meson test -C build --print-errorlogs
919 ;;
920- RUN_ASAN_UBSAN|RUN_GCC_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN)
921+ RUN_ASAN_UBSAN|RUN_GCC_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN_NO_DEPS)
922 MESON_ARGS=(--optimization=1)
923
924- if [[ "$phase" = "RUN_CLANG_ASAN_UBSAN" ]]; then
925+ if [[ "$phase" =~ ^RUN_CLANG_ASAN_UBSAN ]]; then
926 export CC=clang
927 export CXX=clang++
928 # Build fuzzer regression tests only with clang (for now),
929 # see: https://github.com/systemd/systemd/pull/15886#issuecomment-632689604
930 # -Db_lundef=false: See https://github.com/mesonbuild/meson/issues/764
931 MESON_ARGS+=(-Db_lundef=false -Dfuzz-tests=true)
932+
933+ if [[ "$phase" == "RUN_CLANG_ASAN_UBSAN_NO_DEPS" ]]; then
934+ MESON_ARGS+=(-Dskip-deps=true)
935+ fi
936 fi
937- meson --werror -Dtests=unsafe -Db_sanitize=address,undefined "${MESON_ARGS[@]}" build
938+ # The install_tag feature introduced in 0.60 causes meson to fail with fatal-meson-warnings
939+ # "Project targeting '>= 0.53.2' but tried to use feature introduced in '0.60.0': install_tag arg in custom_target"
940+ # It can be safely removed from the CI since it isn't actually used anywhere to test anything.
941+ find . -type f -name meson.build -exec sed -i '/install_tag/d' '{}' '+'
942+ MESON_ARGS+=(--fatal-meson-warnings)
943+ run_meson -Dnobody-group=nogroup --werror -Dtests=unsafe -Db_sanitize=address,undefined "${MESON_ARGS[@]}" build
944 ninja -C build -v
945
946 export ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1
947diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml
948index 4a19a6a..7226a77 100644
949--- a/.github/workflows/unit_tests.yml
950+++ b/.github/workflows/unit_tests.yml
951@@ -1,5 +1,6 @@
952 ---
953 # vi: ts=2 sw=2 et:
954+# SPDX-License-Identifier: LGPL-2.1-or-later
955 #
956 name: Unit tests
957 on:
958@@ -8,20 +9,31 @@ on:
959 - main
960 - v[0-9]+-stable
961
962+permissions:
963+ contents: read
964+
965 jobs:
966 build:
967 runs-on: ubuntu-20.04
968 concurrency:
969- group: ${{ github.workflow }}-${{ matrix.run_phase }}-${{ github.ref }}
970+ group: ${{ github.workflow }}-${{ matrix.run_phase }}-${{ matrix.cryptolib }}-${{ github.ref }}
971 cancel-in-progress: true
972 strategy:
973 fail-fast: false
974 matrix:
975- run_phase: [GCC, GCC_ASAN_UBSAN, CLANG, CLANG_ASAN_UBSAN]
976+ run_phase: [GCC, GCC_ASAN_UBSAN, CLANG, CLANG_ASAN_UBSAN, CLANG_ASAN_UBSAN_NO_DEPS]
977+ cryptolib: [auto]
978+ include:
979+ - run_phase: GCC
980+ cryptolib: openssl
981+ - run_phase: CLANG
982+ cryptolib: gcrypt
983 steps:
984 - name: Repository checkout
985- uses: actions/checkout@v1
986+ uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
987 - name: Install build dependencies
988 run: sudo -E .github/workflows/unit_tests.sh SETUP
989- - name: Build & test (${{ matrix.run_phase }})
990+ - name: Build & test (${{ matrix.run_phase }}-${{ matrix.cryptolib }})
991 run: sudo -E .github/workflows/unit_tests.sh RUN_${{ matrix.run_phase }}
992+ env:
993+ CRYPTOLIB: ${{ matrix.cryptolib }}
994diff --git a/.gitignore b/.gitignore
995index d6f6cac..9763766 100644
996--- a/.gitignore
997+++ b/.gitignore
998@@ -1,11 +1,6 @@
999-*.a
1000 *.cache
1001-*.gch
1002-*.log
1003-*.o
1004 *.plist
1005 *.py[co]
1006-*.stamp
1007 *.swp
1008 *.trs
1009 *~
1010@@ -31,11 +26,13 @@ __pycache__/
1011 /.#image.raw.lck
1012 /image.raw.cache-pre-dev
1013 /image.raw.cache-pre-inst
1014+/image.raw.manifest
1015 /install-tree
1016 /.mkosi-*
1017 /mkosi.builddir/
1018 /mkosi.output/
1019 /mkosi.default
1020-mkosi.default.d/*
1021-!mkosi.default.d/10-systemd.conf
1022+/mkosi.installdir/
1023+# Ignore any mkosi config files with "local" in the name
1024+/mkosi.default.d/**/*local*.conf
1025 /tags
1026diff --git a/.lgtm.yml b/.lgtm.yml
1027index 93f8b1c..86fd0e7 100644
1028--- a/.lgtm.yml
1029+++ b/.lgtm.yml
1030@@ -1,5 +1,27 @@
1031 ---
1032 # vi: ts=2 sw=2 et:
1033+# SPDX-License-Identifier: LGPL-2.1-or-later
1034+
1035+# Explicitly enable certain checks which are hidden by default
1036+queries:
1037+ - include: cpp/bad-strncpy-size
1038+ - include: cpp/declaration-hides-variable
1039+ - include: cpp/inconsistent-null-check
1040+ - include: cpp/mistyped-function-arguments
1041+ - include: cpp/nested-loops-with-same-variable
1042+ - include: cpp/sizeof-side-effect
1043+ - include: cpp/suspicious-pointer-scaling
1044+ - include: cpp/suspicious-pointer-scaling-void
1045+ - include: cpp/suspicious-sizeof
1046+ - include: cpp/unsafe-strcat
1047+ - include: cpp/unsafe-strncat
1048+ - include: cpp/unsigned-difference-expression-compared-zero
1049+ - include: cpp/unused-local-variable
1050+ - include:
1051+ tags:
1052+ - "security"
1053+ - "correctness"
1054+ severity: "error"
1055
1056 extraction:
1057 cpp:
1058@@ -10,6 +32,9 @@ extraction:
1059 - libp11-kit-dev
1060 - libssl-dev
1061 - python3-jinja2
1062+ after_prepare:
1063+ - pip3 install -r .github/workflows/requirements.txt --require-hashes
1064+ - export PATH="/opt/work/.local/bin:$PATH"
1065 python:
1066 python_setup:
1067 version: 3
1068diff --git a/.lgtm/cpp-queries/PotentiallyDangerousFunction.ql b/.lgtm/cpp-queries/PotentiallyDangerousFunction.ql
1069index 8653304..39e8ddd 100644
1070--- a/.lgtm/cpp-queries/PotentiallyDangerousFunction.ql
1071+++ b/.lgtm/cpp-queries/PotentiallyDangerousFunction.ql
1072@@ -1,15 +1,17 @@
1073 /**
1074+ * vi: sw=2 ts=2 et syntax=ql:
1075+ *
1076+ * Borrowed from
1077+ * https://github.com/Semmle/ql/blob/master/cpp/ql/src/Security/CWE/CWE-676/PotentiallyDangerousFunction.ql
1078+ *
1079 * @name Use of potentially dangerous function
1080 * @description Certain standard library functions are dangerous to call.
1081+ * @id cpp/potentially-dangerous-function
1082 * @kind problem
1083 * @problem.severity error
1084 * @precision high
1085- * @id cpp/potentially-dangerous-function
1086 * @tags reliability
1087 * security
1088- *
1089- * Borrowed from
1090- * https://github.com/Semmle/ql/blob/master/cpp/ql/src/Security/CWE/CWE-676/PotentiallyDangerousFunction.ql
1091 */
1092 import cpp
1093
1094diff --git a/.lgtm/cpp-queries/UninitializedVariableWithCleanup.ql b/.lgtm/cpp-queries/UninitializedVariableWithCleanup.ql
1095new file mode 100644
1096index 0000000..6b3b62f
1097--- /dev/null
1098+++ b/.lgtm/cpp-queries/UninitializedVariableWithCleanup.ql
1099@@ -0,0 +1,110 @@
1100+/**
1101+ * vi: sw=2 ts=2 et syntax=ql:
1102+ *
1103+ * Based on cpp/uninitialized-local.
1104+ *
1105+ * @name Potentially uninitialized local variable using the cleanup attribute
1106+ * @description Running the cleanup handler on a possibly uninitialized variable
1107+ * is generally a bad idea.
1108+ * @id cpp/uninitialized-local-with-cleanup
1109+ * @kind problem
1110+ * @problem.severity error
1111+ * @precision high
1112+ * @tags security
1113+ */
1114+
1115+import cpp
1116+import semmle.code.cpp.controlflow.StackVariableReachability
1117+
1118+/** Auxiliary predicate: List cleanup functions we want to explicitly ignore
1119+ * since they don't do anything illegal even when the variable is uninitialized
1120+ */
1121+predicate cleanupFunctionDenyList(string fun) {
1122+ fun = "erase_char"
1123+}
1124+
1125+/**
1126+ * A declaration of a local variable using __attribute__((__cleanup__(x)))
1127+ * that leaves the variable uninitialized.
1128+ */
1129+DeclStmt declWithNoInit(LocalVariable v) {
1130+ result.getADeclaration() = v and
1131+ not v.hasInitializer() and
1132+ /* The variable has __attribute__((__cleanup__(...))) set */
1133+ v.getAnAttribute().hasName("cleanup") and
1134+ /* Check if the cleanup function is not on a deny list */
1135+ not cleanupFunctionDenyList(v.getAnAttribute().getAnArgument().getValueText())
1136+}
1137+
1138+class UninitialisedLocalReachability extends StackVariableReachability {
1139+ UninitialisedLocalReachability() { this = "UninitialisedLocal" }
1140+
1141+ override predicate isSource(ControlFlowNode node, StackVariable v) { node = declWithNoInit(v) }
1142+
1143+ /* Note: _don't_ use the `useOfVarActual()` predicate here (and a couple of lines
1144+ * below), as it assumes that the callee always modifies the variable if
1145+ * it's passed to the function.
1146+ *
1147+ * i.e.:
1148+ * _cleanup_free char *x;
1149+ * fun(&x);
1150+ * puts(x);
1151+ *
1152+ * `useOfVarActual()` won't treat this an an uninitialized read even if the callee
1153+ * doesn't modify the argument, however, `useOfVar()` will
1154+ */
1155+ override predicate isSink(ControlFlowNode node, StackVariable v) { useOfVar(v, node) }
1156+
1157+ override predicate isBarrier(ControlFlowNode node, StackVariable v) {
1158+ // only report the _first_ possibly uninitialized use
1159+ useOfVar(v, node) or
1160+ (
1161+ /* If there's an return statement somewhere between the variable declaration
1162+ * and a possible definition, don't accept is as a valid initialization.
1163+ *
1164+ * E.g.:
1165+ * _cleanup_free_ char *x;
1166+ * ...
1167+ * if (...)
1168+ * return;
1169+ * ...
1170+ * x = malloc(...);
1171+ *
1172+ * is not a valid initialization, since we might return from the function
1173+ * _before_ the actual iniitialization (emphasis on _might_, since we
1174+ * don't know if the return statement might ever evaluate to true).
1175+ */
1176+ definitionBarrier(v, node) and
1177+ not exists(ReturnStmt rs |
1178+ /* The attribute check is "just" a complexity optimization */
1179+ v.getFunction() = rs.getEnclosingFunction() and v.getAnAttribute().hasName("cleanup") |
1180+ rs.getLocation().isBefore(node.getLocation())
1181+ )
1182+ )
1183+ }
1184+}
1185+
1186+pragma[noinline]
1187+predicate containsInlineAssembly(Function f) { exists(AsmStmt s | s.getEnclosingFunction() = f) }
1188+
1189+/**
1190+ * Auxiliary predicate: List common exceptions or false positives
1191+ * for this check to exclude them.
1192+ */
1193+VariableAccess commonException() {
1194+ // If the uninitialized use we've found is in a macro expansion, it's
1195+ // typically something like va_start(), and we don't want to complain.
1196+ result.getParent().isInMacroExpansion()
1197+ or
1198+ result.getParent() instanceof BuiltInOperation
1199+ or
1200+ // Finally, exclude functions that contain assembly blocks. It's
1201+ // anyone's guess what happens in those.
1202+ containsInlineAssembly(result.getEnclosingFunction())
1203+}
1204+
1205+from UninitialisedLocalReachability r, LocalVariable v, VariableAccess va
1206+where
1207+ r.reaches(_, v, va) and
1208+ not va = commonException()
1209+select va, "The variable $@ may not be initialized here, but has a cleanup handler.", v, v.getName()
1210diff --git a/.lgtm/cpp-queries/qlpack.yml b/.lgtm/cpp-queries/qlpack.yml
1211new file mode 100644
1212index 0000000..a1a2dec
1213--- /dev/null
1214+++ b/.lgtm/cpp-queries/qlpack.yml
1215@@ -0,0 +1,11 @@
1216+---
1217+# vi: ts=2 sw=2 et syntax=yaml:
1218+# SPDX-License-Identifier: LGPL-2.1-or-later
1219+
1220+library: false
1221+name: systemd/cpp-queries
1222+version: 0.0.1
1223+dependencies:
1224+ codeql/cpp-all: "*"
1225+ codeql/suite-helpers: "*"
1226+extractor: cpp
1227diff --git a/.packit.yml b/.packit.yml
1228index 3a47c6a..a7502b2 100644
1229--- a/.packit.yml
1230+++ b/.packit.yml
1231@@ -13,11 +13,12 @@ downstream_package_name: systemd
1232 # `git describe` returns in systemd's case 'v245-xxx' which breaks RPM version
1233 # detection (that expects 245-xxxx'). Let's tweak the version string accordingly
1234 upstream_tag_template: "v{version}"
1235+srpm_build_deps: []
1236
1237 actions:
1238 post-upstream-clone:
1239- # Use the Fedora 35 specfile
1240- - "git clone --branch f35 https://src.fedoraproject.org/rpms/systemd .packit_rpm --depth=1"
1241+ # Use the Fedora Rawhide specfile
1242+ - "git clone https://src.fedoraproject.org/rpms/systemd .packit_rpm --depth=1"
1243 # Drop the "sources" file so rebase-helper doesn't think we're a dist-git
1244 - "rm -fv .packit_rpm/sources"
1245 # Drop backported patches from the specfile, but keep the downstream-only ones
1246@@ -37,6 +38,8 @@ jobs:
1247 trigger: pull_request
1248 metadata:
1249 targets:
1250- - fedora-35-aarch64
1251- - fedora-35-i386
1252- - fedora-35-x86_64
1253+ - fedora-rawhide-aarch64
1254+ - fedora-rawhide-i386
1255+ - fedora-rawhide-ppc64le
1256+ - fedora-rawhide-s390x
1257+ - fedora-rawhide-x86_64
1258diff --git a/.semaphore/semaphore-runner.sh b/.semaphore/semaphore-runner.sh
1259index e7dbcb2..ba21811 100755
1260--- a/.semaphore/semaphore-runner.sh
1261+++ b/.semaphore/semaphore-runner.sh
1262@@ -1,54 +1,65 @@
1263-#!/bin/bash
1264+#!/usr/bin/env bash
1265+# SPDX-License-Identifier: LGPL-2.1-or-later
1266
1267 set -eux
1268+set -o pipefail
1269
1270 # default to Debian testing
1271-DISTRO=${DISTRO:-debian}
1272-RELEASE=${RELEASE:-bullseye}
1273-BRANCH=${BRANCH:-upstream-ci}
1274-ARCH=${ARCH:-amd64}
1275-CONTAINER=${RELEASE}-${ARCH}
1276-CACHE_DIR=${SEMAPHORE_CACHE_DIR:=/tmp}
1277+DISTRO="${DISTRO:-debian}"
1278+RELEASE="${RELEASE:-bullseye}"
1279+BRANCH="${BRANCH:-upstream-ci}"
1280+ARCH="${ARCH:-amd64}"
1281+CONTAINER="${RELEASE}-${ARCH}"
1282+CACHE_DIR="${SEMAPHORE_CACHE_DIR:-/tmp}"
1283 AUTOPKGTEST_DIR="${CACHE_DIR}/autopkgtest"
1284 # semaphore cannot expose these, but useful for interactive/local runs
1285 ARTIFACTS_DIR=/tmp/artifacts
1286+# shellcheck disable=SC2206
1287 PHASES=(${@:-SETUP RUN})
1288 UBUNTU_RELEASE="$(lsb_release -cs)"
1289
1290 create_container() {
1291 # Create autopkgtest LXC image; this sometimes fails with "Unable to fetch
1292 # GPG key from keyserver", so retry a few times with different keyservers.
1293- for keyserver in "" "keys.gnupg.net" "keys.openpgp.org" "keyserver.ubuntu.com"; do
1294+ for keyserver in "keys.openpgp.org" "" "keyserver.ubuntu.com" "keys.gnupg.net"; do
1295 for retry in {1..5}; do
1296- sudo lxc-create -n $CONTAINER -t download -- -d $DISTRO -r $RELEASE -a $ARCH ${keyserver:+--keyserver "$keyserver"} && break 2
1297+ sudo lxc-create -n "$CONTAINER" -t download -- -d "$DISTRO" -r "$RELEASE" -a "$ARCH" ${keyserver:+--keyserver "$keyserver"} && break 2
1298 sleep $((retry*retry))
1299 done
1300 done
1301
1302 # unconfine the container, otherwise some tests fail
1303- echo 'lxc.apparmor.profile = unconfined' | sudo tee -a /var/lib/lxc/$CONTAINER/config
1304+ echo 'lxc.apparmor.profile = unconfined' | sudo tee -a "/var/lib/lxc/$CONTAINER/config"
1305
1306- sudo lxc-start -n $CONTAINER
1307+ sudo lxc-start -n "$CONTAINER"
1308
1309 # enable source repositories so that apt-get build-dep works
1310- sudo lxc-attach -n $CONTAINER -- sh -ex <<EOF
1311+ sudo lxc-attach -n "$CONTAINER" -- sh -ex <<EOF
1312 sed 's/^deb/deb-src/' /etc/apt/sources.list >> /etc/apt/sources.list.d/sources.list
1313-# wait until online
1314-while [ -z "\$(ip route list 0/0)" ]; do sleep 1; done
1315+# We might attach the console too soon
1316+while ! systemctl --quiet --wait is-system-running; do sleep 1; done
1317+# Manpages database trigger takes a lot of time and is not useful in a CI
1318+echo 'man-db man-db/auto-update boolean false' | debconf-set-selections
1319+# Speed up dpkg, image is thrown away after the test
1320+mkdir -p /etc/dpkg/dpkg.cfg.d/
1321+echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/unsafe_io
1322+# For some reason, it is necessary to run this manually or the interface won't be configured
1323+# Note that we avoid networkd, as some of the tests will break it later on
1324+dhclient
1325 apt-get -q --allow-releaseinfo-change update
1326 apt-get -y dist-upgrade
1327 apt-get install -y eatmydata
1328 # The following four are needed as long as these deps are not covered by Debian's own packaging
1329-apt-get install -y fdisk tree libfdisk-dev libp11-kit-dev libssl-dev libpwquality-dev
1330+apt-get install -y fdisk tree libfdisk-dev libp11-kit-dev libssl-dev libpwquality-dev rpm
1331 apt-get purge --auto-remove -y unattended-upgrades
1332 systemctl unmask systemd-networkd
1333 systemctl enable systemd-networkd
1334 EOF
1335- sudo lxc-stop -n $CONTAINER
1336+ sudo lxc-stop -n "$CONTAINER"
1337 }
1338
1339 for phase in "${PHASES[@]}"; do
1340- case $phase in
1341+ case "$phase" in
1342 SETUP)
1343 # remove semaphore repos, some of them don't work and cause error messages
1344 sudo rm -f /etc/apt/sources.list.d/*
1345@@ -59,17 +70,17 @@ for phase in "${PHASES[@]}"; do
1346 sudo apt-get install -y -t "$UBUNTU_RELEASE-backports" lxc
1347 sudo apt-get install -y python3-debian git dpkg-dev fakeroot python3-jinja2
1348
1349- [ -d $AUTOPKGTEST_DIR ] || git clone --quiet --depth=1 https://salsa.debian.org/ci-team/autopkgtest.git "$AUTOPKGTEST_DIR"
1350+ [ -d "$AUTOPKGTEST_DIR" ] || git clone --quiet --depth=1 https://salsa.debian.org/ci-team/autopkgtest.git "$AUTOPKGTEST_DIR"
1351
1352 create_container
1353 ;;
1354 RUN)
1355 # add current debian/ packaging
1356- git fetch --depth=1 https://salsa.debian.org/systemd-team/systemd.git $BRANCH
1357+ git fetch --depth=1 https://salsa.debian.org/systemd-team/systemd.git "$BRANCH"
1358 git checkout FETCH_HEAD debian
1359
1360 # craft changelog
1361- UPSTREAM_VER=$(git describe | sed 's/^v//;s/-/./g')
1362+ UPSTREAM_VER="$(git describe | sed 's/^v//;s/-/./g')"
1363 cat << EOF > debian/changelog.new
1364 systemd (${UPSTREAM_VER}.0) UNRELEASED; urgency=low
1365
1366@@ -78,7 +89,7 @@ systemd (${UPSTREAM_VER}.0) UNRELEASED; urgency=low
1367 -- systemd test <pkg-systemd-maintainers@lists.alioth.debian.org> $(date -R)
1368
1369 EOF
1370- cat debian/changelog >> debian/changelog.new
1371+ cat debian/changelog >>debian/changelog.new
1372 mv debian/changelog.new debian/changelog
1373
1374 # clean out patches
1375@@ -91,15 +102,15 @@ EOF
1376 echo '1.0' > debian/source/format
1377
1378 # build source package
1379- dpkg-buildpackage -S -I -I$(basename "$CACHE_DIR") -d -us -uc -nc
1380+ dpkg-buildpackage -S -I -I"$(basename "$CACHE_DIR")" -d -us -uc -nc
1381
1382 # now build the package and run the tests
1383 rm -rf "$ARTIFACTS_DIR"
1384 # autopkgtest exits with 2 for "some tests skipped", accept that
1385- $AUTOPKGTEST_DIR/runner/autopkgtest --env DEB_BUILD_OPTIONS=noudeb \
1386- --env TEST_UPSTREAM=1 ../systemd_*.dsc \
1387- -o "$ARTIFACTS_DIR" \
1388- -- lxc -s $CONTAINER \
1389+ "$AUTOPKGTEST_DIR/runner/autopkgtest" --env DEB_BUILD_OPTIONS=noudeb \
1390+ --env TEST_UPSTREAM=1 ../systemd_*.dsc \
1391+ -o "$ARTIFACTS_DIR" \
1392+ -- lxc -s "$CONTAINER" \
1393 || [ $? -eq 2 ]
1394 ;;
1395 *)
1396diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml
1397index 7fc38a5..0774233 100644
1398--- a/.semaphore/semaphore.yml
1399+++ b/.semaphore/semaphore.yml
1400@@ -1,4 +1,5 @@
1401 ---
1402+# SPDX-License-Identifier: LGPL-2.1-or-later
1403 # vi: ts=2 sw=2 et:
1404
1405 version: v1.0
1406@@ -6,7 +7,7 @@ name: Debian autopkgtest (LXC)
1407 agent:
1408 machine:
1409 type: e1-standard-2
1410- os_image: ubuntu1804
1411+ os_image: ubuntu2004
1412
1413 # Cancel any running or queued job for the same ref
1414 auto_cancel:
1415@@ -25,8 +26,3 @@ blocks:
1416 - checkout --use-cache
1417 - .semaphore/semaphore-runner.sh SETUP
1418 - .semaphore/semaphore-runner.sh RUN
1419- env_vars:
1420- # Pin the debian systemd repo to a specific revision, to work around
1421- # missing systemd/systemd#20056 in pre-v250 stable branches
1422- - name: BRANCH
1423- value: e138f8573a14f8f094bd6c9582bc26ed62c1347f
1424diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt
1425new file mode 100644
1426index 0000000..b0e20f5
1427--- /dev/null
1428+++ b/LICENSES/BSD-2-Clause.txt
1429@@ -0,0 +1,9 @@
1430+Copyright (c) <year> <owner> All rights reserved.
1431+
1432+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1433+
1434+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
1435+
1436+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
1437+
1438+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1439diff --git a/LICENSES/BSD-3-Clause.txt b/LICENSES/BSD-3-Clause.txt
1440new file mode 100644
1441index 0000000..b9e779f
1442--- /dev/null
1443+++ b/LICENSES/BSD-3-Clause.txt
1444@@ -0,0 +1,27 @@
1445+// Copyright 2014 The Chromium OS Authors. All rights reserved.
1446+//
1447+// Redistribution and use in source and binary forms, with or without
1448+// modification, are permitted provided that the following conditions are
1449+// met:
1450+//
1451+// * Redistributions of source code must retain the above copyright
1452+// notice, this list of conditions and the following disclaimer.
1453+// * Redistributions in binary form must reproduce the above
1454+// copyright notice, this list of conditions and the following disclaimer
1455+// in the documentation and/or other materials provided with the
1456+// distribution.
1457+// * Neither the name of Google Inc. nor the names of its
1458+// contributors may be used to endorse or promote products derived from
1459+// this software without specific prior written permission.
1460+//
1461+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1462+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1463+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1464+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1465+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1466+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1467+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1468+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1469+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1470+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1471+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1472diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
1473new file mode 100644
1474index 0000000..0e259d4
1475--- /dev/null
1476+++ b/LICENSES/CC0-1.0.txt
1477@@ -0,0 +1,121 @@
1478+Creative Commons Legal Code
1479+
1480+CC0 1.0 Universal
1481+
1482+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
1483+ LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
1484+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
1485+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
1486+ REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
1487+ PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
1488+ THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
1489+ HEREUNDER.
1490+
1491+Statement of Purpose
1492+
1493+The laws of most jurisdictions throughout the world automatically confer
1494+exclusive Copyright and Related Rights (defined below) upon the creator
1495+and subsequent owner(s) (each and all, an "owner") of an original work of
1496+authorship and/or a database (each, a "Work").
1497+
1498+Certain owners wish to permanently relinquish those rights to a Work for
1499+the purpose of contributing to a commons of creative, cultural and
1500+scientific works ("Commons") that the public can reliably and without fear
1501+of later claims of infringement build upon, modify, incorporate in other
1502+works, reuse and redistribute as freely as possible in any form whatsoever
1503+and for any purposes, including without limitation commercial purposes.
1504+These owners may contribute to the Commons to promote the ideal of a free
1505+culture and the further production of creative, cultural and scientific
1506+works, or to gain reputation or greater distribution for their Work in
1507+part through the use and efforts of others.
1508+
1509+For these and/or other purposes and motivations, and without any
1510+expectation of additional consideration or compensation, the person
1511+associating CC0 with a Work (the "Affirmer"), to the extent that he or she
1512+is an owner of Copyright and Related Rights in the Work, voluntarily
1513+elects to apply CC0 to the Work and publicly distribute the Work under its
1514+terms, with knowledge of his or her Copyright and Related Rights in the
1515+Work and the meaning and intended legal effect of CC0 on those rights.
1516+
1517+1. Copyright and Related Rights. A Work made available under CC0 may be
1518+protected by copyright and related or neighboring rights ("Copyright and
1519+Related Rights"). Copyright and Related Rights include, but are not
1520+limited to, the following:
1521+
1522+ i. the right to reproduce, adapt, distribute, perform, display,
1523+ communicate, and translate a Work;
1524+ ii. moral rights retained by the original author(s) and/or performer(s);
1525+iii. publicity and privacy rights pertaining to a person's image or
1526+ likeness depicted in a Work;
1527+ iv. rights protecting against unfair competition in regards to a Work,
1528+ subject to the limitations in paragraph 4(a), below;
1529+ v. rights protecting the extraction, dissemination, use and reuse of data
1530+ in a Work;
1531+ vi. database rights (such as those arising under Directive 96/9/EC of the
1532+ European Parliament and of the Council of 11 March 1996 on the legal
1533+ protection of databases, and under any national implementation
1534+ thereof, including any amended or successor version of such
1535+ directive); and
1536+vii. other similar, equivalent or corresponding rights throughout the
1537+ world based on applicable law or treaty, and any national
1538+ implementations thereof.
1539+
1540+2. Waiver. To the greatest extent permitted by, but not in contravention
1541+of, applicable law, Affirmer hereby overtly, fully, permanently,
1542+irrevocably and unconditionally waives, abandons, and surrenders all of
1543+Affirmer's Copyright and Related Rights and associated claims and causes
1544+of action, whether now known or unknown (including existing as well as
1545+future claims and causes of action), in the Work (i) in all territories
1546+worldwide, (ii) for the maximum duration provided by applicable law or
1547+treaty (including future time extensions), (iii) in any current or future
1548+medium and for any number of copies, and (iv) for any purpose whatsoever,
1549+including without limitation commercial, advertising or promotional
1550+purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
1551+member of the public at large and to the detriment of Affirmer's heirs and
1552+successors, fully intending that such Waiver shall not be subject to
1553+revocation, rescission, cancellation, termination, or any other legal or
1554+equitable action to disrupt the quiet enjoyment of the Work by the public
1555+as contemplated by Affirmer's express Statement of Purpose.
1556+
1557+3. Public License Fallback. Should any part of the Waiver for any reason
1558+be judged legally invalid or ineffective under applicable law, then the
1559+Waiver shall be preserved to the maximum extent permitted taking into
1560+account Affirmer's express Statement of Purpose. In addition, to the
1561+extent the Waiver is so judged Affirmer hereby grants to each affected
1562+person a royalty-free, non transferable, non sublicensable, non exclusive,
1563+irrevocable and unconditional license to exercise Affirmer's Copyright and
1564+Related Rights in the Work (i) in all territories worldwide, (ii) for the
1565+maximum duration provided by applicable law or treaty (including future
1566+time extensions), (iii) in any current or future medium and for any number
1567+of copies, and (iv) for any purpose whatsoever, including without
1568+limitation commercial, advertising or promotional purposes (the
1569+"License"). The License shall be deemed effective as of the date CC0 was
1570+applied by Affirmer to the Work. Should any part of the License for any
1571+reason be judged legally invalid or ineffective under applicable law, such
1572+partial invalidity or ineffectiveness shall not invalidate the remainder
1573+of the License, and in such case Affirmer hereby affirms that he or she
1574+will not (i) exercise any of his or her remaining Copyright and Related
1575+Rights in the Work or (ii) assert any associated claims and causes of
1576+action with respect to the Work, in either case contrary to Affirmer's
1577+express Statement of Purpose.
1578+
1579+4. Limitations and Disclaimers.
1580+
1581+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
1582+ surrendered, licensed or otherwise affected by this document.
1583+ b. Affirmer offers the Work as-is and makes no representations or
1584+ warranties of any kind concerning the Work, express, implied,
1585+ statutory or otherwise, including without limitation warranties of
1586+ title, merchantability, fitness for a particular purpose, non
1587+ infringement, or the absence of latent or other defects, accuracy, or
1588+ the present or absence of errors, whether or not discoverable, all to
1589+ the greatest extent permissible under applicable law.
1590+ c. Affirmer disclaims responsibility for clearing rights of other persons
1591+ that may apply to the Work or any use thereof, including without
1592+ limitation any person's Copyright and Related Rights in the Work.
1593+ Further, Affirmer disclaims responsibility for obtaining any necessary
1594+ consents, permissions or other rights required for any use of the
1595+ Work.
1596+ d. Affirmer understands and acknowledges that Creative Commons is not a
1597+ party to this document and has no duty or obligation with respect to
1598+ this CC0 or use of the Work.
1599diff --git a/LICENSES/LGPL-2.0-or-later.txt b/LICENSES/LGPL-2.0-or-later.txt
1600new file mode 100644
1601index 0000000..eb3a4cd
1602--- /dev/null
1603+++ b/LICENSES/LGPL-2.0-or-later.txt
1604@@ -0,0 +1,174 @@
1605+GNU LIBRARY GENERAL PUBLIC LICENSE
1606+
1607+Version 2, June 1991
1608+
1609+Copyright (C) 1991 Free Software Foundation, Inc.
1610+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
1611+
1612+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
1613+
1614+[This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.]
1615+
1616+Preamble
1617+
1618+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
1619+
1620+This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too.
1621+
1622+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
1623+
1624+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it.
1625+
1626+For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights.
1627+
1628+Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library.
1629+
1630+Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations.
1631+
1632+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
1633+
1634+Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license.
1635+
1636+The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such.
1637+
1638+Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better.
1639+
1640+However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries.
1641+
1642+The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library.
1643+
1644+Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one.
1645+
1646+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
1647+
1648+0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you".
1649+
1650+A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
1651+
1652+The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
1653+
1654+"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
1655+
1656+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
1657+
1658+1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
1659+
1660+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
1661+
1662+2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
1663+
1664+ a) The modified work must itself be a software library.
1665+
1666+ b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
1667+
1668+ c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
1669+
1670+ d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.
1671+
1672+(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
1673+
1674+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
1675+
1676+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
1677+
1678+In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
1679+
1680+3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.
1681+
1682+Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
1683+
1684+This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
1685+
1686+4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
1687+
1688+If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
1689+
1690+5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
1691+
1692+However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
1693+
1694+When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
1695+
1696+If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
1697+
1698+Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
1699+
1700+6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.
1701+
1702+You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
1703+
1704+ a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)
1705+
1706+ b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.
1707+
1708+ c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
1709+
1710+ d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
1711+
1712+For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
1713+
1714+It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
1715+
1716+7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
1717+
1718+ a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.
1719+
1720+ b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
1721+
1722+8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
1723+
1724+9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
1725+
1726+10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
1727+
1728+11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.
1729+
1730+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
1731+
1732+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
1733+
1734+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
1735+
1736+12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
1737+
1738+13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
1739+
1740+Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
1741+
1742+14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
1743+
1744+NO WARRANTY
1745+
1746+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
1747+
1748+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
1749+
1750+END OF TERMS AND CONDITIONS
1751+
1752+How to Apply These Terms to Your New Libraries
1753+
1754+If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).
1755+
1756+To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
1757+
1758+ one line to give the library's name and an idea of what it does.
1759+ Copyright (C) year name of author
1760+
1761+ This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
1762+
1763+ This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
1764+
1765+ You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
1766+
1767+Also add information on how to contact you by electronic and paper mail.
1768+
1769+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:
1770+
1771+Yoyodyne, Inc., hereby disclaims all copyright interest in
1772+the library `Frob' (a library for tweaking knobs) written
1773+by James Random Hacker.
1774+
1775+signature of Ty Coon, 1 April 1990
1776+Ty Coon, President of Vice
1777+
1778+That's all there is to it!
1779diff --git a/LICENSES/Linux-syscall-note.txt b/LICENSES/Linux-syscall-note.txt
1780new file mode 100644
1781index 0000000..fcd0563
1782--- /dev/null
1783+++ b/LICENSES/Linux-syscall-note.txt
1784@@ -0,0 +1,12 @@
1785+ NOTE! This copyright does *not* cover user programs that use kernel
1786+ services by normal system calls - this is merely considered normal use
1787+ of the kernel, and does *not* fall under the heading of "derived work".
1788+ Also note that the GPL below is copyrighted by the Free Software
1789+ Foundation, but the instance of code that it refers to (the Linux
1790+ kernel) is copyrighted by me and others who actually wrote it.
1791+
1792+ Also note that the only valid version of the GPL as far as the kernel
1793+ is concerned is _this_ particular version of the license (ie v2, not
1794+ v2.2 or v3.x or whatever), unless explicitly otherwise stated.
1795+
1796+ Linus Torvalds
1797diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt
1798new file mode 100644
1799index 0000000..2071b23
1800--- /dev/null
1801+++ b/LICENSES/MIT.txt
1802@@ -0,0 +1,9 @@
1803+MIT License
1804+
1805+Copyright (c) <year> <copyright holders>
1806+
1807+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
1808+
1809+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1810+
1811+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1812diff --git a/LICENSES/OFL-1.1.txt b/LICENSES/OFL-1.1.txt
1813new file mode 100644
1814index 0000000..33f3666
1815--- /dev/null
1816+++ b/LICENSES/OFL-1.1.txt
1817@@ -0,0 +1,97 @@
1818+Copyright (c) <dates>, <Copyright Holder> (<URL|email>),
1819+with Reserved Font Name <Reserved Font Name>.
1820+Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>),
1821+with Reserved Font Name <additional Reserved Font Name>.
1822+Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>).
1823+
1824+This Font Software is licensed under the SIL Open Font License, Version 1.1.
1825+This license is copied below, and is also available with a FAQ at:
1826+http://scripts.sil.org/OFL
1827+
1828+
1829+-----------------------------------------------------------
1830+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
1831+-----------------------------------------------------------
1832+
1833+PREAMBLE
1834+The goals of the Open Font License (OFL) are to stimulate worldwide
1835+development of collaborative font projects, to support the font creation
1836+efforts of academic and linguistic communities, and to provide a free and
1837+open framework in which fonts may be shared and improved in partnership
1838+with others.
1839+
1840+The OFL allows the licensed fonts to be used, studied, modified and
1841+redistributed freely as long as they are not sold by themselves. The
1842+fonts, including any derivative works, can be bundled, embedded,
1843+redistributed and/or sold with any software provided that any reserved
1844+names are not used by derivative works. The fonts and derivatives,
1845+however, cannot be released under any other type of license. The
1846+requirement for fonts to remain under this license does not apply
1847+to any document created using the fonts or their derivatives.
1848+
1849+DEFINITIONS
1850+"Font Software" refers to the set of files released by the Copyright
1851+Holder(s) under this license and clearly marked as such. This may
1852+include source files, build scripts and documentation.
1853+
1854+"Reserved Font Name" refers to any names specified as such after the
1855+copyright statement(s).
1856+
1857+"Original Version" refers to the collection of Font Software components as
1858+distributed by the Copyright Holder(s).
1859+
1860+"Modified Version" refers to any derivative made by adding to, deleting,
1861+or substituting -- in part or in whole -- any of the components of the
1862+Original Version, by changing formats or by porting the Font Software to a
1863+new environment.
1864+
1865+"Author" refers to any designer, engineer, programmer, technical
1866+writer or other person who contributed to the Font Software.
1867+
1868+PERMISSION & CONDITIONS
1869+Permission is hereby granted, free of charge, to any person obtaining
1870+a copy of the Font Software, to use, study, copy, merge, embed, modify,
1871+redistribute, and sell modified and unmodified copies of the Font
1872+Software, subject to the following conditions:
1873+
1874+1) Neither the Font Software nor any of its individual components,
1875+in Original or Modified Versions, may be sold by itself.
1876+
1877+2) Original or Modified Versions of the Font Software may be bundled,
1878+redistributed and/or sold with any software, provided that each copy
1879+contains the above copyright notice and this license. These can be
1880+included either as stand-alone text files, human-readable headers or
1881+in the appropriate machine-readable metadata fields within text or
1882+binary files as long as those fields can be easily viewed by the user.
1883+
1884+3) No Modified Version of the Font Software may use the Reserved Font
1885+Name(s) unless explicit written permission is granted by the corresponding
1886+Copyright Holder. This restriction only applies to the primary font name as
1887+presented to the users.
1888+
1889+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
1890+Software shall not be used to promote, endorse or advertise any
1891+Modified Version, except to acknowledge the contribution(s) of the
1892+Copyright Holder(s) and the Author(s) or with their explicit written
1893+permission.
1894+
1895+5) The Font Software, modified or unmodified, in part or in whole,
1896+must be distributed entirely under this license, and must not be
1897+distributed under any other license. The requirement for fonts to
1898+remain under this license does not apply to any document created
1899+using the Font Software.
1900+
1901+TERMINATION
1902+This license becomes null and void if any of the above conditions are
1903+not met.
1904+
1905+DISCLAIMER
1906+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1907+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
1908+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
1909+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
1910+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
1911+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
1912+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1913+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
1914+OTHER DEALINGS IN THE FONT SOFTWARE.
1915diff --git a/LICENSES/README.md b/LICENSES/README.md
1916new file mode 100644
1917index 0000000..69ef2d6
1918--- /dev/null
1919+++ b/LICENSES/README.md
1920@@ -0,0 +1,67 @@
1921+# systemd Project Licensing
1922+
1923+## Main License
1924+
1925+The systemd project uses single-line references to Unique License Identifiers as
1926+defined by the Linux Foundation's SPDX project (https://spdx.org/). The line in
1927+each individual source file identifies the license applicable to that file.
1928+
1929+The current set of valid, predefined SPDX identifiers can be found on the SPDX
1930+License List at https://spdx.org/licenses/.
1931+
1932+The 'LICENSES/' directory contains all the licenses used by the sources included in
1933+the systemd project source tree.
1934+
1935+Unless otherwise noted, the systemd project sources are licensed under the terms
1936+and conditions of the **GNU Lesser General Public License v2.1 or later**.
1937+
1938+New sources that cannot be distributed under LGPL-2.1-or-later will no longer
1939+be accepted for inclusion in the systemd project to maintain license uniformity.
1940+
1941+## Other Licenses
1942+
1943+The following exceptions apply:
1944+
1945+ * some udev sources under src/udev/ are licensed under **GPL-2.0-or-later**, so the
1946+ udev binaries as a whole are also distributed under **GPL-2.0-or-later**.
1947+ * the header files contained in src/basic/linux/ and src/shared/linux/ are copied
1948+ verbatim from the Linux kernel source tree and are licensed under **GPL-2.0 WITH
1949+ Linux-syscall-note** and are used within the scope of the Linux-syscall-note
1950+ exception provisions
1951+ * the src/shared/initreq.h header is licensed under original license,
1952+ **LGPL-2.0-or-later**.
1953+ * the src/shared/linux/bpf_insn.h header is copied from the Linux kernel
1954+ source tree and is licensed under either **BSD-2-Clause** or **GPL-2.0-only**,
1955+ and thus is included in the systemd build under the BSD-2-Clause license.
1956+ * The src/basic/linux/wireguard.h header is copied from the Linux kernel
1957+ source tree and is licensed under either **MIT** or **GPL-2.0 WITH Linux-syscall-note**,
1958+ and thus is included in the systemd build under the MIT license.
1959+ * the following sources are licensed under the **MIT** license (in case of our
1960+ scripts, to facilitate copying and reuse of those helpers to other projects):
1961+ - hwdb.d/parse_hwdb.py
1962+ - src/basic/linux/batman_adv.h
1963+ - src/basic/sparse-endian.h
1964+ - tools/catalog-report.py
1965+ * the following sources are licensed under the **CC0-1.0** license:
1966+ - src/basic/siphash24.c
1967+ - src/basic/siphash24.h
1968+ - src/systemctl/systemd-sysv-install.SKELETON
1969+ - tools/check-includes.pl
1970+ - all examples under man/
1971+ - config files and examples under /network
1972+ * the following sources are under **Public Domain** (LicenseRef-murmurhash2-public-domain):
1973+ - src/basic/MurmurHash2.c
1974+ - src/basic/MurmurHash2.h
1975+ * the following sources are under **Public Domain** (LicenseRef-lookup3-public-domain):
1976+ - src/libsystemd/sd-journal/lookup3.c
1977+ - src/libsystemd/sd-journal/lookup3.h
1978+ * the tools/chromiumos/gen_autosuspend_rules.py script is licensed under the
1979+ **BSD-3-Clause** license.
1980+ * Heebo fonts under docs/fonts/ are licensed under the **SIL Open Font License 1.1**,
1981+ * any files under test/ without an explicit license we assume non-copyrightable
1982+ (eg: computer-generated fuzzer data)
1983+
1984+## OpenSSL Notes
1985+
1986+Note that building the systemd project with OpenSSL does not affect the libsystemd.so
1987+shared library, which is not linked with the OpenSSL library.
1988diff --git a/LICENSES/lookup3-public-domain.txt b/LICENSES/lookup3-public-domain.txt
1989new file mode 100644
1990index 0000000..5eb8cd6
1991--- /dev/null
1992+++ b/LICENSES/lookup3-public-domain.txt
1993@@ -0,0 +1 @@
1994+lookup3.c, by Bob Jenkins, May 2006, Public Domain.
1995diff --git a/LICENSES/murmurhash2-public-domain.txt b/LICENSES/murmurhash2-public-domain.txt
1996new file mode 100644
1997index 0000000..c9b70e7
1998--- /dev/null
1999+++ b/LICENSES/murmurhash2-public-domain.txt
2000@@ -0,0 +1,2 @@
2001+MurmurHash2 was written by Austin Appleby, and is placed in the public
2002+domain. The author hereby disclaims copyright to this source code.
2003diff --git a/NEWS b/NEWS
2004index da5e6f8..5fc0033 100644
2005--- a/NEWS
2006+++ b/NEWS
2007@@ -1,5 +1,1467 @@
2008 systemd System and Service Manager
2009
2010+CHANGES WITH 251:
2011+
2012+ Backwards-incompatible changes:
2013+
2014+ * The minimum kernel version required has been bumped from 3.13 to 4.15,
2015+ and CLOCK_BOOTTIME is now assumed to always exist.
2016+
2017+ * C11 with GNU extensions (aka "gnu11") is now used to build our
2018+ components. Public API headers are still restricted to ISO C89.
2019+
2020+ * In v250, a systemd-networkd feature that automatically configures
2021+ routes to addresses specified in AllowedIPs= was added and enabled by
2022+ default. However, this causes network connectivity issues in many
2023+ existing setups. Hence, it has been disabled by default since
2024+ systemd-stable 250.3. The feature can still be used by explicitly
2025+ configuring RouteTable= setting in .netdev files.
2026+
2027+ * Jobs started via StartUnitWithFlags() will no longer return 'skipped'
2028+ when a Condition*= check does not succeed, restoring the JobRemoved
2029+ signal to the behaviour it had before v250.
2030+
2031+ * The org.freedesktop.portable1 methods GetMetadataWithExtensions() and
2032+ GetImageMetadataWithExtensions() have been fixed to provide an extra
2033+ return parameter, containing the actual extension release metadata.
2034+ The current implementation was judged to be broken and unusable, and
2035+ thus the usual procedure of adding a new set of methods was skipped,
2036+ and backward compatibility broken instead on the assumption that
2037+ nobody can be affected given the current state of this interface.
2038+
2039+ * All kernels supported by systemd mix RDRAND (or similar) into the
2040+ entropy pool at early boot. This means that on those systems, even if
2041+ /dev/urandom is not yet initialized, it still returns bytes that that
2042+ are at least as high quality as RDRAND. For that reason, we no longer
2043+ have reason to invoke RDRAND from systemd itself, which has
2044+ historically been a source of bugs. Furthermore, kernels ≥5.6 provide
2045+ the getrandom(GRND_INSECURE) interface for returning random bytes
2046+ before the entropy pool is initialized without warning into kmsg,
2047+ which is what we attempt to use if available. systemd's direct usage
2048+ of RDRAND has been removed. x86 systems ≥Broadwell that are running
2049+ an older kernel may experience kmsg warnings that were not seen with
2050+ 250. For newer kernels, non-x86 systems, or older x86 systems, there
2051+ should be no visible changes.
2052+
2053+ * sd-boot will now measure the kernel command line into TPM PCR 12
2054+ rather than PCR 8. This improves usefulness of the measurements on
2055+ systems where sd-boot is chainloaded from Grub. Grub measures all
2056+ commands its executes into PCR 8, which makes it very hard to use
2057+ reasonably, hence separate ourselves from that and use PCR 12
2058+ instead, which is what certain Ubuntu editions already do. To retain
2059+ compatibility with systems running older systemd systems a new meson
2060+ option 'efi-tpm-pcr-compat' has been added (which defaults to false).
2061+ If enabled, the measurement is done twice: into the new-style PCR 12
2062+ *and* the old-style PCR 8. It's strongly advised to migrate all users
2063+ to PCR 12 for this purpose in the long run, as we intend to remove
2064+ this compatibility feature in two year's time.
2065+
2066+ * busctl capture now writes output in the newer pcapng format instead
2067+ of pcap.
2068+
2069+ * An udev rule that imported hwdb matches for USB devices with
2070+ lowercase hexadecimal vendor/product ID digits was added in systemd
2071+ 250. This has been reverted, since uppercase hexadecimal digits are
2072+ supposed to be used, and we already had a rule that with the
2073+ appropriate match.
2074+
2075+ Users might need to adjust their local hwdb entries.
2076+
2077+ * arch_prctl(2) has been moved to the @default set in the syscall filters
2078+ (as exposed via the SystemCallFilter= setting in service unit files).
2079+ It is apparently used by the linker now.
2080+
2081+ * The tmpfiles entries that create the /run/systemd/netif directory and
2082+ its subdirectories were moved from tmpfiles.d/systemd.conf to
2083+ tmpfiles.d/systemd-network.conf.
2084+
2085+ Users might need to adjust their files that override tmpfiles.d/systemd.conf
2086+ to account for this change.
2087+
2088+ * The requirement for Portable Services images to contain a well-formed
2089+ os-release file (i.e.: contain at least an ID field) is now enforced.
2090+ This applies to base images and extensions, and also to systemd-sysext.
2091+
2092+ Changes in the Boot Loader Specification, kernel-install and sd-boot:
2093+
2094+ * kernel-install's and bootctl's Boot Loader Specification Type #1
2095+ entry generation logic has been reworked. The user may now pick
2096+ explicitly by which "token" string to name the installation's boot
2097+ entries, via the new /etc/kernel/entry-token file or the new
2098+ --entry-token= switch to bootctl. By default — as before — the
2099+ entries are named after the local machine ID. However, in "golden
2100+ image" environments, where the machine ID shall be initialized on
2101+ first boot (as opposed to at installation time before first boot) the
2102+ machine ID will not be available at build time. In this case the
2103+ --entry-token= switch to bootctl (or the /etc/kernel/entry-token
2104+ file) may be used to override the "token" for the entries, for
2105+ example the IMAGE_ID= or ID= fields from /etc/os-release. This will
2106+ make the OS images independent of any machine ID, and ensure that the
2107+ images will not carry any identifiable information before first boot,
2108+ but on the other hand means that multiple parallel installations of
2109+ the very same image on the same disk cannot be supported.
2110+
2111+ Summary: if you are building golden images that shall acquire
2112+ identity information exclusively on first boot, make sure to both
2113+ remove /etc/machine-id *and* to write /etc/kernel/entry-token to the
2114+ value of the IMAGE_ID= or ID= field of /etc/os-release or another
2115+ suitable identifier before deploying the image.
2116+
2117+ * The Boot Loader Specification has been extended with
2118+ /loader/entries.srel file located in the EFI System Partition (ESP)
2119+ that disambiguates the format of the entries in the /loader/entries/
2120+ directory (in order to discern them from incompatible uses of this
2121+ directory by other projects). For entries that follow the
2122+ Specification, the string "type1" is stored in this file.
2123+
2124+ bootctl will now write this file automatically when installing the
2125+ systemd-boot boot loader.
2126+
2127+ * kernel-install supports a new initrd_generator= setting in
2128+ /etc/kernel/install.conf, that is exported as
2129+ $KERNEL_INSTALL_INITRD_GENERATOR to kernel-install plugins. This
2130+ allows choosing different initrd generators.
2131+
2132+ * kernel-install will now create a "staging area" (an initially-empty
2133+ directory to gather files for a Boot Loader Specification Type #1
2134+ entry). The path to this directory is exported as
2135+ $KERNEL_INSTALL_STAGING_AREA to kernel-install plugins, which should
2136+ drop files there instead of writing them directly to the final
2137+ location. kernel-install will move them when all files have been
2138+ prepared successfully.
2139+
2140+ * New option sort-key= has been added to the Boot Loader Specification
2141+ to override the sorting order of the entries in the boot menu. It is
2142+ read by sd-boot and bootctl, and will be written by kernel-install,
2143+ with the default value of IMAGE_ID= or ID= fields from
2144+ os-release. Together, this means that on multiboot installations,
2145+ entries should be grouped and sorted in a predictable way.
2146+
2147+ * The sort order of boot entries has been updated: entries which have
2148+ the new field sort-key= are sorted by it first, and all entries
2149+ without it are ordered later. After that, entries are sorted by
2150+ version so that newest entries are towards the beginning of the list.
2151+
2152+ * The kernel-install tool gained a new 'inspect' verb which shows the
2153+ paths and other settings used.
2154+
2155+ * sd-boot can now optionally beep when the menu is shown and menu
2156+ entries are selected, which can be useful on machines without a
2157+ working display. (Controllable via a loader.conf setting.)
2158+
2159+ * The --make-machine-id-directory= switch to bootctl has been replaced
2160+ by --make-entry-directory=, given that the entry directory is not
2161+ necessarily named after the machine ID, but after some other suitable
2162+ ID as selected via --entry-token= described above. The old name of
2163+ the option is still understood to maximize compatibility.
2164+
2165+ * 'bootctl list' gained support for a new --json= switch to output boot
2166+ menu entries in JSON format.
2167+
2168+ * 'bootctl is-installed' now supports the --graceful, and various verbs
2169+ omit output with the new option --quiet.
2170+
2171+ Changes in systemd-homed:
2172+
2173+ * Starting with v250 systemd-homed uses UID/GID mapping on the mounts
2174+ of activated home directories it manages (if the kernel and selected
2175+ file systems support it). So far it mapped three UID ranges: the
2176+ range from 0…60000, the user's own UID, and the range 60514…65534,
2177+ leaving everything else unmapped (in other words, the 16bit UID range
2178+ is mapped almost fully, with the exception of the UID subrange used
2179+ for systemd-homed users, with one exception: the user's own UID).
2180+ Unmapped UIDs may not be used for file ownership in the home
2181+ directory — any chown() attempts with them will fail. With this
2182+ release a fourth range is added to these mappings:
2183+ 524288…1879048191. This range is the UID range intended for container
2184+ uses, see:
2185+
2186+ https://systemd.io/UIDS-GIDS
2187+
2188+ This range may be used for container managers that place container OS
2189+ trees in the home directory (which is a questionable approach, for
2190+ quota, permission, SUID handling and network file system
2191+ compatibility reasons, but nonetheless apparently commonplace). Note
2192+ that this mapping is mapped 1:1 in a pass-through fashion, i.e. the
2193+ UID assignments from the range are not managed or mapped by
2194+ `systemd-homed`, and must be managed with other mechanisms, in the
2195+ context of the local system.
2196+
2197+ Typically, a better approach to user namespacing in relevant
2198+ container managers would be to leave container OS trees on disk at
2199+ UID offset 0, but then map them to a dynamically allocated runtime
2200+ UID range via another UID mount map at container invocation
2201+ time. That way user namespace UID ranges become strictly a runtime
2202+ concept, and do not leak into persistent file systems, persistent
2203+ user databases or persistent configuration, thus greatly simplifying
2204+ handling, and improving compatibility with home directories intended
2205+ to be portable like the ones managed by systemd-homed.
2206+
2207+ Changes in shared libraries:
2208+
2209+ * A new libsystemd-core-<version>.so private shared library is
2210+ installed under /usr/lib/systemd/system, mirroring the existing
2211+ libsystemd-shared-<version>.so library. This allows the total
2212+ installation size to be reduced by binary code reuse.
2213+
2214+ * The <version> tag used in the name of libsystemd-shared.so and
2215+ libsystemd-core.so can be configured via the meson option
2216+ 'shared-lib-tag'. Distributions may build subsequent versions of the
2217+ systemd package with unique tags (e.g. the full package version),
2218+ thus allowing multiple installations of those shared libraries to be
2219+ available at the same time. This is intended to fix an issue where
2220+ programs that link to those libraries would fail to execute because
2221+ they were installed earlier or later than the appropriate version of
2222+ the library.
2223+
2224+ * The sd-id128 API gained a new call sd_id128_to_uuid_string() that is
2225+ similar to sd_id128_to_string() but formats the ID in RFC 4122 UUID
2226+ format instead of simple series of hex characters.
2227+
2228+ * The sd-device API gained two new calls sd_device_new_from_devname()
2229+ and sd_device_new_from_path() which permit allocating an sd_device
2230+ object from a device node name or file system path.
2231+
2232+ * sd-device also gained a new call sd_device_open() which will open the
2233+ device node associated with a device for which an sd_device object
2234+ has been allocated. The call is supposed to address races around
2235+ device nodes being removed/recycled due to hotplug events, or media
2236+ change events: the call checks internally whether the major/minor of
2237+ the device node and the "diskseq" (in case of block devices) match
2238+ with the metadata loaded in the sd_device object, thus ensuring that
2239+ the device once opened really matches the provided sd_device object.
2240+
2241+ Changes in PID1, systemctl, and systemd-oomd:
2242+
2243+ * A new set of service monitor environment variables will be passed to
2244+ OnFailure=/OnSuccess= handlers, but only if exactly one unit lists the
2245+ handler unit as OnFailure=/OnSuccess=. The variables are:
2246+ $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS,
2247+ $MONITOR_INVOCATION_ID and $MONITOR_UNIT. For cases when a single
2248+ handler needs to watch multiple units, use a templated handler.
2249+
2250+ * A new ExtensionDirectories= setting in service unit files allows
2251+ system extensions to be loaded from a directory. (It is similar to
2252+ ExtensionImages=, but takes paths to directories, instead of
2253+ disk image files.)
2254+
2255+ 'portablectl attach --extension=' now also accepts directory paths.
2256+
2257+ * The user.delegate and user.invocation_id extended attributes on
2258+ cgroups are used in addition to trusted.delegate and
2259+ trusted.invocation_id. The latter pair requires privileges to set,
2260+ but the former doesn't and can be also set by the unprivileged user
2261+ manager.
2262+
2263+ (Only supported on kernels ≥5.6.)
2264+
2265+ * Units that were killed by systemd-oomd will now have a service result
2266+ of 'oom-kill'. The number of times a service was killed is tallied
2267+ in the 'user.oomd_ooms' extended attribute.
2268+
2269+ The OOMPolicy= unit file setting is now also honoured by
2270+ systemd-oomd.
2271+
2272+ * In unit files the new %y/%Y specifiers can be used to refer to
2273+ normalized unit file path, which is particularly useful for symlinked
2274+ unit files.
2275+
2276+ The new %q specifier resolves to the pretty hostname
2277+ (i.e. PRETTY_HOSTNAME= from /etc/machine-info).
2278+
2279+ The new %d specifier resolves to the credentials directory of a
2280+ service (same as $CREDENTIALS_DIRECTORY).
2281+
2282+ * The RootDirectory=, MountAPIVFS=, ExtensionDirectories=,
2283+ *Capabilities*=, ProtectHome=, *Directory=, TemporaryFileSystem=,
2284+ PrivateTmp=, PrivateDevices=, PrivateNetwork=, NetworkNamespacePath=,
2285+ PrivateIPC=, IPCNamespacePath=, PrivateUsers=, ProtectClock=,
2286+ ProtectKernelTunables=, ProtectKernelModules=, ProtectKernelLogs=,
2287+ MountFlags= service settings now also work in unprivileged user
2288+ services, i.e. those run by the user's --user service manager, as long
2289+ as user namespaces are enabled on the system.
2290+
2291+ * Services with Restart=always and a failing ExecCondition= will no
2292+ longer be restarted, to bring ExecCondition= behaviour in line with
2293+ Condition*= settings.
2294+
2295+ * LoadCredential= now accepts a directory as the argument; all files
2296+ from the directory will be loaded as credentials.
2297+
2298+ * A new D-Bus property ControlGroupId is now exposed on service units,
2299+ that encapsulates the service's numeric cgroup ID that newer kernels
2300+ assign to each cgroup.
2301+
2302+ * PID 1 gained support for configuring the "pre-timeout" of watchdog
2303+ devices and the associated governor, via the new
2304+ RuntimeWatchdogPreSec= and RuntimeWatchdogPreGovernor= configuration
2305+ options in /etc/systemd/system.conf.
2306+
2307+ * systemctl's --timestamp= option gained a new choice "unix", to show
2308+ timestamp as unix times, i.e. seconds since 1970, Jan 1st.
2309+
2310+ * A new "taint" flag named "old-kernel" is introduced which is set when
2311+ the kernel systemd runs on is older then the current baseline version
2312+ (see above). The flag is shown in "systemctl status" output.
2313+
2314+ * Two additional taint flags "short-uid-range" and "short-gid-range"
2315+ have been added as well, which are set when systemd notices it is run
2316+ within a userns namespace that does not define the full 0…65535 UID
2317+ range
2318+
2319+ * A new "unmerged-usr" taint flag has been added that is set whenever
2320+ running on systems where /bin/ + /sbin/ are *not* symlinks to their
2321+ counterparts in /usr/, i.e. on systems where the /usr/-merge has been
2322+ completed.
2323+
2324+ * Generators invoked by PID 1 will now have a couple of useful
2325+ environment variables set describing the execution context a
2326+ bit. $SYSTEMD_SCOPE encodes whether the generator is called from the
2327+ system service manager, or from the per-user service
2328+ manager. $SYSTEMD_IN_INITRD encodes whether the generator is invoked
2329+ in initrd context or on the host. $SYSTEMD_FIRST_BOOT encodes whether
2330+ systemd considers the current boot to be a "first"
2331+ boot. $SYSTEMD_VIRTUALIZATION encode whether virtualization is
2332+ detected and which type of hypervisor/container
2333+ manager. $SYSTEMD_ARCHITECTURE indicates which architecture the
2334+ kernel is built for.
2335+
2336+ * PID 1 will now automatically pick up system credentials from qemu's
2337+ fw_cfg interface, thus allowing passing arbitrary data into VM
2338+ systems similar to how this is already supported for passing them
2339+ into `systemd-nspawn` containers. Credentials may now also be passed
2340+ in via the new kernel command line option `systemd.set_credential=`
2341+ (note that kernel command line options are world-readable during
2342+ runtime, and only useful for credentials that require no
2343+ confidentiality). The credentials that can be passed to unified
2344+ kernels that use the `systemd-stub` UEFI stub are now similarly
2345+ picked up automatically. Automatic importing of system credentials
2346+ this way can be turned off via the new
2347+ `systemd.import_credentials=no` kernel command line option.
2348+
2349+ * LoadCredential= will now automatically look for credentials in the
2350+ /etc/credstore/, /run/credstore/, /usr/lib/credstore/ directories if
2351+ the argument is not an absolute path. Similarly,
2352+ LoadCredentialEncrypted= will check the same directories plus
2353+ /etc/credstore.encrypted/, /run/credstore.encrypted/ and
2354+ /usr/lib/credstore.encrypted/. The idea is to use those directories
2355+ as the system-wide location for credentials that services should pick
2356+ up automatically.
2357+
2358+ * System and service credentials are described in great detail in a new
2359+ document:
2360+
2361+ https://systemd.io/CREDENTIALS
2362+
2363+ Changes in systemd-journald:
2364+
2365+ * The journal JSON export format has been added to listed of stable
2366+ interfaces (https://systemd.io/PORTABILITY_AND_STABILITY/).
2367+
2368+ * journalctl --list-boots now supports JSON output and the --reverse option.
2369+
2370+ * Under docs/: JOURNAL_EXPORT_FORMATS was imported from the wiki and
2371+ updated, BUILDING_IMAGES is new:
2372+
2373+ https://systemd.io/JOURNAL_EXPORT_FORMATS
2374+ https://systemd.io/BUILDING_IMAGES
2375+
2376+ Changes in udev:
2377+
2378+ * Two new hwdb files have been added. One lists "handhelds" (PDAs,
2379+ calculators, etc.), the other AV production devices (DJ tables,
2380+ keypads, etc.) that should accessible to the seat owner user by
2381+ default.
2382+
2383+ * udevadm trigger gained a new --prioritized-subsystem= option to
2384+ process certain subsystems (and all their parent devices) earlier.
2385+
2386+ systemd-udev-trigger.service now uses this new option to trigger
2387+ block and TPM devices first, hopefully making the boot a bit faster.
2388+
2389+ * udevadm trigger now implements --type=all, --initialized-match,
2390+ --initialized-nomatch to trigger both subsystems and devices, only
2391+ already-initialized devices, and only devices which haven't been
2392+ initialized yet, respectively.
2393+
2394+ * udevadm gained a new "wait" command for safely waiting for a specific
2395+ device to show up in the udev device database. This is useful in
2396+ scripts that asynchronously allocate a block device (e.g. through
2397+ repartitioning, or allocating a loopback device or similar) and need
2398+ to synchronize on the creation to complete.
2399+
2400+ * udevadm gained a new "lock" command for locking one or more block
2401+ devices while formatting it or writing a partition table to it. It is
2402+ an implementation of https://systemd.io/BLOCK_DEVICE_LOCKING and
2403+ usable in scripts dealing with block devices.
2404+
2405+ * udevadm info will show a couple of additional device fields in its
2406+ output, and will not apply a limited set of coloring to line types.
2407+
2408+ * udevadm info --tree will now show a tree of objects (i.e. devices and
2409+ suchlike) in the /sys/ hierarchy.
2410+
2411+ * Block devices will now get a new set of device symlinks in
2412+ /dev/disk/by-diskseq/<nr>, which may be used to reference block
2413+ device nodes via the kernel's "diskseq" value. Note that this does
2414+ not guarantee that opening a device by a symlink like this will
2415+ guarantee that the opened device actually matches the specified
2416+ diskseq value. To be safe against races, the actual diskseq value of
2417+ the opened device (BLKGETDISKSEQ ioctl()) must still be compred with
2418+ the one in the symlink path.
2419+
2420+ * .link files gained support for setting MDI/MID-X on a link.
2421+
2422+ * .link files gained support for [Match] Firmware= setting to match on
2423+ the device firmware description string. By mistake, it was previously
2424+ only supported in .network files.
2425+
2426+ * .link files gained support for [Link] SR-IOVVirtualFunctions= setting
2427+ and [SR-IOV] section to configure SR-IOV virtual functions.
2428+
2429+ Changes in systemd-networkd:
2430+
2431+ * The default scope for unicast routes configured through [Route]
2432+ section is changed to "link", to make the behavior consistent with
2433+ "ip route" command. The manual configuration of [Route] Scope= is
2434+ still honored.
2435+
2436+ * A new unit systemd-networkd-wait-online@<interface>.service has been
2437+ added that can be used to wait for a specific network interface to be
2438+ up.
2439+
2440+ * systemd-networkd gained a new [Bridge] Isolated=true|false setting
2441+ that configures the eponymous kernel attribute on the bridge.
2442+
2443+ * .netdev files now can be used to create virtual WLAN devices, and
2444+ configure various settings on them, via the [WLAN] section.
2445+
2446+ * .link/.network files gained support for [Match] Kind= setting to match
2447+ on device kind ("bond", "bridge", "gre", "tun", "veth", etc.)
2448+
2449+ This value is also shown by 'networkctl status'.
2450+
2451+ * The Local= setting in .netdev files for various virtual network
2452+ devices gained support for specifying, in addition to the network
2453+ address, the name of a local interface which must have the specified
2454+ address.
2455+
2456+ * systemd-networkd gained a new [Tunnel] External= setting in .netdev
2457+ files, to configure tunnels in external mode (a.k.a. collect metadata
2458+ mode).
2459+
2460+ * [Network] L2TP= setting was removed. Please use interface specifier in
2461+ Local= setting in .netdev files of corresponding L2TP interface.
2462+
2463+ * New [DHCPServer] BootServerName=, BootServerAddress=, and
2464+ BootFilename= settings can be used to configure the server address,
2465+ server name, and file name sent in the DHCP packet (e.g. to configure
2466+ PXE boot).
2467+
2468+ Changes in systemd-resolved:
2469+
2470+ * systemd-resolved is started earlier (in sysinit.target), so it
2471+ available earlier and will also be started in the initrd if installed
2472+ there.
2473+
2474+ Changes in disk encryption:
2475+
2476+ * systemd-cryptenroll can now control whether to require the user to
2477+ enter a PIN when using TPM-based unlocking of a volume via the new
2478+ --tpm2-with-pin= option.
2479+
2480+ Option tpm2-pin= can be used in /etc/crypttab.
2481+
2482+ * When unlocking devices via TPM, TPM2 parameter encryption is now
2483+ used, to ensure that communication between CPU and discrete TPM chips
2484+ cannot be eavesdropped to acquire disk encryption keys.
2485+
2486+ * A new switch --fido2-credential-algorithm= has been added to
2487+ systemd-cryptenroll allowing selection of the credential algorithm to
2488+ use when binding encryption to FIDO2 tokens.
2489+
2490+ Changes in systemd-hostnamed:
2491+
2492+ * HARDWARE_VENDOR= and HARDWARE_MODEL= can be set in /etc/machine-info
2493+ to override the values gleaned from the hwdb.
2494+
2495+ * A ID_CHASSIS property can be set in the hwdb (for the DMI device
2496+ /sys/class/dmi/id) to override the chassis that is reported by
2497+ hostnamed.
2498+
2499+ * hostnamed's D-Bus interface gained a new method GetHardwareSerial()
2500+ for reading the hardware serial number, as reportd by DMI. It also
2501+ exposes a new method D-Bus property FirmwareVersion that encode the
2502+ firmware version of the system.
2503+
2504+ Changes in other components:
2505+
2506+ * /etc/locale.conf is now populated through tmpfiles.d factory /etc/
2507+ handling with the values that were configured during systemd build
2508+ (if /etc/locale.conf has not been created through some other
2509+ mechanism). This means that /etc/locale.conf should always have
2510+ reasonable contents and we avoid a potential mismatch in defaults.
2511+
2512+ * The userdbctl tool will now show UID range information as part of the
2513+ list of known users.
2514+
2515+ * A new build-time configuration setting default-user-shell= can be
2516+ used to set the default shell for user records and nspawn shell
2517+ invocations (instead of of the default /bin/bash).
2518+
2519+ * systemd-timesyncd now provides a D-Bus API for receiving NTP server
2520+ information dynamically at runtime via IPC.
2521+
2522+ * The systemd-creds tool gained a new "has-tpm2" verb, which reports
2523+ whether a functioning TPM2 infrastructure is available, i.e. if
2524+ firmware, kernel driver and systemd all have TPM2 support enabled and
2525+ a device found.
2526+
2527+ * The systemd-creds tool gained support for generating encrypted
2528+ credentials that are using an empty encryption key. While this
2529+ provides no integrity nor confidentiality it's useful to implement
2530+ codeflows that work the same on TPM-ful and TPM2-less systems. The
2531+ service manager will only accept credentials "encrypted" that way if
2532+ a TPM2 device cannot be detected, to ensure that credentials
2533+ "encrypted" like that cannot be used to trick TPM2 systems.
2534+
2535+ * When deciding whether to colorize output, all systemd programs now
2536+ also check $COLORTERM (in addition to $NO_COLOR, $SYSTEMD_COLORS, and
2537+ $TERM).
2538+
2539+ * Meson's new install_tag feature is now in use for several components,
2540+ allowing to build and install select binaries only: pam, nss, devel
2541+ (pkg-config files), systemd-boot, libsystemd, libudev. Example:
2542+ $ meson build systemd-boot
2543+ $ meson install --tags systemd-boot --no-rebuild
2544+ https://mesonbuild.com/Installing.html#installation-tags
2545+
2546+ * A new build configuration option has been added, to allow selecting the
2547+ default compression algorithm used by systemd-journald and systemd-coredump.
2548+ This allows to build-in support for decompressing all supported formats,
2549+ but choose a specific one for compression. E.g.:
2550+ $ meson -Ddefault-compression=xz
2551+
2552+ Experimental features:
2553+
2554+ * sd-boot gained a new *experimental* setting "reboot-for-bitlocker" in
2555+ loader.conf that implements booting Microsoft Windows from the
2556+ sd-boot in a way that first reboots the system, to reset the TPM
2557+ PCRs. This improves compatibility with BitLocker's TPM use, as the
2558+ PCRs will only record the Windows boot process, and not sd-boot
2559+ itself, thus retaining the PCR measurements not involving sd-boot.
2560+ Note that this feature is experimental for now, and is likely going
2561+ to be generalized and renamed in a future release, without retaining
2562+ compatibility with the current implementation.
2563+
2564+ * A new systemd-sysupdate component has been added that automatically
2565+ discovers, downloads, and installs A/B-style updates for the host
2566+ installation itself, or container images, portable service images,
2567+ and other assets. See the new systemd-sysupdate man page for updates.
2568+
2569+ Contributions from: 4piu, Adam Williamson, adrian5, Albert Brox,
2570+ AlexCatze, Alex Henrie, Alfonso Sánchez-Beato, Alice S,
2571+ Alvin Šipraga, amarjargal, Amarjargal, Andrea Pappacoda,
2572+ Andreas Rammhold, Andy Chi, Anita Zhang, Antonio Alvarez Feijoo,
2573+ Arfrever Frehtes Taifersar Arahesis, ash, Bastien Nocera, Be,
2574+ bearhoney, Ben Efros, Benjamin Berg, Benjamin Franzke,
2575+ Brett Holman, Christian Brauner, Clyde Byrd III, Curtis Klein,
2576+ Daan De Meyer, Daniele Medri, Daniel Mack, Danilo Krummrich,
2577+ David, David Bond, Davide Cavalca, David Tardon, davijosw,
2578+ dependabot[bot], Donald Chan, Dorian Clay, Eduard Tolosa,
2579+ Elias Probst, Eli Schwartz, Erik Sjölund, Evgeny Vereshchagin,
2580+ Federico Ceratto, Franck Bui, Frantisek Sumsal, Gaël PORTAY,
2581+ Georges Basile Stavracas Neto, Gibeom Gwon, Goffredo Baroncelli,
2582+ Grigori Goronzy, Hans de Goede, Heiko Becker, Hugo Carvalho,
2583+ Jakob Lell, James Hilliard, Jan Janssen, Jason A. Donenfeld,
2584+ Joan Bruguera, Joerie de Gram, Josh Triplett, Julia Kartseva,
2585+ Kazuo Moriwaka, Khem Raj, ksa678491784, Lance, Lan Tian,
2586+ Laura Barcziova, Lennart Poettering, Leviticoh, licunlong,
2587+ Lidong Zhong, lincoln auster, Lubomir Rintel, Luca Boccassi,
2588+ Luca BRUNO, lucagoc, Ludwig Nussel, Marcel Hellwig, march1993,
2589+ Marco Scardovi, Mario Limonciello, Mariusz Tkaczyk,
2590+ Markus Weippert, Martin, Martin Liska, Martin Wilck, Matija Skala,
2591+ Matthew Blythe, Matthias Lisin, Matthijs van Duin, Matt Walton,
2592+ Max Gautier, Michael Biebl, Michael Olbrich, Michal Koutný,
2593+ Michal Sekletár, Mike Gilbert, MkfsSion, Morten Linderud,
2594+ Nick Rosbrook, Nikolai Grigoriev, Nikolai Kostrigin,
2595+ Nishal Kulkarni, Noel Kuntze, Pablo Ceballos, Peter Hutterer,
2596+ Peter Morrow, Pigmy-penguin, Piotr Drąg, prumian, Richard Neill,
2597+ Rike-Benjamin Schuppner, rodin-ia, Romain Naour, Ruben Kerkhof,
2598+ Ryan Hendrickson, Santa Wiryaman, Sebastian Pucilowski, Seth Falco,
2599+ Simon Ellmann, Sonali Srivastava, Stefan Seering,
2600+ Stephen Hemminger, tawefogo, techtino, Temuri Doghonadze,
2601+ Thomas Batten, Thomas Haller, Thomas Weißschuh, Tobias Stoeckmann,
2602+ Tomasz Pala, Tyson Whitehead, Vishal Chillara Srinivas,
2603+ Vivien Didelot, w30023233, wangyuhang, Weblate, Xiaotian Wu,
2604+ yangmingtai, YmrDtnJu, Yonathan Randolph, Yutsuten, Yu Watanabe,
2605+ Zbigniew Jędrzejewski-Szmek, наб
2606+
2607+ — Edinburgh, 2022-05-21
2608+
2609+CHANGES WITH 250:
2610+
2611+ * Support for encrypted and authenticated credentials has been added.
2612+ This extends the credential logic introduced with v247 to support
2613+ non-interactive symmetric encryption and authentication, based on a
2614+ key that is stored on the /var/ file system or in the TPM2 chip (if
2615+ available), or the combination of both (by default if a TPM2 chip
2616+ exists the combination is used, otherwise the /var/ key only). The
2617+ credentials are automatically decrypted at the moment a service is
2618+ started, and are made accessible to the service itself in unencrypted
2619+ form. A new tool 'systemd-creds' encrypts credentials for this
2620+ purpose, and two new service file settings LoadCredentialEncrypted=
2621+ and SetCredentialEncrypted= configure such credentials.
2622+
2623+ This feature is useful to store sensitive material such as SSL
2624+ certificates, passwords and similar securely at rest and only decrypt
2625+ them when needed, and in a way that is tied to the local OS
2626+ installation or hardware.
2627+
2628+ * systemd-gpt-auto-generator can now automatically set up discoverable
2629+ LUKS2 encrypted swap partitions.
2630+
2631+ * The GPT Discoverable Partitions Specification has been substantially
2632+ extended with support for root and /usr/ partitions for the majority
2633+ of architectures systemd supports. This includes platforms that do
2634+ not natively support UEFI, because even though GPT is specified under
2635+ UEFI umbrella, it is useful on other systems too. Specifically,
2636+ systemd-nspawn, systemd-sysext, systemd-gpt-auto-generator and
2637+ Portable Services use the concept without requiring UEFI.
2638+
2639+ * The GPT Discoverable Partitions Specifications has been extended with
2640+ a new set of partitions that may carry PKCS#7 signatures for Verity
2641+ partitions, encoded in a simple JSON format. This implements a simple
2642+ mechanism for building disk images that are fully authenticated and
2643+ can be tested against a set of cryptographic certificates. This is
2644+ now implemented for the various systemd tools that can operate with
2645+ disk images, such as systemd-nspawn, systemd-sysext, systemd-dissect,
2646+ Portable services/RootImage=, systemd-tmpfiles, and systemd-sysusers.
2647+ The PKCS#7 signatures are passed to the kernel (where they are
2648+ checked against certificates from the kernel keyring), or can be
2649+ verified against certificates provided in userspace (via a simple
2650+ drop-in file mechanism).
2651+
2652+ * systemd-dissect's inspection logic will now report for which uses a
2653+ disk image is intended. Specifically, it will display whether an
2654+ image is suitable for booting on UEFI or in a container (using
2655+ systemd-nspawn's --image= switch), whether it can be used as portable
2656+ service, or attached as system extension.
2657+
2658+ * The system-extension.d/ drop-in files now support a new field
2659+ SYSEXT_SCOPE= that may encode which purpose a system extension image
2660+ is for: one of "initrd", "system" or "portable". This is useful to
2661+ make images more self-descriptive, and to ensure system extensions
2662+ cannot be attached in the wrong contexts.
2663+
2664+ * The os-release file learnt a new PORTABLE_PREFIXES= field which may
2665+ be used in portable service images to indicate which unit prefixes
2666+ are supported.
2667+
2668+ * The GPT image dissection logic in systemd-nspawn/systemd-dissect/…
2669+ now is able to decode images for non-native architectures as well.
2670+ This allows systemd-nspawn to boot images of non-native architectures
2671+ if the corresponding user mode emulator is installed and
2672+ systemd-binfmtd is running.
2673+
2674+ * systemd-logind gained new settings HandlePowerKeyLongPress=,
2675+ HandleRebootKeyLongPress=, HandleSuspendKeyLongPress= and
2676+ HandleHibernateKeyLongPress= which may be used to configure actions
2677+ when the relevant keys are pressed for more than 5s. This is useful
2678+ on devices that only have hardware for a subset of these keys. By
2679+ default, if the reboot key is pressed long the poweroff operation is
2680+ now triggered, and when the suspend key is pressed long the hibernate
2681+ operation is triggered. Long pressing the other two keys currently
2682+ does not trigger any operation by default.
2683+
2684+ * When showing unit status updates on the console during boot and
2685+ shutdown, and a service is slow to start so that the cylon animation
2686+ is shown, the most recent sd_notify() STATUS= text is now shown as
2687+ well. Services may use this to make the boot/shutdown output easier
2688+ to understand, and to indicate what precisely a service that is slow
2689+ to start or stop is waiting for. In particular, the per-user service
2690+ manager instance now reports what it is doing and which service it is
2691+ waiting for this way to the system service manager.
2692+
2693+ * The service manager will now re-execute on reception of the
2694+ SIGRTMIN+25 signal. It previously already did that on SIGTERM — but
2695+ only when running as PID 1. There was no signal to request this when
2696+ running as per-user service manager, i.e. as any other PID than 1.
2697+ SIGRTMIN+25 works for both system and user managers.
2698+
2699+ * The hardware watchdog logic in PID 1 gained support for operating
2700+ with the default timeout configured in the hardware, instead of
2701+ insisting on re-configuring it. Set RuntimeWatchdogSec=default to
2702+ request this behavior.
2703+
2704+ * A new kernel command line option systemd.watchdog_sec= is now
2705+ understood which may be used to override the hardware watchdog
2706+ time-out for the boot.
2707+
2708+ * A new setting DefaultOOMScoreAdjust= is now supported in
2709+ /etc/systemd/system.conf and /etc/systemd/user.conf. It may be used
2710+ to set the default process OOM score adjustment value for processes
2711+ started by the service manager. For per-user service managers this
2712+ now defaults to 100, but for per-system service managers is left as
2713+ is. This means that by default now services forked off the user
2714+ service manager are more likely to be killed by the OOM killer than
2715+ system services or the managers themselves.
2716+
2717+ * A new per-service setting RestrictFileSystems= as been added that
2718+ restricts the file systems a service has access to by their type.
2719+ This is based on the new BPF LSM of the Linux kernel. It provides an
2720+ effective way to make certain API file systems unavailable to
2721+ services (and thus minimizing attack surface). A new command
2722+ "systemd-analyze filesystems" has been added that lists all known
2723+ file system types (and how they are grouped together under useful
2724+ group handles).
2725+
2726+ * Services now support a new setting RestrictNetworkInterfaces= for
2727+ restricting access to specific network interfaces.
2728+
2729+ * Service unit files gained new settings StartupAllowedCPUs= and
2730+ StartupAllowedMemoryNodes=. These are similar to their counterparts
2731+ without the "Startup" prefix and apply during the boot process
2732+ only. This is useful to improve boot-time behavior of the system and
2733+ assign resources differently during boot than during regular
2734+ runtime. This is similar to the preexisting StartupCPUWeight=
2735+ vs. CPUWeight.
2736+
2737+ * Related to this: the various StartupXYZ= settings
2738+ (i.e. StartupCPUWeight=, StartupAllowedCPUs=, …) are now also applied
2739+ during shutdown. The settings not prefixed with "Startup" hence apply
2740+ during regular runtime, and those that are prefixed like that apply
2741+ during boot and shutdown.
2742+
2743+ * A new per-unit set of conditions/asserts
2744+ [Condition|Assert][Memory|CPU|IO]Pressure= have been added to make a
2745+ unit skip/fail activation if the system's (or a slice's) memory/cpu/io
2746+ pressure is above the configured threshold, using the kernel PSI
2747+ feature. For more details see systemd.unit(5) and
2748+ https://www.kernel.org/doc/html/latest/accounting/psi.html
2749+
2750+ * The combination of ProcSubset=pid and ProtectKernelTunables=yes and/or
2751+ ProtectKernelLogs=yes can now be used.
2752+
2753+ * The default maximum numbers of inodes have been raised from 64k to 1M
2754+ for /dev/, and from 400k to 1M for /tmp/.
2755+
2756+ * The per-user service manager learnt support for communicating with
2757+ systemd-oomd to acquire OOM kill information.
2758+
2759+ * A new service setting ExecSearchPath= has been added that allows
2760+ changing the search path for executables for services. It affects
2761+ where we look for the binaries specified in ExecStart= and similar,
2762+ and the specified directories are also added the $PATH environment
2763+ variable passed to invoked processes.
2764+
2765+ * A new setting RuntimeRandomizedExtraSec= has been added for service
2766+ and scope units that allows extending the runtime time-out as
2767+ configured by RuntimeMaxSec= with a randomized amount.
2768+
2769+ * The syntax of the service unit settings RuntimeDirectory=,
2770+ StateDirectory=, CacheDirectory=, LogsDirectory= has been extended:
2771+ if the specified value is now suffixed with a colon, followed by
2772+ another filename, the latter will be created as symbolic link to the
2773+ specified directory. This allows creating these service directories
2774+ together with alias symlinks to make them available under multiple
2775+ names.
2776+
2777+ * Service unit files gained two new settings TTYRows=/TTYColumns= for
2778+ configuring rows/columns of the TTY device passed to
2779+ stdin/stdout/stderr of the service. This is useful to propagate TTY
2780+ dimensions to a virtual machine.
2781+
2782+ * A new service unit file setting ExitType= has been added that
2783+ specifies when to assume a service has exited. By default systemd
2784+ only watches the main process of a service. By setting
2785+ ExitType=cgroup it can be told to wait for the last process in a
2786+ cgroup instead.
2787+
2788+ * Automount unit files gained a new setting ExtraOptions= that can be
2789+ used to configure additional mount options to pass to the kernel when
2790+ mounting the autofs instance.
2791+
2792+ * "Urlification" (generation of ESC sequences that generate clickable
2793+ hyperlinks in modern terminals) may now be turned off altogether
2794+ during build-time.
2795+
2796+ * Path units gained new TriggerLimitBurst= and TriggerLimitIntervalSec=
2797+ settings that default to 200 and 2 s respectively. The ratelimit
2798+ ensures that a path unit cannot cause PID1 to busy-loop when it is
2799+ trying to trigger a service that is skipped because of a Condition*=
2800+ not being satisfied. This matches the configuration and behaviour of
2801+ socket units.
2802+
2803+ * The TPM2/FIDO2/PKCS11 support in systemd-cryptsetup is now also built
2804+ as a plug-in for cryptsetup. This means the plain cryptsetup command
2805+ may now be used to unlock volumes set up this way.
2806+
2807+ * The TPM2 logic in cryptsetup will now automatically detect systems
2808+ where the TPM2 chip advertises SHA256 PCR banks but the firmware only
2809+ updates the SHA1 banks. In such a case PCR policies will be
2810+ automatically bound to the latter, not the former. This makes the PCR
2811+ policies reliable, but of course do not provide the same level of
2812+ trust as SHA256 banks.
2813+
2814+ * The TPM2 logic in systemd-cryptsetup/systemd-cryptsetup now supports
2815+ RSA primary keys in addition to ECC, improving compatibility with
2816+ TPM2 chips that do not support ECC. RSA keys are much slower to use
2817+ than ECC, and hence are only used if ECC is not available.
2818+
2819+ * /etc/crypttab gained support for a new token-timeout= setting for
2820+ encrypted volumes that allows configuration of the maximum time to
2821+ wait for PKCS#11/FIDO2 tokens to be plugged in. If the time elapses
2822+ the logic will query the user for a regular passphrase/recovery key
2823+ instead.
2824+
2825+ * Support for activating dm-integrity volumes at boot via a new file
2826+ /etc/integritytab and the tool systemd-integritysetup have been
2827+ added. This is similar to /etc/crypttab and /etc/veritytab, but deals
2828+ with dm-integrity instead of dm-crypt/dm-verity.
2829+
2830+ * The systemd-veritysetup-generator now understands a new usrhash=
2831+ kernel command line option for specifying the Verity root hash for
2832+ the partition backing the /usr/ file system. A matching set of
2833+ systemd.verity_usr_* kernel command line options has been added as
2834+ well. These all work similar to the corresponding options for the
2835+ root partition.
2836+
2837+ * The sd-device API gained a new API call sd_device_get_diskseq() to
2838+ return the DISKSEQ property of a device structure. The "disk
2839+ sequence" concept is a new feature recently introduced to the Linux
2840+ kernel that allows detecting reuse cycles of block devices, i.e. can
2841+ be used to recognize when loopback block devices are reused for a
2842+ different purpose or CD-ROM drives get their media changed.
2843+
2844+ * A new unit systemd-boot-update.service has been added. If enabled
2845+ (the default) and the sd-boot loader is detected to be installed, it
2846+ is automatically updated to the newest version when out of date. This
2847+ is useful to ensure the boot loader remains up-to-date, and updates
2848+ automatically propagate from the OS tree in /usr/.
2849+
2850+ * sd-boot will now build with SBAT by default in order to facilitate
2851+ working with recent versions of Shim that require it to be present.
2852+
2853+ * sd-boot can now parse Microsoft Windows' Boot Configuration Data.
2854+ This is used to robustly generate boot entry titles for Windows.
2855+
2856+ * A new generic target unit factory-reset.target has been added. It is
2857+ hooked into systemd-logind similar in fashion to
2858+ reboot/poweroff/suspend/hibernate, and is supposed to be used to
2859+ initiate a factory reset operation. What precisely this operation
2860+ entails is up for the implementer to decide, the primary goal of the
2861+ new unit is provide a framework where to plug in the implementation
2862+ and how to trigger it.
2863+
2864+ * A new meson build-time option 'clock-valid-range-usec-max' has been
2865+ added which takes a time in µs and defaults to 15 years. If the RTC
2866+ time is noticed to be more than the specified time ahead of the
2867+ built-in epoch of systemd (which by default is the release timestamp
2868+ of systemd) it is assumed that the RTC is not working correctly, and
2869+ the RTC is reset to the epoch. (It already is reset to the epoch when
2870+ noticed to be before it.) This should increase the chance that time
2871+ doesn't accidentally jump too far ahead due to faulty hardware or
2872+ batteries.
2873+
2874+ * A new setting SaveIntervalSec= has been added to systemd-timesyncd,
2875+ which may be used to automatically save the current system time to
2876+ disk in regular intervals. This is useful to maintain a roughly
2877+ monotonic clock even without RTC hardware and with some robustness
2878+ against abnormal system shutdown.
2879+
2880+ * systemd-analyze verify gained support for a pair of new --image= +
2881+ --root= switches for verifying units below a specific root
2882+ directory/image instead of on the host.
2883+
2884+ * systemd-analyze verify gained support for verifying unit files under
2885+ an explicitly specified unit name, independently of what the filename
2886+ actually is.
2887+
2888+ * systemd-analyze verify gained a new switch --recursive-errors= which
2889+ controls whether to only fail on errors found in the specified units
2890+ or recursively any dependent units.
2891+
2892+ * systemd-analyze security now supports a new --offline mode for
2893+ analyzing unit files stored on disk instead of loaded units. It may
2894+ be combined with --root=/--image to analyze unit files under a root
2895+ directory or disk image. It also learnt a new --threshold= parameter
2896+ for specifying an exposure level threshold: if the exposure level
2897+ exceeds the specified value the call will fail. It also gained a new
2898+ --security-policy= switch for configuring security policies to
2899+ enforce on the units. A policy is a JSON file that lists which tests
2900+ shall be weighted how much to determine the overall exposure
2901+ level. Altogether these new features are useful for fully automatic
2902+ analysis and enforcement of security policies on unit files.
2903+
2904+ * systemd-analyze security gain a new --json= switch for JSON output.
2905+
2906+ * systemd-analyze learnt a new --quiet switch for reducing
2907+ non-essential output. It's honored by the "dot", "syscall-filter",
2908+ "filesystems" commands.
2909+
2910+ * systemd-analyze security gained a --profile= option that can be used
2911+ to take into account a portable profile when analyzing portable
2912+ services, since a lot of the security-related settings are enabled
2913+ through them.
2914+
2915+ * systemd-analyze learnt a new inspect-elf verb that parses ELF core
2916+ files, binaries and executables and prints metadata information,
2917+ including the build-id and other info described on:
2918+ https://systemd.io/COREDUMP_PACKAGE_METADATA/
2919+
2920+ * .network files gained a new UplinkInterface= in the [IPv6SendRA]
2921+ section, for automatically propagating DNS settings from other
2922+ interfaces.
2923+
2924+ * The static lease DHCP server logic in systemd-networkd may now serve
2925+ IP addresses outside of the configured IP pool range for the server.
2926+
2927+ * CAN support in systemd-networkd gained four new settings Loopback=,
2928+ OneShot=, PresumeAck=, ClassicDataLengthCode= for tweaking CAN
2929+ control modes. It gained a number of further settings for tweaking
2930+ CAN timing quanta.
2931+
2932+ * The [CAN] section in .network file gained new TimeQuantaNSec=,
2933+ PropagationSegment=, PhaseBufferSegment1=, PhaseBufferSegment2=,
2934+ SyncJumpWidth=, DataTimeQuantaNSec=, DataPropagationSegment=,
2935+ DataPhaseBufferSegment1=, DataPhaseBufferSegment2=, and
2936+ DataSyncJumpWidth= settings to control bit-timing processed by the
2937+ CAN interface.
2938+
2939+ * DHCPv4 client support in systemd-networkd learnt a new Label= option
2940+ for configuring the address label to apply to configure IPv4
2941+ addresses.
2942+
2943+ * The [IPv6AcceptRA] section of .network files gained support for a new
2944+ UseMTU= setting that may be used to control whether to apply the
2945+ announced MTU settings to the local interface.
2946+
2947+ * The [DHCPv4] section in .network file gained a new Use6RD= boolean
2948+ setting to control whether the DHCPv4 client request and process the
2949+ DHCP 6RD option.
2950+
2951+ * The [DHCPv6PrefixDelegation] section in .network file is renamed to
2952+ [DHCPPrefixDelegation], as now the prefix delegation is also supported
2953+ with DHCPv4 protocol by enabling the Use6RD= setting.
2954+
2955+ * The [DHCPPrefixDelegation] section in .network file gained a new
2956+ setting UplinkInterface= to specify the upstream interface.
2957+
2958+ * The [DHCPv6] section in .network file gained a new setting
2959+ UseDelegatedPrefix= to control whether the delegated prefixes will be
2960+ propagated to the downstream interfaces.
2961+
2962+ * The [IPv6AcceptRA] section of .network files now understands two new
2963+ settings UseGateway=/UseRoutePrefix= for explicitly configuring
2964+ whether to use the relevant fields from the IPv6 Router Advertisement
2965+ records.
2966+
2967+ * The ForceDHCPv6PDOtherInformation= setting in the [DHCPv6] section
2968+ has been removed. Please use the WithoutRA= and UseDelegatedPrefix=
2969+ settings in the [DHCPv6] section and the DHCPv6Client= setting in the
2970+ [IPv6AcceptRA] section to control when the DHCPv6 client is started
2971+ and how the delegated prefixes are handled by the DHCPv6 client.
2972+
2973+ * The IPv6Token= section in the [Network] section is deprecated, and
2974+ the [IPv6AcceptRA] section gained the Token= setting for its
2975+ replacement. The [IPv6Prefix] section also gained the Token= setting.
2976+ The Token= setting gained 'eui64' mode to explicitly configure an
2977+ address with the EUI64 algorithm based on the interface MAC address.
2978+ The 'prefixstable' mode can now optionally take a secret key. The
2979+ Token= setting in the [DHCPPrefixDelegation] section now supports all
2980+ algorithms supported by the same settings in the other sections.
2981+
2982+ * The [RoutingPolicyRule] section of .network file gained a new
2983+ SuppressInterfaceGroup= setting.
2984+
2985+ * The IgnoreCarrierLoss= setting in the [Network] section of .network
2986+ files now allows a duration to be specified, controlling how long to
2987+ wait before reacting to carrier loss.
2988+
2989+ * The [DHCPServer] section of .network file gained a new Router=
2990+ setting to specify the router address.
2991+
2992+ * The [CAKE] section of .network files gained various new settings
2993+ AutoRateIngress=, CompensationMode=, FlowIsolationMode=, NAT=,
2994+ MPUBytes=, PriorityQueueingPreset=, FirewallMark=, Wash=, SplitGSO=,
2995+ and UseRawPacketSize= for configuring CAKE.
2996+
2997+ * systemd-networkd now ships with new default .network files:
2998+ 80-container-vb.network which matches host-side network bridge device
2999+ created by systemd-nspawn's --network-bridge or --network-zone
3000+ switch, and 80-6rd-tunnel.network which matches automatically created
3001+ sit tunnel with 6rd prefix when the DHCP 6RD option is received.
3002+
3003+ * systemd-networkd's handling of Endpoint= resolution for WireGuard
3004+ interfaces has been improved.
3005+
3006+ * systemd-networkd will now automatically configure routes to addresses
3007+ specified in AllowedIPs=. This feature can be controlled via
3008+ RouteTable= and RouteMetric= settings in [WireGuard] or
3009+ [WireGuardPeer] sections.
3010+
3011+ * systemd-networkd will now once again automatically generate persistent
3012+ MAC addresses for batadv and bridge interfaces. Users can disable this
3013+ by using MACAddress=none in .netdev files.
3014+
3015+ * systemd-networkd and systemd-udevd now support IP over InfiniBand
3016+ interfaces. The Kind= setting in .netdev file accepts "ipoib". And
3017+ systemd.netdev files gained the [IPoIB] section.
3018+
3019+ * systemd-networkd and systemd-udevd now support net.ifname-policy=
3020+ option on the kernel command-line. This is implemented through the
3021+ systemd-network-generator service that automatically generates
3022+ appropriate .link, .network, and .netdev files.
3023+
3024+ * The various systemd-udevd "ethtool" buffer settings now understand
3025+ the special value "max" to configure the buffers to the maximum the
3026+ hardware supports.
3027+
3028+ * systemd-udevd's .link files may now configure a large variety of
3029+ NIC coalescing settings, plus more hardware offload settings.
3030+
3031+ * .link files gained a new WakeOnLanPassword= setting in the [Link]
3032+ section that allows to specify a WoL "SecureOn" password on hardware
3033+ that supports this.
3034+
3035+ * systemd-nspawn's --setenv= switch now supports an additional syntax:
3036+ if only a variable name is specified (i.e. without being suffixed by
3037+ a '=' character and a value) the current value of the environment
3038+ variable is propagated to the container. e.g. --setenv=FOO will
3039+ lookup the current value of $FOO in the environment, and pass it down
3040+ to the container. Similar behavior has been added to homectl's,
3041+ machinectl's and systemd-run's --setenv= switch.
3042+
3043+ * systemd-nspawn gained a new switch --suppress-sync= which may be used
3044+ to optionally suppress the effect of the sync()/fsync()/fdatasync()
3045+ system calls for the container payload. This is useful for build
3046+ system environments where safety against abnormal system shutdown is
3047+ not essential as all build artifacts can be regenerated any time, but
3048+ the performance win is beneficial.
3049+
3050+ * systemd-nspawn will now raise the RLIMIT_NOFILE hard limit to the
3051+ same value that PID 1 uses for most forked off processes.
3052+
3053+ * systemd-nspawn's --bind=/--bind-ro= switches now optionally take
3054+ uidmap/nouidmap options as last parameter. If "uidmap" is used the
3055+ bind mounts are created with UID mapping taking place that ensures
3056+ the host's file ownerships are mapped 1:1 to container file
3057+ ownerships, even if user namespacing is used. This way
3058+ files/directories bound into containers will no longer show up as
3059+ owned by the nobody user as they typically did if no special care was
3060+ taken to shift them manually.
3061+
3062+ * When discovering Windows installations sd-boot will now attempt to
3063+ show the Windows version.
3064+
3065+ * The color scheme to use in sd-boot may now be configured at
3066+ build-time.
3067+
3068+ * sd-boot gained the ability to change screen resolution during
3069+ boot-time, by hitting the "r" key. This will cycle through available
3070+ resolutions and save the last selection.
3071+
3072+ * sd-boot learnt a new hotkey "f". When pressed the system will enter
3073+ firmware setup. This is useful in environments where it is difficult
3074+ to hit the right keys early enough to enter the firmware, and works
3075+ on any firmware regardless which key it natively uses.
3076+
3077+ * sd-boot gained support for automatically booting into the menu item
3078+ selected on the last boot (using the "@saved" identifier for menu
3079+ items).
3080+
3081+ * sd-boot gained support for automatically loading all EFI drivers
3082+ placed in the /EFI/systemd/drivers/ subdirectory of the EFI System
3083+ Partition (ESP). These drivers are loaded before the menu entries are
3084+ loaded. This is useful e.g. to load additional file system drivers
3085+ for the XBOOTLDR partition.
3086+
3087+ * systemd-boot will now paint the input cursor on its own instead of
3088+ relying on the firmware to do so, increasing compatibility with broken
3089+ firmware that doesn't make the cursor reasonably visible.
3090+
3091+ * sd-boot now embeds a .osrel PE section like we expect from Boot
3092+ Loader Specification Type #2 Unified Kernels. This means sd-boot
3093+ itself may be used in place of a Type #2 Unified Kernel. This is
3094+ useful for debugging purposes as it allows chain-loading one a
3095+ (development) sd-boot instance from another.
3096+
3097+ * sd-boot now supports a new "devicetree" field in Boot Loader
3098+ Specification Type #1 entries: if configured the specified device
3099+ tree file is installed before the kernel is invoked. This is useful
3100+ for installing/applying new devicetree files without updating the
3101+ kernel image.
3102+
3103+ * Similarly, sd-stub now can read devicetree data from a PE section
3104+ ".dtb" and apply it before invoking the kernel.
3105+
3106+ * sd-stub (the EFI stub that can be glued in front of a Linux kernel)
3107+ gained the ability to pick up credentials and sysext files, wrap them
3108+ in a cpio archive, and pass as an additional initrd to the invoked
3109+ Linux kernel, in effect placing those files in the /.extra/ directory
3110+ of the initrd environment. This is useful to implement trusted initrd
3111+ environments which are fully authenticated but still can be extended
3112+ (via sysexts) and parameterized (via encrypted/authenticated
3113+ credentials, see above).
3114+
3115+ Credentials can be located next to the kernel image file (credentials
3116+ specific to a single boot entry), or in one of the shared directories
3117+ (credentials applicable to multiple boot entries).
3118+
3119+ * sd-stub now comes with a full man page, that explains its feature set
3120+ and how to combine a kernel image, an initrd and the stub to build a
3121+ complete EFI unified kernel image, implementing Boot Loader
3122+ Specification Type #2.
3123+
3124+ * sd-stub may now provide the initrd to the executed kernel via the
3125+ LINUX_EFI_INITRD_MEDIA_GUID EFI protocol, adding compatibility for
3126+ non-x86 architectures.
3127+
3128+ * bootctl learnt new set-timeout and set-timeout-oneshot commands that
3129+ may be used to set the boot menu time-out of the boot loader (for all
3130+ or just the subsequent boot).
3131+
3132+ * bootctl and kernel-install will now read variables
3133+ KERNEL_INSTALL_LAYOUT= from /etc/machine-info and layout= from
3134+ /etc/kernel/install.conf. When set, it specifies the layout to use
3135+ for installation directories on the boot partition, so that tools
3136+ don't need to guess it based on the already-existing directories. The
3137+ only value that is defined natively is "bls", corresponding to the
3138+ layout specified in
3139+ https://systemd.io/BOOT_LOADER_SPECIFICATION/. Plugins for
3140+ kernel-install that implement a different layout can declare other
3141+ values for this variable.
3142+
3143+ 'bootctl install' will now write KERNEL_INSTALL_LAYOUT=bls, on the
3144+ assumption that if the user installed sd-boot to the ESP, they intend
3145+ to use the entry layout understood by sd-boot. It'll also write
3146+ KERNEL_INSTALL_MACHINE_ID= if it creates any directories using the ID
3147+ (and it wasn't specified in the config file yet). Similarly,
3148+ kernel-install will now write KERNEL_INSTALL_MACHINE_ID= (if it
3149+ wasn't specified in the config file yet). Effectively, those changes
3150+ mean that the machine-id used for boot loader entry installation is
3151+ "frozen" upon first use and becomes independent of the actual
3152+ machine-id.
3153+
3154+ Configuring KERNEL_INSTALL_MACHINE_ID fixes the following problem:
3155+ images created for distribution ("golden images") are built with no
3156+ machine-id, so that a unique machine-id can be created on the first
3157+ boot. But those images may contain boot loader entries with the
3158+ machine-id used during build included in paths. Using a "frozen"
3159+ value allows unambiguously identifying entries that match the
3160+ specific installation, while still permitting parallel installations
3161+ without conflict.
3162+
3163+ Configuring KERNEL_INSTALL_LAYOUT obviates the need for
3164+ kernel-install to guess the installation layout. This fixes the
3165+ problem where a (possibly empty) directory in the boot partition is
3166+ created from a different layout causing kernel-install plugins to
3167+ assume the wrong layout. A particular example of how this may happen
3168+ is the grub2 package in Fedora which includes directories under /boot
3169+ directly in its file list. Various other packages pull in grub2 as a
3170+ dependency, so it may be installed even if unused, breaking
3171+ installations that use the bls layout.
3172+
3173+ * bootctl and systemd-bless-boot can now be linked statically.
3174+
3175+ * systemd-sysext now optionally doesn't insist on extension-release.d/
3176+ files being placed in the image under the image's file name. If the
3177+ file system xattr user.extension-release.strict is set on the
3178+ extension release file, it is accepted regardless of its name. This
3179+ relaxes security restrictions a bit, as system extension may be
3180+ attached under a wrong name this way.
3181+
3182+ * udevadm's test-builtin command learnt a new --action= switch for
3183+ testing the built-in with the specified action (in place of the
3184+ default 'add').
3185+
3186+ * udevadm info gained new switches --property=/--value for showing only
3187+ specific udev properties/values instead of all.
3188+
3189+ * A new hwdb database has been added that contains matches for various
3190+ types of signal analyzers (protocol analyzers, logic analyzers,
3191+ oscilloscopes, multimeters, bench power supplies, etc.) that should
3192+ be accessible to regular users.
3193+
3194+ * A new hwdb database entry has been added that carries information
3195+ about types of cameras (regular or infrared), and in which direction
3196+ they point (front or back).
3197+
3198+ * A new rule to allow console users access to rfkill by default has been
3199+ added to hwdb.
3200+
3201+ * Device nodes for the Software Guard eXtension enclaves (sgx_vepc) are
3202+ now also owned by the system group "sgx".
3203+
3204+ * A new build-time meson option "extra-net-naming-schemes=" has been
3205+ added to define additional naming schemes schemes for udev's network
3206+ interface naming logic. This is useful for enterprise distributions
3207+ and similar which want to pin the schemes of certain distribution
3208+ releases under a specific name and previously had to patch the
3209+ sources to introduce new named schemes.
3210+
3211+ * The predictable naming logic for network interfaces has been extended
3212+ to generate stable names from Xen netfront device information.
3213+
3214+ * hostnamed's chassis property can now be sourced from chassis-type
3215+ field encoded in devicetree (in addition to the existing DMI
3216+ support).
3217+
3218+ * systemd-cgls now optionally displays cgroup IDs and extended
3219+ attributes for each cgroup. (Controllable via the new --xattr= +
3220+ --cgroup-id= switches.)
3221+
3222+ * coredumpctl gained a new --all switch for operating on all
3223+ Journal files instead of just the local ones.
3224+
3225+ * systemd-coredump will now use libdw/libelf via dlopen() rather than
3226+ directly linking, allowing users to easily opt-out of backtrace/metadata
3227+ analysis of core files, and reduce image sizes when this is not needed.
3228+
3229+ * systemd-coredump will now analyze core files with libdw/libelf in a
3230+ forked, sandboxed process.
3231+
3232+ * systemd-homed will now try to unmount an activate home area in
3233+ regular intervals once the user logged out fully. Previously this was
3234+ attempted exactly once but if the home directory was busy for some
3235+ reason it was not tried again.
3236+
3237+ * systemd-homed's LUKS2 home area backend will now create a BSD file
3238+ system lock on the image file while the home area is active
3239+ (i.e. mounted). If a home area is found to be locked, logins are
3240+ politely refused. This should improve behavior when using home areas
3241+ images that are accessible via the network from multiple clients, and
3242+ reduce the chance of accidental file system corruption in that case.
3243+
3244+ * Optionally, systemd-homed will now drop the kernel buffer cache once
3245+ a user has fully logged out, configurable via the new --drop-caches=
3246+ homectl switch.
3247+
3248+ * systemd-homed now makes use of UID mapped mounts for the home areas.
3249+ If the kernel and used file system support it, files are now
3250+ internally owned by the "nobody" user (i.e. the user typically used
3251+ for indicating "this ownership is not mapped"), and dynamically
3252+ mapped to the UID used locally on the system via the UID mapping
3253+ mount logic of recent kernels. This makes migrating home areas
3254+ between different systems cheaper because recursively chown()ing file
3255+ system trees is no longer necessary.
3256+
3257+ * systemd-homed's CIFS backend now optionally supports CIFS service
3258+ names with a directory suffix, in order to place home directories in
3259+ a subdirectory of a CIFS share, instead of the top-level directory.
3260+
3261+ * systemd-homed's CIFS backend gained support for specifying additional
3262+ mount options in the JSON user record (cifsExtraMountOptions field,
3263+ and --cifs-extra-mount-options= homectl switch). This is for example
3264+ useful for configuring mount options such as "noserverino" that some
3265+ SMB3 services require (use that to run a homed home directory from a
3266+ FritzBox SMB3 share this way).
3267+
3268+ * systemd-homed will now default to btrfs' zstd compression for home
3269+ areas. This is inspired by Fedora's recent decision to switch to zstd
3270+ by default.
3271+
3272+ * Additional mount options to use when mounting the file system of
3273+ LUKS2 volumes in systemd-homed has been added. Via the
3274+ $SYSTEMD_HOME_MOUNT_OPTIONS_BTRFS, $SYSTEMD_HOME_MOUNT_OPTIONS_EXT4,
3275+ $SYSTEMD_HOME_MOUNT_OPTIONS_XFS environment variables to
3276+ systemd-homed or via the luksExtraMountOptions user record JSON
3277+ property. (Exposed via homectl --luks-extra-mount-options)
3278+
3279+ * homectl's resize command now takes the special size specifications
3280+ "min" and "max" to shrink/grow the home area to the minimum/maximum
3281+ size possible, taking disk usage/space constraints and file system
3282+ limitations into account. Resizing is now generally graceful: the
3283+ logic will try to get as close to the specified size as possible, but
3284+ not consider it a failure if the request couldn't be fulfilled
3285+ precisely.
3286+
3287+ * systemd-homed gained the ability to automatically shrink home areas
3288+ on logout to their minimal size and grow them again on next
3289+ login. This ensures that while inactive, a home area only takes up
3290+ the minimal space necessary, but once activated, it provides
3291+ sufficient space for the user's needs. This behavior is only
3292+ supported if btrfs is used as file system inside the home area
3293+ (because only for btrfs online growing/shrinking is implemented in
3294+ the kernel). This behavior is now enabled by default, but may be
3295+ controlled via the new --auto-resize-mode= setting of homectl.
3296+
3297+ * systemd-homed gained support for automatically re-balancing free disk
3298+ space among active home areas, in case the LUKS2 backends are used,
3299+ and no explicit disk size was requested. This way disk space is
3300+ automatically managed and home areas resized in regular intervals and
3301+ manual resizing when disk space becomes scarce should not be
3302+ necessary anymore. This behavior is only supported if btrfs is used
3303+ within the home areas (as only then online shrinking and growing is
3304+ supported), and may be configured via the new rebalanceWeight JSON
3305+ user record field (as exposed via the new --rebalance-weight= homectl
3306+ setting). Re-balancing is mostly automatic, but can also be requested
3307+ explicitly via "homectl rebalance", which is synchronous, and thus
3308+ may be used to wait until the rebalance run is complete.
3309+
3310+ * userdbctl gained a --json= switch for configured the JSON formatting
3311+ to use when outputting user or group records.
3312+
3313+ * userdbctl gained a new --multiplexer= switch for explicitly
3314+ configuring whether to use the systemd-userdbd server side user
3315+ record resolution logic.
3316+
3317+ * userdbctl's ssh-authorized-keys command learnt a new --chain switch,
3318+ for chaining up another command to execute after completing the
3319+ look-up. Since the OpenSSH's AuthorizedKeysCommand only allows
3320+ configuration of a single command to invoke, this maybe used to
3321+ invoke multiple: first userdbctl's own implementation, and then any
3322+ other also configured in the command line.
3323+
3324+ * The sd-event API gained a new function sd_event_add_inotify_fd() that
3325+ is similar to sd_event_add_inotify() but accepts a file descriptor
3326+ instead of a path in the file system for referencing the inode to
3327+ watch.
3328+
3329+ * The sd-event API gained a new function
3330+ sd_event_source_set_ratelimit_expire_callback() that may be used to
3331+ define a callback function that is called whenever an event source
3332+ leaves the rate limiting phase.
3333+
3334+ * New documentation has been added explaining which steps are necessary
3335+ to port systemd to a new architecture:
3336+
3337+ https://systemd.io/PORTING_TO_NEW_ARCHITECTURES
3338+
3339+ * The x-systemd.makefs option in /etc/fstab now explicitly supports
3340+ ext2, ext3, and f2fs file systems.
3341+
3342+ * Mount units and units generated from /etc/fstab entries with 'noauto'
3343+ are now ordered the same as other units. Effectively, they will be
3344+ started earlier (if something actually pulled them in) and stopped
3345+ later, similarly to normal mount units that are part of
3346+ fs-local.target. This change should be invisible to users, but
3347+ should prevent those units from being stopped too early during
3348+ shutdown.
3349+
3350+ * The systemd-getty-generator now honors a new kernel command line
3351+ argument systemd.getty_auto= and a new environment variable
3352+ $SYSTEMD_GETTY_AUTO that allows turning it off at boot. This is for
3353+ example useful to turn off gettys inside of containers or similar
3354+ environments.
3355+
3356+ * systemd-resolved now listens on a second DNS stub address: 127.0.0.54
3357+ (in addition to 127.0.0.53, as before). If DNS requests are sent to
3358+ this address they are propagated in "bypass" mode only, i.e. are
3359+ almost not processed locally, but mostly forwarded as-is to the
3360+ current upstream DNS servers. This provides a stable DNS server
3361+ address that proxies all requests dynamically to the right upstream
3362+ DNS servers even if these dynamically change. This stub does not do
3363+ mDNS/LLMNR resolution. However, it will translate look-ups to
3364+ DNS-over-TLS if necessary. This new stub is particularly useful in
3365+ container/VM environments, or for tethering setups: use DNAT to
3366+ redirect traffic to any IP address to this stub.
3367+
3368+ * systemd-importd now honors new environment variables
3369+ $SYSTEMD_IMPORT_BTRFS_SUBVOL, $SYSTEMD_IMPORT_BTRFS_QUOTA,
3370+ $SYSTEMD_IMPORT_SYNC, which may be used disable btrfs subvolume
3371+ generation, btrfs quota setup and disk synchronization.
3372+
3373+ * systemd-importd and systemd-resolved can now be optionally built with
3374+ OpenSSL instead of libgcrypt.
3375+
3376+ * systemd-repart no longer requires OpenSSL.
3377+
3378+ * systemd-sysusers will no longer create the redundant 'nobody' group
3379+ by default, as the 'nobody' user is already created with an
3380+ appropriate primary group.
3381+
3382+ * If a unit uses RuntimeMaxSec, systemctl show will now display it.
3383+
3384+ * systemctl show-environment gained support for --output=json.
3385+
3386+ * pam_systemd will now first try to use the X11 abstract socket, and
3387+ fallback to the socket file in /tmp/.X11-unix/ only if that does not
3388+ work.
3389+
3390+ * systemd-journald will no longer go back to volatile storage
3391+ regardless of configuration when its unit is restarted.
3392+
3393+ * Initial support for the LoongArch architecture has been added (system
3394+ call lists, GPT partition table UUIDs, etc).
3395+
3396+ * systemd-journald's own logging messages are now also logged to the
3397+ journal itself when systemd-journald logs to /dev/kmsg.
3398+
3399+ * systemd-journald now re-enables COW for archived journal files on
3400+ filesystems that support COW. One benefit of this change is that
3401+ archived journal files will now get compressed on btrfs filesystems
3402+ that have compression enabled.
3403+
3404+ * systemd-journald now deduplicates fields in a single log message
3405+ before adding it to the journal. In archived journal files, it will
3406+ also punch holes for unused parts and truncate the file as
3407+ appropriate, leading to reductions in disk usage.
3408+
3409+ * journalctl --verify was extended with more informative error
3410+ messages.
3411+
3412+ * More of sd-journal's functions are now resistant against journal file
3413+ corruption.
3414+
3415+ * The shutdown command learnt a new option --show, to display the
3416+ scheduled shutdown.
3417+
3418+ * A LICENSES/ directory is now included in the git tree. It contains a
3419+ README.md file that explains the licenses used by source files in
3420+ this repository. It also contains the text of all applicable
3421+ licenses as they appear on spdx.org.
3422+
3423+ Contributions from: Aakash Singh, acsfer, Adolfo Jayme Barrientos,
3424+ Adrian Vovk, Albert Brox, Alberto Mardegan, Alexander Kanavin,
3425+ alexlzhu, Alfonso Sánchez-Beato, Alvin Šipraga, Alyssa Ross,
3426+ Amir Omidi, Anatol Pomozov, Andika Triwidada, Andreas Rammhold,
3427+ Andreas Valder, Andrej Lajovic, Andrew Soutar, Andrew Stone, Andy Chi,
3428+ Anita Zhang, Anssi Hannula, Antonio Alvarez Feijoo,
3429+ Antony Deepak Thomas, Arnaud Ferraris, Arvid E. Picciani,
3430+ Bastien Nocera, Benjamin Berg, Benjamin Herrenschmidt, Ben Stockett,
3431+ Bogdan Seniuc, Boqun Feng, Carl Lei, chlorophyll-zz, Chris Packham,
3432+ Christian Brauner, Christian Göttsche, Christian Wehrli,
3433+ Christoph Anton Mitterer, Cristian Rodríguez, Daan De Meyer,
3434+ Daniel Maixner, Dann Frazier, Dan Streetman, Davide Cavalca,
3435+ David Seifert, David Tardon, dependabot[bot], Dimitri John Ledkov,
3436+ Dimitri Papadopoulos, Dimitry Ishenko, Dmitry Khlebnikov,
3437+ Dominique Martinet, duament, Egor, Egor Ignatov, Emil Renner Berthing,
3438+ Emily Gonyer, Ettore Atalan, Evgeny Vereshchagin, Florian Klink,
3439+ Franck Bui, Frantisek Sumsal, Geass-LL, Gibeom Gwon, GnunuX,
3440+ Gogo Gogsi, gregzuro, Greg Zuro, Gustavo Costa, Hans de Goede,
3441+ Hela Basa, Henri Chain, hikigaya58, Hugo Carvalho,
3442+ Hugo Osvaldo Barrera, Iago Lopez Galeiras, Iago López Galeiras,
3443+ I-dont-need-name, igo95862, Jack Dähn, James Hilliard, Jan Janssen,
3444+ Jan Kuparinen, Jan Macku, Jan Palus, Jarkko Sakkinen, Jayce Fayne,
3445+ jiangchuangang, jlempen, John Lindgren, Jonas Dreßler, Jonas Jelten,
3446+ Jonas Witschel, Joris Hartog, José Expósito, Julia Kartseva,
3447+ Kai-Heng Feng, Kai Wohlfahrt, Kay Siver Bø, KennthStailey,
3448+ Kevin Kuehler, Kevin Orr, Khem Raj, Kristian Klausen, Kyle Laker,
3449+ lainahai, LaserEyess, Lennart Poettering, Lia Lenckowski, longpanda,
3450+ Luca Boccassi, Luca BRUNO, Ludwig Nussel, Lukas Senionis,
3451+ Maanya Goenka, Maciek Borzecki, Marcel Menzel, Marco Scardovi,
3452+ Marcus Harrison, Mark Boudreau, Matthijs van Duin, Mauricio Vásquez,
3453+ Maxime de Roucy, Max Resch, MertsA, Michael Biebl, Michael Catanzaro,
3454+ Michal Koutný, Michal Sekletár, Miika Karanki, Mike Gilbert,
3455+ Milo Turner, ml, monosans, Nacho Barrientos, nassir90, Nishal Kulkarni,
3456+ nl6720, Ondrej Kozina, Paulo Neves, Pavel Březina, pedro martelletto,
3457+ Peter Hutterer, Peter Morrow, Piotr Drąg, Rasmus Villemoes, ratijas,
3458+ Raul Tambre, rene, Riccardo Schirone, Robert-L-Turner, Robert Scheck,
3459+ Ross Jennings, saikat0511, Scott Lamb, Scott Worley,
3460+ Sergei Trofimovich, Sho Iizuka, Slava Bacherikov, Slimane Selyan Amiri,
3461+ StefanBruens, Steven Siloti, svonohr, Taiki Sugawara, Takashi Sakamoto,
3462+ Takuro Onoue, Thomas Blume, Thomas Haller, Thomas Mühlbacher,
3463+ Tianlu Shao, Toke Høiland-Jørgensen, Tom Yan, Tony Asleson,
3464+ Topi Miettinen, Ulrich Ölmann, Urs Ritzmann, Vincent Bernat,
3465+ Vito Caputo, Vladimir Panteleev, WANG Xuerui, Wind/owZ, Wu Xiaotian,
3466+ xdavidwu, Xiaotian Wu, xujing, yangmingtai, Yao Wei, Yao Wei (魏銘廷),
3467+ Yegor Alexeyev, Yu Watanabe, Zbigniew Jędrzejewski-Szmek,
3468+ Дамјан Георгиевски, наб
3469+
3470+ — Warsaw, 2021-12-23
3471+
3472 CHANGES WITH 249:
3473
3474 * When operating on disk images via the --image= switch of various
3475@@ -518,6 +1980,11 @@ CHANGES WITH 249:
3476 distribution does not install it yet, it might make sense to change
3477 that.
3478
3479+ * Intel HID rfkill event is no longer masked, since it's the only
3480+ source of rfkill event on newer HP laptops. To have both backward and
3481+ forward compatibility, userspace daemon needs to debounce duplicated
3482+ events in a short time window.
3483+
3484 Contributions from: Aakash Singh, adrian5, Albert Brox,
3485 Alexander Sverdlin, Alexander Tsoy, Alexey Rubtsov, alexlzhu,
3486 Allen Webb, Alvin Šipraga, Alyssa Ross, Anders Wenhaug,
3487@@ -3867,7 +5334,7 @@ CHANGES WITH 240:
3488
3489 Consult the kernel documentation for details on this sysctl:
3490 https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
3491-
3492+
3493 * The v239 change to turn on "net.ipv4.tcp_ecn" by default has been
3494 reverted.
3495
3496@@ -5609,6 +7076,15 @@ CHANGES WITH 234:
3497 temporary directory is passed as the entry directory and removed
3498 after all the plugins exit.
3499
3500+ * If KERNEL_INSTALL_MACHINE_ID is set in /etc/machine-info, kernel-install
3501+ will now use its value as the machine ID instead of the machine ID
3502+ from /etc/machine-id. If KERNEL_INSTALL_MACHINE_ID isn't set in
3503+ /etc/machine-info and no machine ID is set in /etc/machine-id,
3504+ kernel-install will try to store the current machine ID there as
3505+ KERNEL_INSTALL_MACHINE_ID. If there is no machine ID, kernel-install
3506+ will generate a new UUID, store it in /etc/machine-info as
3507+ KERNEL_INSTALL_MACHINE_ID and use it as the machine ID.
3508+
3509 Contributions from: Adrian Heine né Lang, Aggelos Avgerinos, Alexander
3510 Kurtz, Alexandros Frantzis, Alexey Brodkin, Alex Lu, Amir Pakdel, Amir
3511 Yalon, Anchor Cat, Anthony Parsons, Bastien Nocera, Benjamin Gilbert,
3512@@ -11481,7 +12957,7 @@ CHANGES WITH 197:
3513 based on a calendar time specification such as "Thu,Fri
3514 2013-*-1,5 11:12:13" which refers to 11:12:13 of the first
3515 or fifth day of any month of the year 2013, given that it is
3516- a thursday or friday. This brings timer event support
3517+ a Thursday or a Friday. This brings timer event support
3518 considerably closer to cron's capabilities. For details on
3519 the supported calendar time specification language see
3520 systemd.time(7).
3521diff --git a/README b/README
3522index 9e5bcab..3b104c2 100644
3523--- a/README
3524+++ b/README
3525@@ -27,21 +27,26 @@ AUTHOR:
3526 ...and many others
3527
3528 LICENSE:
3529- LGPLv2.1+ for all code
3530- - except src/basic/MurmurHash2.c which is Public Domain
3531- - except src/basic/siphash24.c which is CC0 Public Domain
3532- - except src/journal/lookup3.c which is Public Domain
3533- - except src/udev/* which is (currently still) GPLv2, GPLv2+
3534- - except tools/chromiumos/* which is BSD-style
3535+ LGPL-2.1-or-later for all code, exceptions noted in LICENSES/README.md
3536
3537 REQUIREMENTS:
3538- Linux kernel >= 3.13
3539- Linux kernel >= 4.2 for unified cgroup hierarchy support
3540- Linux kernel >= 4.10 for cgroup-bpf egress and ingress hooks
3541- Linux kernel >= 4.15 for cgroup-bpf device hook
3542- Linux kernel >= 4.17 for cgroup-bpf socket address hooks
3543- Linux kernel >= 5.3 for bounded-loops in BPF program
3544- Linux kernel >= 5.4 for signed Verity images support
3545+ Linux kernel ≥ 3.15
3546+ ≥ 4.3 for ambient capabilities
3547+ ≥ 4.5 for pids controller in cgroup v2
3548+ ≥ 4.6 for cgroup namespaces
3549+ ≥ 4.9 for RENAME_NOREPLACE support in vfat
3550+ ≥ 4.10 for cgroup-bpf egress and ingress hooks
3551+ ≥ 4.15 for cgroup-bpf device hook and cpu controller in cgroup v2
3552+ ≥ 4.17 for cgroup-bpf socket address hooks
3553+ ≥ 4.20 for PSI (used by systemd-oomd)
3554+ ≥ 5.3 for bounded loops in BPF program
3555+ ≥ 5.4 for signed Verity images
3556+ ≥ 5.7 for BPF links and the BPF LSM hook
3557+
3558+ Kernel versions below 4.15 have significant gaps in functionality and
3559+ are not recommended for use with this version of systemd. Taint flag
3560+ 'old-kernel' will be set. Systemd will most likely still function, but
3561+ upstream support and testing are limited.
3562
3563 Kernel Config Options:
3564 CONFIG_DEVTMPFS
3565@@ -55,7 +60,7 @@ REQUIREMENTS:
3566 CONFIG_PROC_FS
3567 CONFIG_FHANDLE (libudev, mount and bind mount handling)
3568
3569- Kernel crypto/hash API
3570+ Kernel crypto/hash API:
3571 CONFIG_CRYPTO_USER_API_HASH
3572 CONFIG_CRYPTO_HMAC
3573 CONFIG_CRYPTO_SHA256
3574@@ -66,15 +71,15 @@ REQUIREMENTS:
3575 Legacy hotplug slows down the system and confuses udev:
3576 CONFIG_UEVENT_HELPER_PATH=""
3577
3578- Userspace firmware loading is not supported and should
3579- be disabled in the kernel:
3580+ Userspace firmware loading is not supported and should be disabled in
3581+ the kernel:
3582 CONFIG_FW_LOADER_USER_HELPER=n
3583
3584 Some udev rules and virtualization detection relies on it:
3585 CONFIG_DMIID
3586
3587- Support for some SCSI devices serial number retrieval, to
3588- create additional symlinks in /dev/disk/ and /dev/tape:
3589+ Support for some SCSI devices serial number retrieval, to create
3590+ additional symlinks in /dev/disk/ and /dev/tape:
3591 CONFIG_BLK_DEV_BSG
3592
3593 Required for PrivateNetwork= in service units:
3594@@ -92,25 +97,26 @@ REQUIREMENTS:
3595 CONFIG_{TMPFS,EXT4_FS,XFS,BTRFS_FS,...}_POSIX_ACL
3596 CONFIG_SECCOMP
3597 CONFIG_SECCOMP_FILTER (required for seccomp support)
3598- CONFIG_CHECKPOINT_RESTORE (for the kcmp() syscall)
3599+ CONFIG_KCMP (for the kcmp() syscall, used to be under
3600+ CONFIG_CHECKPOINT_RESTORE before ~5.12)
3601
3602- Required for CPUShares= in resource control unit settings
3603+ Required for CPUShares= in resource control unit settings:
3604 CONFIG_CGROUP_SCHED
3605 CONFIG_FAIR_GROUP_SCHED
3606
3607- Required for CPUQuota= in resource control unit settings
3608+ Required for CPUQuota= in resource control unit settings:
3609 CONFIG_CFS_BANDWIDTH
3610
3611 Required for IPAddressDeny=, IPAddressAllow=, IPIngressFilterPath=,
3612- IPEgressFilterPath= in resource control unit settings
3613- unit settings
3614+ IPEgressFilterPath= in resource control unit settings unit settings:
3615 CONFIG_BPF
3616 CONFIG_BPF_SYSCALL
3617 CONFIG_BPF_JIT
3618 CONFIG_HAVE_EBPF_JIT
3619 CONFIG_CGROUP_BPF
3620
3621- Required for SocketBind{Allow|Deny}= in resource control unit settings
3622+ Required for SocketBind{Allow|Deny}=, RestrictNetworkInterfaces= in
3623+ resource control unit settings:
3624 CONFIG_BPF
3625 CONFIG_BPF_SYSCALL
3626 CONFIG_BPF_JIT
3627@@ -124,22 +130,28 @@ REQUIREMENTS:
3628 Required for signed Verity images support:
3629 CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG
3630
3631- We recommend to turn off Real-Time group scheduling in the
3632- kernel when using systemd. RT group scheduling effectively
3633- makes RT scheduling unavailable for most userspace, since it
3634- requires explicit assignment of RT budgets to each unit whose
3635- processes making use of RT. As there's no sensible way to
3636- assign these budgets automatically this cannot really be
3637- fixed, and it's best to disable group scheduling hence.
3638+ Required for RestrictFileSystems= in service units:
3639+ CONFIG_BPF
3640+ CONFIG_BPF_SYSCALL
3641+ CONFIG_BPF_LSM
3642+ CONFIG_DEBUG_INFO_BTF
3643+ CONFIG_LSM="...,bpf" or kernel booted with lsm="...,bpf".
3644+
3645+ We recommend to turn off Real-Time group scheduling in the kernel when
3646+ using systemd. RT group scheduling effectively makes RT scheduling
3647+ unavailable for most userspace, since it requires explicit assignment of
3648+ RT budgets to each unit whose processes making use of RT. As there's no
3649+ sensible way to assign these budgets automatically this cannot really be
3650+ fixed, and it's best to disable group scheduling hence:
3651 CONFIG_RT_GROUP_SCHED=n
3652
3653 It's a good idea to disable the implicit creation of networking bonding
3654 devices by the kernel networking bonding module, so that the
3655 automatically created "bond0" interface doesn't conflict with any such
3656- device created by systemd-networkd (or other tools). Ideally there
3657- would be a kernel compile-time option for this, but there currently
3658- isn't. The next best thing is to make this change through a modprobe.d
3659- drop-in. This is shipped by default, see modprobe.d/systemd.conf.
3660+ device created by systemd-networkd (or other tools). Ideally there would
3661+ be a kernel compile-time option for this, but there currently isn't. The
3662+ next best thing is to make this change through a modprobe.d drop-in.
3663+ This is shipped by default, see modprobe.d/systemd.conf.
3664
3665 Required for systemd-nspawn:
3666 CONFIG_DEVPTS_MULTIPLE_INSTANCES or Linux kernel >= 4.7
3667@@ -147,19 +159,17 @@ REQUIREMENTS:
3668 Required for systemd-oomd:
3669 CONFIG_PSI
3670
3671- Note that kernel auditing is broken when used with systemd's
3672- container code. When using systemd in conjunction with
3673- containers, please make sure to either turn off auditing at
3674- runtime using the kernel command line option "audit=0", or
3675- turn it off at kernel compile time using:
3676+ Note that kernel auditing is broken when used with systemd's container
3677+ code. When using systemd in conjunction with containers, please make
3678+ sure to either turn off auditing at runtime using the kernel command
3679+ line option "audit=0", or turn it off at kernel compile time using:
3680 CONFIG_AUDIT=n
3681- If systemd is compiled with libseccomp support on
3682- architectures which do not use socketcall() and where seccomp
3683- is supported (this effectively means x86-64 and ARM, but
3684- excludes 32-bit x86!), then nspawn will now install a
3685- work-around seccomp filter that makes containers boot even
3686- with audit being enabled. This works correctly only on kernels
3687- 3.14 and newer though. TL;DR: turn audit off, still.
3688+ If systemd is compiled with libseccomp support on architectures which do
3689+ not use socketcall() and where seccomp is supported (this effectively
3690+ means x86-64 and ARM, but excludes 32-bit x86!), then nspawn will now
3691+ install a work-around seccomp filter that makes containers boot even
3692+ with audit being enabled. This works correctly only on kernels 3.14 and
3693+ newer though. TL;DR: turn audit off, still.
3694
3695 glibc >= 2.16
3696 libcap
3697@@ -195,11 +205,12 @@ REQUIREMENTS:
3698 python-jinja2
3699 python-lxml (optional, required to build the indices)
3700 python >= 3.5
3701- meson >= 0.46 (>= 0.49 is required to build position-independent executables)
3702+ meson >= 0.53.2
3703 ninja
3704 gcc, awk, sed, grep, and similar tools
3705 clang >= 10.0, llvm >= 10.0 (optional, required to build BPF programs
3706 from source code in C)
3707+ gnu-efi >= 3.0.5 (optional, required for systemd-boot)
3708
3709 During runtime, you need the following additional
3710 dependencies:
3711@@ -212,7 +223,7 @@ REQUIREMENTS:
3712 polkit (optional)
3713
3714 To build in directory build/:
3715- meson setup build/ && meson compile -C build/
3716+ meson setup build/ && ninja -C build/
3717
3718 Any configuration options can be specified as -Darg=value... arguments
3719 to meson. After the build directory is initially configured, meson will
3720@@ -222,29 +233,28 @@ REQUIREMENTS:
3721 their current values.
3722
3723 Useful commands:
3724- meson compile -v -C build/ some/target
3725+ ninja -C build -v some/target
3726 meson test -C build/
3727- sudo meson install -C build/
3728+ sudo meson install -C build/ --no-rebuild
3729 DESTDIR=... meson install -C build/
3730
3731 A tarball can be created with:
3732- git archive --format=tar --prefix=systemd-222/ v222 | xz > systemd-222.tar.xz
3733+ v=250 && git archive --prefix=systemd-$v/ v$v | zstd >systemd-$v.tar.zstd
3734
3735- When systemd-hostnamed is used, it is strongly recommended to
3736- install nss-myhostname to ensure that, in a world of
3737- dynamically changing hostnames, the hostname stays resolvable
3738- under all circumstances. In fact, systemd-hostnamed will warn
3739- if nss-myhostname is not installed.
3740+ When systemd-hostnamed is used, it is strongly recommended to install
3741+ nss-myhostname to ensure that, in a world of dynamically changing
3742+ hostnames, the hostname stays resolvable under all circumstances. In
3743+ fact, systemd-hostnamed will warn if nss-myhostname is not installed.
3744
3745 nss-systemd must be enabled on systemd systems, as that's required for
3746 DynamicUser= to work. Note that we ship services out-of-the-box that
3747 make use of DynamicUser= now, hence enabling nss-systemd is not
3748 optional.
3749
3750- Note that the build prefix for systemd must be /usr. (Moreover,
3751- packages systemd relies on — such as D-Bus — really should use the same
3752- prefix, otherwise you are on your own.) -Dsplit-usr=false (which is the
3753- default and does not need to be specified) is the recommended setting.
3754+ Note that the build prefix for systemd must be /usr. (Moreover, packages
3755+ systemd relies on — such as D-Bus — really should use the same prefix,
3756+ otherwise you are on your own.) -Dsplit-usr=false (which is the default
3757+ and does not need to be specified) is the recommended setting.
3758 -Dsplit-usr=true can be used to give a semblance of support for systems
3759 with programs installed split between / and /usr. Moving everything
3760 under /usr is strongly encouraged.
3761@@ -257,34 +267,51 @@ REQUIREMENTS:
3762 - strace (used by test/test-functions)
3763 - capsh (optional, used by test-execute)
3764
3765+POLICY FOR SUPPORT OF DISTRIBUTIONS AND ARCHITECTURES:
3766+
3767+ systemd main branch and latest major or stable releases are generally
3768+ expected to compile on current versions of popular distributions (at
3769+ least all non-EOL versions of Fedora, Debian unstable/testing/stable,
3770+ latest Ubuntu LTS and non-LTS releases, openSUSE Tumbleweed/Leap,
3771+ CentOS Stream 8 and 9, up-to-date Arch, etc.) We will generally
3772+ attempt to support also other non-EOL versions of various distros.
3773+ Features which would break compilation on slightly-older distributions
3774+ will only be introduced if there are significant reasons for this
3775+ (i.e. supporting them interferes with development or requires too many
3776+ resources to support). In some cases backports of specific libraries or
3777+ tools might be required.
3778+
3779+ The policy is similar wrt. architecture support. systemd is regularly
3780+ tested on popular architectures (currently amd64, i386, arm64, ppc64el,
3781+ and s390x), but should compile and work also on other architectures, for
3782+ which support has been added. systemd will emit warnings when
3783+ architecture-specific constants are not defined.
3784+
3785 USERS AND GROUPS:
3786- Default udev rules use the following standard system group
3787- names, which need to be resolvable by getgrnam() at any time,
3788- even in the very early boot stages, where no other databases
3789- and network are available:
3790+ Default udev rules use the following standard system group names, which
3791+ need to be resolvable by getgrnam() at any time, even in the very early
3792+ boot stages, where no other databases and network are available:
3793
3794 audio, cdrom, dialout, disk, input, kmem, kvm, lp, render, tape, tty, video
3795
3796- During runtime, the journal daemon requires the
3797- "systemd-journal" system group to exist. New journal files will
3798- be readable by this group (but not writable), which may be used
3799- to grant specific users read access. In addition, system
3800- groups "wheel" and "adm" will be given read-only access to
3801- journal files using systemd-tmpfiles.service.
3802+ During runtime, the journal daemon requires the "systemd-journal" system
3803+ group to exist. New journal files will be readable by this group (but
3804+ not writable), which may be used to grant specific users read access. In
3805+ addition, system groups "wheel" and "adm" will be given read-only access
3806+ to journal files using systemd-tmpfiles.service.
3807
3808- The journal remote daemon requires the
3809- "systemd-journal-remote" system user and group to
3810- exist. During execution this network facing service will drop
3811- privileges and assume this uid/gid for security reasons.
3812+ The journal remote daemon requires the "systemd-journal-remote" system
3813+ user and group to exist. During execution this network facing service
3814+ will drop privileges and assume this uid/gid for security reasons.
3815
3816- Similarly, the network management daemon requires the
3817- "systemd-network" system user and group to exist.
3818+ Similarly, the network management daemon requires the "systemd-network"
3819+ system user and group to exist.
3820
3821- Similarly, the name resolution daemon requires the
3822- "systemd-resolve" system user and group to exist.
3823+ Similarly, the name resolution daemon requires the "systemd-resolve"
3824+ system user and group to exist.
3825
3826- Similarly, the coredump support requires the
3827- "systemd-coredump" system user and group to exist.
3828+ Similarly, the coredump support requires the "systemd-coredump" system
3829+ user and group to exist.
3830
3831 NSS:
3832 systemd ships with four glibc NSS modules:
3833@@ -304,9 +331,9 @@ NSS:
3834 DynamicUser= setting in unit files.)
3835
3836 To make use of these NSS modules, please add them to the "hosts:",
3837- "passwd:" and "group:" lines in /etc/nsswitch.conf. The "resolve"
3838- module should replace the glibc "dns" module in this file (and don't
3839- worry, it chain-loads the "dns" module if it can't talk to resolved).
3840+ "passwd:" and "group:" lines in /etc/nsswitch.conf. The "resolve" module
3841+ should replace the glibc "dns" module in this file (and don't worry, it
3842+ chain-loads the "dns" module if it can't talk to resolved).
3843
3844 The four modules should be used in the following order:
3845
3846@@ -325,24 +352,48 @@ SYSV INIT.D SCRIPTS:
3847 Please see src/systemctl/systemd-sysv-install.SKELETON for how this
3848 needs to look like, and provide an implementation at the marked places.
3849
3850-WARNINGS:
3851+WARNINGS and TAINT FLAGS:
3852 systemd will warn during early boot if /usr is not already mounted at
3853 this point (that means: either located on the same file system as / or
3854 already mounted in the initrd). While in systemd itself very little
3855- will break if /usr is on a separate, late-mounted partition, many of
3856- its dependencies very likely will break sooner or later in one form or
3857+ will break if /usr is on a separate late-mounted partition, many of its
3858+ dependencies very likely will break sooner or later in one form or
3859 another. For example, udev rules tend to refer to binaries in /usr,
3860 binaries that link to libraries in /usr or binaries that refer to data
3861 files in /usr. Since these breakages are not always directly visible,
3862- systemd will warn about this, since this kind of file system setup is
3863- not really supported anymore by the basic set of Linux OS components.
3864-
3865- systemd requires that the /run mount point exists. systemd also
3866- requires that /var/run is a symlink to /run.
3867+ systemd will warn about this. Such setups are not really supported by
3868+ the basic set of Linux OS components. Taint flag 'split-usr' will be
3869+ set when this condition is detected.
3870
3871 For more information on this issue consult
3872 https://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
3873
3874+ systemd will warn if the filesystem is not usr-merged (i.e.: /bin, /sbin
3875+ and /lib* are not symlinks to their counterparts under /usr). Taint flag
3876+ 'unmerged-usr' will be set when this condition is detected.
3877+
3878+ For more information on this issue consult
3879+ https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge
3880+
3881+ systemd requires that the /run mount point exists. systemd also
3882+ requires that /var/run is a symlink to /run. Taint flag 'var-run-bad'
3883+ will be set when this condition is detected.
3884+
3885+ Systemd will also warn when the cgroup support is unavailable in the
3886+ kernel (taint flag 'cgroups-missing'), the system is using the old
3887+ cgroup hierarchy (taint flag 'cgroupsv1'), the hardware clock is
3888+ running in non-UTC mode (taint flag 'local-hwclock'), the kernel
3889+ overflow UID or GID are not 65534 (taint flags 'overflowuid-not-65534'
3890+ and 'overflowgid-not-65534'), the UID or GID range assigned to the
3891+ running systemd instance covers less than 0…65534 (taint flags
3892+ 'short-uid-range' and 'short-gid-range').
3893+
3894+ Taint conditions are logged during boot, but may also be checked at any
3895+ time with:
3896+
3897+ busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Tainted
3898+
3899+VALGRIND:
3900 To run systemd under valgrind, compile with meson option
3901 -Dvalgrind=true and have valgrind development headers installed
3902 (i.e. valgrind-devel or equivalent). Otherwise, false positives will be
3903diff --git a/README.md b/README.md
3904index 6734e92..f0ed551 100644
3905--- a/README.md
3906+++ b/README.md
3907@@ -2,18 +2,20 @@
3908
3909 System and Service Manager
3910
3911-<a href="https://in.waw.pl/systemd-github-state/systemd-systemd-issues.svg"><img align="right" src="https://in.waw.pl/systemd-github-state/systemd-systemd-issues-small.svg" alt="Count of open issues over time"></a>
3912-<a href="https://in.waw.pl/systemd-github-state/systemd-systemd-pull-requests.svg"><img align="right" src="https://in.waw.pl/systemd-github-state/systemd-systemd-pull-requests-small.svg" alt="Count of open pull requests over time"></a>
3913+<a href="http://in.waw.pl/systemd-github-state/systemd-systemd-issues.svg"><img align="right" src="http://in.waw.pl/systemd-github-state/systemd-systemd-issues-small.svg" alt="Count of open issues over time"></a>
3914+<a href="http://in.waw.pl/systemd-github-state/systemd-systemd-pull-requests.svg"><img align="right" src="http://in.waw.pl/systemd-github-state/systemd-systemd-pull-requests-small.svg" alt="Count of open pull requests over time"></a>
3915 [![Semaphore CI 2.0 Build Status](https://the-real-systemd.semaphoreci.com/badges/systemd/branches/main.svg?style=shields)](https://the-real-systemd.semaphoreci.com/projects/systemd)<br/>
3916 [![Coverity Scan Status](https://scan.coverity.com/projects/350/badge.svg)](https://scan.coverity.com/projects/350)<br/>
3917 [![OSS-Fuzz Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/systemd.svg)](https://oss-fuzz-build-logs.storage.googleapis.com/index.html#systemd)<br/>
3918 [![CIFuzz](https://github.com/systemd/systemd/workflows/CIFuzz/badge.svg)](https://github.com/systemd/systemd/actions)<br/>
3919 [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1369/badge)](https://bestpractices.coreinfrastructure.org/projects/1369)<br/>
3920 [![Language Grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/systemd/systemd.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/systemd/systemd/context:cpp)<br/>
3921-[![CentOS CI - CentOS 7](https://jenkins-systemd.apps.ocp.ci.centos.org/buildStatus/icon?subject=CentOS%20CI%20-%20CentOS%207&job=upstream-centos7)](https://jenkins-systemd.apps.ocp.ci.centos.org/job/upstream-centos7/)<br/>
3922+[![CentOS CI - CentOS 8](https://jenkins-systemd.apps.ocp.ci.centos.org/buildStatus/icon?subject=CentOS%20CI%20-%20CentOS%208&job=upstream-centos8)](https://jenkins-systemd.apps.ocp.ci.centos.org/job/upstream-centos8/)<br/>
3923 [![CentOS CI - Arch](https://jenkins-systemd.apps.ocp.ci.centos.org/buildStatus/icon?subject=CentOS%20CI%20-%20Arch&job=upstream-vagrant-archlinux)](https://jenkins-systemd.apps.ocp.ci.centos.org/job/upstream-vagrant-archlinux/)<br/>
3924 [![CentOS CI - Arch (sanitizers)](https://jenkins-systemd.apps.ocp.ci.centos.org/buildStatus/icon?subject=CentOS%20CI%20-%20Arch%20(sanitizers)&job=upstream-vagrant-archlinux-sanitizers)](https://jenkins-systemd.apps.ocp.ci.centos.org/job/upstream-vagrant-archlinux-sanitizers/)<br/>
3925+[![CentOS CI - Rawhide (SELinux)](https://jenkins-systemd.apps.ocp.ci.centos.org/buildStatus/icon?subject=CentOS%20CI%20-%20Rawhide%20(SELinux)&job=upstream-vagrant-rawhide-selinux)](https://jenkins-systemd.apps.ocp.ci.centos.org/view/Upstream/job/upstream-vagrant-rawhide-selinux/)<br/>
3926 [![Fossies codespell report](https://fossies.org/linux/test/systemd-main.tar.gz/codespell.svg)](https://fossies.org/linux/test/systemd-main.tar.gz/codespell.html)</br>
3927+[![Coverage Status](https://coveralls.io/repos/github/systemd/systemd/badge.svg?branch=main)](https://coveralls.io/github/systemd/systemd?branch=main)</br>
3928 [![Packaging status](https://repology.org/badge/tiny-repos/systemd.svg)](https://repology.org/project/systemd/versions)
3929
3930 ## Details
3931diff --git a/TODO b/TODO
3932index d31d003..2ae9aae 100644
3933--- a/TODO
3934+++ b/TODO
3935@@ -4,11 +4,6 @@ Bugfixes:
3936 manager or system manager can be always set. It would be better to reject
3937 them when parsing config.
3938
3939-* userdbctl: "Password OK: yes" is shown even when there are no passwords
3940- or the password is locked.
3941-
3942-* Get rid of nftw(). We should refuse to use such useless APIs on principle.
3943-
3944 * Jun 01 09:43:02 krowka systemd[1]: Unit user@1000.service has alias user@.service.
3945 Jun 01 09:43:02 krowka systemd[1]: Unit user@6.service has alias user@.service.
3946 Jun 01 09:43:02 krowka systemd[1]: Unit user-runtime-dir@6.service has alias user-runtime-dir@.service.
3947@@ -36,6 +31,7 @@ External:
3948 * zsh shell completion:
3949 - <command> <verb> -<TAB> should complete options, but currently does not
3950 - systemctl add-wants,add-requires
3951+ - systemctl reboot --boot-loader-entry=
3952
3953 * systemctl status should know about 'systemd-analyze calendar ... --iterations='
3954 * If timer has just OnInactiveSec=..., it should fire after a specified time
3955@@ -83,12 +79,481 @@ Janitorial Clean-ups:
3956
3957 Features:
3958
3959+* homed/userdb: maybe define a "companion" dir for home directories where apps
3960+ can safely put privileged stuff in. Would not be writable by the user, but
3961+ still conceptually belong to the user. Would be included in user's quota if
3962+ possible, even if files are not owned by UID of user. Usecase: container
3963+ images that owned by arbitrary UIDs, and are owned/managed by the users, but
3964+ are not directly belonging to the user's UID. Goal: we shouldn't place more
3965+ privileged dirs inside of unprivileged dirs, and thus containers really
3966+ should not be placed inside of traditional UNIX home dirs (which are owned by
3967+ users themselves) but somewhere else, that is separate, but still close
3968+ by. Inform user code about path to this companion dir via env var, so that
3969+ container managers find it. the ~/.identity file is also a candidate for a
3970+ file to move there, since it is managed by privileged code (i.e. homed) and
3971+ not unprivileged code.
3972+
3973+* given that /etc/ssh/ssh_config.d/ is a thing now, ship a drop-in for that
3974+ that hooks up userbdctl ssh-key stuff.
3975+
3976+* allow embedding a signature blob for PCR hashes into separate section in
3977+ unified kernel binaries. This section should be picked up by sd-stub, and
3978+ passed in a file to the booted kernel (via initrd cpio, as usual). Usecase:
3979+ this way we can implement disk encryption policies that bind to specific
3980+ kernel PCR state, without breaking things on every kernel update. As long as
3981+ the kernel includes the PCR signature blob we should be good, as disk
3982+ encryption can then pass the signature to the TPM to unlock their secrets.
3983+ Why do this via a separate PE section? That's because the PCR state depends
3984+ on the measured kernel/initrd of course, thus we cannot put the signature
3985+ into the kernel/initrd itself, because that would require a time machine.
3986+ Hence we have to find a separate place. A simple solution is a PE section
3987+ of its own, because then it is next to the kernel and initrd which after all
3988+ are stored in PE sections of their own too. Building a unified kernel would
3989+ thus mean, calculating PCR values for the raw kernel image, and raw initrd
3990+ image, then signing those PCR values with a vendor key, and then combining
3991+ sd-stub, raw kernel image, raw initrd, and PCR signature into a unified
3992+ kernel image.
3993+
3994+* a new tool "systemd-trust" or so, that can calculate PCR hashes offline, and
3995+ optionally sign them. for that we should extend our syntax for specifying pcr
3996+ policies (e.g. the string like "4+7+9") so that it can also include explicit
3997+ hash values, i.e.
3998+ 4=sha256:0ef149998289474e4bb31813edda6ad7f3c991b2d8dec6e8fe4db7a1f039f2d1+7=sha256:87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7+9=sha256:0263829989b6fd954f72baaf2fc64bc2e2f01d692d4de72986ea808f6e99813f
3999+ and file names to calculate hashes from, i.e.
4000+ 4=file:/boot/vmlinuz+7=file:/boot/initrd/+9=file:/etc/fstab"
4001+ The systemd-trust tool should then be able to resolve any "underspecifed"
4002+ form into the form with explicit hash values.
4003+
4004+* maybe add support for binding and connecting AF_UNIX sockets in the file
4005+ system outside of the 108ch limit. When connecting, open O_PATH fd to socket
4006+ inode first, then connect to /proc/self/fd/XYZ. When binding, create symlink
4007+ to target dir in /tmp, and bind through it.
4008+
4009+* tmpfiles: for f/F/w lines, if the argument columns is left unspecified, look
4010+ for a service credential named after the file path to write to, and load
4011+ contents to write from there. Usecase: provision arbitrary files from
4012+ credentials. Example use: with a line like "f /root/.ssh/authorized-keys
4013+ 0644 root root" in a tmpfiles.d/ snippet add
4014+ LoadCredential=root.ssh.authorized-keys via drop-in to
4015+ systemd-tmpfiles.service, and then provision an SSH access key through
4016+ nspawn's --load-credential=, through qemu's fw_cfg, or via systemd-stub's
4017+ credntial pick-up. The latter is particularly interesting to implement SSH
4018+ access to an initrd.
4019+
4020+* systemd-homed: when initializing, look for a credential sysemd.homed.register
4021+ or so with JSON user records to automatically register if not registered yet.
4022+ Usecase: deploy a system, and add an account one can directly log into.
4023+
4024+* add a proper concept of a "developer" mode, i.e. where cryptographic
4025+ protections of the root OS are weakened after interactive confirmation, to
4026+ allow hackers to allow their own stuff. idea: allow entering developer mode
4027+ only via explicit choice in boot menu: i.e. add explicit boot menu item for
4028+ it. when developer mode is entered generate a key pair in the TPM2, and add
4029+ the public part of it automatically to keychain of valid code signature keys
4030+ on subsequent boots. Then provide a tool to sign code with the key in the
4031+ TPM2. Ensure that boot menu item is only way to enter developer mode, by
4032+ binding it to locality/PCRs so that that keys cannot be generated otherwise.
4033+
4034+* services: add support for cryptographically unlocking per-service directories
4035+ via TPM2. Specifically, for StateDirectory= (and related dirs) use fscrypt to
4036+ set up the directory so that it can only be accessed if host and app are in
4037+ order.
4038+
4039+* TPM2: add auth policy for signed PCR values to make updates easy. i.e. do
4040+ what tpm2_policyauthorize tool does. To be truly useful scheme needs to be a
4041+ bit more elaborate though: policy probably must take some nvram based
4042+ generation counter into account that can only monotonically increase and can
4043+ be used to invalidate old PCR signatures. Otherwise people could downgrade to
4044+ old signed PCR sets whenever they want. Usecase: encrypt the rootfs with LUKS
4045+ with a key that can only be unlocked via a pristine pre-built Fedora
4046+ kernel+initrd.
4047+
4048+* update HACKING.md to suggest developing systemd with the ideas from:
4049+ https://0pointer.net/blog/testing-my-system-code-in-usr-without-modifying-usr.html
4050+ https://0pointer.net/blog/running-an-container-off-the-host-usr.html
4051+
4052+* add a clear concept how the initrd can make up credentials on their own to
4053+ pass to the system when transitioning into the host OS. usecase: things like
4054+ cloud-init/ignitation and similar can parameterize the host with data they
4055+ acquire.
4056+
4057+* Add ConditionCredentialExists= or so, that allows conditionalizing services
4058+ depending on whether a specific system credential is set. Usecase: a service
4059+ similar to the ssh keygen service that installs any SSH host key supplied via
4060+ system credentials into /etc/ssh.
4061+
4062+* drop support for kernels that lack ambient capabilities support (i.e. make
4063+ 4.3 new baseline). Then drop support for "!!" modifier for ExecStart= which
4064+ is only supported for such old kernels
4065+
4066+* sd-event: compat wd reuse in inotify code: keep a set of removed watch
4067+ descriptors, and clear this set piecemeal when we see the IN_IGNORED event
4068+ for it, or when read() returns EAGAIN or on IN_Q_OVERFLOW. Then, whenever we
4069+ see an inotify wd event check against this set, and if it is contained ignore
4070+ the event. (to be fully correct this would have to count the occurrences, in
4071+ case the same wd is reused multiple times before we start processing
4072+ IN_IGNORED again)
4073+
4074+* sd-stub: set efi var indicating stub features, i.e. whether they pick up
4075+ creds, sysexts and so on. similar to existing variable of sd-boot
4076+
4077+* sd-stub: set efi vars declaring TPM PCRs we measured creds/cmdline + sysext
4078+ into (even if we hardcode them)
4079+
4080+* systemd-fstab-generator: support addition mount specifications via kernel
4081+ cmdline. Usecase: invoke a VM, and mount a host homedir into it via
4082+ virtio-fs.
4083+
4084+* for vendor-built signed initrds:
4085+ - make sysext run in the initrd
4086+ - sysext should pick up sysext images from /.extra/ in the initrd, and insist
4087+ on verification if in secureboot mode
4088+ - kernel-install should be able to install pre-built unified kernel images in
4089+ type #2 drop-in dir in the ESP.
4090+ - kernel-install should be able install encrypted creds automatically for
4091+ machine id, root pw, rootfs uuid, resume partition uuid, and place next to
4092+ EFI kernel, for sd-stub to pick them up. These creds should be locked to
4093+ the TPM, and bind to the right PCR the kernel is measured to.
4094+ - kernel-install should be able to pick up initrd sysexts automatically and
4095+ place them next to EFI kernel, for sd-stub to pick them up.
4096+ - systemd-fstab-generator should look for rootfs device to mount in creds
4097+ - pid 1 should look for machine ID in creds
4098+ - systemd-resume-generator should look for resume partition uuid in creds
4099+ - sd-stub: automatically pick up microcode from ESP (/loader/microcode/*)
4100+ and synthesize initrd from it, and measure it. Signing is not necessary, as
4101+ microcode does that on its own. Pass as first initrd to kernel.
4102+ - sd-stub should measure the kernel/initrd/… into a separate PCR, so that we
4103+ have one PCR we can bind the encrypted creds to that is not effected by
4104+ anything else but what we drop in via kernel-install, i.e. by earlier EFI
4105+ code running (i.e. like PCR 4)
4106+
4107+* Add a new service type very similar to Type=notify, that goes one step
4108+ further and extends the protocol to cover reloads. Specifically, SIGHUP will
4109+ become the official way to reload, and daemon has to respond with sd_notify()
4110+ to report when it starts reloading, and when it is complete reloading. Care
4111+ must be taken to remove races from this model. I.e. PID 1 needs to take
4112+ CLOCK_MONOTONIC, then send SIGHUP, then wait for at least one RELOADING=1
4113+ message that comes with a newer timestamp, then wait for a READY=1 message.
4114+ while we are at it, also maybe extend the logic to require handling of some
4115+ specific SIGRT signal for setting debug log level, that carries the level via
4116+ the sigqueue() data parameter. With that we extended with minimal logic the
4117+ service runtime logic quite substantially.
4118+
4119+* firstboot: maybe just default to C.UTF-8 locale if nothing is set, so that we
4120+ don't query this unnecessarily in entirely uninitialized
4121+ containers. (i.e. containers with empty /etc).
4122+
4123+* beef up sd_notify() to support AV_VSOCK in $NOTIFY_SOCKET, so that VM
4124+ managers can get ready notifications from VMs, just like container managers
4125+ from their payload. Also pick up address from qemu/fw_cfg if set there.
4126+ (which has benefits, given SecureBoot and kernel cmdline are not necessarily
4127+ friends.)
4128+
4129+* mirroring this: maybe support binding to AV_VSOCK in Type=notify services,
4130+ then passing $NOTIFY_SOCKET and $NOTIFY_GUESTCID with PID1's cid (typically
4131+ fixed to "2", i.e. the official host cid) and the expected guest cid, for the
4132+ two sides of the channel. The latter env var could then be used in an
4133+ appropriate qemu cmdline. That way qemu payloads could talk sd_notify()
4134+ directly to host service manager.
4135+
4136+* maybe write a tool that binds an AF_VFSOCK socket, then invokes qemu,
4137+ extending the command line to enable vsock on the VM, and using fw_cfg to
4138+ configure socket address.
4139+
4140+* sd-boot: rework random seed handling following recent kernel changes: always
4141+ pass seed to kernel, but credit only if secure boot is used
4142+
4143+* sd-boot: hash data from GetNextHighMonotonicCount() into updated random seed,
4144+ so that we might even open up up the random seed logic to non-SecureBoot
4145+ systems?
4146+
4147+* sd-boot: also include the hyperv "vm generation id" in the random seed hash,
4148+ to cover nicely for machine clones. It's found in the ACPI tables, which
4149+ should be easily accessible from UEFI.
4150+
4151+* sd-boot: add menu item for shutdown? or hotkey?
4152+
4153+* sd-device has an API to create an sd_device object from a device id, but has
4154+ no api to query the device id
4155+
4156+* sd-device should return the devnum type (i.e. 'b' or 'c') via some API for an
4157+ sd_device object, so that data passed into sd_device_new_from_devnum() can
4158+ also be queried.
4159+
4160+* sd-event: optionally, if per-event source rate limit is hit, downgrade
4161+ priority, but leave enabled, and once ratelimit window is over, upgrade
4162+ priority again. That way we can combat event source starvation without
4163+ stopping processing events from one source entirely.
4164+
4165+* sd-event: similar to existing inotify support add fanotify support (given
4166+ that apparently new features in this area are only going to be added to the
4167+ latter).
4168+
4169+* sd-event: add 1st class event source for clock changes
4170+
4171+* sd-event: add 1st class event source for timezone changes
4172+
4173+* support uefi/http boots with sd-boot: instead of looking for dropin files in
4174+ /loader/entries/ dir, look for a file /loader/entries/SHA256SUMS and use that
4175+ as directory manifest. The file would be a standard directory listing as
4176+ generated by GNU sha256sums.
4177+
4178+* sd-boot: maybe add support for embedding the various auxiliary resources we
4179+ look for right in the sd-boot binary. i.e. take inspiration from sd-stub
4180+ logic: allow combining sd-boot via objcopy with kernels to enumerate, .conf
4181+ files, drivers, keys to enroll and so on. Then, add whatever we find that way
4182+ to the menu. Usecase: allow building a single PE image you can boot into via
4183+ UEFI HTTP boot.
4184+
4185+* maybe add a new UEFI stub binary "sd-http". It works similar to sd-stub, but
4186+ all it does is download a file from a http server, and execute it, after
4187+ optionally checking its hash sum. idea would be: combine this "sd-http" stub
4188+ binary with some minimal info about an URL + hash sum, plus .osrel data, and
4189+ drop it into the unified kernel dir in the ESP. And bam you have something
4190+ that is tiny, feels a lot like a unified kernel, but all it does is chainload
4191+ the real kernel. benefit: downloading these stubs would be tiny and quick,
4192+ hence cheap for enumeration.
4193+
4194+* initialize machine ID from systemd credential picked up from the ESP via
4195+ sd-stub, so that machine ID is stable even on systems where unified kernels
4196+ are used, and hence kernel cmdline cannot be modified locally
4197+
4198+* in gpt-auto-generator: check partition uuids against such uuids supplied via
4199+ sd-stub credentials. That way, we can support parallel OS installations with
4200+ pre-built kernels.
4201+
4202+* sysext: measure all activated sysext into a TPM PCR
4203+
4204+* maybe add a "syscfg" concept, that is almost entirely identical to "sysext",
4205+ but operates on /etc/ instead of /usr/ and /opt/. Use case would be: trusted,
4206+ authenticated, atomic, additive configuration management primitive: drop in a
4207+ configuration bundle, and activate it, so that it is instantly visible,
4208+ comprehensively.
4209+
4210+* systemd-dissect: show available versions inside of a disk image, i.e. if
4211+ multiple versions are around of the same resource, show which ones. (in other
4212+ words: show partition labels).
4213+
4214+* systemd-nspawn: make boot assessment do something sensible in a
4215+ container. i.e send an sd_notify() from payload to container manager once
4216+ boot-up is completed successfully, and use that in nspawn for dealing with
4217+ boot counting, implemented in the partition table labels and directory names.
4218+
4219+* maybe add a generator that reads /proc/cmdline, looks for
4220+ systemd.pull-raw-portable=, systemd-pull-raw-sysext= and similar switches
4221+ that take an URL as parameter. It then generates service units for
4222+ systemd-pull calls that download these URLs if not installed yet. usecase:
4223+ invoke a VM or nspawn container in a way it automatically deploys/runs these
4224+ images as OS payloads. i.e. have a generic OS image you can point to any
4225+ payload you like, which is then downloaded, securely verified and run.
4226+
4227+* improve scope units to support creation by pidfd instead of by PID
4228+
4229+* deprecate cgroupsv1 further (print log message at boot)
4230+
4231+* systemd-dissect: add --cat switch for dumping files such as /etc/os-release
4232+
4233+* per-service sandboxing option: ProtectIds=. If used, will overmount
4234+ /etc/machine-id and /proc/sys/kernel/random/boot_id with synthetic files, to
4235+ make it harder for the service to identify the host. Depending on the user
4236+ setting it should be fully randomized at invocation time, or a hash of the
4237+ real thing, keyed by the unit name or so. Of course, there are other ways to
4238+ get these IDs (e.g. journal) or similar ids (e.g. MAC addresses, DMI ids, CPU
4239+ ids), so this knob would only be useful in combination with other lockdown
4240+ options. Particularly useful for portable services, and anything else that
4241+ uses RootDirectory= or RootImage=. (Might also over-mount
4242+ /sys/class/dmi/id/*{uuid,serial} with /dev/null).
4243+
4244+* journalctl/timesyncd: whenever timesyncd acquires a synchronization from NTP,
4245+ create a structured log entry that contains boot ID, monotonic clock and
4246+ realtime clock (I mean, this requires no special work, as these three fields
4247+ are implicit). Then in journalctl when attempting to display the realtime
4248+ timestamp of a log entry, first search for the closest later log entry
4249+ of this kinda that has a matching boot id, and convert the monotonic clock
4250+ timestamp of the entry to the realtime clock using this info. This way we can
4251+ retroactively correct the wallclock timestamps, in particular for systems
4252+ without RTC, i.e. where initially wallclock timestamps carry rubbish, until
4253+ an NTP sync is acquired.
4254+
4255+* kernel-install:
4256+ - add --all switch for rerunning kernel-install for all installed kernels
4257+ - maybe add env var that shortcuts kernel-install for installers that want to
4258+ call it at the end only
4259+
4260+* doc: prep a document explaining resolved's internal objects, i.e. Query
4261+ vs. Question vs. Transaction vs. Stream and so on.
4262+
4263+* doc: prep a document explaining PID 1's internal logic, i.e. transactions,
4264+ jobs, units
4265+
4266+* bootspec: remove tries counter from boot entry ids
4267+
4268+* bootspec: bring UEFI and userspace enumeration of bootspec entries back into
4269+ sync, i.e. parse out tries in both
4270+
4271+* automatically ignore threaded cgroups in cg_xyz().
4272+
4273+* add linker script that implicitly adds symbol for build ID and new coredump
4274+ json package metadata, and use that when logging
4275+
4276+* systemd-dissect: show GPT disk UUID in output
4277+
4278+* Enable RestricFileSystems= for all our long-running services (similar:
4279+ RestrictNetworkInterfaces=)
4280+
4281+* Add systemd-analyze security checks for RestrictFileSystems= and
4282+ RestrictNetworkInterfaces=
4283+
4284+* cryptsetup/homed: implement TOTP authentication backed by TPM2 and its
4285+ internal clock.
4286+
4287+* nspawn: optionally set up nftables/iptables routes that forward UDP/TCP
4288+ traffic on port 53 to resolved stub 127.0.0.54
4289+
4290+* man: rework os-release(5), and clearly separate our extension-release.d/ and
4291+ initrd-release parts, i.e. list explicitly which fields are about what.
4292+
4293+* sysext: before applying a sysext, do a superficial validation run so that
4294+ things are not rearranged to wildy. I.e. protect against accidental fuckups,
4295+ such as masking out /usr/lib/ or so. We should probably refuse if existing
4296+ inodes are replaced by other types of inodes or so.
4297+
4298+* sysext: ensure one can build a sysext that can safely apply to *any* system
4299+ (because it contains only static go binaries in /opt/ or so)
4300+
4301+* userdb: when synthesizing NSS records, pick "best" password from defined
4302+ passwords, not just the first. i.e. if there are multiple defined, prefer
4303+ unlocked over locked and prefer non-empty over empty.
4304+
4305+* maybe add a tool inspired by the GPT auto discovery spec that runs in the
4306+ initrd and rearranges the rootfs hierarchy via bind mounts, if
4307+ enabled. Specifically in some top-level dir /@auto/ it will look for
4308+ dirs/symlinks/subvolumes that are named after their purpose, and optionally
4309+ encode a version as well as assessment counters, and then mount them into the
4310+ file system tree to boot into, similar to how we do that for the gpt auto
4311+ logic. Maybe then bind mount the original root into /.superior or something
4312+ like that (so that update tools can look there). Further discussion in this
4313+ thread:
4314+ https://lists.freedesktop.org/archives/systemd-devel/2021-November/047059.html
4315+ The GPT dissection logic should automatically enable this tool whenever we
4316+ detect a specially marked root fs (i.e introduce a new generic root gpt type
4317+ for this, that is arch independent). The also implement this in the image
4318+ dissection logic, so that nspawn/RootImage= and so on grok it. Maybe make
4319+ generic enough so that it can also work for ostrees arrangements.
4320+
4321+* if a path ending in ".auto.d/" is set for RootDirectory=/RootImage= then do a
4322+ strverscmp() of everything inside that dir and use that. i.e. implement very
4323+ simple version control. Also use this in systemd-nspawn --image= and so on.
4324+
4325+* homed: while a home dir is not activated generate slightly different NSS
4326+ records for it, that reports the home dir as "/" and the shell as some binary
4327+ provided by us. Then, when an SSH login happens and SSH permits it our binary
4328+ is invoked. This binary can then talk to homed and activate the homedir if
4329+ it's not around yet, prompting the user for a password. Once that succeeded
4330+ we'll switch to the real user record, i.e. home dir and shell, and our tool
4331+ exec()s the latter. Net effect: ssh'ing into a homed account will just work:
4332+ we'll neatly prompt for the homedir's password if its needed. –– Building on
4333+ this we could take this even further: since this tool will potentially have
4334+ access to the client's ssh-agent (if ssh-agent forwarding is enabled) we
4335+ could implement SSH unlocking of a homedir with that: when enrolling a new
4336+ ssh pubkey in a user record we'd ask the ssh-agent to sign some random value
4337+ with the privkey, then use that as luks key to unlock the home dir. Will not
4338+ work for ECDSA keys since their signatures contain a random component, but
4339+ will work for RSA and Ed25519 keys.
4340+
4341+* add tiny service that decrypts encrypted user records passed via initrd
4342+ credential logic and drops them into /run where nss-systemd can pick them up,
4343+ similar to /run/host/userdb/. Usecase: drop a root user JSON record there,
4344+ and use it in the initrd to log in as root with locally selected password,
4345+ for debugging purposes. Other usecase: boot into qemu with regular user
4346+ mounted from host. maybe put this in systemd-user-sessions.service?
4347+
4348+* drop dependency on libcap, replace by direct syscalls based on
4349+ CapabilityQuintet we already have. (This likely allows us drop drop libcap
4350+ dep in the base OS image)
4351+
4352+* sysext: automatically activate sysext images dropped in via new sd-stub
4353+ sysext pickup logic.
4354+
4355+* add concept for "exitrd" as inverse of "initrd", that we can transition to at
4356+ shutdown, and has similar security semantics. This should then take the place
4357+ of dracut's shutdown logic. Should probably support sysexts too. Care needs
4358+ to be taken that the resulting logic ends up in RAM, i.e. is copied out of
4359+ on-disk storage.
4360+
4361+* userdbd: implement an additional varlink service socket that provides the
4362+ host user db in restricted form, then allow this to be bind mounted into
4363+ sandboxed environments that want the host database in minimal form. All
4364+ records would be stripped of all meta info, except the basic UID/name
4365+ info. Then use this in portabled environments that do not use PrivateUsers=1.
4366+
4367+* logind introduce two types of sessions: "heavy" and "light". The former would
4368+ be our current sessions. But the latter would be a new type of session that
4369+ is mostly the same but does not pull in user@.service or wait for it. Then,
4370+ allow configuration which type of session is desired via pam_systemd
4371+ parameters, and then make user@.service's session one of these "light" ones.
4372+ People could then choose to make FTP sessions and suchlike "light" if they
4373+ don't want the service manager to be started for that.
4374+
4375+* /etc/veritytab: allow that the roothash column can be specified as fs path
4376+ including a path to an AF_UNIX path, similar to how we do things with the
4377+ keys of /etc/crypttab. That way people can store/provide the roothash
4378+ externally and provide to us on demand only.
4379+
4380+* add high-level lockdown level for GPT dissection logic: e.g. an enum that can
4381+ be ANY (to mount anything), TRUSTED (to require that /usr is on signed
4382+ verity, but rest doesn't matter), LOCKEDDOWN (to require that everything is
4383+ on signed verity, except for ESP), SUPERLOCKDOWN (like LOCKEDDOWN but ESP not
4384+ allowed). And then maybe some flavours of that that declare what is expected
4385+ from home/srv/var… Then, add a new cmdline flag to all tools that parse such
4386+ images, to configure this. Also, add a kernel cmdline option for this, to be
4387+ honoured by the gpt auto generator.
4388+
4389+* nspawn: maybe optionally insert .nspawn file as GPT partition into images, so
4390+ that such container images are entirely stand-alone and can be updated as
4391+ one.
4392+
4393+* we probably should extend the root verity hash of the root fs into some PCR
4394+ on boot. (i.e. maybe add a crypttab option tpm2-measure=8 or so to measure it
4395+ into PCR 8)
4396+
4397+* add a "policy" to the dissection logic. i.e. a bit mask what is OK to mount,
4398+ what must be read-only, what requires encryption, and what requires
4399+ authentication.
4400+
4401+* in uefi stub: query firmware regarding which PCRs are being used, store that
4402+ in EFI var. then use this when enrolling TPM2 in cryptsetup to verify that
4403+ the selected PCRs actually are used by firmware.
4404+
4405+* rework recursive read-only remount to use new mount API
4406+
4407+* PAM: pick up authentication token from credentials
4408+
4409+* when mounting disk images: if IMAGE_ID/IMAGE_VERSION is set in os-release
4410+ data in the image, make sure the image filename actually matches this, so
4411+ that images cannot be misused.
4412+
4413 * New udev block device symlink names:
4414- /dev/disk/by-parttypelabel/<pttype>/<ptlabel>. Use case: if pt label is used
4415+ /dev/disk/by-parttypelabel/<pttype>-<ptlabel>. Use case: if pt label is used
4416 as partition image version string, this is a safe way to reference a specific
4417 version of a specific partition type, in particular where related partitions
4418 are processed (e.g. verity + rootfs both named "LennartOS_0.7").
4419
4420+* sysupdate:
4421+ - add fuzzing to the pattern parser
4422+ - support casync as download mechanism
4423+ - direct TPM2 PCR change handling, possible renrolling LUKS2 media if needed.
4424+ - "systemd-sysupdate update --all" support, that iterates through all components
4425+ defined on the host, plus all images installed into /var/lib/machines/,
4426+ /var/lib/portable/ and so on.
4427+ - figure out what to do about system extensions (i.e. they need to imply an
4428+ update component, since otherwise system extenion' sysupdate.d/ files would
4429+ override the host's update files.)
4430+ - Allow invocation with a single transfer definition, i.e. with
4431+ --definitions= pointing to a file rather than a dir.
4432+ - add ability to disable implicit decompression of downloaded artifacts,
4433+ i.e. a Compress=no option in the transfer definitions
4434+
4435 * in sd-id128: also parse UUIDs in RFC4122 URN syntax (i.e. chop off urn:uuid: prefix)
4436
4437 * DynamicUser= + StateDirectory= → use uid mapping mounts, too, in order to
4438@@ -103,11 +568,6 @@ Features:
4439 https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset.c for an example
4440 for doing that.
4441
4442-* pass systemd-detect-virt result to generators as env var. Modifying behaviour
4443- based on whether we are virtualized or not is a pretty common thing, hence
4444- maybe just pass that info along for free in an env var. We cache the result
4445- anyway, so it's basically free.
4446-
4447 * introduce /dev/disk/root/* symlinks that allow referencing partitions on the
4448 disk the rootfs is on in a reasonably secure way. (or maybe: add
4449 /dev/gpt-auto-{home,srv,boot,…} similar in style to /dev/gpt-auto-root as we
4450@@ -121,6 +581,13 @@ Features:
4451 our usual socket activation protocol. If passed path refers to AF_UNIX
4452 socket: connect() to it.
4453
4454+* Similar, ConnectStream= which takes IP addresses and connects to them.
4455+
4456+* Similar, Load= which takes literal data in text or base64 format, and puts it
4457+ into a memfd, and passes that. This enables some fun stuff, such as embedding
4458+ bash scripts in unit files, by combining Load= with ExecStart=/bin/bash
4459+ /proc/self/fd/3
4460+
4461 * add a ConnectSocket= setting to service unit files, that may reference a
4462 socket unit, and which will connect to the socket defined therein, and pass
4463 the resulting fd to the service program via socket activation proto.
4464@@ -131,9 +598,6 @@ Features:
4465 * importd: support image signature verification with PKCS#7 + OpenBSD signify
4466 logic, as alternative to crummy gpg
4467
4468-* sysext: optionally, if the merged trees allow it use bind mounts instead of
4469- overlayfs
4470-
4471 * add "systemd-analyze debug" + AttachDebugger= in unit files: The former
4472 specifies a command to execute; the latter specifies that an already running
4473 "systemd-analyze debug" instance shall be contacted and execution paused
4474@@ -142,20 +606,23 @@ Features:
4475
4476 * expose MS_NOSYMFOLLOW in various places
4477
4478-* ability to insert trusted configuration and secrets into the boot parameters
4479- of a kernel booting in a VM or on baremetal some way, via TPM
4480- protection. idea:
4481- 1. pass via /proc/bootconfig
4482- 2. for secrets: put secrets in node of /proc/bootconfig, decrypt them via
4483- TPM early on in PID 1, put them in $CREDENTIAL_PATH logic
4484- 3. for config: put signed data in node /proc/booconfig, validate via TPM
4485- early on in PID 1, put data into /run/bootconfig/ as individual files
4486- 4. boot loader/stub should pick these up automatically from the boot loader
4487- file systems
4488-
4489-* tpm2: support a PIN policy, i.e. allowing windows-style short authentication
4490- passwords by using the TPM2 to enforce ratelimiting and such, use for
4491- cryptsetup and homed
4492+* credentials system:
4493+ - acquire from EFI variable?
4494+ - acquire via via ask-password?
4495+ - acquire creds via keyring?
4496+ - pass creds via keyring?
4497+ - pass creds via memfd?
4498+ - acquire + decrypt creds from pkcs11?
4499+ - make systemd-cryptsetup acquire pw via creds logic
4500+ - make PAMName= acquire pw via creds logic
4501+ - make macsec/wireguard code in networkd read key via creds logic
4502+ - make gatwayd/remote read key via creds logic
4503+ - add sd_notify() command for flushing out creds not needed anymore
4504+ - make user manager instances create and use a user-specific key (the one in
4505+ /var/lib is root-only) and add --user switch to systemd-creds to use it
4506+
4507+* add tpm.target or so which is delayed until TPM2 device showed up in case
4508+ firmware indicates there is one.
4509
4510 * Add concept for upgrading TPM2 enrollments, maybe a new switch
4511 --pcrs=4:<hash> or so, i.e. select a PCR to include in the hash, and then
4512@@ -166,9 +633,6 @@ Features:
4513
4514 * introduce a new group to own TPM devices
4515
4516-* cryptenroll: politely refuse enrolling new keys to homed volumes, since we
4517- we cannot update identity info
4518-
4519 * cryptsetup: if only recovery keys are registered and no regular passphrases,
4520 ask user for "recovery key", not "passphrase"
4521
4522@@ -177,9 +641,6 @@ Features:
4523 * cryptsetup: optionally, when run during boot-up and password is never
4524 entered, and we are on battery power (or so), power off machine again
4525
4526-* cryptsetup: when FIDO2/PKCS#11/TPM2 token/chip didn't show up after some
4527- time, abort the attempt, fallback to asking for pw
4528-
4529 * cryptsetup: when waiting for FIDO2/PKCS#11 token, tell plymouth that, and
4530 allow plymouth to abort the waiting and enter pw instead
4531
4532@@ -195,19 +656,6 @@ Features:
4533 - cryptsetup-generator: allow specification of passwords in crypttab itself
4534 - support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator
4535
4536-* credentials system:
4537- - maybe add AcquireCredential= for querying a cred via ask-password
4538- - maybe try to acquire creds via keyring?
4539- - maybe try to pass creds via keyring?
4540- - maybe optionally pass creds via memfd
4541- - maybe add support for decrypting creds via TPM
4542- - maybe add support for decrypting/importing creds via pkcs11
4543- - make systemd-cryptsetup acquire pw via creds logic
4544- - make PAMName= acquire pw via creds logic
4545- - make macsec/wireguard code in networkd read key via creds logic
4546- - make gatwayd/remote read key via creds logic
4547- - add sd_notify() command for flushing out creds not needed anymore
4548-
4549 * when configuring loopback netif, and it fails due to EPERM, eat up error if
4550 it happens to be set up alright already.
4551
4552@@ -223,9 +671,6 @@ Features:
4553 address as conduit for some minimal connection metainfo, and use it to
4554 restore the "description" logic that kdbus used to have.
4555
4556-* teach LoadCredential= the ability to load all files from a specified dir as
4557- individual creds
4558-
4559 * systemd-analyze netif that explains predictable interface (or networkctl)
4560
4561 * Add service setting to run a service within the specified VRF. i.e. do the
4562@@ -238,15 +683,10 @@ Features:
4563 * special case some calls of chase_symlinks() to use openat2() internally, so
4564 that the kernel does what we otherwise do.
4565
4566-* make use of new glibc 2.32 APIs sigabbrev_np() and strerrorname_np().
4567-
4568-* add /etc/integritytab, to support dm-integrity setups. In particular those
4569- with HMAC as hash function, so that we can have a protected /home without
4570- encryption (leaving encryption to the individual dirs/homed).
4571+* add a new flag to chase_symlinks() that stops chasing once the first missing
4572+ component is found and then allows the caller to create the rest.
4573
4574-* complement root=, rootflags=, rootfstype= with rootsubdir= which allows
4575- mounting a subdir of the root fs as actual root. This can be used as
4576- fstype-agnostic version of btrfs' rootflags=subvol=foobar.
4577+* make use of new glibc 2.32 APIs sigabbrev_np() and strerrorname_np().
4578
4579 * if /usr/bin/swapoff fails due to OOM, log a friendly explanatory message about it
4580
4581@@ -262,7 +702,6 @@ Features:
4582
4583 * make us use dynamically fewer deps for containers in general purpose distros:
4584 o turn into dlopen() deps:
4585- - elfutils (always)
4586 - p11-kit-trust (always)
4587 - kmod-libs (only when called from PID 1)
4588 - libblkid (only in RootImage= handling in PID 1, but not elsewhere)
4589@@ -289,8 +728,6 @@ Features:
4590 * seccomp: don't install filters for ABIs that are masked anyway for the
4591 specific service
4592
4593-* seccomp: maybe merge all filters we install into one with that libseccomp API that allows merging.
4594-
4595 * busctl: maybe expose a verb "ping" for pinging a dbus service to see if it
4596 exists and responds.
4597
4598@@ -298,20 +735,14 @@ Features:
4599 for "hibernate" partitions, that are exactly like swap partitions but only
4600 activated right before hibernation and thus never used for regular swapping.
4601
4602-* by default, in systemd --user service bump the OOMAdjust to 100, as privs
4603- allow so that systemd survives
4604-
4605 * socket units: allow creating a udev monitor socket with ListenDevices= or so,
4606 with matches, then activate app through that passing socket over
4607
4608-* unify on openssl (as soon as OpenSSL 3.0 is out, and the Debian license
4609- confusion is gone)
4610- - port sd_id128_get_machine_app_specific() over from khash
4611- - port resolved over from libgcrypt (DNSSEC code)
4612- - port journald + fsprg over from libgcrypt
4613- - port importd over from libgcrypt
4614- - when that's done: kill khash.c
4615- - when that's done: kill gnutls support in resolved
4616+* unify on openssl:
4617+ - kill gnutls support in resolved
4618+ - figure out what to do about libmicrohttpd, which has a hard dependency on
4619+ gnutls
4620+ - port fsprg over to a dlopen lib, then switch it to openssl
4621
4622 * add growvol and makevol options for /etc/crypttab, similar to
4623 x-systemd.growfs and x-systemd-makefs.
4624@@ -371,9 +802,8 @@ Features:
4625 https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby-wake-sources
4626 at the end).
4627
4628-* We should probably replace /var/log/README, /etc/rc.d/README with symlinks
4629- that are linked to these places instead of copied. After all they are
4630- constant vendor data.
4631+* We should probably replace /etc/rc.d/README with a symlink to doc
4632+ content. After all it is constant vendor data.
4633
4634 * maybe add kernel cmdline params: to force random seed crediting
4635
4636@@ -420,12 +850,10 @@ Features:
4637 * paranoia: whenever we process passwords, call mlock() on the memory
4638 first. i.e. look for all places we use free_and_erasep() and
4639 augment them with mlock(). Also use MADV_DONTDUMP.
4640+ Alternatively (preferably?) use memfd_secret().
4641
4642 * Move RestrictAddressFamily= to the new cgroup create socket
4643
4644-* support the bind/connect/sendmsg cgroup stuff for sandboxing, and possibly
4645- patching around
4646-
4647 * maybe implicitly attach monotonic+realtime timestamps to outgoing messages in
4648 log.c and sd-journal-send
4649
4650@@ -433,9 +861,6 @@ Features:
4651
4652 * introduce per-unit (i.e. per-slice, per-service) journal log size limits.
4653
4654-* sd-boot: automatically load EFI modules from some drop-in dir, so that people
4655- can add in file system drivers and such
4656-
4657 * sd-boot: optionally, show boot menu when previous default boot item has
4658 non-zero "tries done" count
4659
4660@@ -481,9 +906,7 @@ Features:
4661 selected user is resolvable in the service even if it ships its own /etc/passwd)
4662
4663 * Fix DECIMAL_STR_MAX or DECIMAL_STR_WIDTH. One includes a trailing NUL, the
4664- other doesn't. What a disaster. Probably to exclude it. Also
4665- DECIMAL_STR_WIDTH should probably add an extra "-" into account for negative
4666- numbers.
4667+ other doesn't. What a disaster. Probably to exclude it.
4668
4669 * Check that users of inotify's IN_DELETE_SELF flag are using it properly, as
4670 usually IN_ATTRIB is the right way to watch deleted files, as the former only
4671@@ -551,8 +974,6 @@ Features:
4672 systemd-journald writes to /var/log/journal, which could be useful when we
4673 doing disk usage calculations and so on.
4674
4675-* taint systemd if there are fewer than 65536 users assigned (userns) to the system.
4676-
4677 * deprecate RootDirectoryStartOnly= in favour of a new ExecStart= prefix char
4678
4679 * add a new RuntimeDirectoryPreserve= mode that defines a similar lifecycle for
4680@@ -583,7 +1004,7 @@ Features:
4681 * beef up pam_systemd to take unit file settings such as cgroups properties as
4682 parameters
4683
4684-* maybe hook of xfs/ext4 quotactl() with services? i.e. automatically manage
4685+* maybe hook up xfs/ext4 quotactl() with services? i.e. automatically manage
4686 the quota of the user indicated in User= via unit file settings, like the
4687 other resource management concepts. Would mix nicely with DynamicUser=1. Or
4688 alternatively, do this with projids, so that we can also cover services
4689@@ -606,10 +1027,6 @@ Features:
4690
4691 ReadWritePaths=:/var/lib/foobar
4692
4693-* hostnamed: populate form factor data from a new hwdb database, so that old
4694- yogas can be recognized as "convertible" too, even if they predate the DMI
4695- "convertible" form factor
4696-
4697 * Add ExecMonitor= setting. May be used multiple times. Forks off a process in
4698 the service cgroup, which is supposed to monitor the service, and when it
4699 exits the service is considered failed by its monitor.
4700@@ -684,8 +1101,6 @@ Features:
4701
4702 * when we detect that there are waiting jobs but no running jobs, do something
4703
4704-* push CPUAffinity= also into the "cpuset" cgroup controller
4705-
4706 * PID 1 should send out sd_notify("WATCHDOG=1") messages (for usage in the --user mode, and when run via nspawn)
4707
4708 * there's probably something wrong with having user mounts below /sys,
4709@@ -877,8 +1292,7 @@ Features:
4710 - add verification of [Install] section to systemd-analyze verify
4711
4712 * timer units:
4713- - timer units should get the ability to trigger when:
4714- o DST changes
4715+ - timer units should get the ability to trigger when DST changes
4716 - Modulate timer frequency based on battery state
4717
4718 * add libsystemd-password or so to query passwords during boot using the password agent logic
4719@@ -889,8 +1303,6 @@ Features:
4720
4721 * make repeated alt-ctrl-del presses printing a dump
4722
4723-* hostnamed: before returning information from /etc/machine-info.conf check the modification data and reread. Similar for localed, ...
4724-
4725 * currently x-systemd.timeout is lost in the initrd, since crypttab is copied into dracut, but fstab is not
4726
4727 * add a pam module that passes the hdd passphrase into the PAM stack and then expires it, for usage by gdm auto-login.
4728@@ -914,10 +1326,8 @@ Features:
4729 ConditionConfigSearchPathNotEmpty= or different syntax? See the discussion starting at
4730 https://github.com/systemd/systemd/pull/15109#issuecomment-607740136.
4731
4732-* BootLoaderSpec: Clarify that the kernel has to be in $BOOT. Clarify
4733- that the boot loader should be installed to the ESP. Define a way
4734- how an installer can figure out whether a BLS compliant boot loader
4735- is installed.
4736+* BootLoaderSpec: Define a way how an installer can figure out whether a BLS
4737+ compliant boot loader is installed.
4738
4739 * think about requeuing jobs when daemon-reload is issued? usecase:
4740 the initrd issues a reload after fstab from the host is accessible
4741@@ -932,9 +1342,6 @@ Features:
4742
4743 * merge unit_kill_common() and unit_kill_context()
4744
4745-* hw watchdog: optionally try to use the preset watchdog timeout instead of always overriding it
4746- https://bugs.freedesktop.org/show_bug.cgi?id=54712
4747-
4748 * add a dependency on standard-conf.xml and other included files to man pages
4749
4750 * MountFlags=shared acts as MountFlags=slave right now.
4751@@ -1010,14 +1417,16 @@ Features:
4752
4753 * bootctl,sd-boot: actually honour the "architecture" key
4754
4755-* sd-boot: add service that automatically runs "bootctl update" on every boot,
4756- in a graceful way, so that updated /usr trees automatically propagate into
4757- updated boot loaders on reboot.
4758-
4759 * bootctl:
4760+ - show whether UEFI audit mode is available
4761 - teach it to prepare an ESP wholesale, i.e. with mkfs.vfat invocation
4762 - teach it to copy in unified kernel images and maybe type #1 boot loader spec entries from host
4763 - make it operate on loopback files, dissecting enough to find ESP to operate on
4764+ - bootspec: properly support boot attempt counters when parsing entry file names
4765+ - support --quiet in is-installed, update
4766+
4767+* kernel-install:
4768+ - optionally, support generating type #2 entries instead of type #1, including signing them
4769
4770 * logind:
4771 - logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around
4772@@ -1044,8 +1453,9 @@ Features:
4773 - follow PropertiesChanged state more closely, to deal with quick logouts and
4774 relogins
4775 - (optionally?) spawn seat-manager@$SEAT.service whenever a seat shows up that as CanGraphical set
4776-
4777-* move logind udev rules to top-level rule.d/ directory
4778+ - expose details of boot entries on the bus. In particular, it should be possible
4779+ to query the list of boot entry titles that bootctl / sd-boot would show.
4780+ Currently we only expose their identifiers.
4781
4782 * move multiseat vid/pid matches from logind udev rule to hwdb
4783
4784@@ -1155,8 +1565,6 @@ Features:
4785 - when user tries to log into record signed by unrecognized key, automatically add key to our chain after polkit auth
4786 - rollback when resize fails mid-operation
4787 - GNOME's side for forget key on suspend (requires rework so that lock screen runs outside of uid)
4788- - resize on login?
4789- - shrink fs on logout?
4790 - update LUKS password on login if we find there's a password that unlocks the JSON record but not the LUKS device.
4791 - create on activate?
4792 - properties: icon url?, preferred session type?, administrator bool (which translates to 'wheel' membership)?, address?, telephone?, vcard?, samba stuff?, parental controls?
4793@@ -1173,63 +1581,49 @@ Features:
4794 - make size of $XDG_RUNTIME_DIR configurable in user record
4795 - query password from kernel keyring first
4796 - update even if record is "absent"
4797- - add a "access mode" + "fstype" field to the "status" section of json identity records reflecting the actually used access mode and fstype, even on non-luks backends
4798 - move acct mgmt stuff from pam_systemd_home to pam_systemd?
4799 - when "homectl --pkcs11-token-uri=" is used, synthesize ssh-authorized-keys records for all keys we have private keys on the stick for
4800 - make slice for users configurable (requires logind rework)
4801 - logind: populate auto-login list bus property from PKCS#11 token
4802 - when determining state of a LUKS home directory, check DM suspended sysfs file
4803- - introduce API for "making room", that grows/shrinks home directory
4804- according to elastic parameters, discards blocks, and removes additional snapshots. Call it
4805- either from UI when disk space gets low
4806-
4807-* homed: during login resize fs automatically towards size goal. Specifically,
4808- resize to diskSize if possible, but leave a certain amount (configured by a
4809- new value diskLeaveFreeSize) of space free on the backing fs.
4810-
4811-* homed: permit multiple user record signing keys to be used locally, and pick
4812- the right one for signing records automatically depending on a pre-existing
4813- signature
4814-
4815-* homed: add a way to "adopt" a home directory, i.e. strip foreign signatures
4816- and insert a local signature instead.
4817-
4818-* homed: as an extension to the directory+subvolume backend: if located on
4819- especially marked fs, then sync down password into LUKS header of that fs,
4820- and always verify passwords against it too. Bootstrapping is a problem
4821- though: if no one is logged in (or no other user even exists yet), how do you
4822- unlock the volume in order to create the first user and add the first pw.
4823-
4824-* homed: support new FS_IOC_ADD_ENCRYPTION_KEY ioctl for setting up fscrypt
4825-
4826-* homed: maybe pre-create ~/.cache as subvol so that it can have separate quota
4827- easily?
4828-
4829-* homed: if kernel 5.12 uid mapping mounts exist, use that instead of recursive
4830- chowns.
4831-
4832-* add a switch to homectl (maybe called --first-boot) where it will check if
4833- any non-system users exist, and if not prompts interactively for basic user
4834- info, mimicking systemd-firstboot. Then, place this in a service that runs
4835- after systemd-homed, but before gdm and friends, as a simple, barebones
4836- fallback logic to get a regular user created on uninitialized systems.
4837-
4838-* homed: store PKCS#11 + FIDO2 token info in LUKS2 header, compatible with
4839- systemd-cryptsetup, so that it can unlock homed volumes
4840-
4841-* homed: try to unmount in regular intervals when home dir was busy when we
4842- tried because idle.
4843-
4844-* homed: keep an fd to the homedir open at all times, to keep the fs pinned
4845- (autofs and such) while user is logged in.
4846-
4847-* when we resize disks (homed?) always round up to 4K sectors, not 512K
4848+ - when homed is in use, maybe start the user session manager in a mount namespace with MS_SLAVE,
4849+ so that mounts propagate down but not up - eg, user A setting up a backup volume
4850+ doesn't mean user B sees it
4851+ - use credentials logic/TPM2 logic to store homed signing key
4852+ - permit multiple user record signing keys to be used locally, and pick
4853+ the right one for signing records automatically depending on a pre-existing
4854+ signature
4855+ - add a way to "adopt" a home directory, i.e. strip foreign signatures
4856+ and insert a local signature instead.
4857+ - as an extension to the directory+subvolume backend: if located on
4858+ especially marked fs, then sync down password into LUKS header of that fs,
4859+ and always verify passwords against it too. Bootstrapping is a problem
4860+ though: if no one is logged in (or no other user even exists yet), how do you
4861+ unlock the volume in order to create the first user and add the first pw.
4862+ - support new FS_IOC_ADD_ENCRYPTION_KEY ioctl for setting up fscrypt
4863+ - maybe pre-create ~/.cache as subvol so that it can have separate quota
4864+ easily?
4865+ - add a switch to homectl (maybe called --first-boot) where it will check if
4866+ any non-system users exist, and if not prompts interactively for basic user
4867+ info, mimicking systemd-firstboot. Then, place this in a service that runs
4868+ after systemd-homed, but before gdm and friends, as a simple, barebones
4869+ fallback logic to get a regular user created on uninitialized systems.
4870+ - store PKCS#11 + FIDO2 token info in LUKS2 header, compatible with
4871+ systemd-cryptsetup, so that it can unlock homed volumes
4872+ - maybe make all *.home files owned by `systemd-home` user or so, so that we
4873+ can easily set overall quota for all users
4874+ - on login, if we can't fallocate initially, but rebalance is on, then allow
4875+ login in discard mode, then immediately rebalance, then turn off discard
4876+ - extend user records with optional "bulk" data. Specifically, a user
4877+ avatar/photo or so. This data should be stored along with the user record,
4878+ but probably shouldn't be part of the record itself, since it might be
4879+ large.
4880
4881 * add a new switch --auto-definitions=yes/no or so to systemd-repart. If
4882 specified, synthesize a definition automatically if we can: enlarge last
4883 partition on disk, but only if it is marked for growing and not read-only.
4884
4885-* systemd-repart: read LUKS encryption key from $CREDENTIALS_PATH
4886+* systemd-repart: read LUKS encryption key from $CREDENTIALS_DIRECTORY
4887
4888 * systemd-repart: add a switch to factory reset the partition table without
4889 immediately applying the new configuration again. i.e. --factory-reset=leave
4890@@ -1360,9 +1754,6 @@ Features:
4891 - optionally automatically add FORWARD rules to iptables whenever nspawn is
4892 running, remove them when shut down.
4893
4894-* nspawn: make --bind= work sanely with --private-users when uid mapping mounts
4895- are used.
4896-
4897 * nspawn: add support for sysext extensions, too. i.e. a new --extension=
4898 switch that takes one or more arguments, and applies the extensions already
4899 during startup.
4900diff --git a/catalog/meson.build b/catalog/meson.build
4901index 7139c2e..6a0a219 100644
4902--- a/catalog/meson.build
4903+++ b/catalog/meson.build
4904@@ -1,25 +1,24 @@
4905 # SPDX-License-Identifier: LGPL-2.1-or-later
4906
4907-in_files = '''
4908- systemd.bg.catalog
4909- systemd.be.catalog
4910- systemd.be@latin.catalog
4911- systemd.de.catalog
4912- systemd.fr.catalog
4913- systemd.it.catalog
4914- systemd.pl.catalog
4915- systemd.pt_BR.catalog
4916- systemd.ru.catalog
4917- systemd.zh_CN.catalog
4918- systemd.zh_TW.catalog
4919- systemd.catalog
4920-'''.split()
4921+in_files = [
4922+ 'systemd.bg.catalog',
4923+ 'systemd.be.catalog',
4924+ 'systemd.be@latin.catalog',
4925+ 'systemd.de.catalog',
4926+ 'systemd.fr.catalog',
4927+ 'systemd.it.catalog',
4928+ 'systemd.pl.catalog',
4929+ 'systemd.pt_BR.catalog',
4930+ 'systemd.ru.catalog',
4931+ 'systemd.zh_CN.catalog',
4932+ 'systemd.zh_TW.catalog',
4933+ 'systemd.catalog']
4934
4935 support_url = get_option('support-url')
4936 support_sed = 's~%SUPPORT_URL%~@0@~'.format(support_url)
4937
4938 foreach file : in_files
4939- custom_target(
4940+ catalogs += custom_target(
4941 file,
4942 input : file + '.in',
4943 output: file,
4944diff --git a/catalog/systemd.catalog.in b/catalog/systemd.catalog.in
4945index 3e08f56..a3f05c0 100644
4946--- a/catalog/systemd.catalog.in
4947+++ b/catalog/systemd.catalog.in
4948@@ -188,6 +188,15 @@ Support: %SUPPORT_URL%
4949 System shutdown has been initiated. The shutdown has now begun and
4950 all system services are terminated and all file systems unmounted.
4951
4952+-- c14aaf76ec284a5fa1f105f88dfb061c
4953+Subject: System factory reset initiated
4954+Defined-By: systemd
4955+Support: %SUPPORT_URL%
4956+
4957+System factory reset has been initiated. The precise operation this
4958+executes is implementation-defined, but typically has the effect of
4959+reverting the system's state and configuration to vendor defaults.
4960+
4961 -- 7d4958e842da4a758f6c1cdc7b36dcc5
4962 Subject: A start job for unit @UNIT@ has begun execution
4963 Defined-By: systemd
4964@@ -517,3 +526,11 @@ be updated to operate in a hotplug fashion without depending on
4965 systemd-udev-settle.service:
4966
4967 @OFFENDING_UNITS@
4968+
4969+-- 7c8a41f37b764941a0e1780b1be2f037
4970+Subject: Initial clock synchronization
4971+Defined-By: systemd
4972+Support: %SUPPORT_URL%
4973+
4974+For the first time during the current boot an NTP synchronization has been
4975+acquired and the local system clock adjustment has been initiated.
4976diff --git a/catalog/systemd.pl.catalog.in b/catalog/systemd.pl.catalog.in
4977index 58706f5..fce35ee 100644
4978--- a/catalog/systemd.pl.catalog.in
4979+++ b/catalog/systemd.pl.catalog.in
4980@@ -187,6 +187,16 @@ Support: %SUPPORT_URL%
4981 Zainicjowano wyłączenie systemu. Wyłączenie zostało rozpoczęte i wszystkie
4982 usługi systemowe zostały zakończone, a wszystkie systemy plików odmontowane.
4983
4984+-- c14aaf76ec284a5fa1f105f88dfb061c
4985+Subject: Zainicjowano przywrócenie danych fabrycznych systemu
4986+Defined-By: systemd
4987+Support: %SUPPORT_URL%
4988+
4989+Zainicjowano przywrócenie danych fabrycznych systemu. Dokładne działanie,
4990+jakie zostanie wykonane jest określone przez implementację, ale zwykle
4991+powoduje przywrócenie stanu i konfiguracji systemu do domyślnych wartości
4992+producenta.
4993+
4994 -- 7d4958e842da4a758f6c1cdc7b36dcc5
4995 Subject: Rozpoczęto wykonywanie zadania uruchamiania dla jednostki @UNIT@
4996 Defined-By: systemd
4997@@ -524,3 +534,11 @@ o ich aktualizację tak, aby działały w sposób dynamiczny
4998 bez zależności od usługi systemd-udev-settle.service:
4999
5000 @OFFENDING_UNITS@
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches