]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
2 years agoremount-fs: refuse to remount based on fstab when fstab=no kernel command line option... 28728/head
Yu Watanabe [Tue, 8 Aug 2023 17:02:23 +0000 (02:02 +0900)] 
remount-fs: refuse to remount based on fstab when fstab=no kernel command line option specified

Otherwise, if for some reasons remount-fs is invoked even when fstab=no is
specified, mounts may get unexpected options from fstab.

For safety, let's parse the kernel command line option.

2 years agoremount-fs: split-out remount_by_fstab()
Yu Watanabe [Tue, 8 Aug 2023 16:57:16 +0000 (01:57 +0900)] 
remount-fs: split-out remount_by_fstab()

No functional change, just refactoring and preparation for later
commits.

2 years agofstab-generator: update cache in fstab_enabled_full() based on the parsed result...
Yu Watanabe [Tue, 8 Aug 2023 17:40:21 +0000 (02:40 +0900)] 
fstab-generator: update cache in fstab_enabled_full() based on the parsed result of fstab=

Currently, fstab-generator does not use fstab file parsers in
fstab-util.c. So, this is not necessary. Just for a possible
optimization in the case the parsers used in the future.

2 years agofstab-util: introduce fstab_enabled() helper function
Yu Watanabe [Tue, 8 Aug 2023 17:30:33 +0000 (02:30 +0900)] 
fstab-util: introduce fstab_enabled() helper function

And refuse to parse fstab when 'fstab=no' is specified in the kernel
command line.

When 'fstab=no' is specified in the kernel command line, fstab-generator
does not parse fstab and will not create e.g. /boot or /efi mount entry
even if fstab contains entries for the mount points. However, gpt-auto
generator may parse fstab file, and adjust or ignore mounts for EFI or
XBOOTLDR partitions based on the fstab file.

This makes gpt-auto also ignore fstab entries if 'fstab=no' is set in
the kernel command line.

2 years agoproc-cmdline: make proc_cmdline_get_bool() take flags
Yu Watanabe [Wed, 9 Aug 2023 08:41:55 +0000 (17:41 +0900)] 
proc-cmdline: make proc_cmdline_get_bool() take flags

All other command line parsers takes flags. Let's make
proc_cmdline_get_bool() also take flags. Though, currently,
no flag is set by the caller.

2 years agoRevert "Revert "tmpfiles.d: adjust /dev/vfio/vfio access mode""
Yu Watanabe [Tue, 8 Aug 2023 16:25:42 +0000 (01:25 +0900)] 
Revert "Revert "tmpfiles.d: adjust /dev/vfio/vfio access mode""

This reverts commit 33b91308c26ca5d512e43b6b32d596a2c9237d04.

The commit b42482af904ae0b94a6e4501ec595448f0ba1c06 dropped
'--exclude-prefix=/dev' from systemd-tmpfiles-setup.service. So, the
possibly later invocation of the service changes the permission set by
udevd.

As commmented in the head of this file, settings should be consistent
with udev rules. Only missing entry here is vfio. Let's re-add the
entry for the device.

Addresses https://github.com/systemd/systemd/pull/28681#issuecomment-1666949888.

2 years agoveritysetup-generator: fix ordering of generated units
Yu Watanabe [Tue, 8 Aug 2023 18:40:14 +0000 (03:40 +0900)] 
veritysetup-generator: fix ordering of generated units

Fixes a bug introduced by 08b04ec7e72b7327b4803809732b1b8fce8dd069 and
953006dcb0a37a57aed0e762ff6289700e8689e8.

Fixes #28725.

2 years agoMerge pull request #28731 from yuwata/sd-dhcp-server-cleanups
Yu Watanabe [Wed, 9 Aug 2023 02:25:44 +0000 (11:25 +0900)] 
Merge pull request #28731 from yuwata/sd-dhcp-server-cleanups

sd-dhcp-server: cleanups

2 years agoMerge pull request #28727 from yuwata/proc-cmdline-cleanups
Luca Boccassi [Wed, 9 Aug 2023 00:18:13 +0000 (01:18 +0100)] 
Merge pull request #28727 from yuwata/proc-cmdline-cleanups

tree-wide: fixlet and optimization for parsing kernel command line

2 years agomeson: use install_emptydir() and drop meson-make-symlink.sh
Yu Watanabe [Tue, 8 Aug 2023 01:38:47 +0000 (10:38 +0900)] 
meson: use install_emptydir() and drop meson-make-symlink.sh

The script is mostly equivalent to 'mkdir -p' and 'ln -sfr'.
Let's replace it with install_emptydir() builtin function and
inline meson call.

2 years agosd-dhcp-server: propagate error on parsing DHCP packet 28731/head
Yu Watanabe [Tue, 8 Aug 2023 19:58:04 +0000 (04:58 +0900)] 
sd-dhcp-server: propagate error on parsing DHCP packet

Otherwise, we silently ignore the received packet and that makes hard to
debug issue.

2 years agodhcp: rename function argument
Yu Watanabe [Tue, 8 Aug 2023 20:04:07 +0000 (05:04 +0900)] 
dhcp: rename function argument

2 years agoman: fix typo in journalctl
mordner [Tue, 8 Aug 2023 19:57:41 +0000 (21:57 +0200)] 
man: fix typo in journalctl

2 years agounits/initrd-parse-etc.service: Conflict with emergency.target
Fabian Vogt [Tue, 8 Aug 2023 10:52:53 +0000 (12:52 +0200)] 
units/initrd-parse-etc.service: Conflict with emergency.target

If emergency.target is started while initrd-parse-etc.service/start is queued,
the initrd-parse-etc job did not get canceled. In parallel to the emergency
units, it eventually runs the service, which starts initrd-cleanup.service,
which in turn isolates initrd-switch-root.target. This stops the emergency
units and effectively starts the initrd boot process again, which likely
fails again like the initial attempt. The system is thus stuck in an endless
loop, never really reaching emergency.target.

With this conflict added, starting emergency.target automatically cancels
initrd-parse-etc.service/start, avoiding the loop.

2 years agoopenssl: add log_openssl_errors()
Dan Streetman [Fri, 4 Aug 2023 22:51:55 +0000 (18:51 -0400)] 
openssl: add log_openssl_errors()

Add a macro to log all errors in the openssl 'thread error queue'.

This consolidates all the openssl-generated errors to return -EIO and log at
debug level.

Also add a 'invalid' test in test-openssl, to allow manual verification that
the openssl error(s) are logged.

2 years agopo: Translated using Weblate (Finnish)
Jan Kuparinen [Tue, 8 Aug 2023 17:21:02 +0000 (19:21 +0200)] 
po: Translated using Weblate (Finnish)

Currently translated at 86.3% (196 of 227 strings)

Co-authored-by: Jan Kuparinen <copper_fin@hotmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/fi/
Translation: systemd/main

2 years agotree-wise: drop unnecessary use of proc_cmdline_key_streq() 28727/head
Yu Watanabe [Tue, 8 Aug 2023 17:44:52 +0000 (02:44 +0900)] 
tree-wise: drop unnecessary use of proc_cmdline_key_streq()

If the key does not contain '-' or '_', then it is not necessary to use
proc_cmdline_key_streq(), and streq() is sufficient.

This also adds missing assertions about 'key' argument.

2 years agoresolve: ignore nameserver= and domain= kernel command line options without value
Yu Watanabe [Tue, 8 Aug 2023 18:00:34 +0000 (03:00 +0900)] 
resolve: ignore nameserver= and domain= kernel command line options without value

Otherwise, manager_parse_dns_server_string_and_warn() or
manager_parse_search_domains_and_warn() will trigger assertion.

2 years agolibfido2: pick up debug logging from libfido2, and funnel it through our log subsystem
Lennart Poettering [Tue, 8 Aug 2023 10:26:09 +0000 (12:26 +0200)] 
libfido2: pick up debug logging from libfido2, and funnel it through our log subsystem

Fixes: #27984
2 years agoMerge pull request #28710 from rpigott/zsh-non-template-cache
Luca Boccassi [Tue, 8 Aug 2023 11:06:40 +0000 (12:06 +0100)] 
Merge pull request #28710 from rpigott/zsh-non-template-cache

zsh completion speedups

2 years agoudev: set ID_NAME and ID_SERIAL to MMC/memstick devices again
Yu Watanabe [Tue, 8 Aug 2023 05:54:05 +0000 (14:54 +0900)] 
udev: set ID_NAME and ID_SERIAL to MMC/memstick devices again

Fixes a bug introduced by 998db5871fea331ec00b26a3a3f5271df040a905.

Fixes #28671.

2 years agozsh: reintroduce pattern argument to uncached verbs 28710/head
Ronan Pigott [Tue, 8 Aug 2023 08:30:28 +0000 (01:30 -0700)] 
zsh: reintroduce pattern argument to uncached verbs

The systemctl completion previously made use of PREFIX as a pattern
argument to list-unit-files and list-units. This had the problem of
erroneously filtering the results that were stored in the cache, and
erroneously filtering results that might have been requested according
to the users configuration (e.g. _correct completer, certain
matcher-lists or tag-orders, etc.).

Unfortunately, the runtime of list-unit-files increases when no pattern
argument is provided, and systemctl show, used to filter those units,
can become unacceptably slow when provided with too many units to
describe.

Let's re-introduce the pattern argument to list-unit-files and
list-units where necessary in order to alleviate these bottlenecks
without poisining the cache. A 'use-pattern' style is introduced that
may be used to disable this behavior if it is undesired. We can still
expect that certain completions, like `systemctl start <TAB>` will be
slow, like before. To fix this we will need systemd to learn a more
efficient way of filtering the units than parsing systemctl show.

2 years agobusctl: fix showing array of dictionary in JSON format
Yu Watanabe [Tue, 8 Aug 2023 02:24:22 +0000 (11:24 +0900)] 
busctl: fix showing array of dictionary in JSON format

This partially reverts the commit 684bce3d54463b3222246f72adfe82ad5d176fea
and fixes the issue introduced by it.

Fixes #28711.

2 years agozsh: use sys_really_all_units for non-template names
Ronan Pigott [Mon, 7 Aug 2023 19:13:23 +0000 (12:13 -0700)] 
zsh: use sys_really_all_units for non-template names

The systemctl invocations used for these completions match the ones used
for the _sys_really_all_units parameter, so we should really just use
the cached parameter rather than recomputing the result.

2 years agoshutdown: handle gracefully if MD_LEVEL udev propery is not set
Lennart Poettering [Mon, 7 Aug 2023 14:36:26 +0000 (16:36 +0200)] 
shutdown: handle gracefully if MD_LEVEL udev propery is not set

See: #28490

2 years agovarlink: don't allocate fd control buffer on each read()
Lennart Poettering [Mon, 7 Aug 2023 13:36:39 +0000 (15:36 +0200)] 
varlink: don't allocate fd control buffer on each read()

We'll need this on each read() again, hence let's just allocate this
once and then reuse it for subsequent read()s.

Follow-up for: #28639

2 years agomkosi: Unmount /etc/resolv.conf if it's a mountpoint
Daan De Meyer [Mon, 7 Aug 2023 18:17:41 +0000 (20:17 +0200)] 
mkosi: Unmount /etc/resolv.conf if it's a mountpoint

2 years agoci(lint): exclude `.in` files from ShellCheck lint
Jan Macku [Mon, 7 Aug 2023 13:11:00 +0000 (15:11 +0200)] 
ci(lint): exclude `.in` files from ShellCheck lint

Exclude all `.in` files because they may contain unsupported syntax, and
they have to be preprocessed first. For example:

```sh
Error: SHELLCHECK_WARNING:
./src/rpm/systemd-update-helper.in:130:37: warning[SC1083]: This { is literal. Check expression (missing ;/\n?) or quote it.
```

Related to: https://github.com/systemd/systemd/pull/28521

2 years agoMerge pull request #28521 from keszybz/rpm-reload
Zbigniew Jędrzejewski-Szmek [Mon, 7 Aug 2023 17:27:13 +0000 (19:27 +0200)] 
Merge pull request #28521 from keszybz/rpm-reload

rpm: add %systemd_postun_with_reload and %systemd_user_postun_with_reload

2 years agorepart: derive verity salt and uuid from seed
Vincent Haupert [Mon, 7 Aug 2023 06:51:02 +0000 (08:51 +0200)] 
repart: derive verity salt and uuid from seed

2 years agorepart: Extend check for read-only verity partitions
Daan De Meyer [Mon, 7 Aug 2023 13:23:49 +0000 (15:23 +0200)] 
repart: Extend check for read-only verity partitions

Let's check for verity signature partitions as well. Let's also
check the configured verity mode, which is another way to indicate
verity partitions aside from the type UUID.

2 years agoupdate TODO
Lennart Poettering [Mon, 7 Aug 2023 13:36:32 +0000 (15:36 +0200)] 
update TODO

2 years ago90-loaderentry: support installing device trees
Emil Renner Berthing [Sat, 29 Jul 2023 20:26:54 +0000 (22:26 +0200)] 
90-loaderentry: support installing device trees

Like the cmdline file we look for a devicetree file in
$KERNEL_INSTALL_CONF_ROOT, /etc/kernel and /usr/lib/kernel. If it is
present we look for the specified device tree that comes with the kernel
we're adding and install it into $ENTRY_DIR_ABS and add a devicetree
stanza to the loader entry.

Unfortunately it seems there is no common consensus on where to install
device tree blobs, so we have to look in a few different places for it.

2 years agorpm: add %systemd_user_daemon_reexec 28521/head
Zbigniew Jędrzejewski-Szmek [Fri, 28 Jul 2023 17:24:58 +0000 (19:24 +0200)] 
rpm: add %systemd_user_daemon_reexec

This macros wraps the call to daemon-reexec in all user managers. It would be
called for example from systemd %post right after the call to systemctl
daemon-reexec.

This will be used in the Fedora systemd package to fix a long-standing FIXME.

Tested via building and reinstalling the systemd package with the patches.

2 years agorpm: use rpm.execute() in more cases
Zbigniew Jędrzejewski-Szmek [Fri, 28 Jul 2023 17:03:21 +0000 (19:03 +0200)] 
rpm: use rpm.execute() in more cases

7bde8293a4f4ccfe4b5c5000869068e3c1ac45c6 converted all the posix.execp()
calls, but I do not see why we shouldn't also convert the posix.exec()
calls.

2 years agorpm: add %systemd_postun_with_reload and %systemd_user_postun_with_reload
Zbigniew Jędrzejewski-Szmek [Wed, 26 Jul 2023 07:02:04 +0000 (09:02 +0200)] 
rpm: add %systemd_postun_with_reload and %systemd_user_postun_with_reload

For some units, the package would like to issue a reload. The machinery was
already in place since c9615f73521986b3607b852c139036d58973043c:

  systemctl reload-or-restart --marked

  Enqueues restart jobs for all units that have the 'needs-restart'
  mark, and reload jobs for units that have the 'needs-reload' mark.
  When a unit marked for reload does not support reload, restart will
  be queued.

The new macros allow a reload to be issued instead of a restart.

Based on the discussion on fedora-devel:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/IJSUGIEJNYZZRE53FF4YFUEBRHRAVIXR/

Tested using dummy package https://github.com/keszybz/rpm-test-reload.

2 years agomanager: fix reloading in reload-or-restart --marked
Zbigniew Jędrzejewski-Szmek [Fri, 28 Jul 2023 15:54:59 +0000 (17:54 +0200)] 
manager: fix reloading in reload-or-restart --marked

bus_unit_queue_job_one has two callers:
- bus_unit_queue_job which would do the appropriate transormations
  to turn JOB_TRY_RESTART into JOB_TRY_RELOAD,
- and method_enqueue_marked_jobs which did not.
In effect, method_enqueue_marked_jobs() would queue restart jobs for
units which has Markers= needs-reload or needs-restart.

When the chunk of code which does the transformations is moved from
bus_unit_queue_job to bus_unit_queue_job_one, there is no change for
bus_unit_queue_job, and method_enqueue_marked_jobs is fixed.

The additional checks that are done seem reasonable to do from
method_enqueue_marked_jobs: we shouldn't be restarting units which are
configured to not allow that, or force unwanted start of dbus-broker.

2 years agoTeach 60-ukify.install to search the staging dir
Marc Pervaz Boocha [Sun, 30 Jul 2023 17:05:39 +0000 (22:35 +0530)] 
Teach 60-ukify.install to search the staging dir

60-ukify.install would only work with initrd provided by command line
arguements. Fixed to look for both microcode and initrd is found in
$KERNEL_INSTALL_STAGING_AREA which is placed by initrd generator like
mkinitcpio

2 years agoMerge pull request #28627 from yuwata/udev-default-children-max
Lennart Poettering [Mon, 7 Aug 2023 09:36:20 +0000 (11:36 +0200)] 
Merge pull request #28627 from yuwata/udev-default-children-max

udev: allow to set 0 for the maximum number of worker process

2 years agorepart: Stat temporary file again after mkfs
Daan De Meyer [Sat, 5 Aug 2023 17:31:09 +0000 (19:31 +0200)] 
repart: Stat temporary file again after mkfs

This makes sure we use the actual size after mkfs which seems to be
important for btrfs as it refuses to mount the partition otherwise.

Follow-up for 2843df3e5734aa07b82b96ba46b799921a6495b8

2 years agoshared/fstab-util: use is_device_path instead of is_device_node
Mike Yuan [Sat, 5 Aug 2023 14:31:24 +0000 (22:31 +0800)] 
shared/fstab-util: use is_device_path instead of is_device_node

Follow-up for 99299d0d5a722812cedc0a23e4987f90a257c2d2

is_device_node() calls lstat(), causing device node
symlinks under /dev/disk/ not being compared correctly
using devnode_same().

Fixes #28585

2 years agoukify: don't panic when prepending to an undefined list
Frantisek Sumsal [Sat, 5 Aug 2023 14:35:09 +0000 (16:35 +0200)] 
ukify: don't panic when prepending to an undefined list

Handle the case when all the arguments are passed in through a
configuration file:

$ cat ukify.conf
[UKI]
Linux = /boot/vmlinuz-linux
Initrd = /boot/initramfs-linux.img

Before:
$ src/ukify/ukify.py --config ukify.conf build
Traceback (most recent call last):
  File "/root/systemd/src/ukify/ukify.py", line 1604, in <module>
    main()
  File "/root/systemd/src/ukify/ukify.py", line 1590, in main
    opts = parse_args()
           ^^^^^^^^^^^^
  File "/root/systemd/src/ukify/ukify.py", line 1584, in parse_args
    apply_config(opts)
  File "/root/systemd/src/ukify/ukify.py", line 1431, in apply_config
    item.apply_config(namespace, section_name, group, key, value)
  File "/root/systemd/src/ukify/ukify.py", line 1123, in apply_config
    self.config_push(namespace, group, dest, value)
  File "/root/systemd/src/ukify/ukify.py", line 1019, in config_list_prepend
    setattr(namespace, dest, value + old)
                             ~~~~~~^~~~~
TypeError: can only concatenate list (not "NoneType") to list

After:
$ src/ukify/ukify.py --config ukify.conf build
Kernel version not specified, starting autodetection 😖.
Found uname version: 6.4.7-arch1-3
Wrote unsigned vmlinuz-linux.unsigned.efi

Resolves: #28688

2 years agoman: update document about the maximum number of child processes 28627/head
Yu Watanabe [Tue, 1 Aug 2023 16:19:37 +0000 (01:19 +0900)] 
man: update document about the maximum number of child processes

2 years agoudev: allow to set the maximum number of worker process to 0
Yu Watanabe [Tue, 1 Aug 2023 16:14:04 +0000 (01:14 +0900)] 
udev: allow to set the maximum number of worker process to 0

In that case, the maximum is calculated based on the system resources.

2 years agoudev: split out manager_set_default_children_max()
Yu Watanabe [Tue, 1 Aug 2023 16:07:12 +0000 (01:07 +0900)] 
udev: split out manager_set_default_children_max()

2 years agoman/systemd: avoid duplicate variable name
Mike Yuan [Sat, 5 Aug 2023 04:35:17 +0000 (12:35 +0800)] 
man/systemd: avoid duplicate variable name

2 years agotest: ignore missing libudev when creating the test image
Frantisek Sumsal [Fri, 4 Aug 2023 16:02:01 +0000 (18:02 +0200)] 
test: ignore missing libudev when creating the test image

Same scenario as with libsystemd - ldd might use unprefixed RPATH, and
we install our own stuff into the image unconditionally anyway.

Also, bail out early if we hit a missing DSO with a possibly helpful
message.

2 years agotpm2: use ELEMENTSOF() instead of sizeof() for TPML_PCR_SELECTION pcrSelections field
Dan Streetman [Fri, 4 Aug 2023 20:12:05 +0000 (16:12 -0400)] 
tpm2: use ELEMENTSOF() instead of sizeof() for TPML_PCR_SELECTION pcrSelections field

The count field indicates the number of elements in the pcrSelections field,
and the size of each elements is greater than 1 byte, so using sizeof() is
incorrect when verifying the count field is valid; instead ELEMENTSOF() should
be used.

Caught by coverity check: https://github.com/systemd/systemd/pull/26331#pullrequestreview-1556629586

2 years agoMerge pull request #28681 from yuwata/udev-vs-tmpfiles
Yu Watanabe [Sat, 5 Aug 2023 04:30:49 +0000 (13:30 +0900)] 
Merge pull request #28681 from yuwata/udev-vs-tmpfiles

Udev vs tmpfiles

2 years agoMerge pull request #28398 from ddstreet/tpm2_specify_pcr_value
Luca Boccassi [Fri, 4 Aug 2023 20:04:03 +0000 (21:04 +0100)] 
Merge pull request #28398 from ddstreet/tpm2_specify_pcr_value

Tpm2 specify pcr value

2 years agotest: shorten timeout for 'udevadm monitor' 28681/head
Yu Watanabe [Fri, 4 Aug 2023 20:03:16 +0000 (05:03 +0900)] 
test: shorten timeout for 'udevadm monitor'

The command should never finish, it is not necessary to wait so long.

2 years agotest: add short test for device node permission
Yu Watanabe [Fri, 4 Aug 2023 19:52:16 +0000 (04:52 +0900)] 
test: add short test for device node permission

2 years agounit: make udev rules take precesence over tmpfiles
Yu Watanabe [Fri, 4 Aug 2023 19:37:19 +0000 (04:37 +0900)] 
unit: make udev rules take precesence over tmpfiles

Without this change, there are no ordering between udevd and tmpfiles,
and if tmpfiles is invoked later it may discard the permission set by
udevd.

Fixes an issue introduced by b42482af904ae0b94a6e4501ec595448f0ba1c06.

Fixes #28588 and #28653.

2 years agoRevert "tmpfiles.d: adjust /dev/vfio/vfio access mode"
Yu Watanabe [Fri, 4 Aug 2023 19:32:01 +0000 (04:32 +0900)] 
Revert "tmpfiles.d: adjust /dev/vfio/vfio access mode"

The issue needs to be fixed by setting proper ordering between the
tmpfiles and udevd.

See issue #28653, especially
https://github.com/systemd/systemd/issues/28653#issuecomment-1665181625.

This reverts commit a3d610998ad3b4c88224fe89a048a84dbceb652b.

2 years agojournalctl: fix loggging invocation
Zbigniew Jędrzejewski-Szmek [Fri, 4 Aug 2023 17:08:43 +0000 (18:08 +0100)] 
journalctl: fix loggging invocation

Fixup for f882a986c271c3de1c622df0f1586946b4a09fef.

2 years agoMerge pull request #28679 from keszybz/two-new-news-tweaks
Luca Boccassi [Fri, 4 Aug 2023 18:24:46 +0000 (19:24 +0100)] 
Merge pull request #28679 from keszybz/two-new-news-tweaks

Two news tweaks

2 years agoMerge pull request #28669 from DaanDeMeyer/mkosi-fix
Daan De Meyer [Fri, 4 Aug 2023 18:16:55 +0000 (20:16 +0200)] 
Merge pull request #28669 from DaanDeMeyer/mkosi-fix

mkosi: Make sure our systemd build always overrides the distros

2 years agotmpfiles: Consider ENOPKG as information not available
Daan De Meyer [Fri, 4 Aug 2023 14:12:35 +0000 (16:12 +0200)] 
tmpfiles: Consider ENOPKG as information not available

We already handle the case where /etc/machine-id is empty. Let's make
sure we also handle the case where /etc/machine-id is "uninitialized".

2 years agoportablectl: fix regression when using --force without extension parameters
Luca Boccassi [Fri, 4 Aug 2023 12:34:00 +0000 (13:34 +0100)] 
portablectl: fix regression when using --force without extension parameters

c18f4eb9e96836a made it possible to use --force with various verbs, by
going through the newer D-Bus methods. Except it didn't, as it regressed
during PR review refactorings, and nobody noticed because there were no
tests for it. Fix it, and add tests.

Follow-up for c18f4eb9e96836a6a8285ec42fd8a34c8909f6d9

2 years agoMerge pull request #28673 from YHNdnzj/hibernate-resume-escape-node
Luca Boccassi [Fri, 4 Aug 2023 15:46:56 +0000 (16:46 +0100)] 
Merge pull request #28673 from YHNdnzj/hibernate-resume-escape-node

hibernate-resume-generator: escape device path passed to hibernate-resume

2 years agotpm2: update TEST-70-TPM2 to test passing PCR value to systemd-cryptenroll 28398/head
Dan Streetman [Thu, 13 Jul 2023 20:02:37 +0000 (16:02 -0400)] 
tpm2: update TEST-70-TPM2 to test passing PCR value to systemd-cryptenroll

Add tests to use expected, not current, PCR values during sealing.

2 years agoman: update systemd-cryptenroll man page with details on --tpm2-pcrs format change
Dan Streetman [Fri, 14 Jul 2023 22:36:20 +0000 (18:36 -0400)] 
man: update systemd-cryptenroll man page with details on --tpm2-pcrs format change

The previous commit extended the accepted format of --tpm2-pcrs to allow
specifying the hash algorithm (i.e. PCR bank) and hash digest value, this
updates the man page with those changes.

2 years agotpm2: move policy calculation out of tpm2_seal()
Dan Streetman [Wed, 12 Jul 2023 21:35:54 +0000 (17:35 -0400)] 
tpm2: move policy calculation out of tpm2_seal()

Move the calculation of the sealed object policy hash out of the tpm2_seal()
function. Instead, callers of tpm2_seal() can directly call
tpm2_calculate_sealing_policy() and then provide the policy hash to
tpm2_seal().

2 years agotpm2: add functions to convert TPM2B_PUBLIC to/from openssl pkey or PEM
Dan Streetman [Tue, 27 Jun 2023 19:03:08 +0000 (15:03 -0400)] 
tpm2: add functions to convert TPM2B_PUBLIC to/from openssl pkey or PEM

Add functions to convert a PEM or pkey to TPM2B_PUBLIC, and functions to
convert TPM2B_PUBLIC to pkey or fingerprint.

Supports both RSA and ECC keys.

Add ECC support to some test-tpm2 tests, and tests to cover the newly added functions.

2 years agoopenssl: add test-openssl
Dan Streetman [Thu, 6 Jul 2023 15:21:29 +0000 (11:21 -0400)] 
openssl: add test-openssl

Add openssl unit tests.

2 years agotest: add DEFINE_HEX_PTR() helper function
Dan Streetman [Thu, 6 Jul 2023 15:21:29 +0000 (11:21 -0400)] 
test: add DEFINE_HEX_PTR() helper function

Use function in test-tpm2 to convert hex strings to void* and len vars.

2 years agoopenssl: add ecc_pkey_new(), ecc_pkey_from_curve_x_y(), ecc_pkey_to_curve_x_y()
Dan Streetman [Tue, 4 Jul 2023 22:52:59 +0000 (18:52 -0400)] 
openssl: add ecc_pkey_new(), ecc_pkey_from_curve_x_y(), ecc_pkey_to_curve_x_y()

Add function to create openssl pkey from ECC curve and point, and function to
get curve id and x/y point from existing ECC pkey. Also add function to create
new ECC key for specified curve.

Also add DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_MACRO() to handle case when func() is
a macro, not a function symbol; specifically in this case it is used for
OPENSSL_free() which is a macro.

2 years agoopenssl: add rsa_pkey_new(), rsa_pkey_from_n_e(), rsa_pkey_to_n_e()
Dan Streetman [Tue, 27 Jun 2023 18:53:46 +0000 (14:53 -0400)] 
openssl: add rsa_pkey_new(), rsa_pkey_from_n_e(), rsa_pkey_to_n_e()

Add function to generate an EVP_PKEY for a specific 'n' and 'e', and function
to get 'n' and 'e' values from existing RSA public key. Also add a function to
generate a new RSA key with a specified number of bits.

2 years agoopenssl: add openssl_pkey_from_pem()
Dan Streetman [Wed, 19 Jul 2023 02:48:34 +0000 (22:48 -0400)] 
openssl: add openssl_pkey_from_pem()

Add function to create EVP_PKEY from PEM buffer.

2 years agotpm2: add tpm2_pcr_read_missing_values()
Dan Streetman [Tue, 18 Jul 2023 16:56:25 +0000 (12:56 -0400)] 
tpm2: add tpm2_pcr_read_missing_values()

Add function to read all unset values in an array of Tpm2PCRValue entries.

Also publish tpm2_pcr_read() in header.

2 years agotpm2: add TPM2B_*_MAKE(), TPM2B_*_CHECK_SIZE() macros
Dan Streetman [Wed, 19 Jul 2023 11:49:07 +0000 (07:49 -0400)] 
tpm2: add TPM2B_*_MAKE(), TPM2B_*_CHECK_SIZE() macros

The tpm2-tss library has many structs with only an array and size; these macros
make it easy to assign to these structs.

2 years agotpm2: change tpm2_parse_pcr_argument() parameters to parse to Tpm2PCRValue array
Dan Streetman [Thu, 13 Jul 2023 02:36:37 +0000 (22:36 -0400)] 
tpm2: change tpm2_parse_pcr_argument() parameters to parse to Tpm2PCRValue array

In order to allow users to specify expected PCR values, change the
tpm2_parse_pcr_argument() to parse the text argument into an array of
Tpm2PCRValue objects, which provide not only the selected PCR indexes, but also
(optionally) the hash algorithm and hash value for each PCR index.

2 years agotpm2: change tpm2_calculate_policy_pcr(), tpm2_calculate_sealing_policy() to use...
Dan Streetman [Thu, 13 Jul 2023 02:14:18 +0000 (22:14 -0400)] 
tpm2: change tpm2_calculate_policy_pcr(), tpm2_calculate_sealing_policy() to use Tpm2PCRValue array

An array of Tpm2PCRValue objects effectively replaces a TPML_PCR_SELECTION
object combined with an array of (properly ordered) TPM2B_DIGEST objects.

Also update tpm2_calculate_sealing_policy() pin parameter to boolean use_pin,
since the function does not need to know the pin value, only if a pin is being
used.

2 years agotpm2: declare tpm2_log_debug_*() functions in tpm2_util.h
Dan Streetman [Fri, 14 Jul 2023 11:23:55 +0000 (07:23 -0400)] 
tpm2: declare tpm2_log_debug_*() functions in tpm2_util.h

Allow other code to use the log debug functions; e.g. they are useful in test
code.

2 years agotpm2: move declared functions in header lower down
Dan Streetman [Fri, 14 Jul 2023 15:38:11 +0000 (11:38 -0400)] 
tpm2: move declared functions in header lower down

Move some function declarations lower down, below the Tpm2Context and
Tpm2Handle typedefs; later commits will reference the typedefs in some of the
functions, so the typedefs need to come first in the header.

This only moves the declarations, none of the declarations are modified.

2 years agotpm2: add Tpm2PCRValue struct and associated functions
Dan Streetman [Wed, 12 Jul 2023 01:23:36 +0000 (21:23 -0400)] 
tpm2: add Tpm2PCRValue struct and associated functions

Add a new struct that can represent a PCR index, hash, and value all
together. This replaces code (e.g. the tpm2_pcr_read() parameters) that
required using both a TPML_PCR_SELECTION as well as array of TPM2B_DIGEST
entries, which was difficult to correlate the selection hash/index to each
digest.

2 years agotpm2: add more helper functions for managing TPML_PCR_SELECTION and TPMS_PCR_SELECTION
Dan Streetman [Wed, 19 Jul 2023 12:50:06 +0000 (08:50 -0400)] 
tpm2: add more helper functions for managing TPML_PCR_SELECTION and TPMS_PCR_SELECTION

Add more functions to help manage these objects.

2 years agotpm2: change tpm2_tpm*_pcr_selection_to_mask() to return mask
Dan Streetman [Tue, 1 Aug 2023 16:55:17 +0000 (12:55 -0400)] 
tpm2: change tpm2_tpm*_pcr_selection_to_mask() to return mask

This simplifies use of the functions, as well as avoiding the use of -ENOENT
from tpm2_tpml_pcr_selection_to_mask().

2 years agotpm2: add tpm2_hash_alg_to_size()
Dan Streetman [Tue, 11 Jul 2023 15:11:59 +0000 (11:11 -0400)] 
tpm2: add tpm2_hash_alg_to_size()

Add function to get the hash size for a hash algorithm

2 years agotpm2: add debug logging to functions converting hash or asym algs to/from strings...
Dan Streetman [Tue, 1 Aug 2023 18:09:04 +0000 (14:09 -0400)] 
tpm2: add debug logging to functions converting hash or asym algs to/from strings or ids

Add debug log message if the algorithm name or id is not known.

2 years agomkosi: Use SuccessActionExitStatus= in mkosi-check-and-shutdown.service 28669/head
Daan De Meyer [Fri, 4 Aug 2023 14:27:11 +0000 (16:27 +0200)] 
mkosi: Use SuccessActionExitStatus= in mkosi-check-and-shutdown.service

2 years agomkosi: Make sure our systemd build always overrides the distros
Daan De Meyer [Fri, 4 Aug 2023 08:40:30 +0000 (10:40 +0200)] 
mkosi: Make sure our systemd build always overrides the distros

Currently, we install the systemd install tree in the base image and
then build the initrd and final images from the base image. This means
if that any systemd package is pulled in during the initrd or final
image builds, it will override our version.

To fix this, we stop installing our build of systemd in the base image,
and store it in the output directory instead. That allows us to refer to
it using ExtraTrees= in the final and initrd image builds to install it
after all the distro packages have been installed, ensuring our version
always takes priority.

2 years agomkosi: Update to latest
Daan De Meyer [Fri, 4 Aug 2023 14:48:58 +0000 (16:48 +0200)] 
mkosi: Update to latest

2 years agotest-user-util: Drop tty check in gid_to_name() test
Daan De Meyer [Fri, 4 Aug 2023 13:23:16 +0000 (15:23 +0200)] 
test-user-util: Drop tty check in gid_to_name() test

The tty user is not guaranteed to exist, so let's remove the dependency
from the test.

2 years agoNEWS: adjust grammar 28679/head
Zbigniew Jędrzejewski-Szmek [Wed, 2 Aug 2023 14:01:50 +0000 (15:01 +0100)] 
NEWS: adjust grammar

2 years agoNEWS: expand list of new Startup* settings
Zbigniew Jędrzejewski-Szmek [Wed, 2 Aug 2023 14:01:40 +0000 (15:01 +0100)] 
NEWS: expand list of new Startup* settings

This way users can grep/search the NEWS file for when a given setting was
added.

2 years agotimesyncd: emit signal when timesyncd NTPServers property changes
Kingbom Dou [Wed, 7 Jun 2023 06:57:21 +0000 (14:57 +0800)] 
timesyncd: emit signal when timesyncd NTPServers property changes

Emit signal when timesyncd LinkNTPServers property changes

Tested:
```
 Monitoring bus message stream.
```
```
> Type=signal  Endian=l  Flags=1  Version=1 Cookie=21  Timestamp="Fri 2023-05-19 07:50:47.427051 UT"
  Sender=:1.623  Path=/org/freedesktop/timesync1  Interface=org.freedesktop.DBus.Properties  Memberd
  UniqueName=:1.623
  MESSAGE "sa{sv}as" {
          STRING "org.freedesktop.timesync1.Manager";
          ARRAY "{sv}" {
                  DICT_ENTRY "sv" {
                          STRING "LinkNTPServers";
                          VARIANT "as" {
                                  ARRAY "s" {
                                          STRING "10.8.8.18";
                                          STRING "10.8.8.19";
                                  };
                          };
                  };
          };
          ARRAY "s" {
          };
  };
```
```
> Type=signal  Endian=l  Flags=1  Version=1 Cookie=28  Timestamp="Fri 2023-05-19 07:53:22.609416 UT"
  Sender=:1.623  Path=/org/freedesktop/timesync1  Interface=org.freedesktop.DBus.Properties  Memberd
  UniqueName=:1.623
  MESSAGE "sa{sv}as" {
          STRING "org.freedesktop.timesync1.Manager";
          ARRAY "{sv}" {
                  DICT_ENTRY "sv" {
                          STRING "LinkNTPServers";
                          VARIANT "as" {
                                  ARRAY "s" {
                                          STRING "10.8.8.18";
                                          STRING "10.8.8.20";
                                  };
                          };
                  };
          };
          ARRAY "s" {
          };
  };
```
```
> Type=signal  Endian=l  Flags=1  Version=1 Cookie=6  Timestamp="Fri 2023-05-19 08:12:26.964666 UTC"
  Sender=:1.627  Path=/org/freedesktop/timesync1  Interface=org.freedesktop.DBus.Properties  Memberd
  UniqueName=:1.627
  MESSAGE "sa{sv}as" {
          STRING "org.freedesktop.timesync1.Manager";
          ARRAY "{sv}" {
                  DICT_ENTRY "sv" {
                          STRING "LinkNTPServers";
                          VARIANT "as" {
                                  ARRAY "s" {
                                          STRING "10.8.8.18";
                                  };
                          };
                  };
          };
          ARRAY "s" {
          };
  };
```
```
> Type=signal  Endian=l  Flags=1  Version=1 Cookie=162  Timestamp="Mon 2023-07-10 09:06:18.865654 UTC"
  Sender=:1.1  Path=/org/freedesktop/timesync1  Interface=org.freedesktop.DBus.Properties  Member=PropertiesChanged
  UniqueName=:1.1
  MESSAGE "sa{sv}as" {
          STRING "org.freedesktop.timesync1.Manager";
          ARRAY "{sv}" {
                  DICT_ENTRY "sv" {
                          STRING "RuntimeNTPServers";
                          VARIANT "as" {
                                  ARRAY "s" {
                                          STRING "10.2.16.10";
                                  };
                          };
                  };
          };
          ARRAY "s" {
          };
  };
```

Signed-off-by: Kingbom Dou <doujinbao@bytedance.com>
2 years agohibernate-resume-generator: escape device path passed to hibernate-resume 28673/head
Mike Yuan [Fri, 4 Aug 2023 12:41:46 +0000 (20:41 +0800)] 
hibernate-resume-generator: escape device path passed to hibernate-resume

Follow-up for #27330

Fixes #28668

2 years agoman/systemd.unit: DefaultTimeoutStartSec= -> DefaultDeviceTimeoutSec=
Mike Yuan [Fri, 4 Aug 2023 12:49:15 +0000 (20:49 +0800)] 
man/systemd.unit: DefaultTimeoutStartSec= -> DefaultDeviceTimeoutSec=
for device unit job timeouts

Follow-up for #24044

2 years agoman/systemd-fsck@.service: clarify passno and noauto combination in /etc/fstab
Antonio Alvarez Feijoo [Fri, 4 Aug 2023 09:16:02 +0000 (11:16 +0200)] 
man/systemd-fsck@.service: clarify passno and noauto combination in /etc/fstab

Fixes #28657

2 years agodebug-generator: Use generator_add_symlink()
Daan De Meyer [Fri, 4 Aug 2023 06:25:53 +0000 (08:25 +0200)] 
debug-generator: Use generator_add_symlink()

2 years agotpm2: use CreatePrimary() to create primary keys instead of Create()
Dan Streetman [Thu, 3 Aug 2023 18:44:57 +0000 (14:44 -0400)] 
tpm2: use CreatePrimary() to create primary keys instead of Create()

Older versions used CreatePrimary() to create a transient primary key to use
when creating a sealed data object. That was changed in v254 to use Create()
instead, which should result in the same transient key, but it seems some
hardware TPMs refuse to allow using Create() to generate primary keys.

This reverts to using CreatePrimary() to create primary key.

Fixes: #28654
2 years agoMerge pull request #28648 from yuwata/shutdown-skip-recursive-mount-run
Mike Yuan [Fri, 4 Aug 2023 04:45:32 +0000 (12:45 +0800)] 
Merge pull request #28648 from yuwata/shutdown-skip-recursive-mount-run

shutdown: several fixlets

2 years agotree-wide: Fix -Wmaybe-uninitialized compilation warnings
Daan De Meyer [Thu, 3 Aug 2023 20:38:10 +0000 (22:38 +0200)] 
tree-wide: Fix -Wmaybe-uninitialized compilation warnings

2 years agoAdd tool to display emergency log message full-screen on boot failure.
OMOJOLA JOSHUA [Mon, 19 Jun 2023 14:16:23 +0000 (15:16 +0100)] 
Add tool to display emergency log message full-screen on boot failure.

2 years agoswitch-root: reopen target directory after it is mounted 28648/head
Yu Watanabe [Thu, 3 Aug 2023 19:03:29 +0000 (04:03 +0900)] 
switch-root: reopen target directory after it is mounted

Fixes a bug introduced by f717d7a40a696b351415976f22a4f498c401de41.

2 years agoshutdown: do not umount recursively before MS_MOVE
Yu Watanabe [Wed, 2 Aug 2023 19:19:14 +0000 (04:19 +0900)] 
shutdown: do not umount recursively before MS_MOVE

Unmounting filesystem will be done gracefully by shutdown itself.

Follow-up for f2c1d491a539035d6cc1fa53a7cef0cbc8d52902 and
268d1244e87a35ff8dff56c92ef375ebf69d462e.

2 years agoshutdown: disable recursive mount of /run/ on switching root
Yu Watanabe [Wed, 2 Aug 2023 17:50:09 +0000 (02:50 +0900)] 
shutdown: disable recursive mount of /run/ on switching root

Mounting /run/ recursively may be harmless, but not necessary on
shutdown as the new root is /run/initramfs.

Follow-up for b12d41a8bb7c99f7d7a1c7821a886d98b42d9ce0.

2 years agopo: Translated using Weblate (Turkish)
Oğuz Ersen [Thu, 3 Aug 2023 17:21:04 +0000 (19:21 +0200)] 
po: Translated using Weblate (Turkish)

Currently translated at 88.1% (200 of 227 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/tr/
Translation: systemd/main

2 years agovconsole: support KEYMAP=kernel for preserving kernel keymap
Mike Yuan [Thu, 3 Aug 2023 13:42:00 +0000 (21:42 +0800)] 
vconsole: support KEYMAP=kernel for preserving kernel keymap

Follow-up for #26089 and #28505

Currently, if default-keymap is not empty, there's no way
to ask vconsole-setup to retain the kernel keymap. Let's
accept a special value "kernel" for that purpose.

Addresses the problem mentioned in https://github.com/systemd/systemd/pull/28505#issuecomment-1663681665