]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
2 days agocore: use proper service type of TEST-07-PID.user-namespace-path.sh
Quentin Deslandes [Tue, 4 Nov 2025 13:45:15 +0000 (14:45 +0100)] 
core: use proper service type of TEST-07-PID.user-namespace-path.sh

TEST-07-PID.user-namespace-path.sh is flaky as Type=simple is used
(implicitly), explicitly use Type=exec instead to ensure the namespaces
are created before starting another service reusing the same namespaces.

Fixes #39546.

2 days agotest: stop piping post-test journalctl commands to /failed
Luca Boccassi [Tue, 4 Nov 2025 12:51:09 +0000 (12:51 +0000)] 
test: stop piping post-test journalctl commands to /failed

We can't see what the actual issues are when tests fail at that point, eg:

https://github.com/systemd/systemd/actions/runs/19034752357/job/54356278052

2 days agovarlink-idl: add infra to test our enum parsers against varlink IDL enums
Lennart Poettering [Tue, 4 Nov 2025 09:35:00 +0000 (10:35 +0100)] 
varlink-idl: add infra to test our enum parsers against varlink IDL enums

In many cases we want to expose enums for which we have the usual
xyz_to_string()/xyz_from_string() via Varlink as enums. Let's add some
infra to test the tables against each other, to automatically detect
when they deviate.

In order to implement this properly, let's export/introduce clean
json_underscorefy()/json_dashify(), for dealing with the fact that our
enums usually use dash separates ames, but Varlink doesn't allow that.

(This does not add the test cases for all enum types we expose right
now, but only adds the general infra).

2 days agocore: Add UserNamespacePath=
Quentin Deslandes [Fri, 17 Oct 2025 13:37:02 +0000 (15:37 +0200)] 
core: Add UserNamespacePath=

This allows a service to reuse the user namespace created for an
existing service, similarly to NetworkNamespacePath=. The configuration
is the initial user namespace (e.g. ID mapping) is preserved.

3 days agomkosi: update fedora commit reference to 8e2833a5b64f7e2ce62ea0a2d0ec9e393e718dfa
Zbigniew Jędrzejewski-Szmek [Mon, 3 Nov 2025 11:19:37 +0000 (12:19 +0100)] 
mkosi: update fedora commit reference to 8e2833a5b64f7e2ce62ea0a2d0ec9e393e718dfa

8e2833a5b6 Automatically figure out the name of the top-level tar dir
dffbf2beba Make sure fallback source is listed first
1d3b892105 Enable sysupdate and sysupdated

3 days agobacklight: fix typo
jouyouyun [Mon, 3 Nov 2025 08:04:33 +0000 (16:04 +0800)] 
backlight: fix typo

3 days agobootctl: fix typo
jouyouyun [Mon, 3 Nov 2025 06:17:35 +0000 (14:17 +0800)] 
bootctl: fix typo

3 days agokernel-install: move staging area to /var/tmp/
Lennart Poettering [Sun, 2 Nov 2025 08:32:16 +0000 (09:32 +0100)] 
kernel-install: move staging area to /var/tmp/

The generated files (UKIs...) can potentially be huge, hence create them
in /var/tmp/, rather than /tmp/.

3 days agoAdd support for nvindex-based additional PCRs for TPM2, aka "NvPCRs" (#39463)
Lennart Poettering [Mon, 3 Nov 2025 08:00:41 +0000 (09:00 +0100)] 
Add support for nvindex-based additional PCRs for TPM2, aka "NvPCRs"  (#39463)

This is based on the code from #33276, but is cleaned up, and goes for a
modified approach:

the original PR allocated nvindexes fully dynamically, and that created
big headaches, because the assignments needed to be propagated into the
early boot process, and that meant stuffing them as sidecards to the
boot UKIs.

The TCG then offered us a fixed nvindex range assigned to us, and
happily said yes to that, but since then the discussion stalled, we
couldn't get any answer from TCG on this anymore.

This code uses the range that was hinted to us to use, but not
officially assigned to us by default, but makes it build time
configurable so that downstreams can change this.

(This does *not* make it runtime configurable, because that's really
hard, because of the early boot issue again).

This PR comes with a CI test and full docs. And I think this is really a
version should that be merged.

Fixes: https://github.com/systemd/systemd/issues/29877
4 days agodoc: document NvPCRs briefly 39463/head
Lennart Poettering [Fri, 31 Oct 2025 17:16:07 +0000 (18:16 +0100)] 
doc: document NvPCRs briefly

4 days agoci: add some test for the new nvpcr infra
Lennart Poettering [Mon, 27 Oct 2025 11:55:02 +0000 (12:55 +0100)] 
ci: add some test for the new nvpcr infra

4 days agoci: never go to raw tpm device, always go via resource manager
Lennart Poettering [Mon, 27 Oct 2025 15:15:41 +0000 (16:15 +0100)] 
ci: never go to raw tpm device, always go via resource manager

4 days agoanalyze: add new verb for determining NvPCR values
Lennart Poettering [Tue, 4 Jun 2024 09:03:39 +0000 (11:03 +0200)] 
analyze: add new verb for determining NvPCR values

4 days agocryptsetup: automatically measure used keyslot and mechanism (i.e. fido2, tpm2, pkcs1...
Lennart Poettering [Mon, 10 Jun 2024 16:24:58 +0000 (18:24 +0200)] 
cryptsetup: automatically measure used keyslot and mechanism (i.e. fido2, tpm2, pkcs11) to an NvPCR

Fixes: #29877
4 days agotpm2-setup: measure "anchor" extension early at boot into nvpcrs
Lennart Poettering [Tue, 4 Jun 2024 16:16:03 +0000 (18:16 +0200)] 
tpm2-setup: measure "anchor" extension early at boot into nvpcrs

4 days agotpm2-setup: split out SRK setup into a function of its own
Lennart Poettering [Tue, 4 Jun 2024 14:36:39 +0000 (16:36 +0200)] 
tpm2-setup: split out SRK setup into a function of its own

4 days agopcrextend: automatically measure SMBIOS product ID at boot
Lennart Poettering [Tue, 4 Jun 2024 10:01:10 +0000 (12:01 +0200)] 
pcrextend: automatically measure SMBIOS product ID at boot

Now that PCRs are not that expensive anymore, let's use them to measure
the SMBIOS product ID to one.

4 days agopcrextend: make use new nvindex-based PCRs
Lennart Poettering [Mon, 3 Jun 2024 19:44:50 +0000 (21:44 +0200)] 
pcrextend: make use new nvindex-based PCRs

4 days agocatalog: improve PCR extended catalog entry
Lennart Poettering [Fri, 31 Oct 2025 16:56:41 +0000 (17:56 +0100)] 
catalog: improve PCR extended catalog entry

4 days agotpm2-util: add infra for allocating nvindex-based PCRs (aka "NvPCRs")
Lennart Poettering [Mon, 10 Jun 2024 13:55:54 +0000 (15:55 +0200)] 
tpm2-util: add infra for allocating nvindex-based PCRs (aka "NvPCRs")

We'd like to measure various additional things into PCRs, but all
available ones to the OS are already used for various purposes. Hence,
let's introduce a new concept of "NV Index based PCRs", i.e. let's use
TPM2 nv indexes of type TPM2_NT_EXTEND that mostly behave like real
PCRs, but which we can allocate relatively freely from the nv index
space. Let's call these "fake" PCRs "NvPCRs".

My original intention was to get a fixed NV index range assigned from
the TCG, either for Linux or for systemd as a project, but this stalled
with no further updates from the TCG for more than a year and a half
now. I was told an NV index range to use though, even if it never was
officially assigned, hence this PR uses this by default. But the range
is configurable at build time, on purpose, so that downstreams have some
flexibility to change this if they want. To abstract the actual nvindex
number away we introduce a naming concept, so that nvindexes are
referenced by name string rather than number.

NvPCRs are defined in little JSON snippets in /usr/lib/nvpcr/*.nvpcr,
that match up index number and name, as well as pick a hash algorithm.

There's one complication: these nvindex (like any nvindex) can be
deleted by anyone with access to the TPM, and then be recreated. This
could be used to reset the NvPCRs to zero during runtime, which defeats
the whole point of them. Our way out: we measure a secret as first thing
after creation into the NvPCRs. (Or actually, we measure a per-NvPCR
secret we derive from a system secret via an HMAC of the NvPCR name) and
the nvindex handle). This "anchoring" secret is stored in /run/ +
/var/lib/ + ESP/XBOOTLDR (the latter encrypted as credential, locked to
the TPM), to make it available at the whole runtime of the OS.

4 days agotpm2-util: move parse for tpm2 hash algorithms up
Lennart Poettering [Mon, 3 Jun 2024 19:40:52 +0000 (21:40 +0200)] 
tpm2-util: move parse for tpm2 hash algorithms up

4 days agotpm2-util: make tpm2_undefine_policy_nv_index() generic
Lennart Poettering [Mon, 3 Jun 2024 15:56:35 +0000 (17:56 +0200)] 
tpm2-util: make tpm2_undefine_policy_nv_index() generic

We can use this to remove any kind of nvindex, hence give it a generic
name.

Also instead of passing "NONE" as session if none is specified, pass
PASSWORD instead, so that the function actually becomes useful if no
session is specified (the only user so far, pcrlock always provides a
session, hence this is no change in behaviour).

4 days agotpm2-util: rename tpm2_extend_bytes()→tpm2_pcr_extend_bytes() and make it take struct...
Lennart Poettering [Mon, 3 Jun 2024 15:44:15 +0000 (17:44 +0200)] 
tpm2-util: rename tpm2_extend_bytes()→tpm2_pcr_extend_bytes() and make it take struct iovec

We soon want to add the ability to extend into nvindexes in addition to
PCRs, hence rename the function to make clear it is about pcr extension.

While we are at it, switch things over to "struct iovec" as we generally
try to do it now in tpm2-util.[ch] these days.

4 days agopcrlock: make sure we can parse nv_index measurement records in TCG CEL
Lennart Poettering [Wed, 5 Jun 2024 19:45:50 +0000 (21:45 +0200)] 
pcrlock: make sure we can parse nv_index measurement records in TCG CEL

Make the systemd-pcrlock tool compatible with TCG CEL records that
encode measurements into nvindexes rather than PCRs.

This doesn't add code for actually predicting them, but just makes sure
we can parse them correctly and display them reasonably.

4 days agocreds-util: initialize default PCR mask in encrypt_credential_and_warn()
Lennart Poettering [Mon, 10 Jun 2024 12:58:52 +0000 (14:58 +0200)] 
creds-util: initialize default PCR mask in encrypt_credential_and_warn()

If UINT32_MAX is passed in the PCR masks pick some reasonable defaults
in encrypt_credential_and_warn().

These defaults copy what "systemd-creds encrypt" uses. By adding these
defaults to the internal functions any user of them can take benefit of
them.

4 days agocreds-util: add helper for querying system credential dirs
Lennart Poettering [Mon, 10 Jun 2024 12:53:38 +0000 (14:53 +0200)] 
creds-util: add helper for querying system credential dirs

The dirs are constant string, but let's make them overridable via env
vars for debugging purposes.

4 days agocreds-util: add automatic mode for tpm2 based creds
Lennart Poettering [Thu, 6 Jun 2024 09:25:50 +0000 (11:25 +0200)] 
creds-util: add automatic mode for tpm2 based creds

This reworkds TPM2 based creds a bit. Instead of mapping the key type
"tpm2" directly to a TPM2 key without PK, let's map it to an "automatic"
key type that either picks PK or doesn't, depending on what's available.
That should make things easier to grok for people, as the nitty gritty
details of PK or not PK are made autmatic. Moreover it gives us more
leverage to change the TPM2 enrollment types later (for example, we
definitely want to start pinning SRK, and hook up pcrlock too, for
creds, which we currently don't).

This hence adds a new _CRED_AUTO_TPM2
pseudo-type we automatically maps to CRED_AES256_GCM_BY_TPM2_HMAC_WITH_PK
or CRED_AES256_GCM_BY_TPM2_HMAC depending if PK as available. Similar,
_CRED_AUTO_HOST_AND_TPM2 is added, which does the same for the
host/nonhost cred type.

This does not introduce any new type on the wire, it just changes how we
select the right key type.

To make the code more readable this also adds some categorization macros
for the keys, instead of repeating the list of key types at multiple
places.

4 days agoconf-files: optionally truncate suffix from discovered files
Lennart Poettering [Mon, 27 Oct 2025 11:22:02 +0000 (12:22 +0100)] 
conf-files: optionally truncate suffix from discovered files

4 days agoformat-table: add field type that outputs hex values prefixed with 0x
Lennart Poettering [Tue, 4 Jun 2024 09:04:01 +0000 (11:04 +0200)] 
format-table: add field type that outputs hex values prefixed with 0x

4 days agofileio: add new flag READ_FULL_FILE_VERIFY_REGULAR() that checks if file we operate...
Lennart Poettering [Mon, 10 Jun 2024 12:55:24 +0000 (14:55 +0200)] 
fileio: add new flag READ_FULL_FILE_VERIFY_REGULAR() that checks if file we operate on is regular

4 days agofileio: make filename/path argument optional in xfopenat_full(), read_full_file_full()
Lennart Poettering [Mon, 10 Jun 2024 12:56:11 +0000 (14:56 +0200)] 
fileio: make filename/path argument optional in xfopenat_full(), read_full_file_full()

4 days agoEnhance docs for ukify and direct kernel boots (#39516)
Zbigniew Jędrzejewski-Szmek [Sun, 2 Nov 2025 17:04:15 +0000 (18:04 +0100)] 
Enhance docs for ukify and direct kernel boots (#39516)

4 days agoman: say "systemd-boot" instead of "sd-boot" consistently 39516/head
Zbigniew Jędrzejewski-Szmek [Sun, 2 Nov 2025 14:20:59 +0000 (15:20 +0100)] 
man: say "systemd-boot" instead of "sd-boot" consistently

As requested in

https://github.com/systemd/systemd/pull/39516#pullrequestreview-3407564896.

4 days agoman/ukify: mention all functionality in intro, add example of direct boot
Zbigniew Jędrzejewski-Szmek [Sat, 1 Nov 2025 12:05:41 +0000 (13:05 +0100)] 
man/ukify: mention all functionality in intro, add example of direct boot

Over the time, the functionality in ukify has grown. This should all be briefly
mentioned in the first section so the user does't have to read the whole page
to figure out what types of functionality are implemnted.

Also add an example of direct kernel boot. It's a nifty technology (and frankly
underutilized, considering how cool it is is).

4 days agoman/sd-boot: add some meat to the direct kernel boot example
Zbigniew Jędrzejewski-Szmek [Sat, 1 Nov 2025 11:15:49 +0000 (12:15 +0100)] 
man/sd-boot: add some meat to the direct kernel boot example

Unfortunately qemu still default to BIOS boot, so for the direct kernel
boot with an efi file to be of any use, the complex param used to switch
to UEFI mode needs to be provided.

Also add some links to qemu and OVMF.

4 days agorules.d/60-block.rules: fix typo
Mike Yuan [Sun, 2 Nov 2025 09:56:31 +0000 (10:56 +0100)] 
rules.d/60-block.rules: fix typo

4 days agoSeveral OpenSSL related cleanups (#39455)
Yu Watanabe [Sun, 2 Nov 2025 08:21:51 +0000 (17:21 +0900)] 
Several OpenSSL related cleanups (#39455)

4 days agorepart: support "nodatacow" in btrfs subvolumes
Alberto Planas [Wed, 4 Jun 2025 17:56:18 +0000 (19:56 +0200)] 
repart: support "nodatacow" in btrfs subvolumes

In btrfs-progs 6.15 it is planned to add a new parameter in mkfs.btrfs
--inode-flags, that can set attributes for subvolumes, directories, and
files.

The current supported attributes are "nodatacow", to disable CoW, and
"nodatasum", to disable the checksum.

This commit extend the "Subvolunes=" option to understand the
"nodatacow" flag for subvolums only.

If RepartOffline is enabled it will build the image without loopback
devices, using the correct --inode-flags parameters.

If RepartOffline is disabled it will use loopback devices and set the
btrfs attributes accordingly.

Signed-off-by: Alberto Planas <aplanas@suse.com>
4 days agorepart: fix typo
Yu Watanabe [Sun, 2 Nov 2025 08:03:00 +0000 (17:03 +0900)] 
repart: fix typo

Follow-up for 15734190c7cbfe5aed90647179e7dbbca592c8c5.

4 days agoresolvectl: fix typo
Yu Watanabe [Sun, 2 Nov 2025 08:00:21 +0000 (17:00 +0900)] 
resolvectl: fix typo

Follow-up for 7517e41a49d9fa7d79567ec293fe0a353bd1441b.

4 days agoopenssl-util: drop unnecessary functions when OpenSSL support is disabled 39455/head
Yu Watanabe [Sun, 26 Oct 2025 13:06:35 +0000 (22:06 +0900)] 
openssl-util: drop unnecessary functions when OpenSSL support is disabled

4 days agoopenssl-util: sort cleanup functions
Yu Watanabe [Sun, 2 Nov 2025 07:00:55 +0000 (16:00 +0900)] 
openssl-util: sort cleanup functions

4 days agorepart: drop OpenSSL specific logics when OpenSSL support is disabled
Yu Watanabe [Sun, 26 Oct 2025 12:44:59 +0000 (21:44 +0900)] 
repart: drop OpenSSL specific logics when OpenSSL support is disabled

4 days agorepart: merge common conditions
Yu Watanabe [Sun, 26 Oct 2025 12:42:26 +0000 (21:42 +0900)] 
repart: merge common conditions

No functional change, just refactoring.

4 days agorepart: make sign_verity_roothash() take Context
Yu Watanabe [Sun, 26 Oct 2025 12:40:42 +0000 (21:40 +0900)] 
repart: make sign_verity_roothash() take Context

No functional change, just refactoring.

4 days agorepart: load x509 certificate and private key after Context is allocated
Yu Watanabe [Sun, 26 Oct 2025 09:27:51 +0000 (18:27 +0900)] 
repart: load x509 certificate and private key after Context is allocated

This splits out context_load_keys() from parse_argv().
No functional change, just refactoring.

4 days agobootctl: return earlier when secure boot auto-enrollment is requested but OpenSSL...
Yu Watanabe [Sun, 26 Oct 2025 07:58:09 +0000 (16:58 +0900)] 
bootctl: return earlier when secure boot auto-enrollment is requested but OpenSSL support is disabled

4 days agobootctl: move conditions into corresponding functions
Yu Watanabe [Sun, 26 Oct 2025 07:57:07 +0000 (16:57 +0900)] 
bootctl: move conditions into corresponding functions

4 days agoopenssl-util: drop unused fake type definitions when OpenSSL is disabled
Yu Watanabe [Sun, 26 Oct 2025 07:22:42 +0000 (16:22 +0900)] 
openssl-util: drop unused fake type definitions when OpenSSL is disabled

4 days agope-binary: drop pe_hash() and friends when OpenSSL support is disabled
Yu Watanabe [Sun, 26 Oct 2025 07:33:11 +0000 (16:33 +0900)] 
pe-binary: drop pe_hash() and friends when OpenSSL support is disabled

These three functions are currently only used by sbsign, which requires
OpenSSL. Moreover, pe_hash() and uki_hash() anyway do not work if
OpenSSL is disabled. Let's only declare them when OpenSSL support is
enabled.

4 days agoopenssl-util: drop unused string_hashsum() and friends when OpenSSL is disabled
Yu Watanabe [Sun, 26 Oct 2025 07:19:47 +0000 (16:19 +0900)] 
openssl-util: drop unused string_hashsum() and friends when OpenSSL is disabled

4 days agoresolvectl: return earlier from openpgp command when OpenSSL support is disabled
Yu Watanabe [Sun, 26 Oct 2025 07:15:56 +0000 (16:15 +0900)] 
resolvectl: return earlier from openpgp command when OpenSSL support is disabled

When OpenSSL is disabled, string_hashsum_sha256()/_sha224() in
resolve_openpgp() will fail anyway. Let's return earlier.

4 days agocoredump: several cleanups, modernizations, fixlets for corner cases (#39418)
Yu Watanabe [Sun, 2 Nov 2025 01:13:53 +0000 (10:13 +0900)] 
coredump: several cleanups, modernizations, fixlets for corner cases (#39418)

4 days agodocs: add comment about requiring the mount hierarchy to be mounted MS_SHARED
Lennart Poettering [Sat, 1 Nov 2025 21:21:32 +0000 (22:21 +0100)] 
docs: add comment about requiring the mount hierarchy to be mounted MS_SHARED

This has been tripping up container manager people. let's document this
explicitly.

(Note that the container interface could really use some updates, i.e.
it was written before a time where cgroup namespacing was a thing. But I
am too lazy to fix that now, so let's just add this once facet.)

4 days agoSeveral cleanups for libcryptsetup dependency (#39452)
Yu Watanabe [Sat, 1 Nov 2025 23:07:15 +0000 (08:07 +0900)] 
Several cleanups for libcryptsetup dependency (#39452)

5 days agorepart: varlink support (#39421)
Lennart Poettering [Sat, 1 Nov 2025 22:21:37 +0000 (23:21 +0100)] 
repart: varlink support (#39421)

Split out of #38764

Replaces: #33741

5 days agodoc: indicate Type=oneshot also detects invocation failures
Christoph Anton Mitterer [Mon, 20 Oct 2025 01:30:58 +0000 (03:30 +0200)] 
doc: indicate Type=oneshot also detects invocation failures

Type `simple` explicitly mentions that invocation failures like a missing binary
or `User=` name won’t get detected – whereas type `exec` mentions that it does.

Type `oneshot` refers to being similar to `simple`, which could lead one to
assume it doesn’t detect such invocation failures either – it seems however it
does.

Indicate this my changing its wording to be similar to `exec`.

Signed-off-by: Christoph Anton Mitterer <mail@christoph.anton.mitterer.name>
5 days agoci: add testcases for recently added stuff 39421/head
Lennart Poettering [Thu, 23 Oct 2025 07:26:37 +0000 (09:26 +0200)] 
ci: add testcases for recently added stuff

5 days agorepart: report vendor/model/subsystem fields in ListCandidateDevices
Lennart Poettering [Fri, 24 Oct 2025 15:18:51 +0000 (17:18 +0200)] 
repart: report vendor/model/subsystem fields in ListCandidateDevices

Prompted by: #39435

5 days agoblockdev-list: switch to log_device_xyz() style logging
Lennart Poettering [Fri, 24 Oct 2025 15:18:31 +0000 (17:18 +0200)] 
blockdev-list: switch to log_device_xyz() style logging

5 days agoudev: introduce ID_BLOCK_SUBSYSTEM property
Lennart Poettering [Fri, 24 Oct 2025 15:13:12 +0000 (17:13 +0200)] 
udev: introduce ID_BLOCK_SUBSYSTEM property

Virtual block devices are a bit weird: they have no parent device, and
thus cannot be related to the subsystem they belong to, except by
pattern matching their name. This is OK to do if one knows what to look
for. However for tools that do not want to carry a list of known
subsystems with their appropriate matching patters this sucks. Let's
introduce a new ID_BLOCK_SUBSYSTEM property we can set on block devices
that carries an explicit string for this. Do so for a small number of
key subsystems: DM, loopback and zram.

5 days agorepart: sort input before output parameters in varlink IDL
Lennart Poettering [Fri, 24 Oct 2025 14:16:11 +0000 (16:16 +0200)] 
repart: sort input before output parameters in varlink IDL

5 days agorepart: add knobs for automatically deferring all partitions marked as empty or for...
Lennart Poettering [Tue, 16 Sep 2025 11:26:42 +0000 (13:26 +0200)] 
repart: add knobs for automatically deferring all partitions marked as empty or for factory reset

5 days agorepart: send out progress information via varlink (if more flag is given)
Lennart Poettering [Fri, 12 Sep 2025 19:23:57 +0000 (21:23 +0200)] 
repart: send out progress information via varlink (if more flag is given)

And while we are at it, also send it out via sd_notify()

5 days agorepart: add Varlink call that runs repart's engine
Lennart Poettering [Thu, 28 Aug 2025 13:49:46 +0000 (15:49 +0200)] 
repart: add Varlink call that runs repart's engine

5 days agorepart: if device node is specified as "-", calculate needed disk space
Lennart Poettering [Fri, 29 Aug 2025 08:40:24 +0000 (10:40 +0200)] 
repart: if device node is specified as "-", calculate needed disk space

So far repart always required specification of a device node. And if
none was specified, then we'd fine the node backing the root fs. Let's
optionally allow that the device node is explicitly not specified (i.e.
specified as "-" or ""), in which case we'll just print the size of the
minimal image given the definitions.

5 days agorepart: split out main function that ponders about placement of partitions
Lennart Poettering [Thu, 28 Aug 2025 13:44:13 +0000 (15:44 +0200)] 
repart: split out main function that ponders about placement of partitions

Let's move the key code that places partitions into a function of its
own. That will make it easier to call this via varlink.

5 days agorepart: move definitions + dry_run + empty fields into Context
Lennart Poettering [Thu, 28 Aug 2025 13:28:20 +0000 (15:28 +0200)] 
repart: move definitions + dry_run + empty fields into Context

This is preparation for making this eventually available via Varlink,
where we'd like to create Context object for each call that we can free
once it is done, but not inherit state from an earlier call.

Also fixes a couple of cases where we accessed arg_node, but where we
should have accessed the Context-specific copy in .node.

5 days agorepart: use SD_JSON_BUILD_UNSIGNED for disk sizes, as we should
Lennart Poettering [Fri, 24 Oct 2025 09:13:14 +0000 (11:13 +0200)] 
repart: use SD_JSON_BUILD_UNSIGNED for disk sizes, as we should

5 days agosd-varlink: fix sd_varlink_collect() with empty replies
Lennart Poettering [Thu, 23 Oct 2025 09:07:16 +0000 (11:07 +0200)] 
sd-varlink: fix sd_varlink_collect() with empty replies

Follow-up for: 48c64813ec6bdbe536b7a62281292ea5981295ba

5 days agoman: add documentation for the various sd_json_dispatch_xyz() calls
Lennart Poettering [Fri, 24 Oct 2025 08:22:36 +0000 (10:22 +0200)] 
man: add documentation for the various sd_json_dispatch_xyz() calls

Now that we comprehensively return accept null it's a good idea to
document which function maps null to what.

5 days agocryptsetup-util: sym_crypt_free() and friends are unused when libcryptsetup is disabled 39452/head
Yu Watanabe [Sun, 26 Oct 2025 05:32:41 +0000 (14:32 +0900)] 
cryptsetup-util: sym_crypt_free() and friends are unused when libcryptsetup is disabled

5 days agocryptsetup-util: sort loaded function prototypes
Yu Watanabe [Sun, 26 Oct 2025 05:02:45 +0000 (14:02 +0900)] 
cryptsetup-util: sort loaded function prototypes

5 days agolibcryptsetup: drop several unnecessary checks for existences of functions by libcryp...
Yu Watanabe [Sun, 26 Oct 2025 04:12:01 +0000 (13:12 +0900)] 
libcryptsetup: drop several unnecessary checks for existences of functions by libcryptsetyp

The functions crypt_set_metadata_size() and friends are supported since
libcryptsetup-2.0.

This also merges checks for functions used for supporting libcryptsetup
plugins with others.
Moreover, check existence of one more function (crypt_logf) that is used in
libcryptsetup plugins.

5 days agosd-json: parse signals also in string format
Lennart Poettering [Fri, 24 Oct 2025 09:10:31 +0000 (11:10 +0200)] 
sd-json: parse signals also in string format

5 days agosd-json: parse uid_t/gid_t as uint32_t first
Lennart Poettering [Fri, 24 Oct 2025 09:09:01 +0000 (11:09 +0200)] 
sd-json: parse uid_t/gid_t as uint32_t first

Let's use the proper uint32_t parsers initially, so that the usual logic
of formatting integers as decimal strings, works too for uids/gids. Not
because it made any sense to encode them like that, but just to be
systematic here.

5 days agosd-json: make sure all dispatch helpers do something sensible in case of "null" JSON...
Lennart Poettering [Fri, 24 Oct 2025 07:57:48 +0000 (09:57 +0200)] 
sd-json: make sure all dispatch helpers do something sensible in case of "null" JSON value

Most of our dispatch helpers already do something useful in case they
are invoked on a null JSON value: they translate this to the appropriate
niche value for the type, if there is one.

Add the same for *all* dispatchers we have, to make this fully
systematic.

For various types it's not always clear which niche value to pick. I
opted for UINT{8,16,32,64}_MAX for the various unsigned integers, which
maps our own use in most cases. I opted for -1 for the various signed
integer types. For arrays/blobs of stuff I opted for the empty
array/blob, and for booleans I opted for false.

Of course, in various cases this is not going to be the right niche
value, but that's entirely fine, after all before a json value reaches a
dispatcher function it must pass one of two type checks first:

1. Either the .type field of sd_json_dispatch_field must be
   _SD_JSON_VARIANT_TYPE_INVALID to not do a type check at all

2. Or the .type field is set, but then the SD_JSON_NULLABLE flag must be
   set in .flags.

This means, accidentally generating the niche values on null is not
really likely.

5 days agoIgnore --now when systemctl enable is called in a chroot (#39456)
Yu Watanabe [Sat, 1 Nov 2025 19:48:53 +0000 (04:48 +0900)] 
Ignore --now when systemctl enable is called in a chroot (#39456)

5 days agoparse-util: Add parse_capability_set()
Daan De Meyer [Wed, 29 Oct 2025 21:39:48 +0000 (22:39 +0100)] 
parse-util: Add parse_capability_set()

Let's extract common capability parsing code into a generic function
parse_capability_set() with a comprehensive set of unit tests.

We also replace usages of UINT64_MAX with CAP_MASK_UNSET where
applicable and replace the default value of CapabilityBoundingSet
with CAP_MASK_ALL which more clearly identifies that it is initialized
to all capabilities.

AI (copilot) was used to extract the generic function and write the
unit tests, with manual review and fixing afterwards to make sure
everything was correct.

5 days agotest: migrate test-load-fragment to use ASSERT_* macros
Daan De Meyer [Wed, 29 Oct 2025 19:43:28 +0000 (20:43 +0100)] 
test: migrate test-load-fragment to use ASSERT_* macros

Replace all assert_se() calls with appropriate ASSERT_* macros from tests.h:
- assert_se(r >= 0) → ASSERT_OK(r)
- assert_se(r == 0) → ASSERT_OK_ZERO(r)
- assert_se(r == -ERR) → ASSERT_ERROR(r, ERR)
- assert_se(expr == value) → ASSERT_EQ(expr, value)
- assert_se(str1, str2) → ASSERT_STREQ(str1, str2)
- assert_se(ptr) → ASSERT_NOT_NULL(ptr)
- assert_se(!ptr) → ASSERT_NULL(ptr)
- assert_se(expr) → ASSERT_TRUE(expr)
- assert_se(!expr) → ASSERT_FALSE(expr)

Also added unsigned suffixes (U) to numeric literals in comparisons with
unsigned types (size_t, rlim_t) to eliminate signedness warnings.

This code was written with the help of AI.

5 days agotest: add test case for verity deferred removal without sharing
Luca Boccassi [Fri, 31 Oct 2025 16:46:49 +0000 (16:46 +0000)] 
test: add test case for verity deferred removal without sharing

I recently found out (the hard way) that on an older version
there was a bug when the verity sharing is disabled: the
deferred close flag was not set correctly, so verity devices
were leaked.

This is not an issue in main currently, but add a test case
to cover it just in case, to avoid future regressions.

5 days agoresolvectl: do not use strjoina() on user provided strings
Lennart Poettering [Sat, 1 Nov 2025 15:29:39 +0000 (16:29 +0100)] 
resolvectl: do not use strjoina() on user provided strings

5 days agosystemctl: downgrade or silence warnings for --now 39456/head
Zbigniew Jędrzejewski-Szmek [Sun, 26 Oct 2025 10:57:56 +0000 (11:57 +0100)] 
systemctl: downgrade or silence warnings for --now

When calling systemctl enable/disable/reenable --now, we'd always fail with
error when operating offline. This seemly overly restricitive. In particular,
if systemd is not running at all, the service is not running either, so
complaining that we can't stop it is completely unnecessary. But even when
operating in a chroot where systemd is not running, let's just emit a warning
and return success. It's fairly common to have installation or package scripts
which do such calls and not starting/restarting the service in those scenarios
is the desired and expected operation. (If --now is called in combination
with --global or --root=, keep returning an error.)

Also make the messages nicer. I was adding some docs to tell the user to run
'systemctl enable --now', and checked how the command can fail, and the error
message that the user might see in some common scenarios was too complicated.
Split it up to be nicer.

5 days agosystemctl: convert return value of install_client_side() to enum
Zbigniew Jędrzejewski-Szmek [Sun, 26 Oct 2025 10:34:22 +0000 (11:34 +0100)] 
systemctl: convert return value of install_client_side() to enum

The checks are reordered to do checks that don't require interacting with the
system first.

5 days agobuild(deps): bump softprops/action-gh-release from 2.2.2 to 2.4.1
dependabot[bot] [Sat, 1 Nov 2025 09:01:19 +0000 (09:01 +0000)] 
build(deps): bump softprops/action-gh-release from 2.2.2 to 2.4.1

Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.2.2 to 2.4.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/da05d552573ad5aba039eaac05058a918a7bf631...6da8fa9354ddfdc4aeace5fc48d7f679b5214090)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
5 days agobuild(deps): bump redhat-plumbers-in-action/advanced-issue-labeler
dependabot[bot] [Sat, 1 Nov 2025 09:01:14 +0000 (09:01 +0000)] 
build(deps): bump redhat-plumbers-in-action/advanced-issue-labeler

Bumps [redhat-plumbers-in-action/advanced-issue-labeler](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler) from 3.2.2 to 3.2.3.
- [Release notes](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler/releases)
- [Commits](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler/compare/0db433d412193574252480b4fc22f2e4319a4ea3...e38e6809c5420d038eed380d49ee9a6ca7c92dbf)

---
updated-dependencies:
- dependency-name: redhat-plumbers-in-action/advanced-issue-labeler
  dependency-version: 3.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
5 days agodiscover-image: introduce bus_property_get_image_is_read_only() with BUS_DEFINE_PROPE...
Yu Watanabe [Fri, 31 Oct 2025 11:33:34 +0000 (20:33 +0900)] 
discover-image: introduce bus_property_get_image_is_read_only() with BUS_DEFINE_PROPERTY_GET() macro

This also makes image_is_read_only() return bool.

Follow-up for ee327e086e0534645d1c8cb9daa49cd8d7d68d51.

5 days agoSeveral cleanups around strv_extendf() (#39508)
Yu Watanabe [Sat, 1 Nov 2025 09:10:42 +0000 (18:10 +0900)] 
Several cleanups around strv_extendf() (#39508)

6 days agocore: Add RootDirectoryFileDescriptor= (#39480)
Daan De Meyer [Fri, 31 Oct 2025 21:30:46 +0000 (22:30 +0100)] 
core: Add RootDirectoryFileDescriptor= (#39480)

RootDirectory= but via a open_tree() file descriptor. This allows
setting up the execution environment for a service by the client in a
mount namespace and then starting a transient unit in that execution
environment using the new property.

We also add --root-directory= and --same-root-dir= to systemd-run to
have it run services within the given root directory. As systemd-run
might be invoked from a different mount namespace than what systemd is
running in, systemd-run opens the given path with open_tree() and then
sends it to systemd using the new RootDirectoryFileDescriptor= property.

6 days agoanalyze: add missing help entry
Yu Watanabe [Fri, 31 Oct 2025 15:51:34 +0000 (00:51 +0900)] 
analyze: add missing help entry

Follow-up for 0fe29d0672d8c7ad422ca88ad12d10f08f3f2a05.

6 days agocore/exec-invoke: correct fd array size for collect_open_file_fds()
Mike Yuan [Fri, 31 Oct 2025 15:09:54 +0000 (16:09 +0100)] 
core/exec-invoke: correct fd array size for collect_open_file_fds()

Follow-up for f70346fb87052f37d446d2e9ccf915e5289b2b87

6 days agoman: fix outdated link to freedesktop.org documentation (#39511)
Florian [Fri, 31 Oct 2025 17:03:43 +0000 (18:03 +0100)] 
man: fix outdated link to freedesktop.org documentation (#39511)

Freedesktop changed their link format.

6 days agoreread-partition-table: take exclusive lock when requested
Yu Watanabe [Fri, 31 Oct 2025 14:03:14 +0000 (23:03 +0900)] 
reread-partition-table: take exclusive lock when requested

Before aa47d8ade18cc4a079fef5a1aaa37d763507104e, we took an exclusive lock
for the whole block device, but with the commit, a shared lock is taken.
That causes, during we requesting the kernel to reread partition table,
udev workers can process the block device or its partitions.

Let's make udev workers not process block devices during rereading
partition table again.

Follow-up for aa47d8ade18cc4a079fef5a1aaa37d763507104e.

6 days agovmspawn: replace strv_extendf() with strv_extend_joined() when concatenating strings 39508/head
Yu Watanabe [Fri, 31 Oct 2025 13:46:42 +0000 (22:46 +0900)] 
vmspawn: replace strv_extendf() with strv_extend_joined() when concatenating strings

6 days agovmspawn: use strv_extendf() at one more place
Yu Watanabe [Fri, 31 Oct 2025 13:45:05 +0000 (22:45 +0900)] 
vmspawn: use strv_extendf() at one more place

6 days agodns-rr: use strv_extendf() at one more place
Yu Watanabe [Fri, 31 Oct 2025 13:36:41 +0000 (22:36 +0900)] 
dns-rr: use strv_extendf() at one more place

6 days agocore/exec-invoke: use heap allocation to build environment variables
Yu Watanabe [Fri, 31 Oct 2025 13:30:43 +0000 (22:30 +0900)] 
core/exec-invoke: use heap allocation to build environment variables

We sometimes forget to increase the size N_ENV_VARS. Let's use heap
allocation.

6 days agostrv: introduce strv_extend_joined() and strv_extend_joined_with_size()
Yu Watanabe [Fri, 31 Oct 2025 13:19:31 +0000 (22:19 +0900)] 
strv: introduce strv_extend_joined() and strv_extend_joined_with_size()

6 days agostring-util: introduce strextendv_with_separator()
Yu Watanabe [Fri, 31 Oct 2025 13:08:35 +0000 (22:08 +0900)] 
string-util: introduce strextendv_with_separator()

6 days agostrv: introduce strv_extendf_with_size()
Yu Watanabe [Fri, 31 Oct 2025 12:57:37 +0000 (21:57 +0900)] 
strv: introduce strv_extendf_with_size()