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
diff --git a/.clang-format b/.clang-format
index c94866f..6aa4e6a 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,7 +1,7 @@
1# This configuration file can be used to auto-format the code base.1# This configuration file can be used to auto-format the code base.
2# Not all guidelines specified in CODING_STYLE are followed, so the2# Not all guidelines specified in CODING_STYLE are followed, so the
3# result MUST NOT be committed indiscriminately, but each automated3# result MUST NOT be committed indiscriminately, but each automated
4# change should be reviewed and only the appropriate ones commited.4# change should be reviewed and only the appropriate ones committed.
5#5#
6# The easiest way to apply the formatting to your changes ONLY,6# The easiest way to apply the formatting to your changes ONLY,
7# is to use the git-clang-format script (usually installed with clang-format).7# is to use the git-clang-format script (usually installed with clang-format).
diff --git a/.clusterfuzzlite/Dockerfile b/.clusterfuzzlite/Dockerfile
8new file mode 1006448new file mode 100644
index 0000000..31e442b
--- /dev/null
+++ b/.clusterfuzzlite/Dockerfile
@@ -0,0 +1,5 @@
1FROM gcr.io/oss-fuzz-base/base-builder:v1
2ENV MERGE_WITH_OSS_FUZZ_CORPORA=yes
3COPY . $SRC/systemd
4WORKDIR $SRC/systemd
5COPY tools/oss-fuzz.sh $SRC/build.sh
diff --git a/.editorconfig b/.editorconfig
index d24acc1..27bb375 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -18,6 +18,7 @@ charset = utf-8
18[*.{c,h}]18[*.{c,h}]
19indent_style = space19indent_style = space
20indent_size = 820indent_size = 8
21max_line_length = 109
2122
22[*.sh]23[*.sh]
23indent_style = space24indent_style = space
@@ -30,3 +31,12 @@ indent_size = 8
30[man/*.xml]31[man/*.xml]
31indent_size = 232indent_size = 2
32indent_style = space33indent_style = space
34max_line_length = 109
35
36[docs/**/*.css]
37indent_style = space
38indent_size = 2
39
40[docs/**/*.html]
41indent_style = space
42indent_size = 2
diff --git a/.gitattributes b/.gitattributes
index f89d1fc..c5b9d85 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,11 @@
1*.[ch] whitespace=tab-in-indent,trailing-space1*.[ch] whitespace=tab-in-indent,trailing-space
2test/dmidecode-dumps/*.bin binary2*.gpg binary generated
3*.bmp binary
4
5# Mark files as "generated", i.e. no license applies to them.
6# This includes output from programs, directive lists generated by grepping
7# for all possibilities, samples from fuzzers, files from /proc, packet samples,
8# and anything else where no copyright can be asserted.
9#
10# Use 'git check-attr generated -- <path>' to query the attribute.
11[attr]generated
diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md
index ca82138..592833e 100644
--- a/.github/ISSUE_TEMPLATE/Bug_report.md
+++ b/.github/ISSUE_TEMPLATE/Bug_report.md
@@ -1,7 +1,7 @@
1---1---
2name: Bug report2name: Bug report
3about: A report of an error in a recent systemd version3about: A report of an error in a recent systemd version
44SPDX-License-Identifier: LGPL-2.1-or-later
5---5---
66
7**systemd version the issue has been seen with**7**systemd version the issue has been seen with**
@@ -10,7 +10,7 @@ about: A report of an error in a recent systemd version
10<!-- **NOTE:** Do not submit bug reports about anything but the two most recently released *major* systemd versions upstream! -->10<!-- **NOTE:** Do not submit bug reports about anything but the two most recently released *major* systemd versions upstream! -->
11<!-- If there have been multiple stable releases for that major version, please consider updating to a recent one before reporting an issue. -->11<!-- If there have been multiple stable releases for that major version, please consider updating to a recent one before reporting an issue. -->
12<!-- When using a distro package, please make sure that the version reported is meaningful for upstream. -->12<!-- When using a distro package, please make sure that the version reported is meaningful for upstream. -->
13<!-- See https://github.com/systemd/systemd-stable/releases for the list of most recent releases. -->13<!-- See https://github.com/systemd/systemd-stable/tags for the list of most recent releases. -->
14<!-- For older version please use distribution trackers (see https://systemd.io/CONTRIBUTING#filing-issues). -->14<!-- For older version please use distribution trackers (see https://systemd.io/CONTRIBUTING#filing-issues). -->
1515
16**Used distribution**16**Used distribution**
diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md
index 3c53d72..ad9f447 100644
--- a/.github/ISSUE_TEMPLATE/Feature_request.md
+++ b/.github/ISSUE_TEMPLATE/Feature_request.md
@@ -1,7 +1,7 @@
1---1---
2name: Feature request2name: Feature request
3about: Suggest an improvement3about: Suggest an improvement
44SPDX-License-Identifier: LGPL-2.1-or-later
5---5---
66
7**Is your feature request related to a problem? Please describe.**7**Is your feature request related to a problem? Please describe.**
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
8new file mode 1006448new file mode 100644
index 0000000..159187e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,9 @@
1---
2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4
5blank_issues_enabled: true
6contact_links:
7 - name: systemd-devel mailing list
8 url: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
9 about: Please ask (and answer) questions here, use the issue tracker only for issues.
diff --git a/.github/codeql-config.yml b/.github/codeql-config.yml
0new file mode 10064410new file mode 100644
index 0000000..447e53b
--- /dev/null
+++ b/.github/codeql-config.yml
@@ -0,0 +1,12 @@
1---
2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4name: "CodeQL config"
5
6disable-default-queries: false
7
8queries:
9 - name: Enable possibly useful queries which are disabled by default
10 uses: ./.github/codeql-custom.qls
11 - name: systemd-specific CodeQL queries
12 uses: ./.lgtm/cpp-queries/
diff --git a/.github/codeql-custom.qls b/.github/codeql-custom.qls
0new file mode 10064413new file mode 100644
index 0000000..28a22d3
--- /dev/null
+++ b/.github/codeql-custom.qls
@@ -0,0 +1,36 @@
1---
2# vi: ts=2 sw=2 et syntax=yaml:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4#
5# Note: it is not recommended to directly reference the respective queries from
6# the github/codeql repository, so we have to "dance" around it using
7# a custom QL suite
8# See:
9# - https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#running-additional-queries
10# - https://github.com/github/codeql-action/issues/430#issuecomment-806092120
11# - https://codeql.github.com/docs/codeql-cli/creating-codeql-query-suites/
12
13- import: codeql-suites/cpp-lgtm.qls
14 from: codeql/cpp-queries
15- include:
16 id:
17 - cpp/bad-strncpy-size
18 - cpp/declaration-hides-variable
19 - cpp/inconsistent-null-check
20 - cpp/mistyped-function-arguments
21 - cpp/nested-loops-with-same-variable
22 - cpp/sizeof-side-effect
23 - cpp/suspicious-pointer-scaling
24 - cpp/suspicious-pointer-scaling-void
25 - cpp/suspicious-sizeof
26 - cpp/unsafe-strcat
27 - cpp/unsafe-strncat
28 - cpp/unsigned-difference-expression-compared-zero
29 - cpp/unused-local-variable
30 tags:
31 - "security"
32 - "correctness"
33 severity: "error"
34- exclude:
35 id:
36 - cpp/fixme-comment
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
0new file mode 10064437new file mode 100644
index 0000000..3e067c1
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,19 @@
1# SPDX-License-Identifier: LGPL-2.1-or-later
2
3version: 2
4updates:
5 - package-ecosystem: "github-actions"
6 directory: "/"
7 schedule:
8 interval: "monthly"
9 open-pull-requests-limit: 2
10 - package-ecosystem: "pip"
11 directory: "/.github/workflows"
12 schedule:
13 interval: "monthly"
14 open-pull-requests-limit: 2
15 - package-ecosystem: "docker"
16 directory: "/.clusterfuzzlite"
17 schedule:
18 interval: "monthly"
19 open-pull-requests-limit: 2
diff --git a/.github/labeler.yml b/.github/labeler.yml
index 773d575..7d128f4 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -1,3 +1,5 @@
1# SPDX-License-Identifier: LGPL-2.1-or-later
2
1hwdb:3hwdb:
2 - hwdb.d/**/*4 - hwdb.d/**/*
3units:5units:
diff --git a/.github/workflows/build_test.sh b/.github/workflows/build_test.sh
index 1200fa2..a43c343 100755
--- a/.github/workflows/build_test.sh
+++ b/.github/workflows/build_test.sh
@@ -1,4 +1,5 @@
1#!/bin/bash1#!/usr/bin/env bash
2# SPDX-License-Identifier: LGPL-2.1-or-later
23
3set -ex4set -ex
45
@@ -8,9 +9,8 @@ success() { echo >&2 -e "\033[32;1m$1\033[0m"; }
89
9ARGS=(10ARGS=(
10 "--optimization=0"11 "--optimization=0"
11 "--optimization=2"12 "--optimization=s -Dgnu-efi=true -Defi-cflags=-m32 -Defi-libdir=/usr/lib32"
12 "--optimization=s"13 "--optimization=3 -Db_lto=true -Ddns-over-tls=false"
13 "--optimization=3 -Db_lto=true"
14 "--optimization=3 -Db_lto=false"14 "--optimization=3 -Db_lto=false"
15 "--optimization=3 -Ddns-over-tls=openssl"15 "--optimization=3 -Ddns-over-tls=openssl"
16 "--optimization=3 -Dfexecve=true -Dstandalone-binaries=true -Dstatic-libsystemd=true -Dstatic-libudev=true"16 "--optimization=3 -Dfexecve=true -Dstandalone-binaries=true -Dstatic-libsystemd=true -Dstatic-libudev=true"
@@ -26,6 +26,8 @@ PACKAGES=(
26 itstool26 itstool
27 kbd27 kbd
28 libblkid-dev28 libblkid-dev
29 libbpf-dev
30 libc6-dev-i386
29 libcap-dev31 libcap-dev
30 libcurl4-gnutls-dev32 libcurl4-gnutls-dev
31 libfdisk-dev33 libfdisk-dev
@@ -47,8 +49,8 @@ PACKAGES=(
47 net-tools49 net-tools
48 perl50 perl
49 python3-evdev51 python3-evdev
50 python3-lxml
51 python3-jinja252 python3-jinja2
53 python3-lxml
52 python3-pip54 python3-pip
53 python3-pyparsing55 python3-pyparsing
54 python3-setuptools56 python3-setuptools
@@ -60,6 +62,8 @@ PACKAGES=(
60)62)
61COMPILER="${COMPILER:?}"63COMPILER="${COMPILER:?}"
62COMPILER_VERSION="${COMPILER_VERSION:?}"64COMPILER_VERSION="${COMPILER_VERSION:?}"
65LINKER="${LINKER:?}"
66CRYPTOLIB="${CRYPTOLIB:?}"
63RELEASE="$(lsb_release -cs)"67RELEASE="$(lsb_release -cs)"
6468
65bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list"69bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list"
@@ -90,7 +94,7 @@ elif [[ "$COMPILER" == gcc ]]; then
90 # Latest gcc stack deb packages provided by94 # Latest gcc stack deb packages provided by
91 # https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test95 # https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
92 add-apt-repository -y ppa:ubuntu-toolchain-r/test96 add-apt-repository -y ppa:ubuntu-toolchain-r/test
93 PACKAGES+=(gcc-$COMPILER_VERSION)97 PACKAGES+=("gcc-$COMPILER_VERSION" "gcc-$COMPILER_VERSION-multilib")
94else98else
95 fatal "Unknown compiler: $COMPILER"99 fatal "Unknown compiler: $COMPILER"
96fi100fi
@@ -100,11 +104,11 @@ add-apt-repository -y ppa:upstream-systemd-ci/systemd-ci
100apt-get -y update104apt-get -y update
101apt-get -y build-dep systemd105apt-get -y build-dep systemd
102apt-get -y install "${PACKAGES[@]}"106apt-get -y install "${PACKAGES[@]}"
103# Install the latest meson and ninja form pip, since the distro versions don't107# Install more or less recent meson and ninja with pip, since the distro versions don't
104# support all the features we need (like --optimization=). Since the build-dep108# always support all the features we need (like --optimization=). Since the build-dep
105# command above installs the distro versions, let's install the pip ones just109# command above installs the distro versions, let's install the pip ones just
106# locally and add the local bin directory to the $PATH.110# locally and add the local bin directory to the $PATH.
107pip3 install --user -U meson ninja111pip3 install --user -r .github/workflows/requirements.txt --require-hashes
108export PATH="$HOME/.local/bin:$PATH"112export PATH="$HOME/.local/bin:$PATH"
109113
110$CC --version114$CC --version
@@ -114,15 +118,42 @@ ninja --version
114for args in "${ARGS[@]}"; do118for args in "${ARGS[@]}"; do
115 SECONDS=0119 SECONDS=0
116120
121 # meson fails with
122 # src/boot/efi/meson.build:52: WARNING: Not using lld as efi-ld, falling back to bfd
123 # src/boot/efi/meson.build:52:16: ERROR: Fatal warnings enabled, aborting
124 # when LINKER is set to lld so let's just not turn meson warnings into errors with lld
125 # to make sure that the build systemd can pick up the correct efi-ld linker automatically.
126
127 # The install_tag feature introduced in 0.60 causes meson to fail with fatal-meson-warnings
128 # "Project targeting '>= 0.53.2' but tried to use feature introduced in '0.60.0': install_tag arg in custom_target"
129 # It can be safely removed from the CI since it isn't actually used anywhere to test anything.
130 find . -type f -name meson.build -exec sed -i '/install_tag/d' '{}' '+'
131 if [[ "$LINKER" != lld ]]; then
132 additional_meson_args="--fatal-meson-warnings"
133 fi
117 info "Checking build with $args"134 info "Checking build with $args"
118 if ! AR="$AR" CC="$CC" CXX="$CXX" CFLAGS="-Werror" CXXFLAGS="-Werror" meson -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true --werror $args build; then135 # shellcheck disable=SC2086
136 if ! AR="$AR" \
137 CC="$CC" CC_LD="$LINKER" CFLAGS="-Werror" \
138 CXX="$CXX" CXX_LD="$LINKER" CXXFLAGS="-Werror" \
139 meson -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true --werror \
140 -Dnobody-group=nogroup $additional_meson_args \
141 -Dcryptolib="${CRYPTOLIB:?}" $args build; then
142
143 cat build/meson-logs/meson-log.txt
119 fatal "meson failed with $args"144 fatal "meson failed with $args"
120 fi145 fi
121146
122 if ! meson compile -C build; then147 if ! meson compile -C build -v; then
123 fatal "'meson compile' failed with $args"148 fatal "'meson compile' failed with $args"
124 fi149 fi
125150
151 for loader in build/src/boot/efi/*.efi; do
152 if sbverify --list "$loader" |& grep -q "gap in section table"; then
153 fatal "$loader: Gaps found in section table"
154 fi
155 done
156
126 git clean -dxf157 git clean -dxf
127158
128 success "Build with $args passed in $SECONDS seconds"159 success "Build with $args passed in $SECONDS seconds"
diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml
index fa86236..94fb677 100644
--- a/.github/workflows/build_test.yml
+++ b/.github/workflows/build_test.yml
@@ -1,5 +1,6 @@
1---1---
2# vi: ts=2 sw=2 et:2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
3#4#
4name: Build test5name: Build test
5on:6on:
@@ -11,24 +12,27 @@ on:
11 - 'src/**'12 - 'src/**'
12 - 'test/fuzz/**'13 - 'test/fuzz/**'
1314
15permissions:
16 contents: read
17
14jobs:18jobs:
15 build:19 build:
16 runs-on: ubuntu-20.0420 runs-on: ubuntu-20.04
17 concurrency:21 concurrency:
18 group: ${{ github.workflow }}-${{ matrix.env.COMPILER }}-${{ matrix.env.COMPILER_VERSION }}-${{ github.ref }}22 group: ${{ github.workflow }}-${{ toJSON(matrix.env) }}-${{ github.ref }}
19 cancel-in-progress: true23 cancel-in-progress: true
20 strategy:24 strategy:
21 fail-fast: false25 fail-fast: false
22 matrix:26 matrix:
23 env:27 env:
24 - { COMPILER: "gcc", COMPILER_VERSION: "10" }28 - { COMPILER: "gcc", COMPILER_VERSION: "10", LINKER: "bfd", CRYPTOLIB: "gcrypt" }
25 - { COMPILER: "gcc", COMPILER_VERSION: "11" }29 - { COMPILER: "gcc", COMPILER_VERSION: "11", LINKER: "gold", CRYPTOLIB: "openssl" }
26 - { COMPILER: "clang", COMPILER_VERSION: "10" }30 - { COMPILER: "clang", COMPILER_VERSION: "12", LINKER: "gold", CRYPTOLIB: "gcrypt" }
27 - { COMPILER: "clang", COMPILER_VERSION: "11" }31 - { COMPILER: "clang", COMPILER_VERSION: "13", LINKER: "lld", CRYPTOLIB: "openssl" }
28 - { COMPILER: "clang", COMPILER_VERSION: "12" }32 - { COMPILER: "clang", COMPILER_VERSION: "14", LINKER: "bfd", CRYPTOLIB: "auto" }
29 env: ${{ matrix.env }}33 env: ${{ matrix.env }}
30 steps:34 steps:
31 - name: Repository checkout35 - name: Repository checkout
32 uses: actions/checkout@v136 uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
33 - name: Build check (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }})37 - name: ${{ format('Build check ({0}-{1}-{2}-{3})', env.COMPILER, env.COMPILER_VERSION, env.LINKER, env.CRYPTOLIB) }}
34 run: sudo -E .github/workflows/build_test.sh38 run: sudo -E .github/workflows/build_test.sh
diff --git a/.github/workflows/cflite_pr.yml b/.github/workflows/cflite_pr.yml
35new file mode 10064439new file mode 100644
index 0000000..a35a97f
--- /dev/null
+++ b/.github/workflows/cflite_pr.yml
@@ -0,0 +1,39 @@
1---
2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4#
5name: ClusterFuzzLite PR fuzzing
6on:
7 pull_request:
8 branches:
9 - main
10 - v[0-9]+-stable
11
12permissions: read-all
13
14jobs:
15 PR:
16 runs-on: ubuntu-latest
17 if: github.repository != 'systemd/systemd' || github.event.pull_request.user.login == 'dependabot[bot]'
18 concurrency:
19 group: ${{ github.workflow }}-${{ matrix.sanitizer }}-${{ github.ref }}
20 cancel-in-progress: true
21 strategy:
22 fail-fast: false
23 matrix:
24 sanitizer: [address, undefined, memory]
25 steps:
26 - name: Build Fuzzers (${{ matrix.sanitizer }})
27 id: build
28 uses: google/clusterfuzzlite/actions/build_fuzzers@v1
29 with:
30 sanitizer: ${{ matrix.sanitizer }}
31 github-token: ${{ secrets.GITHUB_TOKEN }}
32 - name: Run Fuzzers (${{ matrix.sanitizer }})
33 id: run
34 uses: google/clusterfuzzlite/actions/run_fuzzers@v1
35 with:
36 github-token: ${{ secrets.GITHUB_TOKEN }}
37 fuzz-seconds: 1200
38 mode: 'code-change'
39 sanitizer: ${{ matrix.sanitizer }}
diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml
index 8ab2a4c..f674d43 100644
--- a/.github/workflows/cifuzz.yml
+++ b/.github/workflows/cifuzz.yml
@@ -1,8 +1,13 @@
1---1---
2# vi: ts=2 sw=2 et:2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
3# See: https://google.github.io/oss-fuzz/getting-started/continuous-integration/4# See: https://google.github.io/oss-fuzz/getting-started/continuous-integration/
45
5name: CIFuzz6name: CIFuzz
7
8permissions:
9 contents: read
10
6on:11on:
7 pull_request:12 pull_request:
8 paths:13 paths:
@@ -34,6 +39,8 @@ jobs:
34 oss-fuzz-project-name: 'systemd'39 oss-fuzz-project-name: 'systemd'
35 dry-run: false40 dry-run: false
36 allowed-broken-targets-percentage: 041 allowed-broken-targets-percentage: 0
42 # keep-unaffected-fuzz-targets should be removed once https://github.com/google/oss-fuzz/issues/7011 is fixed
43 keep-unaffected-fuzz-targets: true
37 sanitizer: ${{ matrix.sanitizer }}44 sanitizer: ${{ matrix.sanitizer }}
38 - name: Run Fuzzers (${{ matrix.sanitizer }})45 - name: Run Fuzzers (${{ matrix.sanitizer }})
39 uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master46 uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
@@ -43,7 +50,7 @@ jobs:
43 dry-run: false50 dry-run: false
44 sanitizer: ${{ matrix.sanitizer }}51 sanitizer: ${{ matrix.sanitizer }}
45 - name: Upload Crash52 - name: Upload Crash
46 uses: actions/upload-artifact@v153 uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2
47 if: failure() && steps.build.outcome == 'success'54 if: failure() && steps.build.outcome == 'success'
48 with:55 with:
49 name: ${{ matrix.sanitizer }}-artifacts56 name: ${{ matrix.sanitizer }}-artifacts
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
50new file mode 10064457new file mode 100644
index 0000000..4ee50ac
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,57 @@
1---
2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4#
5name: "CodeQL"
6
7on:
8 pull_request:
9 branches: [main]
10 paths:
11 - .github/codeql-config.yml
12 - .github/codeql-custom.qls
13 - .github/workflows/codeql-analysis.yml
14 - .github/workflows/requirements.txt
15 - .github/workflows/unit_tests.sh
16 # It takes the workflow approximately 30 minutes to analyze the code base
17 # so it doesn't seem to make much sense to trigger it on every PR or commit.
18 # It runs daily at 01:00 to avoid colliding with the Coverity workflow.
19 schedule:
20 - cron: '0 1 * * *'
21
22permissions:
23 contents: read
24
25jobs:
26 analyze:
27 name: Analyze
28 runs-on: ubuntu-latest
29 concurrency:
30 group: ${{ github.workflow }}-${{ matrix.language }}-${{ github.ref }}
31 cancel-in-progress: true
32 permissions:
33 actions: read
34 security-events: write
35
36 strategy:
37 fail-fast: false
38 matrix:
39 language: [ 'cpp', 'python' ]
40
41 steps:
42 - name: Checkout repository
43 uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
44
45 - name: Initialize CodeQL
46 uses: github/codeql-action/init@28eead240834b314f7def40f6fcba65d100d99b1
47 with:
48 languages: ${{ matrix.language }}
49 config-file: ./.github/codeql-config.yml
50
51 - run: sudo -E .github/workflows/unit_tests.sh SETUP
52
53 - name: Autobuild
54 uses: github/codeql-action/autobuild@28eead240834b314f7def40f6fcba65d100d99b1
55
56 - name: Perform CodeQL Analysis
57 uses: github/codeql-action/analyze@28eead240834b314f7def40f6fcba65d100d99b1
diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml
index a0eb0f0..1c29c8b 100644
--- a/.github/workflows/coverity.yml
+++ b/.github/workflows/coverity.yml
@@ -1,5 +1,6 @@
1---1---
2# vi: ts=2 sw=2 et:2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
3#4#
4name: Coverity5name: Coverity
56
@@ -8,6 +9,9 @@ on:
8 # Run Coverity daily at midnight9 # Run Coverity daily at midnight
9 - cron: '0 0 * * *'10 - cron: '0 0 * * *'
1011
12permissions:
13 contents: read
14
11jobs:15jobs:
12 build:16 build:
13 runs-on: ubuntu-20.0417 runs-on: ubuntu-20.04
@@ -21,10 +25,10 @@ jobs:
21 CURRENT_REF: "${{ github.ref }}"25 CURRENT_REF: "${{ github.ref }}"
22 steps:26 steps:
23 - name: Repository checkout27 - name: Repository checkout
24 uses: actions/checkout@v128 uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
25 # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable29 # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
26 - name: Set the $COVERITY_SCAN_NOTIFICATION_EMAIL env variable30 - name: Set the $COVERITY_SCAN_NOTIFICATION_EMAIL env variable
27 run: echo "COVERITY_SCAN_NOTIFICATION_EMAIL=$(git log -1 ${{ github.sha }} --pretty=\"%aE\")" >> $GITHUB_ENV31 run: echo "COVERITY_SCAN_NOTIFICATION_EMAIL=$(git log -1 ${{ github.sha }} --pretty=\"%aE\")" >> "$GITHUB_ENV"
28 - name: Install Coverity tools32 - name: Install Coverity tools
29 run: tools/get-coverity.sh33 run: tools/get-coverity.sh
30 # Reuse the setup phase of the unit test script to avoid code duplication34 # Reuse the setup phase of the unit test script to avoid code duplication
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 76d67a3..680a2c1 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -1,12 +1,22 @@
1---
2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4#
1name: "Pull Request Labeler"5name: "Pull Request Labeler"
6
2on:7on:
3- pull_request_target8- pull_request_target
49
10permissions:
11 contents: read
12
5jobs:13jobs:
6 triage:14 triage:
7 runs-on: ubuntu-latest15 runs-on: ubuntu-latest
16 permissions:
17 pull-requests: write
8 steps:18 steps:
9 - uses: actions/labeler@main19 - uses: actions/labeler@9fd24f1f9d6ceb64ba34d181b329ee72f99978a0
10 with:20 with:
11 repo-token: "${{ secrets.GITHUB_TOKEN }}"21 repo-token: "${{ secrets.GITHUB_TOKEN }}"
12 configuration-path: .github/labeler.yml22 configuration-path: .github/labeler.yml
diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml
13new file mode 10064423new file mode 100644
index 0000000..ecdd797
--- /dev/null
+++ b/.github/workflows/linter.yml
@@ -0,0 +1,44 @@
1---
2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4# https://github.com/marketplace/actions/super-linter
5name: Lint Code Base
6
7on:
8 pull_request:
9 branches:
10 - main
11 - v[0-9]+-stable
12
13permissions:
14 contents: read
15
16jobs:
17 build:
18 name: Lint Code Base
19 runs-on: ubuntu-latest
20 concurrency:
21 group: ${{ github.workflow }}-${{ github.ref }}
22 cancel-in-progress: true
23
24 steps:
25 - name: Repo checkout
26 uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
27 with:
28 # We need a full repo clone
29 fetch-depth: 0
30
31 - name: Lint Code Base
32 uses: github/super-linter/slim@ae4e373c56efad95924d9cc6b89624fdb2333007
33 env:
34 DEFAULT_BRANCH: main
35 MULTI_STATUS: false
36 # Excludes:
37 # - man/.* - all snippets in man pages (false positives due to
38 # missing shebangs)
39 # - .*\.(in|SKELETON) - all template/skeleton files
40 # - tools/coverity\.sh - external file (with some modifications)
41 FILTER_REGEX_EXCLUDE: .*/(man/.*|.*\.(in|SKELETON)|tools/coverity\.sh)$
42 VALIDATE_ALL_CODEBASE: false
43 VALIDATE_BASH: true
44 VALIDATE_GITHUB_ACTIONS: true
diff --git a/.github/workflows/mkosi.yml b/.github/workflows/mkosi.yml
index c8d572a..50dd50b 100644
--- a/.github/workflows/mkosi.yml
+++ b/.github/workflows/mkosi.yml
@@ -1,7 +1,9 @@
1---
2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4# Simple boot tests that build and boot the mkosi images generated by the mkosi config files in mkosi.default.d/.
1name: mkosi5name: mkosi
26
3# Simple boot tests that build and boot the mkosi images generated by the mkosi config files in .mkosi.
4
5on:7on:
6 push:8 push:
7 branches:9 branches:
@@ -12,39 +14,80 @@ on:
12 - main14 - main
13 - v[0-9]+-stable15 - v[0-9]+-stable
1416
17permissions:
18 contents: read
19
20env:
21 # Enable debug logging in systemd, but keep udev's log level to info,
22 # since it's _very_ verbose in the QEMU task
23 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"
24
15jobs:25jobs:
16 ci:26 ci:
17 runs-on: ubuntu-20.0427 runs-on: ubuntu-20.04
18 concurrency:28 concurrency:
19 group: ${{ github.workflow }}-${{ matrix.distro }}-${{ github.ref }}29 group: ${{ github.workflow }}-${{ matrix.distro }}-${{ matrix.release }}-${{ github.ref }}
20 cancel-in-progress: true30 cancel-in-progress: true
21 strategy:31 strategy:
22 fail-fast: false32 fail-fast: false
23 matrix:33 matrix:
24 distro:34 include:
25 - arch35 - distro: arch
26 - debian36 release: rolling
27 - ubuntu37 - distro: debian
28 - fedora38 release: testing
39 - distro: ubuntu
40 release: focal
41 - distro: fedora
42 release: "36"
43 - distro: opensuse
44 release: tumbleweed
45 - distro: centos_epel
46 release: 8-stream
47 - distro: centos_epel
48 release: 9-stream
2949
30 steps:50 steps:
31 - uses: actions/checkout@v251 - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
32 - uses: systemd/mkosi@v952 - uses: systemd/mkosi@93098e2406e12ea7f06f962d4808952b8a06d345
3353
34 - name: Install54 - name: Install
35 run: sudo apt-get update && sudo apt-get install --no-install-recommends python3-pexpect python3-jinja255 run: sudo apt-get update && sudo apt-get install --no-install-recommends python3-pexpect python3-jinja2
3656
37 - name: Symlink57 - name: Configure
38 run: ln -s .mkosi/mkosi.${{ matrix.distro }} mkosi.default58 run: |
59 tee mkosi.default <<- EOF
60 [Distribution]
61 Distribution=${{ matrix.distro }}
62 Release=${{ matrix.release }}
63
64 [Content]
65 Environment=CI_BUILD=1
66
67 [Output]
68 KernelCommandLine=${{ env.KERNEL_CMDLINE }}
69 EOF
3970
40 - name: Build ${{ matrix.distro }}71 - name: Build ${{ matrix.distro }}
41 run: sudo python3 -m mkosi --password= --qemu-headless build72 run: ./.github/workflows/run_mkosi.sh build
4273
43 - name: Show ${{ matrix.distro }} image summary74 - name: Show ${{ matrix.distro }} image summary
44 run: sudo python3 -m mkosi --password= --qemu-headless summary75 run: ./.github/workflows/run_mkosi.sh summary
4576
46 - name: Boot ${{ matrix.distro }} systemd-nspawn77 - name: Boot ${{ matrix.distro }} systemd-nspawn
47 run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --password= --qemu-headless boot78 run: ./.github/workflows/run_mkosi.sh boot ${{ env.KERNEL_CMDLINE }}
79
80 - name: Check ${{ matrix.distro }} systemd-nspawn
81 run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
82
83 # TODO: Remove CentOS exclusion once Ubuntu 22.04 is available in GA.
84 # See https://github.com/systemd/systemd/pull/22417 and https://github.com/systemd/mkosi/pull/907 for
85 # more information.
4886
49 - name: Boot ${{ matrix.distro }} QEMU87 - name: Boot ${{ matrix.distro }} QEMU
50 run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --password= --qemu-headless qemu88 if: ${{ matrix.distro != 'centos_epel' }}
89 run: ./.github/workflows/run_mkosi.sh qemu
90
91 - name: Check ${{ matrix.distro }} QEMU
92 if: ${{ matrix.distro != 'centos_epel' }}
93 run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt
51new file mode 10064494new file mode 100644
index 0000000..d7b1365
--- /dev/null
+++ b/.github/workflows/requirements.txt
@@ -0,0 +1,18 @@
1meson==0.62.0 \
2 --hash=sha256:00e06dccac7d3b0568b5da82e70c2028c80c359aab6dc517bcbd1825511898c3 \
3 --hash=sha256:06f8c1cfa51bfdb533c82623ffa524cacdbea02ace6d709145e33aabdad6adcb
4ninja==1.10.2.3 \
5 --hash=sha256:0560eea57199e41e86ac2c1af0108b63ae77c3ca4d05a9425a750e908135935a \
6 --hash=sha256:21a1d84d4c7df5881bfd86c25cce4cf7af44ba2b8b255c57bc1c434ec30a2dfc \
7 --hash=sha256:279836285975e3519392c93c26e75755e8a8a7fafec9f4ecbb0293119ee0f9c6 \
8 --hash=sha256:29570a18d697fc84d361e7e6330f0021f34603ae0fcb0ef67ae781e9814aae8d \
9 --hash=sha256:5ea785bf6a15727040835256577239fa3cf5da0d60e618c307aa5efc31a1f0ce \
10 --hash=sha256:688167841b088b6802e006f911d911ffa925e078c73e8ef2f88286107d3204f8 \
11 --hash=sha256:6bd76a025f26b9ae507cf8b2b01bb25bb0031df54ed685d85fc559c411c86cf4 \
12 --hash=sha256:740d61fefb4ca13573704ee8fe89b973d40b8dc2a51aaa4e9e68367233743bb6 \
13 --hash=sha256:840a0b042d43a8552c4004966e18271ec726e5996578f28345d9ce78e225b67e \
14 --hash=sha256:84be6f9ec49f635dc40d4b871319a49fa49b8d55f1d9eae7cd50d8e57ddf7a85 \
15 --hash=sha256:9ca8dbece144366d5f575ffc657af03eb11c58251268405bc8519d11cf42f113 \
16 --hash=sha256:cc8b31b5509a2129e4d12a35fc21238c157038022560aaf22e49ef0a77039086 \
17 --hash=sha256:d5e0275d28997a750a4f445c00bdd357b35cc334c13cdff13edf30e544704fbd \
18 --hash=sha256:e1b86ad50d4e681a7dbdff05fc23bb52cb773edb90bc428efba33fa027738408
diff --git a/.github/workflows/run_mkosi.sh b/.github/workflows/run_mkosi.sh
0new file mode 10075519new file mode 100755
index 0000000..153ebe3
--- /dev/null
+++ b/.github/workflows/run_mkosi.sh
@@ -0,0 +1,39 @@
1#!/usr/bin/env bash
2# SPDX-License-Identifier: LGPL-2.1-or-later
3# shellcheck disable=SC2064
4
5set -eu
6set -o pipefail
7
8EC=0
9TEMPFILE="$(mktemp)"
10TEMP_EXTRA_TREE="$(mktemp --directory)"
11trap "rm -rf '$TEMPFILE' '$TEMP_EXTRA_TREE'" EXIT
12
13# We need isc-dhcp-server to be installed for the networkd unit tests, but we don't want to
14# run it by default. mktemp creates the directory as 700, so change it, otherwise it will
15# affect the image's root folder permissions.
16chmod 755 "$TEMP_EXTRA_TREE"
17mkdir -p "$TEMP_EXTRA_TREE/etc/systemd/system/"
18ln -s /dev/null "$TEMP_EXTRA_TREE/etc/systemd/system/isc-dhcp-server.service"
19ln -s /dev/null "$TEMP_EXTRA_TREE/etc/systemd/system/isc-dhcp-server6.service"
20
21for ((i = 0; i < 5; i++)); do
22 EC=0
23 (sudo python3 -m mkosi --extra-tree="$TEMP_EXTRA_TREE" "$@") |& tee "$TEMPFILE" || EC=$?
24 if [[ $EC -eq 0 ]]; then
25 # The command passed — let's return immediately
26 break
27 fi
28
29 if ! grep -E "Failed to dissect image .+: Connection timed out" "$TEMPFILE"; then
30 # The command failed for other reason than the dissect-related timeout -
31 # let's exit with the same EC
32 exit $EC
33 fi
34
35 # The command failed due to the dissect-related timeout — let's try again
36 sleep 1
37done
38
39exit $EC
diff --git a/.github/workflows/test_mkosi_boot.py b/.github/workflows/test_mkosi_boot.py
0deleted file mode 10075540deleted file mode 100755
index 3418fd3..0000000
--- a/.github/workflows/test_mkosi_boot.py
+++ /dev/null
@@ -1,24 +0,0 @@
1#!/usr/bin/env python3
2# SPDX-License-Identifier: LGPL-2.1-or-later
3
4import pexpect
5import sys
6
7
8def run() -> None:
9 p = pexpect.spawnu(" ".join(sys.argv[1:]), logfile=sys.stdout, timeout=300)
10
11 p.expect("#")
12 p.sendline("systemctl poweroff")
13
14 p.expect(pexpect.EOF)
15
16
17try:
18 run()
19except pexpect.EOF:
20 print("UNEXPECTED EOF")
21 sys.exit(1)
22except pexpect.TIMEOUT:
23 print("TIMED OUT")
24 sys.exit(1)
diff --git a/.github/workflows/unit_tests.sh b/.github/workflows/unit_tests.sh
index e85c321..442202f 100755
--- a/.github/workflows/unit_tests.sh
+++ b/.github/workflows/unit_tests.sh
@@ -1,5 +1,7 @@
1#!/bin/bash1#!/usr/bin/env bash
2# SPDX-License-Identifier: LGPL-2.1-or-later
23
4# shellcheck disable=SC2206
3PHASES=(${@:-SETUP RUN RUN_ASAN_UBSAN CLEANUP})5PHASES=(${@:-SETUP RUN RUN_ASAN_UBSAN CLEANUP})
4RELEASE="$(lsb_release -cs)"6RELEASE="$(lsb_release -cs)"
5ADDITIONAL_DEPS=(7ADDITIONAL_DEPS=(
@@ -7,6 +9,7 @@ ADDITIONAL_DEPS=(
7 expect9 expect
8 fdisk10 fdisk
9 jekyll11 jekyll
12 libbpf-dev
10 libfdisk-dev13 libfdisk-dev
11 libfido2-dev14 libfido2-dev
12 libp11-kit-dev15 libp11-kit-dev
@@ -14,10 +17,12 @@ ADDITIONAL_DEPS=(
14 libqrencode-dev17 libqrencode-dev
15 libssl-dev18 libssl-dev
16 libtss2-dev19 libtss2-dev
20 libxkbcommon-dev
17 libzstd-dev21 libzstd-dev
18 perl22 perl
19 python3-libevdev23 python3-libevdev
20 python3-pyparsing24 python3-pyparsing
25 rpm
21 zstd26 zstd
22)27)
2328
@@ -25,8 +30,17 @@ function info() {
25 echo -e "\033[33;1m$1\033[0m"30 echo -e "\033[33;1m$1\033[0m"
26}31}
2732
33function run_meson() {
34 if ! meson "$@"; then
35 find . -type f -name meson-log.txt -exec cat '{}' +
36 return 1
37 fi
38}
39
28set -ex40set -ex
2941
42MESON_ARGS=(-Dcryptolib=${CRYPTOLIB:-auto})
43
30for phase in "${PHASES[@]}"; do44for phase in "${PHASES[@]}"; do
31 case $phase in45 case $phase in
32 SETUP)46 SETUP)
@@ -37,28 +51,45 @@ for phase in "${PHASES[@]}"; do
37 apt-get -y update51 apt-get -y update
38 apt-get -y build-dep systemd52 apt-get -y build-dep systemd
39 apt-get -y install "${ADDITIONAL_DEPS[@]}"53 apt-get -y install "${ADDITIONAL_DEPS[@]}"
54 pip3 install -r .github/workflows/requirements.txt --require-hashes
40 ;;55 ;;
41 RUN|RUN_GCC|RUN_CLANG)56 RUN|RUN_GCC|RUN_CLANG)
42 if [[ "$phase" = "RUN_CLANG" ]]; then57 if [[ "$phase" = "RUN_CLANG" ]]; then
43 export CC=clang58 export CC=clang
44 export CXX=clang++59 export CXX=clang++
60 # The docs build is slow and is not affected by compiler/flags, so do it just once
61 MESON_ARGS+=(-Dman=true)
45 fi62 fi
46 meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dman=true build63 # The install_tag feature introduced in 0.60 causes meson to fail with fatal-meson-warnings
64 # "Project targeting '>= 0.53.2' but tried to use feature introduced in '0.60.0': install_tag arg in custom_target"
65 # It can be safely removed from the CI since it isn't actually used anywhere to test anything.
66 find . -type f -name meson.build -exec sed -i '/install_tag/d' '{}' '+'
67 MESON_ARGS+=(--fatal-meson-warnings)
68 run_meson -Dnobody-group=nogroup --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true "${MESON_ARGS[@]}" build
47 ninja -C build -v69 ninja -C build -v
48 meson test -C build --print-errorlogs70 meson test -C build --print-errorlogs
49 ;;71 ;;
50 RUN_ASAN_UBSAN|RUN_GCC_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN)72 RUN_ASAN_UBSAN|RUN_GCC_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN_NO_DEPS)
51 MESON_ARGS=(--optimization=1)73 MESON_ARGS=(--optimization=1)
5274
53 if [[ "$phase" = "RUN_CLANG_ASAN_UBSAN" ]]; then75 if [[ "$phase" =~ ^RUN_CLANG_ASAN_UBSAN ]]; then
54 export CC=clang76 export CC=clang
55 export CXX=clang++77 export CXX=clang++
56 # Build fuzzer regression tests only with clang (for now),78 # Build fuzzer regression tests only with clang (for now),
57 # see: https://github.com/systemd/systemd/pull/15886#issuecomment-63268960479 # see: https://github.com/systemd/systemd/pull/15886#issuecomment-632689604
58 # -Db_lundef=false: See https://github.com/mesonbuild/meson/issues/76480 # -Db_lundef=false: See https://github.com/mesonbuild/meson/issues/764
59 MESON_ARGS+=(-Db_lundef=false -Dfuzz-tests=true)81 MESON_ARGS+=(-Db_lundef=false -Dfuzz-tests=true)
82
83 if [[ "$phase" == "RUN_CLANG_ASAN_UBSAN_NO_DEPS" ]]; then
84 MESON_ARGS+=(-Dskip-deps=true)
85 fi
60 fi86 fi
61 meson --werror -Dtests=unsafe -Db_sanitize=address,undefined "${MESON_ARGS[@]}" build87 # The install_tag feature introduced in 0.60 causes meson to fail with fatal-meson-warnings
88 # "Project targeting '>= 0.53.2' but tried to use feature introduced in '0.60.0': install_tag arg in custom_target"
89 # It can be safely removed from the CI since it isn't actually used anywhere to test anything.
90 find . -type f -name meson.build -exec sed -i '/install_tag/d' '{}' '+'
91 MESON_ARGS+=(--fatal-meson-warnings)
92 run_meson -Dnobody-group=nogroup --werror -Dtests=unsafe -Db_sanitize=address,undefined "${MESON_ARGS[@]}" build
62 ninja -C build -v93 ninja -C build -v
6394
64 export ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=195 export ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1
diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml
index 4a19a6a..7226a77 100644
--- a/.github/workflows/unit_tests.yml
+++ b/.github/workflows/unit_tests.yml
@@ -1,5 +1,6 @@
1---1---
2# vi: ts=2 sw=2 et:2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
3#4#
4name: Unit tests5name: Unit tests
5on:6on:
@@ -8,20 +9,31 @@ on:
8 - main9 - main
9 - v[0-9]+-stable10 - v[0-9]+-stable
1011
12permissions:
13 contents: read
14
11jobs:15jobs:
12 build:16 build:
13 runs-on: ubuntu-20.0417 runs-on: ubuntu-20.04
14 concurrency:18 concurrency:
15 group: ${{ github.workflow }}-${{ matrix.run_phase }}-${{ github.ref }}19 group: ${{ github.workflow }}-${{ matrix.run_phase }}-${{ matrix.cryptolib }}-${{ github.ref }}
16 cancel-in-progress: true20 cancel-in-progress: true
17 strategy:21 strategy:
18 fail-fast: false22 fail-fast: false
19 matrix:23 matrix:
20 run_phase: [GCC, GCC_ASAN_UBSAN, CLANG, CLANG_ASAN_UBSAN]24 run_phase: [GCC, GCC_ASAN_UBSAN, CLANG, CLANG_ASAN_UBSAN, CLANG_ASAN_UBSAN_NO_DEPS]
25 cryptolib: [auto]
26 include:
27 - run_phase: GCC
28 cryptolib: openssl
29 - run_phase: CLANG
30 cryptolib: gcrypt
21 steps:31 steps:
22 - name: Repository checkout32 - name: Repository checkout
23 uses: actions/checkout@v133 uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
24 - name: Install build dependencies34 - name: Install build dependencies
25 run: sudo -E .github/workflows/unit_tests.sh SETUP35 run: sudo -E .github/workflows/unit_tests.sh SETUP
26 - name: Build & test (${{ matrix.run_phase }})36 - name: Build & test (${{ matrix.run_phase }}-${{ matrix.cryptolib }})
27 run: sudo -E .github/workflows/unit_tests.sh RUN_${{ matrix.run_phase }}37 run: sudo -E .github/workflows/unit_tests.sh RUN_${{ matrix.run_phase }}
38 env:
39 CRYPTOLIB: ${{ matrix.cryptolib }}
diff --git a/.gitignore b/.gitignore
index d6f6cac..9763766 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,6 @@
1*.a
2*.cache1*.cache
3*.gch
4*.log
5*.o
6*.plist2*.plist
7*.py[co]3*.py[co]
8*.stamp
9*.swp4*.swp
10*.trs5*.trs
11*~6*~
@@ -31,11 +26,13 @@ __pycache__/
31/.#image.raw.lck26/.#image.raw.lck
32/image.raw.cache-pre-dev27/image.raw.cache-pre-dev
33/image.raw.cache-pre-inst28/image.raw.cache-pre-inst
29/image.raw.manifest
34/install-tree30/install-tree
35/.mkosi-*31/.mkosi-*
36/mkosi.builddir/32/mkosi.builddir/
37/mkosi.output/33/mkosi.output/
38/mkosi.default34/mkosi.default
39mkosi.default.d/*35/mkosi.installdir/
40!mkosi.default.d/10-systemd.conf36# Ignore any mkosi config files with "local" in the name
37/mkosi.default.d/**/*local*.conf
41/tags38/tags
diff --git a/.lgtm.yml b/.lgtm.yml
index 93f8b1c..86fd0e7 100644
--- a/.lgtm.yml
+++ b/.lgtm.yml
@@ -1,5 +1,27 @@
1---1---
2# vi: ts=2 sw=2 et:2# vi: ts=2 sw=2 et:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4
5# Explicitly enable certain checks which are hidden by default
6queries:
7 - include: cpp/bad-strncpy-size
8 - include: cpp/declaration-hides-variable
9 - include: cpp/inconsistent-null-check
10 - include: cpp/mistyped-function-arguments
11 - include: cpp/nested-loops-with-same-variable
12 - include: cpp/sizeof-side-effect
13 - include: cpp/suspicious-pointer-scaling
14 - include: cpp/suspicious-pointer-scaling-void
15 - include: cpp/suspicious-sizeof
16 - include: cpp/unsafe-strcat
17 - include: cpp/unsafe-strncat
18 - include: cpp/unsigned-difference-expression-compared-zero
19 - include: cpp/unused-local-variable
20 - include:
21 tags:
22 - "security"
23 - "correctness"
24 severity: "error"
325
4extraction:26extraction:
5 cpp:27 cpp:
@@ -10,6 +32,9 @@ extraction:
10 - libp11-kit-dev32 - libp11-kit-dev
11 - libssl-dev33 - libssl-dev
12 - python3-jinja234 - python3-jinja2
35 after_prepare:
36 - pip3 install -r .github/workflows/requirements.txt --require-hashes
37 - export PATH="/opt/work/.local/bin:$PATH"
13 python:38 python:
14 python_setup:39 python_setup:
15 version: 340 version: 3
diff --git a/.lgtm/cpp-queries/PotentiallyDangerousFunction.ql b/.lgtm/cpp-queries/PotentiallyDangerousFunction.ql
index 8653304..39e8ddd 100644
--- a/.lgtm/cpp-queries/PotentiallyDangerousFunction.ql
+++ b/.lgtm/cpp-queries/PotentiallyDangerousFunction.ql
@@ -1,15 +1,17 @@
1/**1/**
2 * vi: sw=2 ts=2 et syntax=ql:
3 *
4 * Borrowed from
5 * https://github.com/Semmle/ql/blob/master/cpp/ql/src/Security/CWE/CWE-676/PotentiallyDangerousFunction.ql
6 *
2 * @name Use of potentially dangerous function7 * @name Use of potentially dangerous function
3 * @description Certain standard library functions are dangerous to call.8 * @description Certain standard library functions are dangerous to call.
9 * @id cpp/potentially-dangerous-function
4 * @kind problem10 * @kind problem
5 * @problem.severity error11 * @problem.severity error
6 * @precision high12 * @precision high
7 * @id cpp/potentially-dangerous-function
8 * @tags reliability13 * @tags reliability
9 * security14 * security
10 *
11 * Borrowed from
12 * https://github.com/Semmle/ql/blob/master/cpp/ql/src/Security/CWE/CWE-676/PotentiallyDangerousFunction.ql
13 */15 */
14import cpp16import cpp
1517
diff --git a/.lgtm/cpp-queries/UninitializedVariableWithCleanup.ql b/.lgtm/cpp-queries/UninitializedVariableWithCleanup.ql
16new file mode 10064418new file mode 100644
index 0000000..6b3b62f
--- /dev/null
+++ b/.lgtm/cpp-queries/UninitializedVariableWithCleanup.ql
@@ -0,0 +1,110 @@
1/**
2 * vi: sw=2 ts=2 et syntax=ql:
3 *
4 * Based on cpp/uninitialized-local.
5 *
6 * @name Potentially uninitialized local variable using the cleanup attribute
7 * @description Running the cleanup handler on a possibly uninitialized variable
8 * is generally a bad idea.
9 * @id cpp/uninitialized-local-with-cleanup
10 * @kind problem
11 * @problem.severity error
12 * @precision high
13 * @tags security
14 */
15
16import cpp
17import semmle.code.cpp.controlflow.StackVariableReachability
18
19/** Auxiliary predicate: List cleanup functions we want to explicitly ignore
20 * since they don't do anything illegal even when the variable is uninitialized
21 */
22predicate cleanupFunctionDenyList(string fun) {
23 fun = "erase_char"
24}
25
26/**
27 * A declaration of a local variable using __attribute__((__cleanup__(x)))
28 * that leaves the variable uninitialized.
29 */
30DeclStmt declWithNoInit(LocalVariable v) {
31 result.getADeclaration() = v and
32 not v.hasInitializer() and
33 /* The variable has __attribute__((__cleanup__(...))) set */
34 v.getAnAttribute().hasName("cleanup") and
35 /* Check if the cleanup function is not on a deny list */
36 not cleanupFunctionDenyList(v.getAnAttribute().getAnArgument().getValueText())
37}
38
39class UninitialisedLocalReachability extends StackVariableReachability {
40 UninitialisedLocalReachability() { this = "UninitialisedLocal" }
41
42 override predicate isSource(ControlFlowNode node, StackVariable v) { node = declWithNoInit(v) }
43
44 /* Note: _don't_ use the `useOfVarActual()` predicate here (and a couple of lines
45 * below), as it assumes that the callee always modifies the variable if
46 * it's passed to the function.
47 *
48 * i.e.:
49 * _cleanup_free char *x;
50 * fun(&x);
51 * puts(x);
52 *
53 * `useOfVarActual()` won't treat this an an uninitialized read even if the callee
54 * doesn't modify the argument, however, `useOfVar()` will
55 */
56 override predicate isSink(ControlFlowNode node, StackVariable v) { useOfVar(v, node) }
57
58 override predicate isBarrier(ControlFlowNode node, StackVariable v) {
59 // only report the _first_ possibly uninitialized use
60 useOfVar(v, node) or
61 (
62 /* If there's an return statement somewhere between the variable declaration
63 * and a possible definition, don't accept is as a valid initialization.
64 *
65 * E.g.:
66 * _cleanup_free_ char *x;
67 * ...
68 * if (...)
69 * return;
70 * ...
71 * x = malloc(...);
72 *
73 * is not a valid initialization, since we might return from the function
74 * _before_ the actual iniitialization (emphasis on _might_, since we
75 * don't know if the return statement might ever evaluate to true).
76 */
77 definitionBarrier(v, node) and
78 not exists(ReturnStmt rs |
79 /* The attribute check is "just" a complexity optimization */
80 v.getFunction() = rs.getEnclosingFunction() and v.getAnAttribute().hasName("cleanup") |
81 rs.getLocation().isBefore(node.getLocation())
82 )
83 )
84 }
85}
86
87pragma[noinline]
88predicate containsInlineAssembly(Function f) { exists(AsmStmt s | s.getEnclosingFunction() = f) }
89
90/**
91 * Auxiliary predicate: List common exceptions or false positives
92 * for this check to exclude them.
93 */
94VariableAccess commonException() {
95 // If the uninitialized use we've found is in a macro expansion, it's
96 // typically something like va_start(), and we don't want to complain.
97 result.getParent().isInMacroExpansion()
98 or
99 result.getParent() instanceof BuiltInOperation
100 or
101 // Finally, exclude functions that contain assembly blocks. It's
102 // anyone's guess what happens in those.
103 containsInlineAssembly(result.getEnclosingFunction())
104}
105
106from UninitialisedLocalReachability r, LocalVariable v, VariableAccess va
107where
108 r.reaches(_, v, va) and
109 not va = commonException()
110select va, "The variable $@ may not be initialized here, but has a cleanup handler.", v, v.getName()
diff --git a/.lgtm/cpp-queries/qlpack.yml b/.lgtm/cpp-queries/qlpack.yml
0new file mode 100644111new file mode 100644
index 0000000..a1a2dec
--- /dev/null
+++ b/.lgtm/cpp-queries/qlpack.yml
@@ -0,0 +1,11 @@
1---
2# vi: ts=2 sw=2 et syntax=yaml:
3# SPDX-License-Identifier: LGPL-2.1-or-later
4
5library: false
6name: systemd/cpp-queries
7version: 0.0.1
8dependencies:
9 codeql/cpp-all: "*"
10 codeql/suite-helpers: "*"
11extractor: cpp
diff --git a/.packit.yml b/.packit.yml
index 3a47c6a..a7502b2 100644
--- a/.packit.yml
+++ b/.packit.yml
@@ -13,11 +13,12 @@ downstream_package_name: systemd
13# `git describe` returns in systemd's case 'v245-xxx' which breaks RPM version13# `git describe` returns in systemd's case 'v245-xxx' which breaks RPM version
14# detection (that expects 245-xxxx'). Let's tweak the version string accordingly14# detection (that expects 245-xxxx'). Let's tweak the version string accordingly
15upstream_tag_template: "v{version}"15upstream_tag_template: "v{version}"
16srpm_build_deps: []
1617
17actions:18actions:
18 post-upstream-clone:19 post-upstream-clone:
19 # Use the Fedora 35 specfile20 # Use the Fedora Rawhide specfile
20 - "git clone --branch f35 https://src.fedoraproject.org/rpms/systemd .packit_rpm --depth=1"21 - "git clone https://src.fedoraproject.org/rpms/systemd .packit_rpm --depth=1"
21 # Drop the "sources" file so rebase-helper doesn't think we're a dist-git22 # Drop the "sources" file so rebase-helper doesn't think we're a dist-git
22 - "rm -fv .packit_rpm/sources"23 - "rm -fv .packit_rpm/sources"
23 # Drop backported patches from the specfile, but keep the downstream-only ones24 # Drop backported patches from the specfile, but keep the downstream-only ones
@@ -37,6 +38,8 @@ jobs:
37 trigger: pull_request38 trigger: pull_request
38 metadata:39 metadata:
39 targets:40 targets:
40 - fedora-35-aarch6441 - fedora-rawhide-aarch64
41 - fedora-35-i38642 - fedora-rawhide-i386
42 - fedora-35-x86_6443 - fedora-rawhide-ppc64le
44 - fedora-rawhide-s390x
45 - fedora-rawhide-x86_64
diff --git a/.semaphore/semaphore-runner.sh b/.semaphore/semaphore-runner.sh
index e7dbcb2..ba21811 100755
--- a/.semaphore/semaphore-runner.sh
+++ b/.semaphore/semaphore-runner.sh
@@ -1,54 +1,65 @@
1#!/bin/bash1#!/usr/bin/env bash
2# SPDX-License-Identifier: LGPL-2.1-or-later
23
3set -eux4set -eux
5set -o pipefail
46
5# default to Debian testing7# default to Debian testing
6DISTRO=${DISTRO:-debian}8DISTRO="${DISTRO:-debian}"
7RELEASE=${RELEASE:-bullseye}9RELEASE="${RELEASE:-bullseye}"
8BRANCH=${BRANCH:-upstream-ci}10BRANCH="${BRANCH:-upstream-ci}"
9ARCH=${ARCH:-amd64}11ARCH="${ARCH:-amd64}"
10CONTAINER=${RELEASE}-${ARCH}12CONTAINER="${RELEASE}-${ARCH}"
11CACHE_DIR=${SEMAPHORE_CACHE_DIR:=/tmp}13CACHE_DIR="${SEMAPHORE_CACHE_DIR:-/tmp}"
12AUTOPKGTEST_DIR="${CACHE_DIR}/autopkgtest"14AUTOPKGTEST_DIR="${CACHE_DIR}/autopkgtest"
13# semaphore cannot expose these, but useful for interactive/local runs15# semaphore cannot expose these, but useful for interactive/local runs
14ARTIFACTS_DIR=/tmp/artifacts16ARTIFACTS_DIR=/tmp/artifacts
17# shellcheck disable=SC2206
15PHASES=(${@:-SETUP RUN})18PHASES=(${@:-SETUP RUN})
16UBUNTU_RELEASE="$(lsb_release -cs)"19UBUNTU_RELEASE="$(lsb_release -cs)"
1720
18create_container() {21create_container() {
19 # Create autopkgtest LXC image; this sometimes fails with "Unable to fetch22 # Create autopkgtest LXC image; this sometimes fails with "Unable to fetch
20 # GPG key from keyserver", so retry a few times with different keyservers.23 # GPG key from keyserver", so retry a few times with different keyservers.
21 for keyserver in "" "keys.gnupg.net" "keys.openpgp.org" "keyserver.ubuntu.com"; do24 for keyserver in "keys.openpgp.org" "" "keyserver.ubuntu.com" "keys.gnupg.net"; do
22 for retry in {1..5}; do25 for retry in {1..5}; do
23 sudo lxc-create -n $CONTAINER -t download -- -d $DISTRO -r $RELEASE -a $ARCH ${keyserver:+--keyserver "$keyserver"} && break 226 sudo lxc-create -n "$CONTAINER" -t download -- -d "$DISTRO" -r "$RELEASE" -a "$ARCH" ${keyserver:+--keyserver "$keyserver"} && break 2
24 sleep $((retry*retry))27 sleep $((retry*retry))
25 done28 done
26 done29 done
2730
28 # unconfine the container, otherwise some tests fail31 # unconfine the container, otherwise some tests fail
29 echo 'lxc.apparmor.profile = unconfined' | sudo tee -a /var/lib/lxc/$CONTAINER/config32 echo 'lxc.apparmor.profile = unconfined' | sudo tee -a "/var/lib/lxc/$CONTAINER/config"
3033
31 sudo lxc-start -n $CONTAINER34 sudo lxc-start -n "$CONTAINER"
3235
33 # enable source repositories so that apt-get build-dep works36 # enable source repositories so that apt-get build-dep works
34 sudo lxc-attach -n $CONTAINER -- sh -ex <<EOF37 sudo lxc-attach -n "$CONTAINER" -- sh -ex <<EOF
35sed 's/^deb/deb-src/' /etc/apt/sources.list >> /etc/apt/sources.list.d/sources.list38sed 's/^deb/deb-src/' /etc/apt/sources.list >> /etc/apt/sources.list.d/sources.list
36# wait until online39# We might attach the console too soon
37while [ -z "\$(ip route list 0/0)" ]; do sleep 1; done40while ! systemctl --quiet --wait is-system-running; do sleep 1; done
41# Manpages database trigger takes a lot of time and is not useful in a CI
42echo 'man-db man-db/auto-update boolean false' | debconf-set-selections
43# Speed up dpkg, image is thrown away after the test
44mkdir -p /etc/dpkg/dpkg.cfg.d/
45echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/unsafe_io
46# For some reason, it is necessary to run this manually or the interface won't be configured
47# Note that we avoid networkd, as some of the tests will break it later on
48dhclient
38apt-get -q --allow-releaseinfo-change update49apt-get -q --allow-releaseinfo-change update
39apt-get -y dist-upgrade50apt-get -y dist-upgrade
40apt-get install -y eatmydata51apt-get install -y eatmydata
41# The following four are needed as long as these deps are not covered by Debian's own packaging52# The following four are needed as long as these deps are not covered by Debian's own packaging
42apt-get install -y fdisk tree libfdisk-dev libp11-kit-dev libssl-dev libpwquality-dev53apt-get install -y fdisk tree libfdisk-dev libp11-kit-dev libssl-dev libpwquality-dev rpm
43apt-get purge --auto-remove -y unattended-upgrades54apt-get purge --auto-remove -y unattended-upgrades
44systemctl unmask systemd-networkd55systemctl unmask systemd-networkd
45systemctl enable systemd-networkd56systemctl enable systemd-networkd
46EOF57EOF
47 sudo lxc-stop -n $CONTAINER58 sudo lxc-stop -n "$CONTAINER"
48}59}
4960
50for phase in "${PHASES[@]}"; do61for phase in "${PHASES[@]}"; do
51 case $phase in62 case "$phase" in
52 SETUP)63 SETUP)
53 # remove semaphore repos, some of them don't work and cause error messages64 # remove semaphore repos, some of them don't work and cause error messages
54 sudo rm -f /etc/apt/sources.list.d/*65 sudo rm -f /etc/apt/sources.list.d/*
@@ -59,17 +70,17 @@ for phase in "${PHASES[@]}"; do
59 sudo apt-get install -y -t "$UBUNTU_RELEASE-backports" lxc70 sudo apt-get install -y -t "$UBUNTU_RELEASE-backports" lxc
60 sudo apt-get install -y python3-debian git dpkg-dev fakeroot python3-jinja271 sudo apt-get install -y python3-debian git dpkg-dev fakeroot python3-jinja2
6172
62 [ -d $AUTOPKGTEST_DIR ] || git clone --quiet --depth=1 https://salsa.debian.org/ci-team/autopkgtest.git "$AUTOPKGTEST_DIR"73 [ -d "$AUTOPKGTEST_DIR" ] || git clone --quiet --depth=1 https://salsa.debian.org/ci-team/autopkgtest.git "$AUTOPKGTEST_DIR"
6374
64 create_container75 create_container
65 ;;76 ;;
66 RUN)77 RUN)
67 # add current debian/ packaging78 # add current debian/ packaging
68 git fetch --depth=1 https://salsa.debian.org/systemd-team/systemd.git $BRANCH79 git fetch --depth=1 https://salsa.debian.org/systemd-team/systemd.git "$BRANCH"
69 git checkout FETCH_HEAD debian80 git checkout FETCH_HEAD debian
7081
71 # craft changelog82 # craft changelog
72 UPSTREAM_VER=$(git describe | sed 's/^v//;s/-/./g')83 UPSTREAM_VER="$(git describe | sed 's/^v//;s/-/./g')"
73 cat << EOF > debian/changelog.new84 cat << EOF > debian/changelog.new
74systemd (${UPSTREAM_VER}.0) UNRELEASED; urgency=low85systemd (${UPSTREAM_VER}.0) UNRELEASED; urgency=low
7586
@@ -78,7 +89,7 @@ systemd (${UPSTREAM_VER}.0) UNRELEASED; urgency=low
78 -- systemd test <pkg-systemd-maintainers@lists.alioth.debian.org> $(date -R)89 -- systemd test <pkg-systemd-maintainers@lists.alioth.debian.org> $(date -R)
7990
80EOF91EOF
81 cat debian/changelog >> debian/changelog.new92 cat debian/changelog >>debian/changelog.new
82 mv debian/changelog.new debian/changelog93 mv debian/changelog.new debian/changelog
8394
84 # clean out patches95 # clean out patches
@@ -91,15 +102,15 @@ EOF
91 echo '1.0' > debian/source/format102 echo '1.0' > debian/source/format
92103
93 # build source package104 # build source package
94 dpkg-buildpackage -S -I -I$(basename "$CACHE_DIR") -d -us -uc -nc105 dpkg-buildpackage -S -I -I"$(basename "$CACHE_DIR")" -d -us -uc -nc
95106
96 # now build the package and run the tests107 # now build the package and run the tests
97 rm -rf "$ARTIFACTS_DIR"108 rm -rf "$ARTIFACTS_DIR"
98 # autopkgtest exits with 2 for "some tests skipped", accept that109 # autopkgtest exits with 2 for "some tests skipped", accept that
99 $AUTOPKGTEST_DIR/runner/autopkgtest --env DEB_BUILD_OPTIONS=noudeb \110 "$AUTOPKGTEST_DIR/runner/autopkgtest" --env DEB_BUILD_OPTIONS=noudeb \
100 --env TEST_UPSTREAM=1 ../systemd_*.dsc \111 --env TEST_UPSTREAM=1 ../systemd_*.dsc \
101 -o "$ARTIFACTS_DIR" \112 -o "$ARTIFACTS_DIR" \
102 -- lxc -s $CONTAINER \113 -- lxc -s "$CONTAINER" \
103 || [ $? -eq 2 ]114 || [ $? -eq 2 ]
104 ;;115 ;;
105 *)116 *)
diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml
index 7fc38a5..0774233 100644
--- a/.semaphore/semaphore.yml
+++ b/.semaphore/semaphore.yml
@@ -1,4 +1,5 @@
1---1---
2# SPDX-License-Identifier: LGPL-2.1-or-later
2# vi: ts=2 sw=2 et:3# vi: ts=2 sw=2 et:
34
4version: v1.05version: v1.0
@@ -6,7 +7,7 @@ name: Debian autopkgtest (LXC)
6agent:7agent:
7 machine:8 machine:
8 type: e1-standard-29 type: e1-standard-2
9 os_image: ubuntu180410 os_image: ubuntu2004
1011
11# Cancel any running or queued job for the same ref12# Cancel any running or queued job for the same ref
12auto_cancel:13auto_cancel:
@@ -25,8 +26,3 @@ blocks:
25 - checkout --use-cache26 - checkout --use-cache
26 - .semaphore/semaphore-runner.sh SETUP27 - .semaphore/semaphore-runner.sh SETUP
27 - .semaphore/semaphore-runner.sh RUN28 - .semaphore/semaphore-runner.sh RUN
28 env_vars:
29 # Pin the debian systemd repo to a specific revision, to work around
30 # missing systemd/systemd#20056 in pre-v250 stable branches
31 - name: BRANCH
32 value: e138f8573a14f8f094bd6c9582bc26ed62c1347f
diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt
33new file mode 10064429new file mode 100644
index 0000000..b0e20f5
--- /dev/null
+++ b/LICENSES/BSD-2-Clause.txt
@@ -0,0 +1,9 @@
1Copyright (c) <year> <owner> All rights reserved.
2
3Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4
51. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6
72. 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.
8
9THIS 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.
diff --git a/LICENSES/BSD-3-Clause.txt b/LICENSES/BSD-3-Clause.txt
0new file mode 10064410new file mode 100644
index 0000000..b9e779f
--- /dev/null
+++ b/LICENSES/BSD-3-Clause.txt
@@ -0,0 +1,27 @@
1// Copyright 2014 The Chromium OS Authors. All rights reserved.
2//
3// Redistribution and use in source and binary forms, with or without
4// modification, are permitted provided that the following conditions are
5// met:
6//
7// * Redistributions of source code must retain the above copyright
8// notice, this list of conditions and the following disclaimer.
9// * Redistributions in binary form must reproduce the above
10// copyright notice, this list of conditions and the following disclaimer
11// in the documentation and/or other materials provided with the
12// distribution.
13// * Neither the name of Google Inc. nor the names of its
14// contributors may be used to endorse or promote products derived from
15// this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
0new file mode 10064428new file mode 100644
index 0000000..0e259d4
--- /dev/null
+++ b/LICENSES/CC0-1.0.txt
@@ -0,0 +1,121 @@
1Creative Commons Legal Code
2
3CC0 1.0 Universal
4
5 CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6 LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7 ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8 INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9 REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10 PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11 THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12 HEREUNDER.
13
14Statement of Purpose
15
16The laws of most jurisdictions throughout the world automatically confer
17exclusive Copyright and Related Rights (defined below) upon the creator
18and subsequent owner(s) (each and all, an "owner") of an original work of
19authorship and/or a database (each, a "Work").
20
21Certain owners wish to permanently relinquish those rights to a Work for
22the purpose of contributing to a commons of creative, cultural and
23scientific works ("Commons") that the public can reliably and without fear
24of later claims of infringement build upon, modify, incorporate in other
25works, reuse and redistribute as freely as possible in any form whatsoever
26and for any purposes, including without limitation commercial purposes.
27These owners may contribute to the Commons to promote the ideal of a free
28culture and the further production of creative, cultural and scientific
29works, or to gain reputation or greater distribution for their Work in
30part through the use and efforts of others.
31
32For these and/or other purposes and motivations, and without any
33expectation of additional consideration or compensation, the person
34associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35is an owner of Copyright and Related Rights in the Work, voluntarily
36elects to apply CC0 to the Work and publicly distribute the Work under its
37terms, with knowledge of his or her Copyright and Related Rights in the
38Work and the meaning and intended legal effect of CC0 on those rights.
39
401. Copyright and Related Rights. A Work made available under CC0 may be
41protected by copyright and related or neighboring rights ("Copyright and
42Related Rights"). Copyright and Related Rights include, but are not
43limited to, the following:
44
45 i. the right to reproduce, adapt, distribute, perform, display,
46 communicate, and translate a Work;
47 ii. moral rights retained by the original author(s) and/or performer(s);
48iii. publicity and privacy rights pertaining to a person's image or
49 likeness depicted in a Work;
50 iv. rights protecting against unfair competition in regards to a Work,
51 subject to the limitations in paragraph 4(a), below;
52 v. rights protecting the extraction, dissemination, use and reuse of data
53 in a Work;
54 vi. database rights (such as those arising under Directive 96/9/EC of the
55 European Parliament and of the Council of 11 March 1996 on the legal
56 protection of databases, and under any national implementation
57 thereof, including any amended or successor version of such
58 directive); and
59vii. other similar, equivalent or corresponding rights throughout the
60 world based on applicable law or treaty, and any national
61 implementations thereof.
62
632. Waiver. To the greatest extent permitted by, but not in contravention
64of, applicable law, Affirmer hereby overtly, fully, permanently,
65irrevocably and unconditionally waives, abandons, and surrenders all of
66Affirmer's Copyright and Related Rights and associated claims and causes
67of action, whether now known or unknown (including existing as well as
68future claims and causes of action), in the Work (i) in all territories
69worldwide, (ii) for the maximum duration provided by applicable law or
70treaty (including future time extensions), (iii) in any current or future
71medium and for any number of copies, and (iv) for any purpose whatsoever,
72including without limitation commercial, advertising or promotional
73purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74member of the public at large and to the detriment of Affirmer's heirs and
75successors, fully intending that such Waiver shall not be subject to
76revocation, rescission, cancellation, termination, or any other legal or
77equitable action to disrupt the quiet enjoyment of the Work by the public
78as contemplated by Affirmer's express Statement of Purpose.
79
803. Public License Fallback. Should any part of the Waiver for any reason
81be judged legally invalid or ineffective under applicable law, then the
82Waiver shall be preserved to the maximum extent permitted taking into
83account Affirmer's express Statement of Purpose. In addition, to the
84extent the Waiver is so judged Affirmer hereby grants to each affected
85person a royalty-free, non transferable, non sublicensable, non exclusive,
86irrevocable and unconditional license to exercise Affirmer's Copyright and
87Related Rights in the Work (i) in all territories worldwide, (ii) for the
88maximum duration provided by applicable law or treaty (including future
89time extensions), (iii) in any current or future medium and for any number
90of copies, and (iv) for any purpose whatsoever, including without
91limitation commercial, advertising or promotional purposes (the
92"License"). The License shall be deemed effective as of the date CC0 was
93applied by Affirmer to the Work. Should any part of the License for any
94reason be judged legally invalid or ineffective under applicable law, such
95partial invalidity or ineffectiveness shall not invalidate the remainder
96of the License, and in such case Affirmer hereby affirms that he or she
97will not (i) exercise any of his or her remaining Copyright and Related
98Rights in the Work or (ii) assert any associated claims and causes of
99action with respect to the Work, in either case contrary to Affirmer's
100express Statement of Purpose.
101
1024. Limitations and Disclaimers.
103
104 a. No trademark or patent rights held by Affirmer are waived, abandoned,
105 surrendered, licensed or otherwise affected by this document.
106 b. Affirmer offers the Work as-is and makes no representations or
107 warranties of any kind concerning the Work, express, implied,
108 statutory or otherwise, including without limitation warranties of
109 title, merchantability, fitness for a particular purpose, non
110 infringement, or the absence of latent or other defects, accuracy, or
111 the present or absence of errors, whether or not discoverable, all to
112 the greatest extent permissible under applicable law.
113 c. Affirmer disclaims responsibility for clearing rights of other persons
114 that may apply to the Work or any use thereof, including without
115 limitation any person's Copyright and Related Rights in the Work.
116 Further, Affirmer disclaims responsibility for obtaining any necessary
117 consents, permissions or other rights required for any use of the
118 Work.
119 d. Affirmer understands and acknowledges that Creative Commons is not a
120 party to this document and has no duty or obligation with respect to
121 this CC0 or use of the Work.
diff --git a/LICENSES/LGPL-2.0-or-later.txt b/LICENSES/LGPL-2.0-or-later.txt
0new file mode 100644122new file mode 100644
index 0000000..eb3a4cd
--- /dev/null
+++ b/LICENSES/LGPL-2.0-or-later.txt
@@ -0,0 +1,174 @@
1GNU LIBRARY GENERAL PUBLIC LICENSE
2
3Version 2, June 1991
4
5Copyright (C) 1991 Free Software Foundation, Inc.
651 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
7
8Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
9
10[This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.]
11
12Preamble
13
14The 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.
15
16This 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.
17
18When 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.
19
20To 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.
21
22For 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.
23
24Our 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.
25
26Also, 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.
27
28Finally, 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.
29
30Most 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.
31
32The 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.
33
34Because 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.
35
36However, 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.
37
38The 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.
39
40Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one.
41
42TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
43
440. 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".
45
46A "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.
47
48The "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".)
49
50"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.
51
52Activities 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.
53
541. 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.
55
56You 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.
57
582. 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:
59
60 a) The modified work must itself be a software library.
61
62 b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
63
64 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.
65
66 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.
67
68(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.)
69
70These 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.
71
72Thus, 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.
73
74In 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.
75
763. 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.
77
78Once 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.
79
80This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
81
824. 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.
83
84If 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.
85
865. 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.
87
88However, 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.
89
90When 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.
91
92If 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.)
93
94Otherwise, 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.
95
966. 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.
97
98You 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:
99
100 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.)
101
102 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.
103
104 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.
105
106 d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
107
108For 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.
109
110It 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.
111
1127. 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:
113
114 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.
115
116 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.
117
1188. 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.
119
1209. 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.
121
12210. 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.
123
12411. 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.
125
126If 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.
127
128It 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.
129
130This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
131
13212. 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.
133
13413. 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.
135
136Each 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.
137
13814. 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.
139
140NO WARRANTY
141
14215. 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.
143
14416. 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.
145
146END OF TERMS AND CONDITIONS
147
148How to Apply These Terms to Your New Libraries
149
150If 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).
151
152To 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.
153
154 one line to give the library's name and an idea of what it does.
155 Copyright (C) year name of author
156
157 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.
158
159 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.
160
161 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.
162
163Also add information on how to contact you by electronic and paper mail.
164
165You 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:
166
167Yoyodyne, Inc., hereby disclaims all copyright interest in
168the library `Frob' (a library for tweaking knobs) written
169by James Random Hacker.
170
171signature of Ty Coon, 1 April 1990
172Ty Coon, President of Vice
173
174That's all there is to it!
diff --git a/LICENSES/Linux-syscall-note.txt b/LICENSES/Linux-syscall-note.txt
0new file mode 100644175new file mode 100644
index 0000000..fcd0563
--- /dev/null
+++ b/LICENSES/Linux-syscall-note.txt
@@ -0,0 +1,12 @@
1 NOTE! This copyright does *not* cover user programs that use kernel
2 services by normal system calls - this is merely considered normal use
3 of the kernel, and does *not* fall under the heading of "derived work".
4 Also note that the GPL below is copyrighted by the Free Software
5 Foundation, but the instance of code that it refers to (the Linux
6 kernel) is copyrighted by me and others who actually wrote it.
7
8 Also note that the only valid version of the GPL as far as the kernel
9 is concerned is _this_ particular version of the license (ie v2, not
10 v2.2 or v3.x or whatever), unless explicitly otherwise stated.
11
12 Linus Torvalds
diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt
0new file mode 10064413new file mode 100644
index 0000000..2071b23
--- /dev/null
+++ b/LICENSES/MIT.txt
@@ -0,0 +1,9 @@
1MIT License
2
3Copyright (c) <year> <copyright holders>
4
5Permission 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:
6
7The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
9THE 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.
diff --git a/LICENSES/OFL-1.1.txt b/LICENSES/OFL-1.1.txt
0new file mode 10064410new file mode 100644
index 0000000..33f3666
--- /dev/null
+++ b/LICENSES/OFL-1.1.txt
@@ -0,0 +1,97 @@
1Copyright (c) <dates>, <Copyright Holder> (<URL|email>),
2with Reserved Font Name <Reserved Font Name>.
3Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>),
4with Reserved Font Name <additional Reserved Font Name>.
5Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>).
6
7This Font Software is licensed under the SIL Open Font License, Version 1.1.
8This license is copied below, and is also available with a FAQ at:
9http://scripts.sil.org/OFL
10
11
12-----------------------------------------------------------
13SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
14-----------------------------------------------------------
15
16PREAMBLE
17The goals of the Open Font License (OFL) are to stimulate worldwide
18development of collaborative font projects, to support the font creation
19efforts of academic and linguistic communities, and to provide a free and
20open framework in which fonts may be shared and improved in partnership
21with others.
22
23The OFL allows the licensed fonts to be used, studied, modified and
24redistributed freely as long as they are not sold by themselves. The
25fonts, including any derivative works, can be bundled, embedded,
26redistributed and/or sold with any software provided that any reserved
27names are not used by derivative works. The fonts and derivatives,
28however, cannot be released under any other type of license. The
29requirement for fonts to remain under this license does not apply
30to any document created using the fonts or their derivatives.
31
32DEFINITIONS
33"Font Software" refers to the set of files released by the Copyright
34Holder(s) under this license and clearly marked as such. This may
35include source files, build scripts and documentation.
36
37"Reserved Font Name" refers to any names specified as such after the
38copyright statement(s).
39
40"Original Version" refers to the collection of Font Software components as
41distributed by the Copyright Holder(s).
42
43"Modified Version" refers to any derivative made by adding to, deleting,
44or substituting -- in part or in whole -- any of the components of the
45Original Version, by changing formats or by porting the Font Software to a
46new environment.
47
48"Author" refers to any designer, engineer, programmer, technical
49writer or other person who contributed to the Font Software.
50
51PERMISSION & CONDITIONS
52Permission is hereby granted, free of charge, to any person obtaining
53a copy of the Font Software, to use, study, copy, merge, embed, modify,
54redistribute, and sell modified and unmodified copies of the Font
55Software, subject to the following conditions:
56
571) Neither the Font Software nor any of its individual components,
58in Original or Modified Versions, may be sold by itself.
59
602) Original or Modified Versions of the Font Software may be bundled,
61redistributed and/or sold with any software, provided that each copy
62contains the above copyright notice and this license. These can be
63included either as stand-alone text files, human-readable headers or
64in the appropriate machine-readable metadata fields within text or
65binary files as long as those fields can be easily viewed by the user.
66
673) No Modified Version of the Font Software may use the Reserved Font
68Name(s) unless explicit written permission is granted by the corresponding
69Copyright Holder. This restriction only applies to the primary font name as
70presented to the users.
71
724) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
73Software shall not be used to promote, endorse or advertise any
74Modified Version, except to acknowledge the contribution(s) of the
75Copyright Holder(s) and the Author(s) or with their explicit written
76permission.
77
785) The Font Software, modified or unmodified, in part or in whole,
79must be distributed entirely under this license, and must not be
80distributed under any other license. The requirement for fonts to
81remain under this license does not apply to any document created
82using the Font Software.
83
84TERMINATION
85This license becomes null and void if any of the above conditions are
86not met.
87
88DISCLAIMER
89THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
90EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
91MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
92OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
93COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
94INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
95DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
96FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
97OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/LICENSES/README.md b/LICENSES/README.md
0new file mode 10064498new file mode 100644
index 0000000..69ef2d6
--- /dev/null
+++ b/LICENSES/README.md
@@ -0,0 +1,67 @@
1# systemd Project Licensing
2
3## Main License
4
5The systemd project uses single-line references to Unique License Identifiers as
6defined by the Linux Foundation's SPDX project (https://spdx.org/). The line in
7each individual source file identifies the license applicable to that file.
8
9The current set of valid, predefined SPDX identifiers can be found on the SPDX
10License List at https://spdx.org/licenses/.
11
12The 'LICENSES/' directory contains all the licenses used by the sources included in
13the systemd project source tree.
14
15Unless otherwise noted, the systemd project sources are licensed under the terms
16and conditions of the **GNU Lesser General Public License v2.1 or later**.
17
18New sources that cannot be distributed under LGPL-2.1-or-later will no longer
19be accepted for inclusion in the systemd project to maintain license uniformity.
20
21## Other Licenses
22
23The following exceptions apply:
24
25 * some udev sources under src/udev/ are licensed under **GPL-2.0-or-later**, so the
26 udev binaries as a whole are also distributed under **GPL-2.0-or-later**.
27 * the header files contained in src/basic/linux/ and src/shared/linux/ are copied
28 verbatim from the Linux kernel source tree and are licensed under **GPL-2.0 WITH
29 Linux-syscall-note** and are used within the scope of the Linux-syscall-note
30 exception provisions
31 * the src/shared/initreq.h header is licensed under original license,
32 **LGPL-2.0-or-later**.
33 * the src/shared/linux/bpf_insn.h header is copied from the Linux kernel
34 source tree and is licensed under either **BSD-2-Clause** or **GPL-2.0-only**,
35 and thus is included in the systemd build under the BSD-2-Clause license.
36 * The src/basic/linux/wireguard.h header is copied from the Linux kernel
37 source tree and is licensed under either **MIT** or **GPL-2.0 WITH Linux-syscall-note**,
38 and thus is included in the systemd build under the MIT license.
39 * the following sources are licensed under the **MIT** license (in case of our
40 scripts, to facilitate copying and reuse of those helpers to other projects):
41 - hwdb.d/parse_hwdb.py
42 - src/basic/linux/batman_adv.h
43 - src/basic/sparse-endian.h
44 - tools/catalog-report.py
45 * the following sources are licensed under the **CC0-1.0** license:
46 - src/basic/siphash24.c
47 - src/basic/siphash24.h
48 - src/systemctl/systemd-sysv-install.SKELETON
49 - tools/check-includes.pl
50 - all examples under man/
51 - config files and examples under /network
52 * the following sources are under **Public Domain** (LicenseRef-murmurhash2-public-domain):
53 - src/basic/MurmurHash2.c
54 - src/basic/MurmurHash2.h
55 * the following sources are under **Public Domain** (LicenseRef-lookup3-public-domain):
56 - src/libsystemd/sd-journal/lookup3.c
57 - src/libsystemd/sd-journal/lookup3.h
58 * the tools/chromiumos/gen_autosuspend_rules.py script is licensed under the
59 **BSD-3-Clause** license.
60 * Heebo fonts under docs/fonts/ are licensed under the **SIL Open Font License 1.1**,
61 * any files under test/ without an explicit license we assume non-copyrightable
62 (eg: computer-generated fuzzer data)
63
64## OpenSSL Notes
65
66Note that building the systemd project with OpenSSL does not affect the libsystemd.so
67shared library, which is not linked with the OpenSSL library.
diff --git a/LICENSES/lookup3-public-domain.txt b/LICENSES/lookup3-public-domain.txt
0new file mode 10064468new file mode 100644
index 0000000..5eb8cd6
--- /dev/null
+++ b/LICENSES/lookup3-public-domain.txt
@@ -0,0 +1 @@
1lookup3.c, by Bob Jenkins, May 2006, Public Domain.
diff --git a/LICENSES/murmurhash2-public-domain.txt b/LICENSES/murmurhash2-public-domain.txt
0new file mode 1006442new file mode 100644
index 0000000..c9b70e7
--- /dev/null
+++ b/LICENSES/murmurhash2-public-domain.txt
@@ -0,0 +1,2 @@
1MurmurHash2 was written by Austin Appleby, and is placed in the public
2domain. The author hereby disclaims copyright to this source code.
diff --git a/NEWS b/NEWS
index da5e6f8..5fc0033 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,1467 @@
1systemd System and Service Manager1systemd System and Service Manager
22
3CHANGES WITH 251:
4
5 Backwards-incompatible changes:
6
7 * The minimum kernel version required has been bumped from 3.13 to 4.15,
8 and CLOCK_BOOTTIME is now assumed to always exist.
9
10 * C11 with GNU extensions (aka "gnu11") is now used to build our
11 components. Public API headers are still restricted to ISO C89.
12
13 * In v250, a systemd-networkd feature that automatically configures
14 routes to addresses specified in AllowedIPs= was added and enabled by
15 default. However, this causes network connectivity issues in many
16 existing setups. Hence, it has been disabled by default since
17 systemd-stable 250.3. The feature can still be used by explicitly
18 configuring RouteTable= setting in .netdev files.
19
20 * Jobs started via StartUnitWithFlags() will no longer return 'skipped'
21 when a Condition*= check does not succeed, restoring the JobRemoved
22 signal to the behaviour it had before v250.
23
24 * The org.freedesktop.portable1 methods GetMetadataWithExtensions() and
25 GetImageMetadataWithExtensions() have been fixed to provide an extra
26 return parameter, containing the actual extension release metadata.
27 The current implementation was judged to be broken and unusable, and
28 thus the usual procedure of adding a new set of methods was skipped,
29 and backward compatibility broken instead on the assumption that
30 nobody can be affected given the current state of this interface.
31
32 * All kernels supported by systemd mix RDRAND (or similar) into the
33 entropy pool at early boot. This means that on those systems, even if
34 /dev/urandom is not yet initialized, it still returns bytes that that
35 are at least as high quality as RDRAND. For that reason, we no longer
36 have reason to invoke RDRAND from systemd itself, which has
37 historically been a source of bugs. Furthermore, kernels ≥5.6 provide
38 the getrandom(GRND_INSECURE) interface for returning random bytes
39 before the entropy pool is initialized without warning into kmsg,
40 which is what we attempt to use if available. systemd's direct usage
41 of RDRAND has been removed. x86 systems ≥Broadwell that are running
42 an older kernel may experience kmsg warnings that were not seen with
43 250. For newer kernels, non-x86 systems, or older x86 systems, there
44 should be no visible changes.
45
46 * sd-boot will now measure the kernel command line into TPM PCR 12
47 rather than PCR 8. This improves usefulness of the measurements on
48 systems where sd-boot is chainloaded from Grub. Grub measures all
49 commands its executes into PCR 8, which makes it very hard to use
50 reasonably, hence separate ourselves from that and use PCR 12
51 instead, which is what certain Ubuntu editions already do. To retain
52 compatibility with systems running older systemd systems a new meson
53 option 'efi-tpm-pcr-compat' has been added (which defaults to false).
54 If enabled, the measurement is done twice: into the new-style PCR 12
55 *and* the old-style PCR 8. It's strongly advised to migrate all users
56 to PCR 12 for this purpose in the long run, as we intend to remove
57 this compatibility feature in two year's time.
58
59 * busctl capture now writes output in the newer pcapng format instead
60 of pcap.
61
62 * An udev rule that imported hwdb matches for USB devices with
63 lowercase hexadecimal vendor/product ID digits was added in systemd
64 250. This has been reverted, since uppercase hexadecimal digits are
65 supposed to be used, and we already had a rule that with the
66 appropriate match.
67
68 Users might need to adjust their local hwdb entries.
69
70 * arch_prctl(2) has been moved to the @default set in the syscall filters
71 (as exposed via the SystemCallFilter= setting in service unit files).
72 It is apparently used by the linker now.
73
74 * The tmpfiles entries that create the /run/systemd/netif directory and
75 its subdirectories were moved from tmpfiles.d/systemd.conf to
76 tmpfiles.d/systemd-network.conf.
77
78 Users might need to adjust their files that override tmpfiles.d/systemd.conf
79 to account for this change.
80
81 * The requirement for Portable Services images to contain a well-formed
82 os-release file (i.e.: contain at least an ID field) is now enforced.
83 This applies to base images and extensions, and also to systemd-sysext.
84
85 Changes in the Boot Loader Specification, kernel-install and sd-boot:
86
87 * kernel-install's and bootctl's Boot Loader Specification Type #1
88 entry generation logic has been reworked. The user may now pick
89 explicitly by which "token" string to name the installation's boot
90 entries, via the new /etc/kernel/entry-token file or the new
91 --entry-token= switch to bootctl. By default — as before — the
92 entries are named after the local machine ID. However, in "golden
93 image" environments, where the machine ID shall be initialized on
94 first boot (as opposed to at installation time before first boot) the
95 machine ID will not be available at build time. In this case the
96 --entry-token= switch to bootctl (or the /etc/kernel/entry-token
97 file) may be used to override the "token" for the entries, for
98 example the IMAGE_ID= or ID= fields from /etc/os-release. This will
99 make the OS images independent of any machine ID, and ensure that the
100 images will not carry any identifiable information before first boot,
101 but on the other hand means that multiple parallel installations of
102 the very same image on the same disk cannot be supported.
103
104 Summary: if you are building golden images that shall acquire
105 identity information exclusively on first boot, make sure to both
106 remove /etc/machine-id *and* to write /etc/kernel/entry-token to the
107 value of the IMAGE_ID= or ID= field of /etc/os-release or another
108 suitable identifier before deploying the image.
109
110 * The Boot Loader Specification has been extended with
111 /loader/entries.srel file located in the EFI System Partition (ESP)
112 that disambiguates the format of the entries in the /loader/entries/
113 directory (in order to discern them from incompatible uses of this
114 directory by other projects). For entries that follow the
115 Specification, the string "type1" is stored in this file.
116
117 bootctl will now write this file automatically when installing the
118 systemd-boot boot loader.
119
120 * kernel-install supports a new initrd_generator= setting in
121 /etc/kernel/install.conf, that is exported as
122 $KERNEL_INSTALL_INITRD_GENERATOR to kernel-install plugins. This
123 allows choosing different initrd generators.
124
125 * kernel-install will now create a "staging area" (an initially-empty
126 directory to gather files for a Boot Loader Specification Type #1
127 entry). The path to this directory is exported as
128 $KERNEL_INSTALL_STAGING_AREA to kernel-install plugins, which should
129 drop files there instead of writing them directly to the final
130 location. kernel-install will move them when all files have been
131 prepared successfully.
132
133 * New option sort-key= has been added to the Boot Loader Specification
134 to override the sorting order of the entries in the boot menu. It is
135 read by sd-boot and bootctl, and will be written by kernel-install,
136 with the default value of IMAGE_ID= or ID= fields from
137 os-release. Together, this means that on multiboot installations,
138 entries should be grouped and sorted in a predictable way.
139
140 * The sort order of boot entries has been updated: entries which have
141 the new field sort-key= are sorted by it first, and all entries
142 without it are ordered later. After that, entries are sorted by
143 version so that newest entries are towards the beginning of the list.
144
145 * The kernel-install tool gained a new 'inspect' verb which shows the
146 paths and other settings used.
147
148 * sd-boot can now optionally beep when the menu is shown and menu
149 entries are selected, which can be useful on machines without a
150 working display. (Controllable via a loader.conf setting.)
151
152 * The --make-machine-id-directory= switch to bootctl has been replaced
153 by --make-entry-directory=, given that the entry directory is not
154 necessarily named after the machine ID, but after some other suitable
155 ID as selected via --entry-token= described above. The old name of
156 the option is still understood to maximize compatibility.
157
158 * 'bootctl list' gained support for a new --json= switch to output boot
159 menu entries in JSON format.
160
161 * 'bootctl is-installed' now supports the --graceful, and various verbs
162 omit output with the new option --quiet.
163
164 Changes in systemd-homed:
165
166 * Starting with v250 systemd-homed uses UID/GID mapping on the mounts
167 of activated home directories it manages (if the kernel and selected
168 file systems support it). So far it mapped three UID ranges: the
169 range from 0…60000, the user's own UID, and the range 60514…65534,
170 leaving everything else unmapped (in other words, the 16bit UID range
171 is mapped almost fully, with the exception of the UID subrange used
172 for systemd-homed users, with one exception: the user's own UID).
173 Unmapped UIDs may not be used for file ownership in the home
174 directory — any chown() attempts with them will fail. With this
175 release a fourth range is added to these mappings:
176 524288…1879048191. This range is the UID range intended for container
177 uses, see:
178
179 https://systemd.io/UIDS-GIDS
180
181 This range may be used for container managers that place container OS
182 trees in the home directory (which is a questionable approach, for
183 quota, permission, SUID handling and network file system
184 compatibility reasons, but nonetheless apparently commonplace). Note
185 that this mapping is mapped 1:1 in a pass-through fashion, i.e. the
186 UID assignments from the range are not managed or mapped by
187 `systemd-homed`, and must be managed with other mechanisms, in the
188 context of the local system.
189
190 Typically, a better approach to user namespacing in relevant
191 container managers would be to leave container OS trees on disk at
192 UID offset 0, but then map them to a dynamically allocated runtime
193 UID range via another UID mount map at container invocation
194 time. That way user namespace UID ranges become strictly a runtime
195 concept, and do not leak into persistent file systems, persistent
196 user databases or persistent configuration, thus greatly simplifying
197 handling, and improving compatibility with home directories intended
198 to be portable like the ones managed by systemd-homed.
199
200 Changes in shared libraries:
201
202 * A new libsystemd-core-<version>.so private shared library is
203 installed under /usr/lib/systemd/system, mirroring the existing
204 libsystemd-shared-<version>.so library. This allows the total
205 installation size to be reduced by binary code reuse.
206
207 * The <version> tag used in the name of libsystemd-shared.so and
208 libsystemd-core.so can be configured via the meson option
209 'shared-lib-tag'. Distributions may build subsequent versions of the
210 systemd package with unique tags (e.g. the full package version),
211 thus allowing multiple installations of those shared libraries to be
212 available at the same time. This is intended to fix an issue where
213 programs that link to those libraries would fail to execute because
214 they were installed earlier or later than the appropriate version of
215 the library.
216
217 * The sd-id128 API gained a new call sd_id128_to_uuid_string() that is
218 similar to sd_id128_to_string() but formats the ID in RFC 4122 UUID
219 format instead of simple series of hex characters.
220
221 * The sd-device API gained two new calls sd_device_new_from_devname()
222 and sd_device_new_from_path() which permit allocating an sd_device
223 object from a device node name or file system path.
224
225 * sd-device also gained a new call sd_device_open() which will open the
226 device node associated with a device for which an sd_device object
227 has been allocated. The call is supposed to address races around
228 device nodes being removed/recycled due to hotplug events, or media
229 change events: the call checks internally whether the major/minor of
230 the device node and the "diskseq" (in case of block devices) match
231 with the metadata loaded in the sd_device object, thus ensuring that
232 the device once opened really matches the provided sd_device object.
233
234 Changes in PID1, systemctl, and systemd-oomd:
235
236 * A new set of service monitor environment variables will be passed to
237 OnFailure=/OnSuccess= handlers, but only if exactly one unit lists the
238 handler unit as OnFailure=/OnSuccess=. The variables are:
239 $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS,
240 $MONITOR_INVOCATION_ID and $MONITOR_UNIT. For cases when a single
241 handler needs to watch multiple units, use a templated handler.
242
243 * A new ExtensionDirectories= setting in service unit files allows
244 system extensions to be loaded from a directory. (It is similar to
245 ExtensionImages=, but takes paths to directories, instead of
246 disk image files.)
247
248 'portablectl attach --extension=' now also accepts directory paths.
249
250 * The user.delegate and user.invocation_id extended attributes on
251 cgroups are used in addition to trusted.delegate and
252 trusted.invocation_id. The latter pair requires privileges to set,
253 but the former doesn't and can be also set by the unprivileged user
254 manager.
255
256 (Only supported on kernels ≥5.6.)
257
258 * Units that were killed by systemd-oomd will now have a service result
259 of 'oom-kill'. The number of times a service was killed is tallied
260 in the 'user.oomd_ooms' extended attribute.
261
262 The OOMPolicy= unit file setting is now also honoured by
263 systemd-oomd.
264
265 * In unit files the new %y/%Y specifiers can be used to refer to
266 normalized unit file path, which is particularly useful for symlinked
267 unit files.
268
269 The new %q specifier resolves to the pretty hostname
270 (i.e. PRETTY_HOSTNAME= from /etc/machine-info).
271
272 The new %d specifier resolves to the credentials directory of a
273 service (same as $CREDENTIALS_DIRECTORY).
274
275 * The RootDirectory=, MountAPIVFS=, ExtensionDirectories=,
276 *Capabilities*=, ProtectHome=, *Directory=, TemporaryFileSystem=,
277 PrivateTmp=, PrivateDevices=, PrivateNetwork=, NetworkNamespacePath=,
278 PrivateIPC=, IPCNamespacePath=, PrivateUsers=, ProtectClock=,
279 ProtectKernelTunables=, ProtectKernelModules=, ProtectKernelLogs=,
280 MountFlags= service settings now also work in unprivileged user
281 services, i.e. those run by the user's --user service manager, as long
282 as user namespaces are enabled on the system.
283
284 * Services with Restart=always and a failing ExecCondition= will no
285 longer be restarted, to bring ExecCondition= behaviour in line with
286 Condition*= settings.
287
288 * LoadCredential= now accepts a directory as the argument; all files
289 from the directory will be loaded as credentials.
290
291 * A new D-Bus property ControlGroupId is now exposed on service units,
292 that encapsulates the service's numeric cgroup ID that newer kernels
293 assign to each cgroup.
294
295 * PID 1 gained support for configuring the "pre-timeout" of watchdog
296 devices and the associated governor, via the new
297 RuntimeWatchdogPreSec= and RuntimeWatchdogPreGovernor= configuration
298 options in /etc/systemd/system.conf.
299
300 * systemctl's --timestamp= option gained a new choice "unix", to show
301 timestamp as unix times, i.e. seconds since 1970, Jan 1st.
302
303 * A new "taint" flag named "old-kernel" is introduced which is set when
304 the kernel systemd runs on is older then the current baseline version
305 (see above). The flag is shown in "systemctl status" output.
306
307 * Two additional taint flags "short-uid-range" and "short-gid-range"
308 have been added as well, which are set when systemd notices it is run
309 within a userns namespace that does not define the full 0…65535 UID
310 range
311
312 * A new "unmerged-usr" taint flag has been added that is set whenever
313 running on systems where /bin/ + /sbin/ are *not* symlinks to their
314 counterparts in /usr/, i.e. on systems where the /usr/-merge has been
315 completed.
316
317 * Generators invoked by PID 1 will now have a couple of useful
318 environment variables set describing the execution context a
319 bit. $SYSTEMD_SCOPE encodes whether the generator is called from the
320 system service manager, or from the per-user service
321 manager. $SYSTEMD_IN_INITRD encodes whether the generator is invoked
322 in initrd context or on the host. $SYSTEMD_FIRST_BOOT encodes whether
323 systemd considers the current boot to be a "first"
324 boot. $SYSTEMD_VIRTUALIZATION encode whether virtualization is
325 detected and which type of hypervisor/container
326 manager. $SYSTEMD_ARCHITECTURE indicates which architecture the
327 kernel is built for.
328
329 * PID 1 will now automatically pick up system credentials from qemu's
330 fw_cfg interface, thus allowing passing arbitrary data into VM
331 systems similar to how this is already supported for passing them
332 into `systemd-nspawn` containers. Credentials may now also be passed
333 in via the new kernel command line option `systemd.set_credential=`
334 (note that kernel command line options are world-readable during
335 runtime, and only useful for credentials that require no
336 confidentiality). The credentials that can be passed to unified
337 kernels that use the `systemd-stub` UEFI stub are now similarly
338 picked up automatically. Automatic importing of system credentials
339 this way can be turned off via the new
340 `systemd.import_credentials=no` kernel command line option.
341
342 * LoadCredential= will now automatically look for credentials in the
343 /etc/credstore/, /run/credstore/, /usr/lib/credstore/ directories if
344 the argument is not an absolute path. Similarly,
345 LoadCredentialEncrypted= will check the same directories plus
346 /etc/credstore.encrypted/, /run/credstore.encrypted/ and
347 /usr/lib/credstore.encrypted/. The idea is to use those directories
348 as the system-wide location for credentials that services should pick
349 up automatically.
350
351 * System and service credentials are described in great detail in a new
352 document:
353
354 https://systemd.io/CREDENTIALS
355
356 Changes in systemd-journald:
357
358 * The journal JSON export format has been added to listed of stable
359 interfaces (https://systemd.io/PORTABILITY_AND_STABILITY/).
360
361 * journalctl --list-boots now supports JSON output and the --reverse option.
362
363 * Under docs/: JOURNAL_EXPORT_FORMATS was imported from the wiki and
364 updated, BUILDING_IMAGES is new:
365
366 https://systemd.io/JOURNAL_EXPORT_FORMATS
367 https://systemd.io/BUILDING_IMAGES
368
369 Changes in udev:
370
371 * Two new hwdb files have been added. One lists "handhelds" (PDAs,
372 calculators, etc.), the other AV production devices (DJ tables,
373 keypads, etc.) that should accessible to the seat owner user by
374 default.
375
376 * udevadm trigger gained a new --prioritized-subsystem= option to
377 process certain subsystems (and all their parent devices) earlier.
378
379 systemd-udev-trigger.service now uses this new option to trigger
380 block and TPM devices first, hopefully making the boot a bit faster.
381
382 * udevadm trigger now implements --type=all, --initialized-match,
383 --initialized-nomatch to trigger both subsystems and devices, only
384 already-initialized devices, and only devices which haven't been
385 initialized yet, respectively.
386
387 * udevadm gained a new "wait" command for safely waiting for a specific
388 device to show up in the udev device database. This is useful in
389 scripts that asynchronously allocate a block device (e.g. through
390 repartitioning, or allocating a loopback device or similar) and need
391 to synchronize on the creation to complete.
392
393 * udevadm gained a new "lock" command for locking one or more block
394 devices while formatting it or writing a partition table to it. It is
395 an implementation of https://systemd.io/BLOCK_DEVICE_LOCKING and
396 usable in scripts dealing with block devices.
397
398 * udevadm info will show a couple of additional device fields in its
399 output, and will not apply a limited set of coloring to line types.
400
401 * udevadm info --tree will now show a tree of objects (i.e. devices and
402 suchlike) in the /sys/ hierarchy.
403
404 * Block devices will now get a new set of device symlinks in
405 /dev/disk/by-diskseq/<nr>, which may be used to reference block
406 device nodes via the kernel's "diskseq" value. Note that this does
407 not guarantee that opening a device by a symlink like this will
408 guarantee that the opened device actually matches the specified
409 diskseq value. To be safe against races, the actual diskseq value of
410 the opened device (BLKGETDISKSEQ ioctl()) must still be compred with
411 the one in the symlink path.
412
413 * .link files gained support for setting MDI/MID-X on a link.
414
415 * .link files gained support for [Match] Firmware= setting to match on
416 the device firmware description string. By mistake, it was previously
417 only supported in .network files.
418
419 * .link files gained support for [Link] SR-IOVVirtualFunctions= setting
420 and [SR-IOV] section to configure SR-IOV virtual functions.
421
422 Changes in systemd-networkd:
423
424 * The default scope for unicast routes configured through [Route]
425 section is changed to "link", to make the behavior consistent with
426 "ip route" command. The manual configuration of [Route] Scope= is
427 still honored.
428
429 * A new unit systemd-networkd-wait-online@<interface>.service has been
430 added that can be used to wait for a specific network interface to be
431 up.
432
433 * systemd-networkd gained a new [Bridge] Isolated=true|false setting
434 that configures the eponymous kernel attribute on the bridge.
435
436 * .netdev files now can be used to create virtual WLAN devices, and
437 configure various settings on them, via the [WLAN] section.
438
439 * .link/.network files gained support for [Match] Kind= setting to match
440 on device kind ("bond", "bridge", "gre", "tun", "veth", etc.)
441
442 This value is also shown by 'networkctl status'.
443
444 * The Local= setting in .netdev files for various virtual network
445 devices gained support for specifying, in addition to the network
446 address, the name of a local interface which must have the specified
447 address.
448
449 * systemd-networkd gained a new [Tunnel] External= setting in .netdev
450 files, to configure tunnels in external mode (a.k.a. collect metadata
451 mode).
452
453 * [Network] L2TP= setting was removed. Please use interface specifier in
454 Local= setting in .netdev files of corresponding L2TP interface.
455
456 * New [DHCPServer] BootServerName=, BootServerAddress=, and
457 BootFilename= settings can be used to configure the server address,
458 server name, and file name sent in the DHCP packet (e.g. to configure
459 PXE boot).
460
461 Changes in systemd-resolved:
462
463 * systemd-resolved is started earlier (in sysinit.target), so it
464 available earlier and will also be started in the initrd if installed
465 there.
466
467 Changes in disk encryption:
468
469 * systemd-cryptenroll can now control whether to require the user to
470 enter a PIN when using TPM-based unlocking of a volume via the new
471 --tpm2-with-pin= option.
472
473 Option tpm2-pin= can be used in /etc/crypttab.
474
475 * When unlocking devices via TPM, TPM2 parameter encryption is now
476 used, to ensure that communication between CPU and discrete TPM chips
477 cannot be eavesdropped to acquire disk encryption keys.
478
479 * A new switch --fido2-credential-algorithm= has been added to
480 systemd-cryptenroll allowing selection of the credential algorithm to
481 use when binding encryption to FIDO2 tokens.
482
483 Changes in systemd-hostnamed:
484
485 * HARDWARE_VENDOR= and HARDWARE_MODEL= can be set in /etc/machine-info
486 to override the values gleaned from the hwdb.
487
488 * A ID_CHASSIS property can be set in the hwdb (for the DMI device
489 /sys/class/dmi/id) to override the chassis that is reported by
490 hostnamed.
491
492 * hostnamed's D-Bus interface gained a new method GetHardwareSerial()
493 for reading the hardware serial number, as reportd by DMI. It also
494 exposes a new method D-Bus property FirmwareVersion that encode the
495 firmware version of the system.
496
497 Changes in other components:
498
499 * /etc/locale.conf is now populated through tmpfiles.d factory /etc/
500 handling with the values that were configured during systemd build
501 (if /etc/locale.conf has not been created through some other
502 mechanism). This means that /etc/locale.conf should always have
503 reasonable contents and we avoid a potential mismatch in defaults.
504
505 * The userdbctl tool will now show UID range information as part of the
506 list of known users.
507
508 * A new build-time configuration setting default-user-shell= can be
509 used to set the default shell for user records and nspawn shell
510 invocations (instead of of the default /bin/bash).
511
512 * systemd-timesyncd now provides a D-Bus API for receiving NTP server
513 information dynamically at runtime via IPC.
514
515 * The systemd-creds tool gained a new "has-tpm2" verb, which reports
516 whether a functioning TPM2 infrastructure is available, i.e. if
517 firmware, kernel driver and systemd all have TPM2 support enabled and
518 a device found.
519
520 * The systemd-creds tool gained support for generating encrypted
521 credentials that are using an empty encryption key. While this
522 provides no integrity nor confidentiality it's useful to implement
523 codeflows that work the same on TPM-ful and TPM2-less systems. The
524 service manager will only accept credentials "encrypted" that way if
525 a TPM2 device cannot be detected, to ensure that credentials
526 "encrypted" like that cannot be used to trick TPM2 systems.
527
528 * When deciding whether to colorize output, all systemd programs now
529 also check $COLORTERM (in addition to $NO_COLOR, $SYSTEMD_COLORS, and
530 $TERM).
531
532 * Meson's new install_tag feature is now in use for several components,
533 allowing to build and install select binaries only: pam, nss, devel
534 (pkg-config files), systemd-boot, libsystemd, libudev. Example:
535 $ meson build systemd-boot
536 $ meson install --tags systemd-boot --no-rebuild
537 https://mesonbuild.com/Installing.html#installation-tags
538
539 * A new build configuration option has been added, to allow selecting the
540 default compression algorithm used by systemd-journald and systemd-coredump.
541 This allows to build-in support for decompressing all supported formats,
542 but choose a specific one for compression. E.g.:
543 $ meson -Ddefault-compression=xz
544
545 Experimental features:
546
547 * sd-boot gained a new *experimental* setting "reboot-for-bitlocker" in
548 loader.conf that implements booting Microsoft Windows from the
549 sd-boot in a way that first reboots the system, to reset the TPM
550 PCRs. This improves compatibility with BitLocker's TPM use, as the
551 PCRs will only record the Windows boot process, and not sd-boot
552 itself, thus retaining the PCR measurements not involving sd-boot.
553 Note that this feature is experimental for now, and is likely going
554 to be generalized and renamed in a future release, without retaining
555 compatibility with the current implementation.
556
557 * A new systemd-sysupdate component has been added that automatically
558 discovers, downloads, and installs A/B-style updates for the host
559 installation itself, or container images, portable service images,
560 and other assets. See the new systemd-sysupdate man page for updates.
561
562 Contributions from: 4piu, Adam Williamson, adrian5, Albert Brox,
563 AlexCatze, Alex Henrie, Alfonso Sánchez-Beato, Alice S,
564 Alvin Šipraga, amarjargal, Amarjargal, Andrea Pappacoda,
565 Andreas Rammhold, Andy Chi, Anita Zhang, Antonio Alvarez Feijoo,
566 Arfrever Frehtes Taifersar Arahesis, ash, Bastien Nocera, Be,
567 bearhoney, Ben Efros, Benjamin Berg, Benjamin Franzke,
568 Brett Holman, Christian Brauner, Clyde Byrd III, Curtis Klein,
569 Daan De Meyer, Daniele Medri, Daniel Mack, Danilo Krummrich,
570 David, David Bond, Davide Cavalca, David Tardon, davijosw,
571 dependabot[bot], Donald Chan, Dorian Clay, Eduard Tolosa,
572 Elias Probst, Eli Schwartz, Erik Sjölund, Evgeny Vereshchagin,
573 Federico Ceratto, Franck Bui, Frantisek Sumsal, Gaël PORTAY,
574 Georges Basile Stavracas Neto, Gibeom Gwon, Goffredo Baroncelli,
575 Grigori Goronzy, Hans de Goede, Heiko Becker, Hugo Carvalho,
576 Jakob Lell, James Hilliard, Jan Janssen, Jason A. Donenfeld,
577 Joan Bruguera, Joerie de Gram, Josh Triplett, Julia Kartseva,
578 Kazuo Moriwaka, Khem Raj, ksa678491784, Lance, Lan Tian,
579 Laura Barcziova, Lennart Poettering, Leviticoh, licunlong,
580 Lidong Zhong, lincoln auster, Lubomir Rintel, Luca Boccassi,
581 Luca BRUNO, lucagoc, Ludwig Nussel, Marcel Hellwig, march1993,
582 Marco Scardovi, Mario Limonciello, Mariusz Tkaczyk,
583 Markus Weippert, Martin, Martin Liska, Martin Wilck, Matija Skala,
584 Matthew Blythe, Matthias Lisin, Matthijs van Duin, Matt Walton,
585 Max Gautier, Michael Biebl, Michael Olbrich, Michal Koutný,
586 Michal Sekletár, Mike Gilbert, MkfsSion, Morten Linderud,
587 Nick Rosbrook, Nikolai Grigoriev, Nikolai Kostrigin,
588 Nishal Kulkarni, Noel Kuntze, Pablo Ceballos, Peter Hutterer,
589 Peter Morrow, Pigmy-penguin, Piotr Drąg, prumian, Richard Neill,
590 Rike-Benjamin Schuppner, rodin-ia, Romain Naour, Ruben Kerkhof,
591 Ryan Hendrickson, Santa Wiryaman, Sebastian Pucilowski, Seth Falco,
592 Simon Ellmann, Sonali Srivastava, Stefan Seering,
593 Stephen Hemminger, tawefogo, techtino, Temuri Doghonadze,
594 Thomas Batten, Thomas Haller, Thomas Weißschuh, Tobias Stoeckmann,
595 Tomasz Pala, Tyson Whitehead, Vishal Chillara Srinivas,
596 Vivien Didelot, w30023233, wangyuhang, Weblate, Xiaotian Wu,
597 yangmingtai, YmrDtnJu, Yonathan Randolph, Yutsuten, Yu Watanabe,
598 Zbigniew Jędrzejewski-Szmek, наб
599
600 — Edinburgh, 2022-05-21
601
602CHANGES WITH 250:
603
604 * Support for encrypted and authenticated credentials has been added.
605 This extends the credential logic introduced with v247 to support
606 non-interactive symmetric encryption and authentication, based on a
607 key that is stored on the /var/ file system or in the TPM2 chip (if
608 available), or the combination of both (by default if a TPM2 chip
609 exists the combination is used, otherwise the /var/ key only). The
610 credentials are automatically decrypted at the moment a service is
611 started, and are made accessible to the service itself in unencrypted
612 form. A new tool 'systemd-creds' encrypts credentials for this
613 purpose, and two new service file settings LoadCredentialEncrypted=
614 and SetCredentialEncrypted= configure such credentials.
615
616 This feature is useful to store sensitive material such as SSL
617 certificates, passwords and similar securely at rest and only decrypt
618 them when needed, and in a way that is tied to the local OS
619 installation or hardware.
620
621 * systemd-gpt-auto-generator can now automatically set up discoverable
622 LUKS2 encrypted swap partitions.
623
624 * The GPT Discoverable Partitions Specification has been substantially
625 extended with support for root and /usr/ partitions for the majority
626 of architectures systemd supports. This includes platforms that do
627 not natively support UEFI, because even though GPT is specified under
628 UEFI umbrella, it is useful on other systems too. Specifically,
629 systemd-nspawn, systemd-sysext, systemd-gpt-auto-generator and
630 Portable Services use the concept without requiring UEFI.
631
632 * The GPT Discoverable Partitions Specifications has been extended with
633 a new set of partitions that may carry PKCS#7 signatures for Verity
634 partitions, encoded in a simple JSON format. This implements a simple
635 mechanism for building disk images that are fully authenticated and
636 can be tested against a set of cryptographic certificates. This is
637 now implemented for the various systemd tools that can operate with
638 disk images, such as systemd-nspawn, systemd-sysext, systemd-dissect,
639 Portable services/RootImage=, systemd-tmpfiles, and systemd-sysusers.
640 The PKCS#7 signatures are passed to the kernel (where they are
641 checked against certificates from the kernel keyring), or can be
642 verified against certificates provided in userspace (via a simple
643 drop-in file mechanism).
644
645 * systemd-dissect's inspection logic will now report for which uses a
646 disk image is intended. Specifically, it will display whether an
647 image is suitable for booting on UEFI or in a container (using
648 systemd-nspawn's --image= switch), whether it can be used as portable
649 service, or attached as system extension.
650
651 * The system-extension.d/ drop-in files now support a new field
652 SYSEXT_SCOPE= that may encode which purpose a system extension image
653 is for: one of "initrd", "system" or "portable". This is useful to
654 make images more self-descriptive, and to ensure system extensions
655 cannot be attached in the wrong contexts.
656
657 * The os-release file learnt a new PORTABLE_PREFIXES= field which may
658 be used in portable service images to indicate which unit prefixes
659 are supported.
660
661 * The GPT image dissection logic in systemd-nspawn/systemd-dissect/…
662 now is able to decode images for non-native architectures as well.
663 This allows systemd-nspawn to boot images of non-native architectures
664 if the corresponding user mode emulator is installed and
665 systemd-binfmtd is running.
666
667 * systemd-logind gained new settings HandlePowerKeyLongPress=,
668 HandleRebootKeyLongPress=, HandleSuspendKeyLongPress= and
669 HandleHibernateKeyLongPress= which may be used to configure actions
670 when the relevant keys are pressed for more than 5s. This is useful
671 on devices that only have hardware for a subset of these keys. By
672 default, if the reboot key is pressed long the poweroff operation is
673 now triggered, and when the suspend key is pressed long the hibernate
674 operation is triggered. Long pressing the other two keys currently
675 does not trigger any operation by default.
676
677 * When showing unit status updates on the console during boot and
678 shutdown, and a service is slow to start so that the cylon animation
679 is shown, the most recent sd_notify() STATUS= text is now shown as
680 well. Services may use this to make the boot/shutdown output easier
681 to understand, and to indicate what precisely a service that is slow
682 to start or stop is waiting for. In particular, the per-user service
683 manager instance now reports what it is doing and which service it is
684 waiting for this way to the system service manager.
685
686 * The service manager will now re-execute on reception of the
687 SIGRTMIN+25 signal. It previously already did that on SIGTERM — but
688 only when running as PID 1. There was no signal to request this when
689 running as per-user service manager, i.e. as any other PID than 1.
690 SIGRTMIN+25 works for both system and user managers.
691
692 * The hardware watchdog logic in PID 1 gained support for operating
693 with the default timeout configured in the hardware, instead of
694 insisting on re-configuring it. Set RuntimeWatchdogSec=default to
695 request this behavior.
696
697 * A new kernel command line option systemd.watchdog_sec= is now
698 understood which may be used to override the hardware watchdog
699 time-out for the boot.
700
701 * A new setting DefaultOOMScoreAdjust= is now supported in
702 /etc/systemd/system.conf and /etc/systemd/user.conf. It may be used
703 to set the default process OOM score adjustment value for processes
704 started by the service manager. For per-user service managers this
705 now defaults to 100, but for per-system service managers is left as
706 is. This means that by default now services forked off the user
707 service manager are more likely to be killed by the OOM killer than
708 system services or the managers themselves.
709
710 * A new per-service setting RestrictFileSystems= as been added that
711 restricts the file systems a service has access to by their type.
712 This is based on the new BPF LSM of the Linux kernel. It provides an
713 effective way to make certain API file systems unavailable to
714 services (and thus minimizing attack surface). A new command
715 "systemd-analyze filesystems" has been added that lists all known
716 file system types (and how they are grouped together under useful
717 group handles).
718
719 * Services now support a new setting RestrictNetworkInterfaces= for
720 restricting access to specific network interfaces.
721
722 * Service unit files gained new settings StartupAllowedCPUs= and
723 StartupAllowedMemoryNodes=. These are similar to their counterparts
724 without the "Startup" prefix and apply during the boot process
725 only. This is useful to improve boot-time behavior of the system and
726 assign resources differently during boot than during regular
727 runtime. This is similar to the preexisting StartupCPUWeight=
728 vs. CPUWeight.
729
730 * Related to this: the various StartupXYZ= settings
731 (i.e. StartupCPUWeight=, StartupAllowedCPUs=, …) are now also applied
732 during shutdown. The settings not prefixed with "Startup" hence apply
733 during regular runtime, and those that are prefixed like that apply
734 during boot and shutdown.
735
736 * A new per-unit set of conditions/asserts
737 [Condition|Assert][Memory|CPU|IO]Pressure= have been added to make a
738 unit skip/fail activation if the system's (or a slice's) memory/cpu/io
739 pressure is above the configured threshold, using the kernel PSI
740 feature. For more details see systemd.unit(5) and
741 https://www.kernel.org/doc/html/latest/accounting/psi.html
742
743 * The combination of ProcSubset=pid and ProtectKernelTunables=yes and/or
744 ProtectKernelLogs=yes can now be used.
745
746 * The default maximum numbers of inodes have been raised from 64k to 1M
747 for /dev/, and from 400k to 1M for /tmp/.
748
749 * The per-user service manager learnt support for communicating with
750 systemd-oomd to acquire OOM kill information.
751
752 * A new service setting ExecSearchPath= has been added that allows
753 changing the search path for executables for services. It affects
754 where we look for the binaries specified in ExecStart= and similar,
755 and the specified directories are also added the $PATH environment
756 variable passed to invoked processes.
757
758 * A new setting RuntimeRandomizedExtraSec= has been added for service
759 and scope units that allows extending the runtime time-out as
760 configured by RuntimeMaxSec= with a randomized amount.
761
762 * The syntax of the service unit settings RuntimeDirectory=,
763 StateDirectory=, CacheDirectory=, LogsDirectory= has been extended:
764 if the specified value is now suffixed with a colon, followed by
765 another filename, the latter will be created as symbolic link to the
766 specified directory. This allows creating these service directories
767 together with alias symlinks to make them available under multiple
768 names.
769
770 * Service unit files gained two new settings TTYRows=/TTYColumns= for
771 configuring rows/columns of the TTY device passed to
772 stdin/stdout/stderr of the service. This is useful to propagate TTY
773 dimensions to a virtual machine.
774
775 * A new service unit file setting ExitType= has been added that
776 specifies when to assume a service has exited. By default systemd
777 only watches the main process of a service. By setting
778 ExitType=cgroup it can be told to wait for the last process in a
779 cgroup instead.
780
781 * Automount unit files gained a new setting ExtraOptions= that can be
782 used to configure additional mount options to pass to the kernel when
783 mounting the autofs instance.
784
785 * "Urlification" (generation of ESC sequences that generate clickable
786 hyperlinks in modern terminals) may now be turned off altogether
787 during build-time.
788
789 * Path units gained new TriggerLimitBurst= and TriggerLimitIntervalSec=
790 settings that default to 200 and 2 s respectively. The ratelimit
791 ensures that a path unit cannot cause PID1 to busy-loop when it is
792 trying to trigger a service that is skipped because of a Condition*=
793 not being satisfied. This matches the configuration and behaviour of
794 socket units.
795
796 * The TPM2/FIDO2/PKCS11 support in systemd-cryptsetup is now also built
797 as a plug-in for cryptsetup. This means the plain cryptsetup command
798 may now be used to unlock volumes set up this way.
799
800 * The TPM2 logic in cryptsetup will now automatically detect systems
801 where the TPM2 chip advertises SHA256 PCR banks but the firmware only
802 updates the SHA1 banks. In such a case PCR policies will be
803 automatically bound to the latter, not the former. This makes the PCR
804 policies reliable, but of course do not provide the same level of
805 trust as SHA256 banks.
806
807 * The TPM2 logic in systemd-cryptsetup/systemd-cryptsetup now supports
808 RSA primary keys in addition to ECC, improving compatibility with
809 TPM2 chips that do not support ECC. RSA keys are much slower to use
810 than ECC, and hence are only used if ECC is not available.
811
812 * /etc/crypttab gained support for a new token-timeout= setting for
813 encrypted volumes that allows configuration of the maximum time to
814 wait for PKCS#11/FIDO2 tokens to be plugged in. If the time elapses
815 the logic will query the user for a regular passphrase/recovery key
816 instead.
817
818 * Support for activating dm-integrity volumes at boot via a new file
819 /etc/integritytab and the tool systemd-integritysetup have been
820 added. This is similar to /etc/crypttab and /etc/veritytab, but deals
821 with dm-integrity instead of dm-crypt/dm-verity.
822
823 * The systemd-veritysetup-generator now understands a new usrhash=
824 kernel command line option for specifying the Verity root hash for
825 the partition backing the /usr/ file system. A matching set of
826 systemd.verity_usr_* kernel command line options has been added as
827 well. These all work similar to the corresponding options for the
828 root partition.
829
830 * The sd-device API gained a new API call sd_device_get_diskseq() to
831 return the DISKSEQ property of a device structure. The "disk
832 sequence" concept is a new feature recently introduced to the Linux
833 kernel that allows detecting reuse cycles of block devices, i.e. can
834 be used to recognize when loopback block devices are reused for a
835 different purpose or CD-ROM drives get their media changed.
836
837 * A new unit systemd-boot-update.service has been added. If enabled
838 (the default) and the sd-boot loader is detected to be installed, it
839 is automatically updated to the newest version when out of date. This
840 is useful to ensure the boot loader remains up-to-date, and updates
841 automatically propagate from the OS tree in /usr/.
842
843 * sd-boot will now build with SBAT by default in order to facilitate
844 working with recent versions of Shim that require it to be present.
845
846 * sd-boot can now parse Microsoft Windows' Boot Configuration Data.
847 This is used to robustly generate boot entry titles for Windows.
848
849 * A new generic target unit factory-reset.target has been added. It is
850 hooked into systemd-logind similar in fashion to
851 reboot/poweroff/suspend/hibernate, and is supposed to be used to
852 initiate a factory reset operation. What precisely this operation
853 entails is up for the implementer to decide, the primary goal of the
854 new unit is provide a framework where to plug in the implementation
855 and how to trigger it.
856
857 * A new meson build-time option 'clock-valid-range-usec-max' has been
858 added which takes a time in µs and defaults to 15 years. If the RTC
859 time is noticed to be more than the specified time ahead of the
860 built-in epoch of systemd (which by default is the release timestamp
861 of systemd) it is assumed that the RTC is not working correctly, and
862 the RTC is reset to the epoch. (It already is reset to the epoch when
863 noticed to be before it.) This should increase the chance that time
864 doesn't accidentally jump too far ahead due to faulty hardware or
865 batteries.
866
867 * A new setting SaveIntervalSec= has been added to systemd-timesyncd,
868 which may be used to automatically save the current system time to
869 disk in regular intervals. This is useful to maintain a roughly
870 monotonic clock even without RTC hardware and with some robustness
871 against abnormal system shutdown.
872
873 * systemd-analyze verify gained support for a pair of new --image= +
874 --root= switches for verifying units below a specific root
875 directory/image instead of on the host.
876
877 * systemd-analyze verify gained support for verifying unit files under
878 an explicitly specified unit name, independently of what the filename
879 actually is.
880
881 * systemd-analyze verify gained a new switch --recursive-errors= which
882 controls whether to only fail on errors found in the specified units
883 or recursively any dependent units.
884
885 * systemd-analyze security now supports a new --offline mode for
886 analyzing unit files stored on disk instead of loaded units. It may
887 be combined with --root=/--image to analyze unit files under a root
888 directory or disk image. It also learnt a new --threshold= parameter
889 for specifying an exposure level threshold: if the exposure level
890 exceeds the specified value the call will fail. It also gained a new
891 --security-policy= switch for configuring security policies to
892 enforce on the units. A policy is a JSON file that lists which tests
893 shall be weighted how much to determine the overall exposure
894 level. Altogether these new features are useful for fully automatic
895 analysis and enforcement of security policies on unit files.
896
897 * systemd-analyze security gain a new --json= switch for JSON output.
898
899 * systemd-analyze learnt a new --quiet switch for reducing
900 non-essential output. It's honored by the "dot", "syscall-filter",
901 "filesystems" commands.
902
903 * systemd-analyze security gained a --profile= option that can be used
904 to take into account a portable profile when analyzing portable
905 services, since a lot of the security-related settings are enabled
906 through them.
907
908 * systemd-analyze learnt a new inspect-elf verb that parses ELF core
909 files, binaries and executables and prints metadata information,
910 including the build-id and other info described on:
911 https://systemd.io/COREDUMP_PACKAGE_METADATA/
912
913 * .network files gained a new UplinkInterface= in the [IPv6SendRA]
914 section, for automatically propagating DNS settings from other
915 interfaces.
916
917 * The static lease DHCP server logic in systemd-networkd may now serve
918 IP addresses outside of the configured IP pool range for the server.
919
920 * CAN support in systemd-networkd gained four new settings Loopback=,
921 OneShot=, PresumeAck=, ClassicDataLengthCode= for tweaking CAN
922 control modes. It gained a number of further settings for tweaking
923 CAN timing quanta.
924
925 * The [CAN] section in .network file gained new TimeQuantaNSec=,
926 PropagationSegment=, PhaseBufferSegment1=, PhaseBufferSegment2=,
927 SyncJumpWidth=, DataTimeQuantaNSec=, DataPropagationSegment=,
928 DataPhaseBufferSegment1=, DataPhaseBufferSegment2=, and
929 DataSyncJumpWidth= settings to control bit-timing processed by the
930 CAN interface.
931
932 * DHCPv4 client support in systemd-networkd learnt a new Label= option
933 for configuring the address label to apply to configure IPv4
934 addresses.
935
936 * The [IPv6AcceptRA] section of .network files gained support for a new
937 UseMTU= setting that may be used to control whether to apply the
938 announced MTU settings to the local interface.
939
940 * The [DHCPv4] section in .network file gained a new Use6RD= boolean
941 setting to control whether the DHCPv4 client request and process the
942 DHCP 6RD option.
943
944 * The [DHCPv6PrefixDelegation] section in .network file is renamed to
945 [DHCPPrefixDelegation], as now the prefix delegation is also supported
946 with DHCPv4 protocol by enabling the Use6RD= setting.
947
948 * The [DHCPPrefixDelegation] section in .network file gained a new
949 setting UplinkInterface= to specify the upstream interface.
950
951 * The [DHCPv6] section in .network file gained a new setting
952 UseDelegatedPrefix= to control whether the delegated prefixes will be
953 propagated to the downstream interfaces.
954
955 * The [IPv6AcceptRA] section of .network files now understands two new
956 settings UseGateway=/UseRoutePrefix= for explicitly configuring
957 whether to use the relevant fields from the IPv6 Router Advertisement
958 records.
959
960 * The ForceDHCPv6PDOtherInformation= setting in the [DHCPv6] section
961 has been removed. Please use the WithoutRA= and UseDelegatedPrefix=
962 settings in the [DHCPv6] section and the DHCPv6Client= setting in the
963 [IPv6AcceptRA] section to control when the DHCPv6 client is started
964 and how the delegated prefixes are handled by the DHCPv6 client.
965
966 * The IPv6Token= section in the [Network] section is deprecated, and
967 the [IPv6AcceptRA] section gained the Token= setting for its
968 replacement. The [IPv6Prefix] section also gained the Token= setting.
969 The Token= setting gained 'eui64' mode to explicitly configure an
970 address with the EUI64 algorithm based on the interface MAC address.
971 The 'prefixstable' mode can now optionally take a secret key. The
972 Token= setting in the [DHCPPrefixDelegation] section now supports all
973 algorithms supported by the same settings in the other sections.
974
975 * The [RoutingPolicyRule] section of .network file gained a new
976 SuppressInterfaceGroup= setting.
977
978 * The IgnoreCarrierLoss= setting in the [Network] section of .network
979 files now allows a duration to be specified, controlling how long to
980 wait before reacting to carrier loss.
981
982 * The [DHCPServer] section of .network file gained a new Router=
983 setting to specify the router address.
984
985 * The [CAKE] section of .network files gained various new settings
986 AutoRateIngress=, CompensationMode=, FlowIsolationMode=, NAT=,
987 MPUBytes=, PriorityQueueingPreset=, FirewallMark=, Wash=, SplitGSO=,
988 and UseRawPacketSize= for configuring CAKE.
989
990 * systemd-networkd now ships with new default .network files:
991 80-container-vb.network which matches host-side network bridge device
992 created by systemd-nspawn's --network-bridge or --network-zone
993 switch, and 80-6rd-tunnel.network which matches automatically created
994 sit tunnel with 6rd prefix when the DHCP 6RD option is received.
995
996 * systemd-networkd's handling of Endpoint= resolution for WireGuard
997 interfaces has been improved.
998
999 * systemd-networkd will now automatically configure routes to addresses
1000 specified in AllowedIPs=. This feature can be controlled via
1001 RouteTable= and RouteMetric= settings in [WireGuard] or
1002 [WireGuardPeer] sections.
1003
1004 * systemd-networkd will now once again automatically generate persistent
1005 MAC addresses for batadv and bridge interfaces. Users can disable this
1006 by using MACAddress=none in .netdev files.
1007
1008 * systemd-networkd and systemd-udevd now support IP over InfiniBand
1009 interfaces. The Kind= setting in .netdev file accepts "ipoib". And
1010 systemd.netdev files gained the [IPoIB] section.
1011
1012 * systemd-networkd and systemd-udevd now support net.ifname-policy=
1013 option on the kernel command-line. This is implemented through the
1014 systemd-network-generator service that automatically generates
1015 appropriate .link, .network, and .netdev files.
1016
1017 * The various systemd-udevd "ethtool" buffer settings now understand
1018 the special value "max" to configure the buffers to the maximum the
1019 hardware supports.
1020
1021 * systemd-udevd's .link files may now configure a large variety of
1022 NIC coalescing settings, plus more hardware offload settings.
1023
1024 * .link files gained a new WakeOnLanPassword= setting in the [Link]
1025 section that allows to specify a WoL "SecureOn" password on hardware
1026 that supports this.
1027
1028 * systemd-nspawn's --setenv= switch now supports an additional syntax:
1029 if only a variable name is specified (i.e. without being suffixed by
1030 a '=' character and a value) the current value of the environment
1031 variable is propagated to the container. e.g. --setenv=FOO will
1032 lookup the current value of $FOO in the environment, and pass it down
1033 to the container. Similar behavior has been added to homectl's,
1034 machinectl's and systemd-run's --setenv= switch.
1035
1036 * systemd-nspawn gained a new switch --suppress-sync= which may be used
1037 to optionally suppress the effect of the sync()/fsync()/fdatasync()
1038 system calls for the container payload. This is useful for build
1039 system environments where safety against abnormal system shutdown is
1040 not essential as all build artifacts can be regenerated any time, but
1041 the performance win is beneficial.
1042
1043 * systemd-nspawn will now raise the RLIMIT_NOFILE hard limit to the
1044 same value that PID 1 uses for most forked off processes.
1045
1046 * systemd-nspawn's --bind=/--bind-ro= switches now optionally take
1047 uidmap/nouidmap options as last parameter. If "uidmap" is used the
1048 bind mounts are created with UID mapping taking place that ensures
1049 the host's file ownerships are mapped 1:1 to container file
1050 ownerships, even if user namespacing is used. This way
1051 files/directories bound into containers will no longer show up as
1052 owned by the nobody user as they typically did if no special care was
1053 taken to shift them manually.
1054
1055 * When discovering Windows installations sd-boot will now attempt to
1056 show the Windows version.
1057
1058 * The color scheme to use in sd-boot may now be configured at
1059 build-time.
1060
1061 * sd-boot gained the ability to change screen resolution during
1062 boot-time, by hitting the "r" key. This will cycle through available
1063 resolutions and save the last selection.
1064
1065 * sd-boot learnt a new hotkey "f". When pressed the system will enter
1066 firmware setup. This is useful in environments where it is difficult
1067 to hit the right keys early enough to enter the firmware, and works
1068 on any firmware regardless which key it natively uses.
1069
1070 * sd-boot gained support for automatically booting into the menu item
1071 selected on the last boot (using the "@saved" identifier for menu
1072 items).
1073
1074 * sd-boot gained support for automatically loading all EFI drivers
1075 placed in the /EFI/systemd/drivers/ subdirectory of the EFI System
1076 Partition (ESP). These drivers are loaded before the menu entries are
1077 loaded. This is useful e.g. to load additional file system drivers
1078 for the XBOOTLDR partition.
1079
1080 * systemd-boot will now paint the input cursor on its own instead of
1081 relying on the firmware to do so, increasing compatibility with broken
1082 firmware that doesn't make the cursor reasonably visible.
1083
1084 * sd-boot now embeds a .osrel PE section like we expect from Boot
1085 Loader Specification Type #2 Unified Kernels. This means sd-boot
1086 itself may be used in place of a Type #2 Unified Kernel. This is
1087 useful for debugging purposes as it allows chain-loading one a
1088 (development) sd-boot instance from another.
1089
1090 * sd-boot now supports a new "devicetree" field in Boot Loader
1091 Specification Type #1 entries: if configured the specified device
1092 tree file is installed before the kernel is invoked. This is useful
1093 for installing/applying new devicetree files without updating the
1094 kernel image.
1095
1096 * Similarly, sd-stub now can read devicetree data from a PE section
1097 ".dtb" and apply it before invoking the kernel.
1098
1099 * sd-stub (the EFI stub that can be glued in front of a Linux kernel)
1100 gained the ability to pick up credentials and sysext files, wrap them
1101 in a cpio archive, and pass as an additional initrd to the invoked
1102 Linux kernel, in effect placing those files in the /.extra/ directory
1103 of the initrd environment. This is useful to implement trusted initrd
1104 environments which are fully authenticated but still can be extended
1105 (via sysexts) and parameterized (via encrypted/authenticated
1106 credentials, see above).
1107
1108 Credentials can be located next to the kernel image file (credentials
1109 specific to a single boot entry), or in one of the shared directories
1110 (credentials applicable to multiple boot entries).
1111
1112 * sd-stub now comes with a full man page, that explains its feature set
1113 and how to combine a kernel image, an initrd and the stub to build a
1114 complete EFI unified kernel image, implementing Boot Loader
1115 Specification Type #2.
1116
1117 * sd-stub may now provide the initrd to the executed kernel via the
1118 LINUX_EFI_INITRD_MEDIA_GUID EFI protocol, adding compatibility for
1119 non-x86 architectures.
1120
1121 * bootctl learnt new set-timeout and set-timeout-oneshot commands that
1122 may be used to set the boot menu time-out of the boot loader (for all
1123 or just the subsequent boot).
1124
1125 * bootctl and kernel-install will now read variables
1126 KERNEL_INSTALL_LAYOUT= from /etc/machine-info and layout= from
1127 /etc/kernel/install.conf. When set, it specifies the layout to use
1128 for installation directories on the boot partition, so that tools
1129 don't need to guess it based on the already-existing directories. The
1130 only value that is defined natively is "bls", corresponding to the
1131 layout specified in
1132 https://systemd.io/BOOT_LOADER_SPECIFICATION/. Plugins for
1133 kernel-install that implement a different layout can declare other
1134 values for this variable.
1135
1136 'bootctl install' will now write KERNEL_INSTALL_LAYOUT=bls, on the
1137 assumption that if the user installed sd-boot to the ESP, they intend
1138 to use the entry layout understood by sd-boot. It'll also write
1139 KERNEL_INSTALL_MACHINE_ID= if it creates any directories using the ID
1140 (and it wasn't specified in the config file yet). Similarly,
1141 kernel-install will now write KERNEL_INSTALL_MACHINE_ID= (if it
1142 wasn't specified in the config file yet). Effectively, those changes
1143 mean that the machine-id used for boot loader entry installation is
1144 "frozen" upon first use and becomes independent of the actual
1145 machine-id.
1146
1147 Configuring KERNEL_INSTALL_MACHINE_ID fixes the following problem:
1148 images created for distribution ("golden images") are built with no
1149 machine-id, so that a unique machine-id can be created on the first
1150 boot. But those images may contain boot loader entries with the
1151 machine-id used during build included in paths. Using a "frozen"
1152 value allows unambiguously identifying entries that match the
1153 specific installation, while still permitting parallel installations
1154 without conflict.
1155
1156 Configuring KERNEL_INSTALL_LAYOUT obviates the need for
1157 kernel-install to guess the installation layout. This fixes the
1158 problem where a (possibly empty) directory in the boot partition is
1159 created from a different layout causing kernel-install plugins to
1160 assume the wrong layout. A particular example of how this may happen
1161 is the grub2 package in Fedora which includes directories under /boot
1162 directly in its file list. Various other packages pull in grub2 as a
1163 dependency, so it may be installed even if unused, breaking
1164 installations that use the bls layout.
1165
1166 * bootctl and systemd-bless-boot can now be linked statically.
1167
1168 * systemd-sysext now optionally doesn't insist on extension-release.d/
1169 files being placed in the image under the image's file name. If the
1170 file system xattr user.extension-release.strict is set on the
1171 extension release file, it is accepted regardless of its name. This
1172 relaxes security restrictions a bit, as system extension may be
1173 attached under a wrong name this way.
1174
1175 * udevadm's test-builtin command learnt a new --action= switch for
1176 testing the built-in with the specified action (in place of the
1177 default 'add').
1178
1179 * udevadm info gained new switches --property=/--value for showing only
1180 specific udev properties/values instead of all.
1181
1182 * A new hwdb database has been added that contains matches for various
1183 types of signal analyzers (protocol analyzers, logic analyzers,
1184 oscilloscopes, multimeters, bench power supplies, etc.) that should
1185 be accessible to regular users.
1186
1187 * A new hwdb database entry has been added that carries information
1188 about types of cameras (regular or infrared), and in which direction
1189 they point (front or back).
1190
1191 * A new rule to allow console users access to rfkill by default has been
1192 added to hwdb.
1193
1194 * Device nodes for the Software Guard eXtension enclaves (sgx_vepc) are
1195 now also owned by the system group "sgx".
1196
1197 * A new build-time meson option "extra-net-naming-schemes=" has been
1198 added to define additional naming schemes schemes for udev's network
1199 interface naming logic. This is useful for enterprise distributions
1200 and similar which want to pin the schemes of certain distribution
1201 releases under a specific name and previously had to patch the
1202 sources to introduce new named schemes.
1203
1204 * The predictable naming logic for network interfaces has been extended
1205 to generate stable names from Xen netfront device information.
1206
1207 * hostnamed's chassis property can now be sourced from chassis-type
1208 field encoded in devicetree (in addition to the existing DMI
1209 support).
1210
1211 * systemd-cgls now optionally displays cgroup IDs and extended
1212 attributes for each cgroup. (Controllable via the new --xattr= +
1213 --cgroup-id= switches.)
1214
1215 * coredumpctl gained a new --all switch for operating on all
1216 Journal files instead of just the local ones.
1217
1218 * systemd-coredump will now use libdw/libelf via dlopen() rather than
1219 directly linking, allowing users to easily opt-out of backtrace/metadata
1220 analysis of core files, and reduce image sizes when this is not needed.
1221
1222 * systemd-coredump will now analyze core files with libdw/libelf in a
1223 forked, sandboxed process.
1224
1225 * systemd-homed will now try to unmount an activate home area in
1226 regular intervals once the user logged out fully. Previously this was
1227 attempted exactly once but if the home directory was busy for some
1228 reason it was not tried again.
1229
1230 * systemd-homed's LUKS2 home area backend will now create a BSD file
1231 system lock on the image file while the home area is active
1232 (i.e. mounted). If a home area is found to be locked, logins are
1233 politely refused. This should improve behavior when using home areas
1234 images that are accessible via the network from multiple clients, and
1235 reduce the chance of accidental file system corruption in that case.
1236
1237 * Optionally, systemd-homed will now drop the kernel buffer cache once
1238 a user has fully logged out, configurable via the new --drop-caches=
1239 homectl switch.
1240
1241 * systemd-homed now makes use of UID mapped mounts for the home areas.
1242 If the kernel and used file system support it, files are now
1243 internally owned by the "nobody" user (i.e. the user typically used
1244 for indicating "this ownership is not mapped"), and dynamically
1245 mapped to the UID used locally on the system via the UID mapping
1246 mount logic of recent kernels. This makes migrating home areas
1247 between different systems cheaper because recursively chown()ing file
1248 system trees is no longer necessary.
1249
1250 * systemd-homed's CIFS backend now optionally supports CIFS service
1251 names with a directory suffix, in order to place home directories in
1252 a subdirectory of a CIFS share, instead of the top-level directory.
1253
1254 * systemd-homed's CIFS backend gained support for specifying additional
1255 mount options in the JSON user record (cifsExtraMountOptions field,
1256 and --cifs-extra-mount-options= homectl switch). This is for example
1257 useful for configuring mount options such as "noserverino" that some
1258 SMB3 services require (use that to run a homed home directory from a
1259 FritzBox SMB3 share this way).
1260
1261 * systemd-homed will now default to btrfs' zstd compression for home
1262 areas. This is inspired by Fedora's recent decision to switch to zstd
1263 by default.
1264
1265 * Additional mount options to use when mounting the file system of
1266 LUKS2 volumes in systemd-homed has been added. Via the
1267 $SYSTEMD_HOME_MOUNT_OPTIONS_BTRFS, $SYSTEMD_HOME_MOUNT_OPTIONS_EXT4,
1268 $SYSTEMD_HOME_MOUNT_OPTIONS_XFS environment variables to
1269 systemd-homed or via the luksExtraMountOptions user record JSON
1270 property. (Exposed via homectl --luks-extra-mount-options)
1271
1272 * homectl's resize command now takes the special size specifications
1273 "min" and "max" to shrink/grow the home area to the minimum/maximum
1274 size possible, taking disk usage/space constraints and file system
1275 limitations into account. Resizing is now generally graceful: the
1276 logic will try to get as close to the specified size as possible, but
1277 not consider it a failure if the request couldn't be fulfilled
1278 precisely.
1279
1280 * systemd-homed gained the ability to automatically shrink home areas
1281 on logout to their minimal size and grow them again on next
1282 login. This ensures that while inactive, a home area only takes up
1283 the minimal space necessary, but once activated, it provides
1284 sufficient space for the user's needs. This behavior is only
1285 supported if btrfs is used as file system inside the home area
1286 (because only for btrfs online growing/shrinking is implemented in
1287 the kernel). This behavior is now enabled by default, but may be
1288 controlled via the new --auto-resize-mode= setting of homectl.
1289
1290 * systemd-homed gained support for automatically re-balancing free disk
1291 space among active home areas, in case the LUKS2 backends are used,
1292 and no explicit disk size was requested. This way disk space is
1293 automatically managed and home areas resized in regular intervals and
1294 manual resizing when disk space becomes scarce should not be
1295 necessary anymore. This behavior is only supported if btrfs is used
1296 within the home areas (as only then online shrinking and growing is
1297 supported), and may be configured via the new rebalanceWeight JSON
1298 user record field (as exposed via the new --rebalance-weight= homectl
1299 setting). Re-balancing is mostly automatic, but can also be requested
1300 explicitly via "homectl rebalance", which is synchronous, and thus
1301 may be used to wait until the rebalance run is complete.
1302
1303 * userdbctl gained a --json= switch for configured the JSON formatting
1304 to use when outputting user or group records.
1305
1306 * userdbctl gained a new --multiplexer= switch for explicitly
1307 configuring whether to use the systemd-userdbd server side user
1308 record resolution logic.
1309
1310 * userdbctl's ssh-authorized-keys command learnt a new --chain switch,
1311 for chaining up another command to execute after completing the
1312 look-up. Since the OpenSSH's AuthorizedKeysCommand only allows
1313 configuration of a single command to invoke, this maybe used to
1314 invoke multiple: first userdbctl's own implementation, and then any
1315 other also configured in the command line.
1316
1317 * The sd-event API gained a new function sd_event_add_inotify_fd() that
1318 is similar to sd_event_add_inotify() but accepts a file descriptor
1319 instead of a path in the file system for referencing the inode to
1320 watch.
1321
1322 * The sd-event API gained a new function
1323 sd_event_source_set_ratelimit_expire_callback() that may be used to
1324 define a callback function that is called whenever an event source
1325 leaves the rate limiting phase.
1326
1327 * New documentation has been added explaining which steps are necessary
1328 to port systemd to a new architecture:
1329
1330 https://systemd.io/PORTING_TO_NEW_ARCHITECTURES
1331
1332 * The x-systemd.makefs option in /etc/fstab now explicitly supports
1333 ext2, ext3, and f2fs file systems.
1334
1335 * Mount units and units generated from /etc/fstab entries with 'noauto'
1336 are now ordered the same as other units. Effectively, they will be
1337 started earlier (if something actually pulled them in) and stopped
1338 later, similarly to normal mount units that are part of
1339 fs-local.target. This change should be invisible to users, but
1340 should prevent those units from being stopped too early during
1341 shutdown.
1342
1343 * The systemd-getty-generator now honors a new kernel command line
1344 argument systemd.getty_auto= and a new environment variable
1345 $SYSTEMD_GETTY_AUTO that allows turning it off at boot. This is for
1346 example useful to turn off gettys inside of containers or similar
1347 environments.
1348
1349 * systemd-resolved now listens on a second DNS stub address: 127.0.0.54
1350 (in addition to 127.0.0.53, as before). If DNS requests are sent to
1351 this address they are propagated in "bypass" mode only, i.e. are
1352 almost not processed locally, but mostly forwarded as-is to the
1353 current upstream DNS servers. This provides a stable DNS server
1354 address that proxies all requests dynamically to the right upstream
1355 DNS servers even if these dynamically change. This stub does not do
1356 mDNS/LLMNR resolution. However, it will translate look-ups to
1357 DNS-over-TLS if necessary. This new stub is particularly useful in
1358 container/VM environments, or for tethering setups: use DNAT to
1359 redirect traffic to any IP address to this stub.
1360
1361 * systemd-importd now honors new environment variables
1362 $SYSTEMD_IMPORT_BTRFS_SUBVOL, $SYSTEMD_IMPORT_BTRFS_QUOTA,
1363 $SYSTEMD_IMPORT_SYNC, which may be used disable btrfs subvolume
1364 generation, btrfs quota setup and disk synchronization.
1365
1366 * systemd-importd and systemd-resolved can now be optionally built with
1367 OpenSSL instead of libgcrypt.
1368
1369 * systemd-repart no longer requires OpenSSL.
1370
1371 * systemd-sysusers will no longer create the redundant 'nobody' group
1372 by default, as the 'nobody' user is already created with an
1373 appropriate primary group.
1374
1375 * If a unit uses RuntimeMaxSec, systemctl show will now display it.
1376
1377 * systemctl show-environment gained support for --output=json.
1378
1379 * pam_systemd will now first try to use the X11 abstract socket, and
1380 fallback to the socket file in /tmp/.X11-unix/ only if that does not
1381 work.
1382
1383 * systemd-journald will no longer go back to volatile storage
1384 regardless of configuration when its unit is restarted.
1385
1386 * Initial support for the LoongArch architecture has been added (system
1387 call lists, GPT partition table UUIDs, etc).
1388
1389 * systemd-journald's own logging messages are now also logged to the
1390 journal itself when systemd-journald logs to /dev/kmsg.
1391
1392 * systemd-journald now re-enables COW for archived journal files on
1393 filesystems that support COW. One benefit of this change is that
1394 archived journal files will now get compressed on btrfs filesystems
1395 that have compression enabled.
1396
1397 * systemd-journald now deduplicates fields in a single log message
1398 before adding it to the journal. In archived journal files, it will
1399 also punch holes for unused parts and truncate the file as
1400 appropriate, leading to reductions in disk usage.
1401
1402 * journalctl --verify was extended with more informative error
1403 messages.
1404
1405 * More of sd-journal's functions are now resistant against journal file
1406 corruption.
1407
1408 * The shutdown command learnt a new option --show, to display the
1409 scheduled shutdown.
1410
1411 * A LICENSES/ directory is now included in the git tree. It contains a
1412 README.md file that explains the licenses used by source files in
1413 this repository. It also contains the text of all applicable
1414 licenses as they appear on spdx.org.
1415
1416 Contributions from: Aakash Singh, acsfer, Adolfo Jayme Barrientos,
1417 Adrian Vovk, Albert Brox, Alberto Mardegan, Alexander Kanavin,
1418 alexlzhu, Alfonso Sánchez-Beato, Alvin Šipraga, Alyssa Ross,
1419 Amir Omidi, Anatol Pomozov, Andika Triwidada, Andreas Rammhold,
1420 Andreas Valder, Andrej Lajovic, Andrew Soutar, Andrew Stone, Andy Chi,
1421 Anita Zhang, Anssi Hannula, Antonio Alvarez Feijoo,
1422 Antony Deepak Thomas, Arnaud Ferraris, Arvid E. Picciani,
1423 Bastien Nocera, Benjamin Berg, Benjamin Herrenschmidt, Ben Stockett,
1424 Bogdan Seniuc, Boqun Feng, Carl Lei, chlorophyll-zz, Chris Packham,
1425 Christian Brauner, Christian Göttsche, Christian Wehrli,
1426 Christoph Anton Mitterer, Cristian Rodríguez, Daan De Meyer,
1427 Daniel Maixner, Dann Frazier, Dan Streetman, Davide Cavalca,
1428 David Seifert, David Tardon, dependabot[bot], Dimitri John Ledkov,
1429 Dimitri Papadopoulos, Dimitry Ishenko, Dmitry Khlebnikov,
1430 Dominique Martinet, duament, Egor, Egor Ignatov, Emil Renner Berthing,
1431 Emily Gonyer, Ettore Atalan, Evgeny Vereshchagin, Florian Klink,
1432 Franck Bui, Frantisek Sumsal, Geass-LL, Gibeom Gwon, GnunuX,
1433 Gogo Gogsi, gregzuro, Greg Zuro, Gustavo Costa, Hans de Goede,
1434 Hela Basa, Henri Chain, hikigaya58, Hugo Carvalho,
1435 Hugo Osvaldo Barrera, Iago Lopez Galeiras, Iago López Galeiras,
1436 I-dont-need-name, igo95862, Jack Dähn, James Hilliard, Jan Janssen,
1437 Jan Kuparinen, Jan Macku, Jan Palus, Jarkko Sakkinen, Jayce Fayne,
1438 jiangchuangang, jlempen, John Lindgren, Jonas Dreßler, Jonas Jelten,
1439 Jonas Witschel, Joris Hartog, José Expósito, Julia Kartseva,
1440 Kai-Heng Feng, Kai Wohlfahrt, Kay Siver Bø, KennthStailey,
1441 Kevin Kuehler, Kevin Orr, Khem Raj, Kristian Klausen, Kyle Laker,
1442 lainahai, LaserEyess, Lennart Poettering, Lia Lenckowski, longpanda,
1443 Luca Boccassi, Luca BRUNO, Ludwig Nussel, Lukas Senionis,
1444 Maanya Goenka, Maciek Borzecki, Marcel Menzel, Marco Scardovi,
1445 Marcus Harrison, Mark Boudreau, Matthijs van Duin, Mauricio Vásquez,
1446 Maxime de Roucy, Max Resch, MertsA, Michael Biebl, Michael Catanzaro,
1447 Michal Koutný, Michal Sekletár, Miika Karanki, Mike Gilbert,
1448 Milo Turner, ml, monosans, Nacho Barrientos, nassir90, Nishal Kulkarni,
1449 nl6720, Ondrej Kozina, Paulo Neves, Pavel Březina, pedro martelletto,
1450 Peter Hutterer, Peter Morrow, Piotr Drąg, Rasmus Villemoes, ratijas,
1451 Raul Tambre, rene, Riccardo Schirone, Robert-L-Turner, Robert Scheck,
1452 Ross Jennings, saikat0511, Scott Lamb, Scott Worley,
1453 Sergei Trofimovich, Sho Iizuka, Slava Bacherikov, Slimane Selyan Amiri,
1454 StefanBruens, Steven Siloti, svonohr, Taiki Sugawara, Takashi Sakamoto,
1455 Takuro Onoue, Thomas Blume, Thomas Haller, Thomas Mühlbacher,
1456 Tianlu Shao, Toke Høiland-Jørgensen, Tom Yan, Tony Asleson,
1457 Topi Miettinen, Ulrich Ölmann, Urs Ritzmann, Vincent Bernat,
1458 Vito Caputo, Vladimir Panteleev, WANG Xuerui, Wind/owZ, Wu Xiaotian,
1459 xdavidwu, Xiaotian Wu, xujing, yangmingtai, Yao Wei, Yao Wei (魏銘廷),
1460 Yegor Alexeyev, Yu Watanabe, Zbigniew Jędrzejewski-Szmek,
1461 Дамјан Георгиевски, наб
1462
1463 — Warsaw, 2021-12-23
1464
3CHANGES WITH 249:1465CHANGES WITH 249:
41466
5 * When operating on disk images via the --image= switch of various1467 * When operating on disk images via the --image= switch of various
@@ -518,6 +1980,11 @@ CHANGES WITH 249:
518 distribution does not install it yet, it might make sense to change1980 distribution does not install it yet, it might make sense to change
519 that.1981 that.
5201982
1983 * Intel HID rfkill event is no longer masked, since it's the only
1984 source of rfkill event on newer HP laptops. To have both backward and
1985 forward compatibility, userspace daemon needs to debounce duplicated
1986 events in a short time window.
1987
521 Contributions from: Aakash Singh, adrian5, Albert Brox,1988 Contributions from: Aakash Singh, adrian5, Albert Brox,
522 Alexander Sverdlin, Alexander Tsoy, Alexey Rubtsov, alexlzhu,1989 Alexander Sverdlin, Alexander Tsoy, Alexey Rubtsov, alexlzhu,
523 Allen Webb, Alvin Šipraga, Alyssa Ross, Anders Wenhaug,1990 Allen Webb, Alvin Šipraga, Alyssa Ross, Anders Wenhaug,
@@ -3867,7 +5334,7 @@ CHANGES WITH 240:
38675334
3868 Consult the kernel documentation for details on this sysctl:5335 Consult the kernel documentation for details on this sysctl:
3869 https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt5336 https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
3870 5337
3871 * The v239 change to turn on "net.ipv4.tcp_ecn" by default has been5338 * The v239 change to turn on "net.ipv4.tcp_ecn" by default has been
3872 reverted.5339 reverted.
38735340
@@ -5609,6 +7076,15 @@ CHANGES WITH 234:
5609 temporary directory is passed as the entry directory and removed7076 temporary directory is passed as the entry directory and removed
5610 after all the plugins exit.7077 after all the plugins exit.
56117078
7079 * If KERNEL_INSTALL_MACHINE_ID is set in /etc/machine-info, kernel-install
7080 will now use its value as the machine ID instead of the machine ID
7081 from /etc/machine-id. If KERNEL_INSTALL_MACHINE_ID isn't set in
7082 /etc/machine-info and no machine ID is set in /etc/machine-id,
7083 kernel-install will try to store the current machine ID there as
7084 KERNEL_INSTALL_MACHINE_ID. If there is no machine ID, kernel-install
7085 will generate a new UUID, store it in /etc/machine-info as
7086 KERNEL_INSTALL_MACHINE_ID and use it as the machine ID.
7087
5612 Contributions from: Adrian Heine né Lang, Aggelos Avgerinos, Alexander7088 Contributions from: Adrian Heine né Lang, Aggelos Avgerinos, Alexander
5613 Kurtz, Alexandros Frantzis, Alexey Brodkin, Alex Lu, Amir Pakdel, Amir7089 Kurtz, Alexandros Frantzis, Alexey Brodkin, Alex Lu, Amir Pakdel, Amir
5614 Yalon, Anchor Cat, Anthony Parsons, Bastien Nocera, Benjamin Gilbert,7090 Yalon, Anchor Cat, Anthony Parsons, Bastien Nocera, Benjamin Gilbert,
@@ -11481,7 +12957,7 @@ CHANGES WITH 197:
11481 based on a calendar time specification such as "Thu,Fri12957 based on a calendar time specification such as "Thu,Fri
11482 2013-*-1,5 11:12:13" which refers to 11:12:13 of the first12958 2013-*-1,5 11:12:13" which refers to 11:12:13 of the first
11483 or fifth day of any month of the year 2013, given that it is12959 or fifth day of any month of the year 2013, given that it is
11484 a thursday or friday. This brings timer event support12960 a Thursday or a Friday. This brings timer event support
11485 considerably closer to cron's capabilities. For details on12961 considerably closer to cron's capabilities. For details on
11486 the supported calendar time specification language see12962 the supported calendar time specification language see
11487 systemd.time(7).12963 systemd.time(7).
diff --git a/README b/README
index 9e5bcab..3b104c2 100644
--- a/README
+++ b/README
@@ -27,21 +27,26 @@ AUTHOR:
27 ...and many others27 ...and many others
2828
29LICENSE:29LICENSE:
30 LGPLv2.1+ for all code30 LGPL-2.1-or-later for all code, exceptions noted in LICENSES/README.md
31 - except src/basic/MurmurHash2.c which is Public Domain
32 - except src/basic/siphash24.c which is CC0 Public Domain
33 - except src/journal/lookup3.c which is Public Domain
34 - except src/udev/* which is (currently still) GPLv2, GPLv2+
35 - except tools/chromiumos/* which is BSD-style
3631
37REQUIREMENTS:32REQUIREMENTS:
38 Linux kernel >= 3.1333 Linux kernel ≥ 3.15
39 Linux kernel >= 4.2 for unified cgroup hierarchy support34 ≥ 4.3 for ambient capabilities
40 Linux kernel >= 4.10 for cgroup-bpf egress and ingress hooks35 ≥ 4.5 for pids controller in cgroup v2
41 Linux kernel >= 4.15 for cgroup-bpf device hook36 ≥ 4.6 for cgroup namespaces
42 Linux kernel >= 4.17 for cgroup-bpf socket address hooks37 ≥ 4.9 for RENAME_NOREPLACE support in vfat
43 Linux kernel >= 5.3 for bounded-loops in BPF program38 ≥ 4.10 for cgroup-bpf egress and ingress hooks
44 Linux kernel >= 5.4 for signed Verity images support39 ≥ 4.15 for cgroup-bpf device hook and cpu controller in cgroup v2
40 ≥ 4.17 for cgroup-bpf socket address hooks
41 ≥ 4.20 for PSI (used by systemd-oomd)
42 ≥ 5.3 for bounded loops in BPF program
43 ≥ 5.4 for signed Verity images
44 ≥ 5.7 for BPF links and the BPF LSM hook
45
46 Kernel versions below 4.15 have significant gaps in functionality and
47 are not recommended for use with this version of systemd. Taint flag
48 'old-kernel' will be set. Systemd will most likely still function, but
49 upstream support and testing are limited.
4550
46 Kernel Config Options:51 Kernel Config Options:
47 CONFIG_DEVTMPFS52 CONFIG_DEVTMPFS
@@ -55,7 +60,7 @@ REQUIREMENTS:
55 CONFIG_PROC_FS60 CONFIG_PROC_FS
56 CONFIG_FHANDLE (libudev, mount and bind mount handling)61 CONFIG_FHANDLE (libudev, mount and bind mount handling)
5762
58 Kernel crypto/hash API63 Kernel crypto/hash API:
59 CONFIG_CRYPTO_USER_API_HASH64 CONFIG_CRYPTO_USER_API_HASH
60 CONFIG_CRYPTO_HMAC65 CONFIG_CRYPTO_HMAC
61 CONFIG_CRYPTO_SHA25666 CONFIG_CRYPTO_SHA256
@@ -66,15 +71,15 @@ REQUIREMENTS:
66 Legacy hotplug slows down the system and confuses udev:71 Legacy hotplug slows down the system and confuses udev:
67 CONFIG_UEVENT_HELPER_PATH=""72 CONFIG_UEVENT_HELPER_PATH=""
6873
69 Userspace firmware loading is not supported and should74 Userspace firmware loading is not supported and should be disabled in
70 be disabled in the kernel:75 the kernel:
71 CONFIG_FW_LOADER_USER_HELPER=n76 CONFIG_FW_LOADER_USER_HELPER=n
7277
73 Some udev rules and virtualization detection relies on it:78 Some udev rules and virtualization detection relies on it:
74 CONFIG_DMIID79 CONFIG_DMIID
7580
76 Support for some SCSI devices serial number retrieval, to81 Support for some SCSI devices serial number retrieval, to create
77 create additional symlinks in /dev/disk/ and /dev/tape:82 additional symlinks in /dev/disk/ and /dev/tape:
78 CONFIG_BLK_DEV_BSG83 CONFIG_BLK_DEV_BSG
7984
80 Required for PrivateNetwork= in service units:85 Required for PrivateNetwork= in service units:
@@ -92,25 +97,26 @@ REQUIREMENTS:
92 CONFIG_{TMPFS,EXT4_FS,XFS,BTRFS_FS,...}_POSIX_ACL97 CONFIG_{TMPFS,EXT4_FS,XFS,BTRFS_FS,...}_POSIX_ACL
93 CONFIG_SECCOMP98 CONFIG_SECCOMP
94 CONFIG_SECCOMP_FILTER (required for seccomp support)99 CONFIG_SECCOMP_FILTER (required for seccomp support)
95 CONFIG_CHECKPOINT_RESTORE (for the kcmp() syscall)100 CONFIG_KCMP (for the kcmp() syscall, used to be under
101 CONFIG_CHECKPOINT_RESTORE before ~5.12)
96102
97 Required for CPUShares= in resource control unit settings103 Required for CPUShares= in resource control unit settings:
98 CONFIG_CGROUP_SCHED104 CONFIG_CGROUP_SCHED
99 CONFIG_FAIR_GROUP_SCHED105 CONFIG_FAIR_GROUP_SCHED
100106
101 Required for CPUQuota= in resource control unit settings107 Required for CPUQuota= in resource control unit settings:
102 CONFIG_CFS_BANDWIDTH108 CONFIG_CFS_BANDWIDTH
103109
104 Required for IPAddressDeny=, IPAddressAllow=, IPIngressFilterPath=,110 Required for IPAddressDeny=, IPAddressAllow=, IPIngressFilterPath=,
105 IPEgressFilterPath= in resource control unit settings111 IPEgressFilterPath= in resource control unit settings unit settings:
106 unit settings
107 CONFIG_BPF112 CONFIG_BPF
108 CONFIG_BPF_SYSCALL113 CONFIG_BPF_SYSCALL
109 CONFIG_BPF_JIT114 CONFIG_BPF_JIT
110 CONFIG_HAVE_EBPF_JIT115 CONFIG_HAVE_EBPF_JIT
111 CONFIG_CGROUP_BPF116 CONFIG_CGROUP_BPF
112117
113 Required for SocketBind{Allow|Deny}= in resource control unit settings118 Required for SocketBind{Allow|Deny}=, RestrictNetworkInterfaces= in
119 resource control unit settings:
114 CONFIG_BPF120 CONFIG_BPF
115 CONFIG_BPF_SYSCALL121 CONFIG_BPF_SYSCALL
116 CONFIG_BPF_JIT122 CONFIG_BPF_JIT
@@ -124,22 +130,28 @@ REQUIREMENTS:
124 Required for signed Verity images support:130 Required for signed Verity images support:
125 CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG131 CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG
126132
127 We recommend to turn off Real-Time group scheduling in the133 Required for RestrictFileSystems= in service units:
128 kernel when using systemd. RT group scheduling effectively134 CONFIG_BPF
129 makes RT scheduling unavailable for most userspace, since it135 CONFIG_BPF_SYSCALL
130 requires explicit assignment of RT budgets to each unit whose136 CONFIG_BPF_LSM
131 processes making use of RT. As there's no sensible way to137 CONFIG_DEBUG_INFO_BTF
132 assign these budgets automatically this cannot really be138 CONFIG_LSM="...,bpf" or kernel booted with lsm="...,bpf".
133 fixed, and it's best to disable group scheduling hence.139
140 We recommend to turn off Real-Time group scheduling in the kernel when
141 using systemd. RT group scheduling effectively makes RT scheduling
142 unavailable for most userspace, since it requires explicit assignment of
143 RT budgets to each unit whose processes making use of RT. As there's no
144 sensible way to assign these budgets automatically this cannot really be
145 fixed, and it's best to disable group scheduling hence:
134 CONFIG_RT_GROUP_SCHED=n146 CONFIG_RT_GROUP_SCHED=n
135147
136 It's a good idea to disable the implicit creation of networking bonding148 It's a good idea to disable the implicit creation of networking bonding
137 devices by the kernel networking bonding module, so that the149 devices by the kernel networking bonding module, so that the
138 automatically created "bond0" interface doesn't conflict with any such150 automatically created "bond0" interface doesn't conflict with any such
139 device created by systemd-networkd (or other tools). Ideally there151 device created by systemd-networkd (or other tools). Ideally there would
140 would be a kernel compile-time option for this, but there currently152 be a kernel compile-time option for this, but there currently isn't. The
141 isn't. The next best thing is to make this change through a modprobe.d153 next best thing is to make this change through a modprobe.d drop-in.
142 drop-in. This is shipped by default, see modprobe.d/systemd.conf.154 This is shipped by default, see modprobe.d/systemd.conf.
143155
144 Required for systemd-nspawn:156 Required for systemd-nspawn:
145 CONFIG_DEVPTS_MULTIPLE_INSTANCES or Linux kernel >= 4.7157 CONFIG_DEVPTS_MULTIPLE_INSTANCES or Linux kernel >= 4.7
@@ -147,19 +159,17 @@ REQUIREMENTS:
147 Required for systemd-oomd:159 Required for systemd-oomd:
148 CONFIG_PSI160 CONFIG_PSI
149161
150 Note that kernel auditing is broken when used with systemd's162 Note that kernel auditing is broken when used with systemd's container
151 container code. When using systemd in conjunction with163 code. When using systemd in conjunction with containers, please make
152 containers, please make sure to either turn off auditing at164 sure to either turn off auditing at runtime using the kernel command
153 runtime using the kernel command line option "audit=0", or165 line option "audit=0", or turn it off at kernel compile time using:
154 turn it off at kernel compile time using:
155 CONFIG_AUDIT=n166 CONFIG_AUDIT=n
156 If systemd is compiled with libseccomp support on167 If systemd is compiled with libseccomp support on architectures which do
157 architectures which do not use socketcall() and where seccomp168 not use socketcall() and where seccomp is supported (this effectively
158 is supported (this effectively means x86-64 and ARM, but169 means x86-64 and ARM, but excludes 32-bit x86!), then nspawn will now
159 excludes 32-bit x86!), then nspawn will now install a170 install a work-around seccomp filter that makes containers boot even
160 work-around seccomp filter that makes containers boot even171 with audit being enabled. This works correctly only on kernels 3.14 and
161 with audit being enabled. This works correctly only on kernels172 newer though. TL;DR: turn audit off, still.
162 3.14 and newer though. TL;DR: turn audit off, still.
163173
164 glibc >= 2.16174 glibc >= 2.16
165 libcap175 libcap
@@ -195,11 +205,12 @@ REQUIREMENTS:
195 python-jinja2205 python-jinja2
196 python-lxml (optional, required to build the indices)206 python-lxml (optional, required to build the indices)
197 python >= 3.5207 python >= 3.5
198 meson >= 0.46 (>= 0.49 is required to build position-independent executables)208 meson >= 0.53.2
199 ninja209 ninja
200 gcc, awk, sed, grep, and similar tools210 gcc, awk, sed, grep, and similar tools
201 clang >= 10.0, llvm >= 10.0 (optional, required to build BPF programs211 clang >= 10.0, llvm >= 10.0 (optional, required to build BPF programs
202 from source code in C)212 from source code in C)
213 gnu-efi >= 3.0.5 (optional, required for systemd-boot)
203214
204 During runtime, you need the following additional215 During runtime, you need the following additional
205 dependencies:216 dependencies:
@@ -212,7 +223,7 @@ REQUIREMENTS:
212 polkit (optional)223 polkit (optional)
213224
214 To build in directory build/:225 To build in directory build/:
215 meson setup build/ && meson compile -C build/226 meson setup build/ && ninja -C build/
216227
217 Any configuration options can be specified as -Darg=value... arguments228 Any configuration options can be specified as -Darg=value... arguments
218 to meson. After the build directory is initially configured, meson will229 to meson. After the build directory is initially configured, meson will
@@ -222,29 +233,28 @@ REQUIREMENTS:
222 their current values.233 their current values.
223234
224 Useful commands:235 Useful commands:
225 meson compile -v -C build/ some/target236 ninja -C build -v some/target
226 meson test -C build/237 meson test -C build/
227 sudo meson install -C build/238 sudo meson install -C build/ --no-rebuild
228 DESTDIR=... meson install -C build/239 DESTDIR=... meson install -C build/
229240
230 A tarball can be created with:241 A tarball can be created with:
231 git archive --format=tar --prefix=systemd-222/ v222 | xz > systemd-222.tar.xz242 v=250 && git archive --prefix=systemd-$v/ v$v | zstd >systemd-$v.tar.zstd
232243
233 When systemd-hostnamed is used, it is strongly recommended to244 When systemd-hostnamed is used, it is strongly recommended to install
234 install nss-myhostname to ensure that, in a world of245 nss-myhostname to ensure that, in a world of dynamically changing
235 dynamically changing hostnames, the hostname stays resolvable246 hostnames, the hostname stays resolvable under all circumstances. In
236 under all circumstances. In fact, systemd-hostnamed will warn247 fact, systemd-hostnamed will warn if nss-myhostname is not installed.
237 if nss-myhostname is not installed.
238248
239 nss-systemd must be enabled on systemd systems, as that's required for249 nss-systemd must be enabled on systemd systems, as that's required for
240 DynamicUser= to work. Note that we ship services out-of-the-box that250 DynamicUser= to work. Note that we ship services out-of-the-box that
241 make use of DynamicUser= now, hence enabling nss-systemd is not251 make use of DynamicUser= now, hence enabling nss-systemd is not
242 optional.252 optional.
243253
244 Note that the build prefix for systemd must be /usr. (Moreover,254 Note that the build prefix for systemd must be /usr. (Moreover, packages
245 packages systemd relies on — such as D-Bus — really should use the same255 systemd relies on — such as D-Bus — really should use the same prefix,
246 prefix, otherwise you are on your own.) -Dsplit-usr=false (which is the256 otherwise you are on your own.) -Dsplit-usr=false (which is the default
247 default and does not need to be specified) is the recommended setting.257 and does not need to be specified) is the recommended setting.
248 -Dsplit-usr=true can be used to give a semblance of support for systems258 -Dsplit-usr=true can be used to give a semblance of support for systems
249 with programs installed split between / and /usr. Moving everything259 with programs installed split between / and /usr. Moving everything
250 under /usr is strongly encouraged.260 under /usr is strongly encouraged.
@@ -257,34 +267,51 @@ REQUIREMENTS:
257 - strace (used by test/test-functions)267 - strace (used by test/test-functions)
258 - capsh (optional, used by test-execute)268 - capsh (optional, used by test-execute)
259269
270POLICY FOR SUPPORT OF DISTRIBUTIONS AND ARCHITECTURES:
271
272 systemd main branch and latest major or stable releases are generally
273 expected to compile on current versions of popular distributions (at
274 least all non-EOL versions of Fedora, Debian unstable/testing/stable,
275 latest Ubuntu LTS and non-LTS releases, openSUSE Tumbleweed/Leap,
276 CentOS Stream 8 and 9, up-to-date Arch, etc.) We will generally
277 attempt to support also other non-EOL versions of various distros.
278 Features which would break compilation on slightly-older distributions
279 will only be introduced if there are significant reasons for this
280 (i.e. supporting them interferes with development or requires too many
281 resources to support). In some cases backports of specific libraries or
282 tools might be required.
283
284 The policy is similar wrt. architecture support. systemd is regularly
285 tested on popular architectures (currently amd64, i386, arm64, ppc64el,
286 and s390x), but should compile and work also on other architectures, for
287 which support has been added. systemd will emit warnings when
288 architecture-specific constants are not defined.
289
260USERS AND GROUPS:290USERS AND GROUPS:
261 Default udev rules use the following standard system group291 Default udev rules use the following standard system group names, which
262 names, which need to be resolvable by getgrnam() at any time,292 need to be resolvable by getgrnam() at any time, even in the very early
263 even in the very early boot stages, where no other databases293 boot stages, where no other databases and network are available:
264 and network are available:
265294
266 audio, cdrom, dialout, disk, input, kmem, kvm, lp, render, tape, tty, video295 audio, cdrom, dialout, disk, input, kmem, kvm, lp, render, tape, tty, video
267296
268 During runtime, the journal daemon requires the297 During runtime, the journal daemon requires the "systemd-journal" system
269 "systemd-journal" system group to exist. New journal files will298 group to exist. New journal files will be readable by this group (but
270 be readable by this group (but not writable), which may be used299 not writable), which may be used to grant specific users read access. In
271 to grant specific users read access. In addition, system300 addition, system groups "wheel" and "adm" will be given read-only access
272 groups "wheel" and "adm" will be given read-only access to301 to journal files using systemd-tmpfiles.service.
273 journal files using systemd-tmpfiles.service.
274302
275 The journal remote daemon requires the303 The journal remote daemon requires the "systemd-journal-remote" system
276 "systemd-journal-remote" system user and group to304 user and group to exist. During execution this network facing service
277 exist. During execution this network facing service will drop305 will drop privileges and assume this uid/gid for security reasons.
278 privileges and assume this uid/gid for security reasons.
279306
280 Similarly, the network management daemon requires the307 Similarly, the network management daemon requires the "systemd-network"
281 "systemd-network" system user and group to exist.308 system user and group to exist.
282309
283 Similarly, the name resolution daemon requires the310 Similarly, the name resolution daemon requires the "systemd-resolve"
284 "systemd-resolve" system user and group to exist.311 system user and group to exist.
285312
286 Similarly, the coredump support requires the313 Similarly, the coredump support requires the "systemd-coredump" system
287 "systemd-coredump" system user and group to exist.314 user and group to exist.
288315
289NSS:316NSS:
290 systemd ships with four glibc NSS modules:317 systemd ships with four glibc NSS modules:
@@ -304,9 +331,9 @@ NSS:
304 DynamicUser= setting in unit files.)331 DynamicUser= setting in unit files.)
305332
306 To make use of these NSS modules, please add them to the "hosts:",333 To make use of these NSS modules, please add them to the "hosts:",
307 "passwd:" and "group:" lines in /etc/nsswitch.conf. The "resolve"334 "passwd:" and "group:" lines in /etc/nsswitch.conf. The "resolve" module
308 module should replace the glibc "dns" module in this file (and don't335 should replace the glibc "dns" module in this file (and don't worry, it
309 worry, it chain-loads the "dns" module if it can't talk to resolved).336 chain-loads the "dns" module if it can't talk to resolved).
310337
311 The four modules should be used in the following order:338 The four modules should be used in the following order:
312339
@@ -325,24 +352,48 @@ SYSV INIT.D SCRIPTS:
325 Please see src/systemctl/systemd-sysv-install.SKELETON for how this352 Please see src/systemctl/systemd-sysv-install.SKELETON for how this
326 needs to look like, and provide an implementation at the marked places.353 needs to look like, and provide an implementation at the marked places.
327354
328WARNINGS:355WARNINGS and TAINT FLAGS:
329 systemd will warn during early boot if /usr is not already mounted at356 systemd will warn during early boot if /usr is not already mounted at
330 this point (that means: either located on the same file system as / or357 this point (that means: either located on the same file system as / or
331 already mounted in the initrd). While in systemd itself very little358 already mounted in the initrd). While in systemd itself very little
332 will break if /usr is on a separate, late-mounted partition, many of359 will break if /usr is on a separate late-mounted partition, many of its
333 its dependencies very likely will break sooner or later in one form or360 dependencies very likely will break sooner or later in one form or
334 another. For example, udev rules tend to refer to binaries in /usr,361 another. For example, udev rules tend to refer to binaries in /usr,
335 binaries that link to libraries in /usr or binaries that refer to data362 binaries that link to libraries in /usr or binaries that refer to data
336 files in /usr. Since these breakages are not always directly visible,363 files in /usr. Since these breakages are not always directly visible,
337 systemd will warn about this, since this kind of file system setup is364 systemd will warn about this. Such setups are not really supported by
338 not really supported anymore by the basic set of Linux OS components.365 the basic set of Linux OS components. Taint flag 'split-usr' will be
339366 set when this condition is detected.
340 systemd requires that the /run mount point exists. systemd also
341 requires that /var/run is a symlink to /run.
342367
343 For more information on this issue consult368 For more information on this issue consult
344 https://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken369 https://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
345370
371 systemd will warn if the filesystem is not usr-merged (i.e.: /bin, /sbin
372 and /lib* are not symlinks to their counterparts under /usr). Taint flag
373 'unmerged-usr' will be set when this condition is detected.
374
375 For more information on this issue consult
376 https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge
377
378 systemd requires that the /run mount point exists. systemd also
379 requires that /var/run is a symlink to /run. Taint flag 'var-run-bad'
380 will be set when this condition is detected.
381
382 Systemd will also warn when the cgroup support is unavailable in the
383 kernel (taint flag 'cgroups-missing'), the system is using the old
384 cgroup hierarchy (taint flag 'cgroupsv1'), the hardware clock is
385 running in non-UTC mode (taint flag 'local-hwclock'), the kernel
386 overflow UID or GID are not 65534 (taint flags 'overflowuid-not-65534'
387 and 'overflowgid-not-65534'), the UID or GID range assigned to the
388 running systemd instance covers less than 0…65534 (taint flags
389 'short-uid-range' and 'short-gid-range').
390
391 Taint conditions are logged during boot, but may also be checked at any
392 time with:
393
394 busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Tainted
395
396VALGRIND:
346 To run systemd under valgrind, compile with meson option397 To run systemd under valgrind, compile with meson option
347 -Dvalgrind=true and have valgrind development headers installed398 -Dvalgrind=true and have valgrind development headers installed
348 (i.e. valgrind-devel or equivalent). Otherwise, false positives will be399 (i.e. valgrind-devel or equivalent). Otherwise, false positives will be
diff --git a/README.md b/README.md
index 6734e92..f0ed551 100644
--- a/README.md
+++ b/README.md
@@ -2,18 +2,20 @@
22
3System and Service Manager3System and Service Manager
44
5<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>5<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>
6<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>6<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>
7[![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/>7[![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/>
8[![Coverity Scan Status](https://scan.coverity.com/projects/350/badge.svg)](https://scan.coverity.com/projects/350)<br/>8[![Coverity Scan Status](https://scan.coverity.com/projects/350/badge.svg)](https://scan.coverity.com/projects/350)<br/>
9[![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/>9[![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/>
10[![CIFuzz](https://github.com/systemd/systemd/workflows/CIFuzz/badge.svg)](https://github.com/systemd/systemd/actions)<br/>10[![CIFuzz](https://github.com/systemd/systemd/workflows/CIFuzz/badge.svg)](https://github.com/systemd/systemd/actions)<br/>
11[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1369/badge)](https://bestpractices.coreinfrastructure.org/projects/1369)<br/>11[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1369/badge)](https://bestpractices.coreinfrastructure.org/projects/1369)<br/>
12[![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/>12[![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/>
13[![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/>13[![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/>
14[![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/>14[![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/>
15[![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/>15[![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/>
16[![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/>
16[![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>17[![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>
18[![Coverage Status](https://coveralls.io/repos/github/systemd/systemd/badge.svg?branch=main)](https://coveralls.io/github/systemd/systemd?branch=main)</br>
17[![Packaging status](https://repology.org/badge/tiny-repos/systemd.svg)](https://repology.org/project/systemd/versions)19[![Packaging status](https://repology.org/badge/tiny-repos/systemd.svg)](https://repology.org/project/systemd/versions)
1820
19## Details21## Details
diff --git a/TODO b/TODO
index d31d003..2ae9aae 100644
--- a/TODO
+++ b/TODO
@@ -4,11 +4,6 @@ Bugfixes:
4 manager or system manager can be always set. It would be better to reject4 manager or system manager can be always set. It would be better to reject
5 them when parsing config.5 them when parsing config.
66
7* userdbctl: "Password OK: yes" is shown even when there are no passwords
8 or the password is locked.
9
10* Get rid of nftw(). We should refuse to use such useless APIs on principle.
11
12* Jun 01 09:43:02 krowka systemd[1]: Unit user@1000.service has alias user@.service.7* Jun 01 09:43:02 krowka systemd[1]: Unit user@1000.service has alias user@.service.
13 Jun 01 09:43:02 krowka systemd[1]: Unit user@6.service has alias user@.service.8 Jun 01 09:43:02 krowka systemd[1]: Unit user@6.service has alias user@.service.
14 Jun 01 09:43:02 krowka systemd[1]: Unit user-runtime-dir@6.service has alias user-runtime-dir@.service.9 Jun 01 09:43:02 krowka systemd[1]: Unit user-runtime-dir@6.service has alias user-runtime-dir@.service.
@@ -36,6 +31,7 @@ External:
36* zsh shell completion:31* zsh shell completion:
37 - <command> <verb> -<TAB> should complete options, but currently does not32 - <command> <verb> -<TAB> should complete options, but currently does not
38 - systemctl add-wants,add-requires33 - systemctl add-wants,add-requires
34 - systemctl reboot --boot-loader-entry=
3935
40* systemctl status should know about 'systemd-analyze calendar ... --iterations='36* systemctl status should know about 'systemd-analyze calendar ... --iterations='
41* If timer has just OnInactiveSec=..., it should fire after a specified time37* If timer has just OnInactiveSec=..., it should fire after a specified time
@@ -83,12 +79,481 @@ Janitorial Clean-ups:
8379
84Features:80Features:
8581
82* homed/userdb: maybe define a "companion" dir for home directories where apps
83 can safely put privileged stuff in. Would not be writable by the user, but
84 still conceptually belong to the user. Would be included in user's quota if
85 possible, even if files are not owned by UID of user. Usecase: container
86 images that owned by arbitrary UIDs, and are owned/managed by the users, but
87 are not directly belonging to the user's UID. Goal: we shouldn't place more
88 privileged dirs inside of unprivileged dirs, and thus containers really
89 should not be placed inside of traditional UNIX home dirs (which are owned by
90 users themselves) but somewhere else, that is separate, but still close
91 by. Inform user code about path to this companion dir via env var, so that
92 container managers find it. the ~/.identity file is also a candidate for a
93 file to move there, since it is managed by privileged code (i.e. homed) and
94 not unprivileged code.
95
96* given that /etc/ssh/ssh_config.d/ is a thing now, ship a drop-in for that
97 that hooks up userbdctl ssh-key stuff.
98
99* allow embedding a signature blob for PCR hashes into separate section in
100 unified kernel binaries. This section should be picked up by sd-stub, and
101 passed in a file to the booted kernel (via initrd cpio, as usual). Usecase:
102 this way we can implement disk encryption policies that bind to specific
103 kernel PCR state, without breaking things on every kernel update. As long as
104 the kernel includes the PCR signature blob we should be good, as disk
105 encryption can then pass the signature to the TPM to unlock their secrets.
106 Why do this via a separate PE section? That's because the PCR state depends
107 on the measured kernel/initrd of course, thus we cannot put the signature
108 into the kernel/initrd itself, because that would require a time machine.
109 Hence we have to find a separate place. A simple solution is a PE section
110 of its own, because then it is next to the kernel and initrd which after all
111 are stored in PE sections of their own too. Building a unified kernel would
112 thus mean, calculating PCR values for the raw kernel image, and raw initrd
113 image, then signing those PCR values with a vendor key, and then combining
114 sd-stub, raw kernel image, raw initrd, and PCR signature into a unified
115 kernel image.
116
117* a new tool "systemd-trust" or so, that can calculate PCR hashes offline, and
118 optionally sign them. for that we should extend our syntax for specifying pcr
119 policies (e.g. the string like "4+7+9") so that it can also include explicit
120 hash values, i.e.
121 4=sha256:0ef149998289474e4bb31813edda6ad7f3c991b2d8dec6e8fe4db7a1f039f2d1+7=sha256:87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7+9=sha256:0263829989b6fd954f72baaf2fc64bc2e2f01d692d4de72986ea808f6e99813f
122 and file names to calculate hashes from, i.e.
123 4=file:/boot/vmlinuz+7=file:/boot/initrd/+9=file:/etc/fstab"
124 The systemd-trust tool should then be able to resolve any "underspecifed"
125 form into the form with explicit hash values.
126
127* maybe add support for binding and connecting AF_UNIX sockets in the file
128 system outside of the 108ch limit. When connecting, open O_PATH fd to socket
129 inode first, then connect to /proc/self/fd/XYZ. When binding, create symlink
130 to target dir in /tmp, and bind through it.
131
132* tmpfiles: for f/F/w lines, if the argument columns is left unspecified, look
133 for a service credential named after the file path to write to, and load
134 contents to write from there. Usecase: provision arbitrary files from
135 credentials. Example use: with a line like "f /root/.ssh/authorized-keys
136 0644 root root" in a tmpfiles.d/ snippet add
137 LoadCredential=root.ssh.authorized-keys via drop-in to
138 systemd-tmpfiles.service, and then provision an SSH access key through
139 nspawn's --load-credential=, through qemu's fw_cfg, or via systemd-stub's
140 credntial pick-up. The latter is particularly interesting to implement SSH
141 access to an initrd.
142
143* systemd-homed: when initializing, look for a credential sysemd.homed.register
144 or so with JSON user records to automatically register if not registered yet.
145 Usecase: deploy a system, and add an account one can directly log into.
146
147* add a proper concept of a "developer" mode, i.e. where cryptographic
148 protections of the root OS are weakened after interactive confirmation, to
149 allow hackers to allow their own stuff. idea: allow entering developer mode
150 only via explicit choice in boot menu: i.e. add explicit boot menu item for
151 it. when developer mode is entered generate a key pair in the TPM2, and add
152 the public part of it automatically to keychain of valid code signature keys
153 on subsequent boots. Then provide a tool to sign code with the key in the
154 TPM2. Ensure that boot menu item is only way to enter developer mode, by
155 binding it to locality/PCRs so that that keys cannot be generated otherwise.
156
157* services: add support for cryptographically unlocking per-service directories
158 via TPM2. Specifically, for StateDirectory= (and related dirs) use fscrypt to
159 set up the directory so that it can only be accessed if host and app are in
160 order.
161
162* TPM2: add auth policy for signed PCR values to make updates easy. i.e. do
163 what tpm2_policyauthorize tool does. To be truly useful scheme needs to be a
164 bit more elaborate though: policy probably must take some nvram based
165 generation counter into account that can only monotonically increase and can
166 be used to invalidate old PCR signatures. Otherwise people could downgrade to
167 old signed PCR sets whenever they want. Usecase: encrypt the rootfs with LUKS
168 with a key that can only be unlocked via a pristine pre-built Fedora
169 kernel+initrd.
170
171* update HACKING.md to suggest developing systemd with the ideas from:
172 https://0pointer.net/blog/testing-my-system-code-in-usr-without-modifying-usr.html
173 https://0pointer.net/blog/running-an-container-off-the-host-usr.html
174
175* add a clear concept how the initrd can make up credentials on their own to
176 pass to the system when transitioning into the host OS. usecase: things like
177 cloud-init/ignitation and similar can parameterize the host with data they
178 acquire.
179
180* Add ConditionCredentialExists= or so, that allows conditionalizing services
181 depending on whether a specific system credential is set. Usecase: a service
182 similar to the ssh keygen service that installs any SSH host key supplied via
183 system credentials into /etc/ssh.
184
185* drop support for kernels that lack ambient capabilities support (i.e. make
186 4.3 new baseline). Then drop support for "!!" modifier for ExecStart= which
187 is only supported for such old kernels
188
189* sd-event: compat wd reuse in inotify code: keep a set of removed watch
190 descriptors, and clear this set piecemeal when we see the IN_IGNORED event
191 for it, or when read() returns EAGAIN or on IN_Q_OVERFLOW. Then, whenever we
192 see an inotify wd event check against this set, and if it is contained ignore
193 the event. (to be fully correct this would have to count the occurrences, in
194 case the same wd is reused multiple times before we start processing
195 IN_IGNORED again)
196
197* sd-stub: set efi var indicating stub features, i.e. whether they pick up
198 creds, sysexts and so on. similar to existing variable of sd-boot
199
200* sd-stub: set efi vars declaring TPM PCRs we measured creds/cmdline + sysext
201 into (even if we hardcode them)
202
203* systemd-fstab-generator: support addition mount specifications via kernel
204 cmdline. Usecase: invoke a VM, and mount a host homedir into it via
205 virtio-fs.
206
207* for vendor-built signed initrds:
208 - make sysext run in the initrd
209 - sysext should pick up sysext images from /.extra/ in the initrd, and insist
210 on verification if in secureboot mode
211 - kernel-install should be able to install pre-built unified kernel images in
212 type #2 drop-in dir in the ESP.
213 - kernel-install should be able install encrypted creds automatically for
214 machine id, root pw, rootfs uuid, resume partition uuid, and place next to
215 EFI kernel, for sd-stub to pick them up. These creds should be locked to
216 the TPM, and bind to the right PCR the kernel is measured to.
217 - kernel-install should be able to pick up initrd sysexts automatically and
218 place them next to EFI kernel, for sd-stub to pick them up.
219 - systemd-fstab-generator should look for rootfs device to mount in creds
220 - pid 1 should look for machine ID in creds
221 - systemd-resume-generator should look for resume partition uuid in creds
222 - sd-stub: automatically pick up microcode from ESP (/loader/microcode/*)
223 and synthesize initrd from it, and measure it. Signing is not necessary, as
224 microcode does that on its own. Pass as first initrd to kernel.
225 - sd-stub should measure the kernel/initrd/… into a separate PCR, so that we
226 have one PCR we can bind the encrypted creds to that is not effected by
227 anything else but what we drop in via kernel-install, i.e. by earlier EFI
228 code running (i.e. like PCR 4)
229
230* Add a new service type very similar to Type=notify, that goes one step
231 further and extends the protocol to cover reloads. Specifically, SIGHUP will
232 become the official way to reload, and daemon has to respond with sd_notify()
233 to report when it starts reloading, and when it is complete reloading. Care
234 must be taken to remove races from this model. I.e. PID 1 needs to take
235 CLOCK_MONOTONIC, then send SIGHUP, then wait for at least one RELOADING=1
236 message that comes with a newer timestamp, then wait for a READY=1 message.
237 while we are at it, also maybe extend the logic to require handling of some
238 specific SIGRT signal for setting debug log level, that carries the level via
239 the sigqueue() data parameter. With that we extended with minimal logic the
240 service runtime logic quite substantially.
241
242* firstboot: maybe just default to C.UTF-8 locale if nothing is set, so that we
243 don't query this unnecessarily in entirely uninitialized
244 containers. (i.e. containers with empty /etc).
245
246* beef up sd_notify() to support AV_VSOCK in $NOTIFY_SOCKET, so that VM
247 managers can get ready notifications from VMs, just like container managers
248 from their payload. Also pick up address from qemu/fw_cfg if set there.
249 (which has benefits, given SecureBoot and kernel cmdline are not necessarily
250 friends.)
251
252* mirroring this: maybe support binding to AV_VSOCK in Type=notify services,
253 then passing $NOTIFY_SOCKET and $NOTIFY_GUESTCID with PID1's cid (typically
254 fixed to "2", i.e. the official host cid) and the expected guest cid, for the
255 two sides of the channel. The latter env var could then be used in an
256 appropriate qemu cmdline. That way qemu payloads could talk sd_notify()
257 directly to host service manager.
258
259* maybe write a tool that binds an AF_VFSOCK socket, then invokes qemu,
260 extending the command line to enable vsock on the VM, and using fw_cfg to
261 configure socket address.
262
263* sd-boot: rework random seed handling following recent kernel changes: always
264 pass seed to kernel, but credit only if secure boot is used
265
266* sd-boot: hash data from GetNextHighMonotonicCount() into updated random seed,
267 so that we might even open up up the random seed logic to non-SecureBoot
268 systems?
269
270* sd-boot: also include the hyperv "vm generation id" in the random seed hash,
271 to cover nicely for machine clones. It's found in the ACPI tables, which
272 should be easily accessible from UEFI.
273
274* sd-boot: add menu item for shutdown? or hotkey?
275
276* sd-device has an API to create an sd_device object from a device id, but has
277 no api to query the device id
278
279* sd-device should return the devnum type (i.e. 'b' or 'c') via some API for an
280 sd_device object, so that data passed into sd_device_new_from_devnum() can
281 also be queried.
282
283* sd-event: optionally, if per-event source rate limit is hit, downgrade
284 priority, but leave enabled, and once ratelimit window is over, upgrade
285 priority again. That way we can combat event source starvation without
286 stopping processing events from one source entirely.
287
288* sd-event: similar to existing inotify support add fanotify support (given
289 that apparently new features in this area are only going to be added to the
290 latter).
291
292* sd-event: add 1st class event source for clock changes
293
294* sd-event: add 1st class event source for timezone changes
295
296* support uefi/http boots with sd-boot: instead of looking for dropin files in
297 /loader/entries/ dir, look for a file /loader/entries/SHA256SUMS and use that
298 as directory manifest. The file would be a standard directory listing as
299 generated by GNU sha256sums.
300
301* sd-boot: maybe add support for embedding the various auxiliary resources we
302 look for right in the sd-boot binary. i.e. take inspiration from sd-stub
303 logic: allow combining sd-boot via objcopy with kernels to enumerate, .conf
304 files, drivers, keys to enroll and so on. Then, add whatever we find that way
305 to the menu. Usecase: allow building a single PE image you can boot into via
306 UEFI HTTP boot.
307
308* maybe add a new UEFI stub binary "sd-http". It works similar to sd-stub, but
309 all it does is download a file from a http server, and execute it, after
310 optionally checking its hash sum. idea would be: combine this "sd-http" stub
311 binary with some minimal info about an URL + hash sum, plus .osrel data, and
312 drop it into the unified kernel dir in the ESP. And bam you have something
313 that is tiny, feels a lot like a unified kernel, but all it does is chainload
314 the real kernel. benefit: downloading these stubs would be tiny and quick,
315 hence cheap for enumeration.
316
317* initialize machine ID from systemd credential picked up from the ESP via
318 sd-stub, so that machine ID is stable even on systems where unified kernels
319 are used, and hence kernel cmdline cannot be modified locally
320
321* in gpt-auto-generator: check partition uuids against such uuids supplied via
322 sd-stub credentials. That way, we can support parallel OS installations with
323 pre-built kernels.
324
325* sysext: measure all activated sysext into a TPM PCR
326
327* maybe add a "syscfg" concept, that is almost entirely identical to "sysext",
328 but operates on /etc/ instead of /usr/ and /opt/. Use case would be: trusted,
329 authenticated, atomic, additive configuration management primitive: drop in a
330 configuration bundle, and activate it, so that it is instantly visible,
331 comprehensively.
332
333* systemd-dissect: show available versions inside of a disk image, i.e. if
334 multiple versions are around of the same resource, show which ones. (in other
335 words: show partition labels).
336
337* systemd-nspawn: make boot assessment do something sensible in a
338 container. i.e send an sd_notify() from payload to container manager once
339 boot-up is completed successfully, and use that in nspawn for dealing with
340 boot counting, implemented in the partition table labels and directory names.
341
342* maybe add a generator that reads /proc/cmdline, looks for
343 systemd.pull-raw-portable=, systemd-pull-raw-sysext= and similar switches
344 that take an URL as parameter. It then generates service units for
345 systemd-pull calls that download these URLs if not installed yet. usecase:
346 invoke a VM or nspawn container in a way it automatically deploys/runs these
347 images as OS payloads. i.e. have a generic OS image you can point to any
348 payload you like, which is then downloaded, securely verified and run.
349
350* improve scope units to support creation by pidfd instead of by PID
351
352* deprecate cgroupsv1 further (print log message at boot)
353
354* systemd-dissect: add --cat switch for dumping files such as /etc/os-release
355
356* per-service sandboxing option: ProtectIds=. If used, will overmount
357 /etc/machine-id and /proc/sys/kernel/random/boot_id with synthetic files, to
358 make it harder for the service to identify the host. Depending on the user
359 setting it should be fully randomized at invocation time, or a hash of the
360 real thing, keyed by the unit name or so. Of course, there are other ways to
361 get these IDs (e.g. journal) or similar ids (e.g. MAC addresses, DMI ids, CPU
362 ids), so this knob would only be useful in combination with other lockdown
363 options. Particularly useful for portable services, and anything else that
364 uses RootDirectory= or RootImage=. (Might also over-mount
365 /sys/class/dmi/id/*{uuid,serial} with /dev/null).
366
367* journalctl/timesyncd: whenever timesyncd acquires a synchronization from NTP,
368 create a structured log entry that contains boot ID, monotonic clock and
369 realtime clock (I mean, this requires no special work, as these three fields
370 are implicit). Then in journalctl when attempting to display the realtime
371 timestamp of a log entry, first search for the closest later log entry
372 of this kinda that has a matching boot id, and convert the monotonic clock
373 timestamp of the entry to the realtime clock using this info. This way we can
374 retroactively correct the wallclock timestamps, in particular for systems
375 without RTC, i.e. where initially wallclock timestamps carry rubbish, until
376 an NTP sync is acquired.
377
378* kernel-install:
379 - add --all switch for rerunning kernel-install for all installed kernels
380 - maybe add env var that shortcuts kernel-install for installers that want to
381 call it at the end only
382
383* doc: prep a document explaining resolved's internal objects, i.e. Query
384 vs. Question vs. Transaction vs. Stream and so on.
385
386* doc: prep a document explaining PID 1's internal logic, i.e. transactions,
387 jobs, units
388
389* bootspec: remove tries counter from boot entry ids
390
391* bootspec: bring UEFI and userspace enumeration of bootspec entries back into
392 sync, i.e. parse out tries in both
393
394* automatically ignore threaded cgroups in cg_xyz().
395
396* add linker script that implicitly adds symbol for build ID and new coredump
397 json package metadata, and use that when logging
398
399* systemd-dissect: show GPT disk UUID in output
400
401* Enable RestricFileSystems= for all our long-running services (similar:
402 RestrictNetworkInterfaces=)
403
404* Add systemd-analyze security checks for RestrictFileSystems= and
405 RestrictNetworkInterfaces=
406
407* cryptsetup/homed: implement TOTP authentication backed by TPM2 and its
408 internal clock.
409
410* nspawn: optionally set up nftables/iptables routes that forward UDP/TCP
411 traffic on port 53 to resolved stub 127.0.0.54
412
413* man: rework os-release(5), and clearly separate our extension-release.d/ and
414 initrd-release parts, i.e. list explicitly which fields are about what.
415
416* sysext: before applying a sysext, do a superficial validation run so that
417 things are not rearranged to wildy. I.e. protect against accidental fuckups,
418 such as masking out /usr/lib/ or so. We should probably refuse if existing
419 inodes are replaced by other types of inodes or so.
420
421* sysext: ensure one can build a sysext that can safely apply to *any* system
422 (because it contains only static go binaries in /opt/ or so)
423
424* userdb: when synthesizing NSS records, pick "best" password from defined
425 passwords, not just the first. i.e. if there are multiple defined, prefer
426 unlocked over locked and prefer non-empty over empty.
427
428* maybe add a tool inspired by the GPT auto discovery spec that runs in the
429 initrd and rearranges the rootfs hierarchy via bind mounts, if
430 enabled. Specifically in some top-level dir /@auto/ it will look for
431 dirs/symlinks/subvolumes that are named after their purpose, and optionally
432 encode a version as well as assessment counters, and then mount them into the
433 file system tree to boot into, similar to how we do that for the gpt auto
434 logic. Maybe then bind mount the original root into /.superior or something
435 like that (so that update tools can look there). Further discussion in this
436 thread:
437 https://lists.freedesktop.org/archives/systemd-devel/2021-November/047059.html
438 The GPT dissection logic should automatically enable this tool whenever we
439 detect a specially marked root fs (i.e introduce a new generic root gpt type
440 for this, that is arch independent). The also implement this in the image
441 dissection logic, so that nspawn/RootImage= and so on grok it. Maybe make
442 generic enough so that it can also work for ostrees arrangements.
443
444* if a path ending in ".auto.d/" is set for RootDirectory=/RootImage= then do a
445 strverscmp() of everything inside that dir and use that. i.e. implement very
446 simple version control. Also use this in systemd-nspawn --image= and so on.
447
448* homed: while a home dir is not activated generate slightly different NSS
449 records for it, that reports the home dir as "/" and the shell as some binary
450 provided by us. Then, when an SSH login happens and SSH permits it our binary
451 is invoked. This binary can then talk to homed and activate the homedir if
452 it's not around yet, prompting the user for a password. Once that succeeded
453 we'll switch to the real user record, i.e. home dir and shell, and our tool
454 exec()s the latter. Net effect: ssh'ing into a homed account will just work:
455 we'll neatly prompt for the homedir's password if its needed. –– Building on
456 this we could take this even further: since this tool will potentially have
457 access to the client's ssh-agent (if ssh-agent forwarding is enabled) we
458 could implement SSH unlocking of a homedir with that: when enrolling a new
459 ssh pubkey in a user record we'd ask the ssh-agent to sign some random value
460 with the privkey, then use that as luks key to unlock the home dir. Will not
461 work for ECDSA keys since their signatures contain a random component, but
462 will work for RSA and Ed25519 keys.
463
464* add tiny service that decrypts encrypted user records passed via initrd
465 credential logic and drops them into /run where nss-systemd can pick them up,
466 similar to /run/host/userdb/. Usecase: drop a root user JSON record there,
467 and use it in the initrd to log in as root with locally selected password,
468 for debugging purposes. Other usecase: boot into qemu with regular user
469 mounted from host. maybe put this in systemd-user-sessions.service?
470
471* drop dependency on libcap, replace by direct syscalls based on
472 CapabilityQuintet we already have. (This likely allows us drop drop libcap
473 dep in the base OS image)
474
475* sysext: automatically activate sysext images dropped in via new sd-stub
476 sysext pickup logic.
477
478* add concept for "exitrd" as inverse of "initrd", that we can transition to at
479 shutdown, and has similar security semantics. This should then take the place
480 of dracut's shutdown logic. Should probably support sysexts too. Care needs
481 to be taken that the resulting logic ends up in RAM, i.e. is copied out of
482 on-disk storage.
483
484* userdbd: implement an additional varlink service socket that provides the
485 host user db in restricted form, then allow this to be bind mounted into
486 sandboxed environments that want the host database in minimal form. All
487 records would be stripped of all meta info, except the basic UID/name
488 info. Then use this in portabled environments that do not use PrivateUsers=1.
489
490* logind introduce two types of sessions: "heavy" and "light". The former would
491 be our current sessions. But the latter would be a new type of session that
492 is mostly the same but does not pull in user@.service or wait for it. Then,
493 allow configuration which type of session is desired via pam_systemd
494 parameters, and then make user@.service's session one of these "light" ones.
495 People could then choose to make FTP sessions and suchlike "light" if they
496 don't want the service manager to be started for that.
497
498* /etc/veritytab: allow that the roothash column can be specified as fs path
499 including a path to an AF_UNIX path, similar to how we do things with the
500 keys of /etc/crypttab. That way people can store/provide the roothash
501 externally and provide to us on demand only.
502
503* add high-level lockdown level for GPT dissection logic: e.g. an enum that can
504 be ANY (to mount anything), TRUSTED (to require that /usr is on signed
505 verity, but rest doesn't matter), LOCKEDDOWN (to require that everything is
506 on signed verity, except for ESP), SUPERLOCKDOWN (like LOCKEDDOWN but ESP not
507 allowed). And then maybe some flavours of that that declare what is expected
508 from home/srv/var… Then, add a new cmdline flag to all tools that parse such
509 images, to configure this. Also, add a kernel cmdline option for this, to be
510 honoured by the gpt auto generator.
511
512* nspawn: maybe optionally insert .nspawn file as GPT partition into images, so
513 that such container images are entirely stand-alone and can be updated as
514 one.
515
516* we probably should extend the root verity hash of the root fs into some PCR
517 on boot. (i.e. maybe add a crypttab option tpm2-measure=8 or so to measure it
518 into PCR 8)
519
520* add a "policy" to the dissection logic. i.e. a bit mask what is OK to mount,
521 what must be read-only, what requires encryption, and what requires
522 authentication.
523
524* in uefi stub: query firmware regarding which PCRs are being used, store that
525 in EFI var. then use this when enrolling TPM2 in cryptsetup to verify that
526 the selected PCRs actually are used by firmware.
527
528* rework recursive read-only remount to use new mount API
529
530* PAM: pick up authentication token from credentials
531
532* when mounting disk images: if IMAGE_ID/IMAGE_VERSION is set in os-release
533 data in the image, make sure the image filename actually matches this, so
534 that images cannot be misused.
535
86* New udev block device symlink names:536* New udev block device symlink names:
87 /dev/disk/by-parttypelabel/<pttype>/<ptlabel>. Use case: if pt label is used537 /dev/disk/by-parttypelabel/<pttype>-<ptlabel>. Use case: if pt label is used
88 as partition image version string, this is a safe way to reference a specific538 as partition image version string, this is a safe way to reference a specific
89 version of a specific partition type, in particular where related partitions539 version of a specific partition type, in particular where related partitions
90 are processed (e.g. verity + rootfs both named "LennartOS_0.7").540 are processed (e.g. verity + rootfs both named "LennartOS_0.7").
91541
542* sysupdate:
543 - add fuzzing to the pattern parser
544 - support casync as download mechanism
545 - direct TPM2 PCR change handling, possible renrolling LUKS2 media if needed.
546 - "systemd-sysupdate update --all" support, that iterates through all components
547 defined on the host, plus all images installed into /var/lib/machines/,
548 /var/lib/portable/ and so on.
549 - figure out what to do about system extensions (i.e. they need to imply an
550 update component, since otherwise system extenion' sysupdate.d/ files would
551 override the host's update files.)
552 - Allow invocation with a single transfer definition, i.e. with
553 --definitions= pointing to a file rather than a dir.
554 - add ability to disable implicit decompression of downloaded artifacts,
555 i.e. a Compress=no option in the transfer definitions
556
92* in sd-id128: also parse UUIDs in RFC4122 URN syntax (i.e. chop off urn:uuid: prefix)557* in sd-id128: also parse UUIDs in RFC4122 URN syntax (i.e. chop off urn:uuid: prefix)
93558
94* DynamicUser= + StateDirectory= → use uid mapping mounts, too, in order to559* DynamicUser= + StateDirectory= → use uid mapping mounts, too, in order to
@@ -103,11 +568,6 @@ Features:
103 https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset.c for an example568 https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset.c for an example
104 for doing that.569 for doing that.
105570
106* pass systemd-detect-virt result to generators as env var. Modifying behaviour
107 based on whether we are virtualized or not is a pretty common thing, hence
108 maybe just pass that info along for free in an env var. We cache the result
109 anyway, so it's basically free.
110
111* introduce /dev/disk/root/* symlinks that allow referencing partitions on the571* introduce /dev/disk/root/* symlinks that allow referencing partitions on the
112 disk the rootfs is on in a reasonably secure way. (or maybe: add572 disk the rootfs is on in a reasonably secure way. (or maybe: add
113 /dev/gpt-auto-{home,srv,boot,…} similar in style to /dev/gpt-auto-root as we573 /dev/gpt-auto-{home,srv,boot,…} similar in style to /dev/gpt-auto-root as we
@@ -121,6 +581,13 @@ Features:
121 our usual socket activation protocol. If passed path refers to AF_UNIX581 our usual socket activation protocol. If passed path refers to AF_UNIX
122 socket: connect() to it.582 socket: connect() to it.
123583
584* Similar, ConnectStream= which takes IP addresses and connects to them.
585
586* Similar, Load= which takes literal data in text or base64 format, and puts it
587 into a memfd, and passes that. This enables some fun stuff, such as embedding
588 bash scripts in unit files, by combining Load= with ExecStart=/bin/bash
589 /proc/self/fd/3
590
124* add a ConnectSocket= setting to service unit files, that may reference a591* add a ConnectSocket= setting to service unit files, that may reference a
125 socket unit, and which will connect to the socket defined therein, and pass592 socket unit, and which will connect to the socket defined therein, and pass
126 the resulting fd to the service program via socket activation proto.593 the resulting fd to the service program via socket activation proto.
@@ -131,9 +598,6 @@ Features:
131* importd: support image signature verification with PKCS#7 + OpenBSD signify598* importd: support image signature verification with PKCS#7 + OpenBSD signify
132 logic, as alternative to crummy gpg599 logic, as alternative to crummy gpg
133600
134* sysext: optionally, if the merged trees allow it use bind mounts instead of
135 overlayfs
136
137* add "systemd-analyze debug" + AttachDebugger= in unit files: The former601* add "systemd-analyze debug" + AttachDebugger= in unit files: The former
138 specifies a command to execute; the latter specifies that an already running602 specifies a command to execute; the latter specifies that an already running
139 "systemd-analyze debug" instance shall be contacted and execution paused603 "systemd-analyze debug" instance shall be contacted and execution paused
@@ -142,20 +606,23 @@ Features:
142606
143* expose MS_NOSYMFOLLOW in various places607* expose MS_NOSYMFOLLOW in various places
144608
145* ability to insert trusted configuration and secrets into the boot parameters609* credentials system:
146 of a kernel booting in a VM or on baremetal some way, via TPM610 - acquire from EFI variable?
147 protection. idea:611 - acquire via via ask-password?
148 1. pass via /proc/bootconfig612 - acquire creds via keyring?
149 2. for secrets: put secrets in node of /proc/bootconfig, decrypt them via613 - pass creds via keyring?
150 TPM early on in PID 1, put them in $CREDENTIAL_PATH logic614 - pass creds via memfd?
151 3. for config: put signed data in node /proc/booconfig, validate via TPM615 - acquire + decrypt creds from pkcs11?
152 early on in PID 1, put data into /run/bootconfig/ as individual files616 - make systemd-cryptsetup acquire pw via creds logic
153 4. boot loader/stub should pick these up automatically from the boot loader617 - make PAMName= acquire pw via creds logic
154 file systems618 - make macsec/wireguard code in networkd read key via creds logic
155619 - make gatwayd/remote read key via creds logic
156* tpm2: support a PIN policy, i.e. allowing windows-style short authentication620 - add sd_notify() command for flushing out creds not needed anymore
157 passwords by using the TPM2 to enforce ratelimiting and such, use for621 - make user manager instances create and use a user-specific key (the one in
158 cryptsetup and homed622 /var/lib is root-only) and add --user switch to systemd-creds to use it
623
624* add tpm.target or so which is delayed until TPM2 device showed up in case
625 firmware indicates there is one.
159626
160* Add concept for upgrading TPM2 enrollments, maybe a new switch627* Add concept for upgrading TPM2 enrollments, maybe a new switch
161 --pcrs=4:<hash> or so, i.e. select a PCR to include in the hash, and then628 --pcrs=4:<hash> or so, i.e. select a PCR to include in the hash, and then
@@ -166,9 +633,6 @@ Features:
166633
167* introduce a new group to own TPM devices634* introduce a new group to own TPM devices
168635
169* cryptenroll: politely refuse enrolling new keys to homed volumes, since we
170 we cannot update identity info
171
172* cryptsetup: if only recovery keys are registered and no regular passphrases,636* cryptsetup: if only recovery keys are registered and no regular passphrases,
173 ask user for "recovery key", not "passphrase"637 ask user for "recovery key", not "passphrase"
174638
@@ -177,9 +641,6 @@ Features:
177* cryptsetup: optionally, when run during boot-up and password is never641* cryptsetup: optionally, when run during boot-up and password is never
178 entered, and we are on battery power (or so), power off machine again642 entered, and we are on battery power (or so), power off machine again
179643
180* cryptsetup: when FIDO2/PKCS#11/TPM2 token/chip didn't show up after some
181 time, abort the attempt, fallback to asking for pw
182
183* cryptsetup: when waiting for FIDO2/PKCS#11 token, tell plymouth that, and644* cryptsetup: when waiting for FIDO2/PKCS#11 token, tell plymouth that, and
184 allow plymouth to abort the waiting and enter pw instead645 allow plymouth to abort the waiting and enter pw instead
185646
@@ -195,19 +656,6 @@ Features:
195 - cryptsetup-generator: allow specification of passwords in crypttab itself656 - cryptsetup-generator: allow specification of passwords in crypttab itself
196 - support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator657 - support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator
197658
198* credentials system:
199 - maybe add AcquireCredential= for querying a cred via ask-password
200 - maybe try to acquire creds via keyring?
201 - maybe try to pass creds via keyring?
202 - maybe optionally pass creds via memfd
203 - maybe add support for decrypting creds via TPM
204 - maybe add support for decrypting/importing creds via pkcs11
205 - make systemd-cryptsetup acquire pw via creds logic
206 - make PAMName= acquire pw via creds logic
207 - make macsec/wireguard code in networkd read key via creds logic
208 - make gatwayd/remote read key via creds logic
209 - add sd_notify() command for flushing out creds not needed anymore
210
211* when configuring loopback netif, and it fails due to EPERM, eat up error if659* when configuring loopback netif, and it fails due to EPERM, eat up error if
212 it happens to be set up alright already.660 it happens to be set up alright already.
213661
@@ -223,9 +671,6 @@ Features:
223 address as conduit for some minimal connection metainfo, and use it to671 address as conduit for some minimal connection metainfo, and use it to
224 restore the "description" logic that kdbus used to have.672 restore the "description" logic that kdbus used to have.
225673
226* teach LoadCredential= the ability to load all files from a specified dir as
227 individual creds
228
229* systemd-analyze netif that explains predictable interface (or networkctl)674* systemd-analyze netif that explains predictable interface (or networkctl)
230675
231* Add service setting to run a service within the specified VRF. i.e. do the676* Add service setting to run a service within the specified VRF. i.e. do the
@@ -238,15 +683,10 @@ Features:
238* special case some calls of chase_symlinks() to use openat2() internally, so683* special case some calls of chase_symlinks() to use openat2() internally, so
239 that the kernel does what we otherwise do.684 that the kernel does what we otherwise do.
240685
241* make use of new glibc 2.32 APIs sigabbrev_np() and strerrorname_np().686* add a new flag to chase_symlinks() that stops chasing once the first missing
242687 component is found and then allows the caller to create the rest.
243* add /etc/integritytab, to support dm-integrity setups. In particular those
244 with HMAC as hash function, so that we can have a protected /home without
245 encryption (leaving encryption to the individual dirs/homed).
246688
247* complement root=, rootflags=, rootfstype= with rootsubdir= which allows689* make use of new glibc 2.32 APIs sigabbrev_np() and strerrorname_np().
248 mounting a subdir of the root fs as actual root. This can be used as
249 fstype-agnostic version of btrfs' rootflags=subvol=foobar.
250690
251* if /usr/bin/swapoff fails due to OOM, log a friendly explanatory message about it691* if /usr/bin/swapoff fails due to OOM, log a friendly explanatory message about it
252692
@@ -262,7 +702,6 @@ Features:
262702
263* make us use dynamically fewer deps for containers in general purpose distros:703* make us use dynamically fewer deps for containers in general purpose distros:
264 o turn into dlopen() deps:704 o turn into dlopen() deps:
265 - elfutils (always)
266 - p11-kit-trust (always)705 - p11-kit-trust (always)
267 - kmod-libs (only when called from PID 1)706 - kmod-libs (only when called from PID 1)
268 - libblkid (only in RootImage= handling in PID 1, but not elsewhere)707 - libblkid (only in RootImage= handling in PID 1, but not elsewhere)
@@ -289,8 +728,6 @@ Features:
289* seccomp: don't install filters for ABIs that are masked anyway for the728* seccomp: don't install filters for ABIs that are masked anyway for the
290 specific service729 specific service
291730
292* seccomp: maybe merge all filters we install into one with that libseccomp API that allows merging.
293
294* busctl: maybe expose a verb "ping" for pinging a dbus service to see if it731* busctl: maybe expose a verb "ping" for pinging a dbus service to see if it
295 exists and responds.732 exists and responds.
296733
@@ -298,20 +735,14 @@ Features:
298 for "hibernate" partitions, that are exactly like swap partitions but only735 for "hibernate" partitions, that are exactly like swap partitions but only
299 activated right before hibernation and thus never used for regular swapping.736 activated right before hibernation and thus never used for regular swapping.
300737
301* by default, in systemd --user service bump the OOMAdjust to 100, as privs
302 allow so that systemd survives
303
304* socket units: allow creating a udev monitor socket with ListenDevices= or so,738* socket units: allow creating a udev monitor socket with ListenDevices= or so,
305 with matches, then activate app through that passing socket over739 with matches, then activate app through that passing socket over
306740
307* unify on openssl (as soon as OpenSSL 3.0 is out, and the Debian license741* unify on openssl:
308 confusion is gone)742 - kill gnutls support in resolved
309 - port sd_id128_get_machine_app_specific() over from khash743 - figure out what to do about libmicrohttpd, which has a hard dependency on
310 - port resolved over from libgcrypt (DNSSEC code)744 gnutls
311 - port journald + fsprg over from libgcrypt745 - port fsprg over to a dlopen lib, then switch it to openssl
312 - port importd over from libgcrypt
313 - when that's done: kill khash.c
314 - when that's done: kill gnutls support in resolved
315746
316* add growvol and makevol options for /etc/crypttab, similar to747* add growvol and makevol options for /etc/crypttab, similar to
317 x-systemd.growfs and x-systemd-makefs.748 x-systemd.growfs and x-systemd-makefs.
@@ -371,9 +802,8 @@ Features:
371 https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby-wake-sources802 https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby-wake-sources
372 at the end).803 at the end).
373804
374* We should probably replace /var/log/README, /etc/rc.d/README with symlinks805* We should probably replace /etc/rc.d/README with a symlink to doc
375 that are linked to these places instead of copied. After all they are806 content. After all it is constant vendor data.
376 constant vendor data.
377807
378* maybe add kernel cmdline params: to force random seed crediting808* maybe add kernel cmdline params: to force random seed crediting
379809
@@ -420,12 +850,10 @@ Features:
420* paranoia: whenever we process passwords, call mlock() on the memory850* paranoia: whenever we process passwords, call mlock() on the memory
421 first. i.e. look for all places we use free_and_erasep() and851 first. i.e. look for all places we use free_and_erasep() and
422 augment them with mlock(). Also use MADV_DONTDUMP.852 augment them with mlock(). Also use MADV_DONTDUMP.
853 Alternatively (preferably?) use memfd_secret().
423854
424* Move RestrictAddressFamily= to the new cgroup create socket855* Move RestrictAddressFamily= to the new cgroup create socket
425856
426* support the bind/connect/sendmsg cgroup stuff for sandboxing, and possibly
427 patching around
428
429* maybe implicitly attach monotonic+realtime timestamps to outgoing messages in857* maybe implicitly attach monotonic+realtime timestamps to outgoing messages in
430 log.c and sd-journal-send858 log.c and sd-journal-send
431859
@@ -433,9 +861,6 @@ Features:
433861
434* introduce per-unit (i.e. per-slice, per-service) journal log size limits.862* introduce per-unit (i.e. per-slice, per-service) journal log size limits.
435863
436* sd-boot: automatically load EFI modules from some drop-in dir, so that people
437 can add in file system drivers and such
438
439* sd-boot: optionally, show boot menu when previous default boot item has864* sd-boot: optionally, show boot menu when previous default boot item has
440 non-zero "tries done" count865 non-zero "tries done" count
441866
@@ -481,9 +906,7 @@ Features:
481 selected user is resolvable in the service even if it ships its own /etc/passwd)906 selected user is resolvable in the service even if it ships its own /etc/passwd)
482907
483* Fix DECIMAL_STR_MAX or DECIMAL_STR_WIDTH. One includes a trailing NUL, the908* Fix DECIMAL_STR_MAX or DECIMAL_STR_WIDTH. One includes a trailing NUL, the
484 other doesn't. What a disaster. Probably to exclude it. Also909 other doesn't. What a disaster. Probably to exclude it.
485 DECIMAL_STR_WIDTH should probably add an extra "-" into account for negative
486 numbers.
487910
488* Check that users of inotify's IN_DELETE_SELF flag are using it properly, as911* Check that users of inotify's IN_DELETE_SELF flag are using it properly, as
489 usually IN_ATTRIB is the right way to watch deleted files, as the former only912 usually IN_ATTRIB is the right way to watch deleted files, as the former only
@@ -551,8 +974,6 @@ Features:
551 systemd-journald writes to /var/log/journal, which could be useful when we974 systemd-journald writes to /var/log/journal, which could be useful when we
552 doing disk usage calculations and so on.975 doing disk usage calculations and so on.
553976
554* taint systemd if there are fewer than 65536 users assigned (userns) to the system.
555
556* deprecate RootDirectoryStartOnly= in favour of a new ExecStart= prefix char977* deprecate RootDirectoryStartOnly= in favour of a new ExecStart= prefix char
557978
558* add a new RuntimeDirectoryPreserve= mode that defines a similar lifecycle for979* add a new RuntimeDirectoryPreserve= mode that defines a similar lifecycle for
@@ -583,7 +1004,7 @@ Features:
583* beef up pam_systemd to take unit file settings such as cgroups properties as1004* beef up pam_systemd to take unit file settings such as cgroups properties as
584 parameters1005 parameters
5851006
586* maybe hook of xfs/ext4 quotactl() with services? i.e. automatically manage1007* maybe hook up xfs/ext4 quotactl() with services? i.e. automatically manage
587 the quota of the user indicated in User= via unit file settings, like the1008 the quota of the user indicated in User= via unit file settings, like the
588 other resource management concepts. Would mix nicely with DynamicUser=1. Or1009 other resource management concepts. Would mix nicely with DynamicUser=1. Or
589 alternatively, do this with projids, so that we can also cover services1010 alternatively, do this with projids, so that we can also cover services
@@ -606,10 +1027,6 @@ Features:
6061027
607 ReadWritePaths=:/var/lib/foobar1028 ReadWritePaths=:/var/lib/foobar
6081029
609* hostnamed: populate form factor data from a new hwdb database, so that old
610 yogas can be recognized as "convertible" too, even if they predate the DMI
611 "convertible" form factor
612
613* Add ExecMonitor= setting. May be used multiple times. Forks off a process in1030* Add ExecMonitor= setting. May be used multiple times. Forks off a process in
614 the service cgroup, which is supposed to monitor the service, and when it1031 the service cgroup, which is supposed to monitor the service, and when it
615 exits the service is considered failed by its monitor.1032 exits the service is considered failed by its monitor.
@@ -684,8 +1101,6 @@ Features:
6841101
685* when we detect that there are waiting jobs but no running jobs, do something1102* when we detect that there are waiting jobs but no running jobs, do something
6861103
687* push CPUAffinity= also into the "cpuset" cgroup controller
688
689* PID 1 should send out sd_notify("WATCHDOG=1") messages (for usage in the --user mode, and when run via nspawn)1104* PID 1 should send out sd_notify("WATCHDOG=1") messages (for usage in the --user mode, and when run via nspawn)
6901105
691* there's probably something wrong with having user mounts below /sys,1106* there's probably something wrong with having user mounts below /sys,
@@ -877,8 +1292,7 @@ Features:
877 - add verification of [Install] section to systemd-analyze verify1292 - add verification of [Install] section to systemd-analyze verify
8781293
879* timer units:1294* timer units:
880 - timer units should get the ability to trigger when:1295 - timer units should get the ability to trigger when DST changes
881 o DST changes
882 - Modulate timer frequency based on battery state1296 - Modulate timer frequency based on battery state
8831297
884* add libsystemd-password or so to query passwords during boot using the password agent logic1298* add libsystemd-password or so to query passwords during boot using the password agent logic
@@ -889,8 +1303,6 @@ Features:
8891303
890* make repeated alt-ctrl-del presses printing a dump1304* make repeated alt-ctrl-del presses printing a dump
8911305
892* hostnamed: before returning information from /etc/machine-info.conf check the modification data and reread. Similar for localed, ...
893
894* currently x-systemd.timeout is lost in the initrd, since crypttab is copied into dracut, but fstab is not1306* currently x-systemd.timeout is lost in the initrd, since crypttab is copied into dracut, but fstab is not
8951307
896* add a pam module that passes the hdd passphrase into the PAM stack and then expires it, for usage by gdm auto-login.1308* add a pam module that passes the hdd passphrase into the PAM stack and then expires it, for usage by gdm auto-login.
@@ -914,10 +1326,8 @@ Features:
914 ConditionConfigSearchPathNotEmpty= or different syntax? See the discussion starting at1326 ConditionConfigSearchPathNotEmpty= or different syntax? See the discussion starting at
915 https://github.com/systemd/systemd/pull/15109#issuecomment-607740136.1327 https://github.com/systemd/systemd/pull/15109#issuecomment-607740136.
9161328
917* BootLoaderSpec: Clarify that the kernel has to be in $BOOT. Clarify1329* BootLoaderSpec: Define a way how an installer can figure out whether a BLS
918 that the boot loader should be installed to the ESP. Define a way1330 compliant boot loader is installed.
919 how an installer can figure out whether a BLS compliant boot loader
920 is installed.
9211331
922* think about requeuing jobs when daemon-reload is issued? usecase:1332* think about requeuing jobs when daemon-reload is issued? usecase:
923 the initrd issues a reload after fstab from the host is accessible1333 the initrd issues a reload after fstab from the host is accessible
@@ -932,9 +1342,6 @@ Features:
9321342
933* merge unit_kill_common() and unit_kill_context()1343* merge unit_kill_common() and unit_kill_context()
9341344
935* hw watchdog: optionally try to use the preset watchdog timeout instead of always overriding it
936 https://bugs.freedesktop.org/show_bug.cgi?id=54712
937
938* add a dependency on standard-conf.xml and other included files to man pages1345* add a dependency on standard-conf.xml and other included files to man pages
9391346
940* MountFlags=shared acts as MountFlags=slave right now.1347* MountFlags=shared acts as MountFlags=slave right now.
@@ -1010,14 +1417,16 @@ Features:
10101417
1011* bootctl,sd-boot: actually honour the "architecture" key1418* bootctl,sd-boot: actually honour the "architecture" key
10121419
1013* sd-boot: add service that automatically runs "bootctl update" on every boot,
1014 in a graceful way, so that updated /usr trees automatically propagate into
1015 updated boot loaders on reboot.
1016
1017* bootctl:1420* bootctl:
1421 - show whether UEFI audit mode is available
1018 - teach it to prepare an ESP wholesale, i.e. with mkfs.vfat invocation1422 - teach it to prepare an ESP wholesale, i.e. with mkfs.vfat invocation
1019 - teach it to copy in unified kernel images and maybe type #1 boot loader spec entries from host1423 - teach it to copy in unified kernel images and maybe type #1 boot loader spec entries from host
1020 - make it operate on loopback files, dissecting enough to find ESP to operate on1424 - make it operate on loopback files, dissecting enough to find ESP to operate on
1425 - bootspec: properly support boot attempt counters when parsing entry file names
1426 - support --quiet in is-installed, update
1427
1428* kernel-install:
1429 - optionally, support generating type #2 entries instead of type #1, including signing them
10211430
1022* logind:1431* logind:
1023 - logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around1432 - logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around
@@ -1044,8 +1453,9 @@ Features:
1044 - follow PropertiesChanged state more closely, to deal with quick logouts and1453 - follow PropertiesChanged state more closely, to deal with quick logouts and
1045 relogins1454 relogins
1046 - (optionally?) spawn seat-manager@$SEAT.service whenever a seat shows up that as CanGraphical set1455 - (optionally?) spawn seat-manager@$SEAT.service whenever a seat shows up that as CanGraphical set
10471456 - expose details of boot entries on the bus. In particular, it should be possible
1048* move logind udev rules to top-level rule.d/ directory1457 to query the list of boot entry titles that bootctl / sd-boot would show.
1458 Currently we only expose their identifiers.
10491459
1050* move multiseat vid/pid matches from logind udev rule to hwdb1460* move multiseat vid/pid matches from logind udev rule to hwdb
10511461
@@ -1155,8 +1565,6 @@ Features:
1155 - when user tries to log into record signed by unrecognized key, automatically add key to our chain after polkit auth1565 - when user tries to log into record signed by unrecognized key, automatically add key to our chain after polkit auth
1156 - rollback when resize fails mid-operation1566 - rollback when resize fails mid-operation
1157 - GNOME's side for forget key on suspend (requires rework so that lock screen runs outside of uid)1567 - GNOME's side for forget key on suspend (requires rework so that lock screen runs outside of uid)
1158 - resize on login?
1159 - shrink fs on logout?
1160 - update LUKS password on login if we find there's a password that unlocks the JSON record but not the LUKS device.1568 - update LUKS password on login if we find there's a password that unlocks the JSON record but not the LUKS device.
1161 - create on activate?1569 - create on activate?
1162 - properties: icon url?, preferred session type?, administrator bool (which translates to 'wheel' membership)?, address?, telephone?, vcard?, samba stuff?, parental controls?1570 - properties: icon url?, preferred session type?, administrator bool (which translates to 'wheel' membership)?, address?, telephone?, vcard?, samba stuff?, parental controls?
@@ -1173,63 +1581,49 @@ Features:
1173 - make size of $XDG_RUNTIME_DIR configurable in user record1581 - make size of $XDG_RUNTIME_DIR configurable in user record
1174 - query password from kernel keyring first1582 - query password from kernel keyring first
1175 - update even if record is "absent"1583 - update even if record is "absent"
1176 - 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
1177 - move acct mgmt stuff from pam_systemd_home to pam_systemd?1584 - move acct mgmt stuff from pam_systemd_home to pam_systemd?
1178 - when "homectl --pkcs11-token-uri=" is used, synthesize ssh-authorized-keys records for all keys we have private keys on the stick for1585 - when "homectl --pkcs11-token-uri=" is used, synthesize ssh-authorized-keys records for all keys we have private keys on the stick for
1179 - make slice for users configurable (requires logind rework)1586 - make slice for users configurable (requires logind rework)
1180 - logind: populate auto-login list bus property from PKCS#11 token1587 - logind: populate auto-login list bus property from PKCS#11 token
1181 - when determining state of a LUKS home directory, check DM suspended sysfs file1588 - when determining state of a LUKS home directory, check DM suspended sysfs file
1182 - introduce API for "making room", that grows/shrinks home directory1589 - when homed is in use, maybe start the user session manager in a mount namespace with MS_SLAVE,
1183 according to elastic parameters, discards blocks, and removes additional snapshots. Call it1590 so that mounts propagate down but not up - eg, user A setting up a backup volume
1184 either from UI when disk space gets low1591 doesn't mean user B sees it
11851592 - use credentials logic/TPM2 logic to store homed signing key
1186* homed: during login resize fs automatically towards size goal. Specifically,1593 - permit multiple user record signing keys to be used locally, and pick
1187 resize to diskSize if possible, but leave a certain amount (configured by a1594 the right one for signing records automatically depending on a pre-existing
1188 new value diskLeaveFreeSize) of space free on the backing fs.1595 signature
11891596 - add a way to "adopt" a home directory, i.e. strip foreign signatures
1190* homed: permit multiple user record signing keys to be used locally, and pick1597 and insert a local signature instead.
1191 the right one for signing records automatically depending on a pre-existing1598 - as an extension to the directory+subvolume backend: if located on
1192 signature1599 especially marked fs, then sync down password into LUKS header of that fs,
11931600 and always verify passwords against it too. Bootstrapping is a problem
1194* homed: add a way to "adopt" a home directory, i.e. strip foreign signatures1601 though: if no one is logged in (or no other user even exists yet), how do you
1195 and insert a local signature instead.1602 unlock the volume in order to create the first user and add the first pw.
11961603 - support new FS_IOC_ADD_ENCRYPTION_KEY ioctl for setting up fscrypt
1197* homed: as an extension to the directory+subvolume backend: if located on1604 - maybe pre-create ~/.cache as subvol so that it can have separate quota
1198 especially marked fs, then sync down password into LUKS header of that fs,1605 easily?
1199 and always verify passwords against it too. Bootstrapping is a problem1606 - add a switch to homectl (maybe called --first-boot) where it will check if
1200 though: if no one is logged in (or no other user even exists yet), how do you1607 any non-system users exist, and if not prompts interactively for basic user
1201 unlock the volume in order to create the first user and add the first pw.1608 info, mimicking systemd-firstboot. Then, place this in a service that runs
12021609 after systemd-homed, but before gdm and friends, as a simple, barebones
1203* homed: support new FS_IOC_ADD_ENCRYPTION_KEY ioctl for setting up fscrypt1610 fallback logic to get a regular user created on uninitialized systems.
12041611 - store PKCS#11 + FIDO2 token info in LUKS2 header, compatible with
1205* homed: maybe pre-create ~/.cache as subvol so that it can have separate quota1612 systemd-cryptsetup, so that it can unlock homed volumes
1206 easily?1613 - maybe make all *.home files owned by `systemd-home` user or so, so that we
12071614 can easily set overall quota for all users
1208* homed: if kernel 5.12 uid mapping mounts exist, use that instead of recursive1615 - on login, if we can't fallocate initially, but rebalance is on, then allow
1209 chowns.1616 login in discard mode, then immediately rebalance, then turn off discard
12101617 - extend user records with optional "bulk" data. Specifically, a user
1211* add a switch to homectl (maybe called --first-boot) where it will check if1618 avatar/photo or so. This data should be stored along with the user record,
1212 any non-system users exist, and if not prompts interactively for basic user1619 but probably shouldn't be part of the record itself, since it might be
1213 info, mimicking systemd-firstboot. Then, place this in a service that runs1620 large.
1214 after systemd-homed, but before gdm and friends, as a simple, barebones
1215 fallback logic to get a regular user created on uninitialized systems.
1216
1217* homed: store PKCS#11 + FIDO2 token info in LUKS2 header, compatible with
1218 systemd-cryptsetup, so that it can unlock homed volumes
1219
1220* homed: try to unmount in regular intervals when home dir was busy when we
1221 tried because idle.
1222
1223* homed: keep an fd to the homedir open at all times, to keep the fs pinned
1224 (autofs and such) while user is logged in.
1225
1226* when we resize disks (homed?) always round up to 4K sectors, not 512K
12271621
1228* add a new switch --auto-definitions=yes/no or so to systemd-repart. If1622* add a new switch --auto-definitions=yes/no or so to systemd-repart. If
1229 specified, synthesize a definition automatically if we can: enlarge last1623 specified, synthesize a definition automatically if we can: enlarge last
1230 partition on disk, but only if it is marked for growing and not read-only.1624 partition on disk, but only if it is marked for growing and not read-only.
12311625
1232* systemd-repart: read LUKS encryption key from $CREDENTIALS_PATH1626* systemd-repart: read LUKS encryption key from $CREDENTIALS_DIRECTORY
12331627
1234* systemd-repart: add a switch to factory reset the partition table without1628* systemd-repart: add a switch to factory reset the partition table without
1235 immediately applying the new configuration again. i.e. --factory-reset=leave1629 immediately applying the new configuration again. i.e. --factory-reset=leave
@@ -1360,9 +1754,6 @@ Features:
1360 - optionally automatically add FORWARD rules to iptables whenever nspawn is1754 - optionally automatically add FORWARD rules to iptables whenever nspawn is
1361 running, remove them when shut down.1755 running, remove them when shut down.
13621756
1363* nspawn: make --bind= work sanely with --private-users when uid mapping mounts
1364 are used.
1365
1366* nspawn: add support for sysext extensions, too. i.e. a new --extension=1757* nspawn: add support for sysext extensions, too. i.e. a new --extension=
1367 switch that takes one or more arguments, and applies the extensions already1758 switch that takes one or more arguments, and applies the extensions already
1368 during startup.1759 during startup.
diff --git a/catalog/meson.build b/catalog/meson.build
index 7139c2e..6a0a219 100644
--- a/catalog/meson.build
+++ b/catalog/meson.build
@@ -1,25 +1,24 @@
1# SPDX-License-Identifier: LGPL-2.1-or-later1# SPDX-License-Identifier: LGPL-2.1-or-later
22
3in_files = '''3in_files = [
4 systemd.bg.catalog4 'systemd.bg.catalog',
5 systemd.be.catalog5 'systemd.be.catalog',
6 systemd.be@latin.catalog6 'systemd.be@latin.catalog',
7 systemd.de.catalog7 'systemd.de.catalog',
8 systemd.fr.catalog8 'systemd.fr.catalog',
9 systemd.it.catalog9 'systemd.it.catalog',
10 systemd.pl.catalog10 'systemd.pl.catalog',
11 systemd.pt_BR.catalog11 'systemd.pt_BR.catalog',
12 systemd.ru.catalog12 'systemd.ru.catalog',
13 systemd.zh_CN.catalog13 'systemd.zh_CN.catalog',
14 systemd.zh_TW.catalog14 'systemd.zh_TW.catalog',
15 systemd.catalog15 'systemd.catalog']
16'''.split()
1716
18support_url = get_option('support-url')17support_url = get_option('support-url')
19support_sed = 's~%SUPPORT_URL%~@0@~'.format(support_url)18support_sed = 's~%SUPPORT_URL%~@0@~'.format(support_url)
2019
21foreach file : in_files20foreach file : in_files
22 custom_target(21 catalogs += custom_target(
23 file,22 file,
24 input : file + '.in',23 input : file + '.in',
25 output: file,24 output: file,
diff --git a/catalog/systemd.catalog.in b/catalog/systemd.catalog.in
index 3e08f56..a3f05c0 100644
--- a/catalog/systemd.catalog.in
+++ b/catalog/systemd.catalog.in
@@ -188,6 +188,15 @@ Support: %SUPPORT_URL%
188System shutdown has been initiated. The shutdown has now begun and188System shutdown has been initiated. The shutdown has now begun and
189all system services are terminated and all file systems unmounted.189all system services are terminated and all file systems unmounted.
190190
191-- c14aaf76ec284a5fa1f105f88dfb061c
192Subject: System factory reset initiated
193Defined-By: systemd
194Support: %SUPPORT_URL%
195
196System factory reset has been initiated. The precise operation this
197executes is implementation-defined, but typically has the effect of
198reverting the system's state and configuration to vendor defaults.
199
191-- 7d4958e842da4a758f6c1cdc7b36dcc5200-- 7d4958e842da4a758f6c1cdc7b36dcc5
192Subject: A start job for unit @UNIT@ has begun execution201Subject: A start job for unit @UNIT@ has begun execution
193Defined-By: systemd202Defined-By: systemd
@@ -517,3 +526,11 @@ be updated to operate in a hotplug fashion without depending on
517systemd-udev-settle.service:526systemd-udev-settle.service:
518527
519 @OFFENDING_UNITS@528 @OFFENDING_UNITS@
529
530-- 7c8a41f37b764941a0e1780b1be2f037
531Subject: Initial clock synchronization
532Defined-By: systemd
533Support: %SUPPORT_URL%
534
535For the first time during the current boot an NTP synchronization has been
536acquired and the local system clock adjustment has been initiated.
diff --git a/catalog/systemd.pl.catalog.in b/catalog/systemd.pl.catalog.in
index 58706f5..fce35ee 100644
--- a/catalog/systemd.pl.catalog.in
+++ b/catalog/systemd.pl.catalog.in
@@ -187,6 +187,16 @@ Support: %SUPPORT_URL%
187Zainicjowano wyłączenie systemu. Wyłączenie zostało rozpoczęte i wszystkie187Zainicjowano wyłączenie systemu. Wyłączenie zostało rozpoczęte i wszystkie
188usługi systemowe zostały zakończone, a wszystkie systemy plików odmontowane.188usługi systemowe zostały zakończone, a wszystkie systemy plików odmontowane.
189189
190-- c14aaf76ec284a5fa1f105f88dfb061c
191Subject: Zainicjowano przywrócenie danych fabrycznych systemu
192Defined-By: systemd
193Support: %SUPPORT_URL%
194
195Zainicjowano przywrócenie danych fabrycznych systemu. Dokładne działanie,
196jakie zostanie wykonane jest określone przez implementację, ale zwykle
197powoduje przywrócenie stanu i konfiguracji systemu do domyślnych wartości
198producenta.
199
190-- 7d4958e842da4a758f6c1cdc7b36dcc5200-- 7d4958e842da4a758f6c1cdc7b36dcc5
191Subject: Rozpoczęto wykonywanie zadania uruchamiania dla jednostki @UNIT@201Subject: Rozpoczęto wykonywanie zadania uruchamiania dla jednostki @UNIT@
192Defined-By: systemd202Defined-By: systemd
@@ -524,3 +534,11 @@ o ich aktualizację tak, aby działały w sposób dynamiczny
524bez zależności od usługi systemd-udev-settle.service:534bez zależności od usługi systemd-udev-settle.service:
525535
526 @OFFENDING_UNITS@536 @OFFENDING_UNITS@
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches