]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
11 days agonsresourced: Add comment about mknod() hook covering regular files 40564/head
Daan De Meyer [Mon, 26 Jan 2026 20:39:34 +0000 (21:39 +0100)] 
nsresourced: Add comment about mknod() hook covering regular files

11 days agonsresourced: Fix typo
Daan De Meyer [Sun, 25 Jan 2026 20:21:22 +0000 (21:21 +0100)] 
nsresourced: Fix typo

11 days agomountfsd: Always open_tree() in mount namespace of peer
Daan De Meyer [Sat, 24 Jan 2026 19:52:14 +0000 (20:52 +0100)] 
mountfsd: Always open_tree() in mount namespace of peer

open_tree() will fail with EINVAL when passed a directory file descriptor
that comes from another mount namespace. While this should be fixed in a
future kernel, let's workaround the issue for now by entering the mount
namespace of the peer if needed and calling open_tree() there and then
passing the fd back to the mountfsd process.

11 days agotest-uid-range: Migrate to new assertion macros
Daan De Meyer [Sun, 25 Jan 2026 08:33:00 +0000 (09:33 +0100)] 
test-uid-range: Migrate to new assertion macros

11 days agonamespace-util: Fix logging in userns_enter_and_pin()
Daan De Meyer [Fri, 23 Jan 2026 18:15:15 +0000 (19:15 +0100)] 
namespace-util: Fix logging in userns_enter_and_pin()

11 days agomkosi: update mkosi ref to 215a9497ccc089ba030da39e15e9e2371efad3cb (#40573)
Daan De Meyer [Thu, 5 Feb 2026 13:06:45 +0000 (14:06 +0100)] 
mkosi: update mkosi ref to 215a9497ccc089ba030da39e15e9e2371efad3cb (#40573)

215a9497cc fedora: Use N-1 key as well when querying rawhide GPG key
842a37ed6c Add MakeScriptsExecutable= setting to optionally try to
make scripts executable before bailing out
814f2004bb build(deps): bump github/codeql-action from 4.31.9 to
4.32.0
d8f4f628bf build(deps): bump actions/checkout from 6.0.1 to 6.0.2
3e55361142 docs: remove superfluous definition colon
5901524c48 mkosi-tools: add libarchive-tools package.
968392f1b9 docs: Add information about gui mkosi-tools profile
0e2960c245 Add missing call to run_locale_gen()
41cd2067bc rpm: Set pkgverify_level to digest
86fe0f448a dnf: Give advanced users some control over plugins
50a1feee52 run: Improve sandbox command logging
b1dffe1c3c Fix environment variable name for systemd-repart
07726068d9 Allow specifying "default" value for Initrds=
704f163ec0 Allow setting PORTABLE_PREFIXES= via Environment=
e6588afb45 opensuse: More GPG key handling fixes
c367f993dd opensuse: Fetch remote keys as well if RepositoryKeyFetch=
is enabled
31852c9314 ci: Use mkosi box for unit test CI as well
e4229f5bf5 Make sure we pass the right context to
finalize_default_initrd()
9b431b783a tools: don't pull in virtiofsd in bookworm tools trees
ae2d88d463 build(deps): bump github/codeql-action from 4.31.6 to
4.31.9
933401a8b6 build(deps): bump actions/checkout from 6.0.0 to 6.0.1
6bfeb4ac86 opensuse: Import GPG keys for all repositories
9829b9136f Add support for locale-gen
63ae86ec04 nixos: Use repository key fetching by default on nixos
f01ca9904b docs: Reword dependencies vs tools tree requirement a bit
ab47ba25ef docs: Minor correction on enabling unprivileged namespaces
7bd46a417e docs: Update unprivileged user namespace docs

11 days agomkosi: update mkosi ref to 14d2d37a1923c03062f55454b2b61d0c64db6238 40573/head
Daan De Meyer [Thu, 5 Feb 2026 12:10:35 +0000 (13:10 +0100)] 
mkosi: update mkosi ref to 14d2d37a1923c03062f55454b2b61d0c64db6238

14d2d37a19 sandbox: Make sure we're dumpable before writing uidmap files
215a9497cc fedora: Use N-1 key as well when querying rawhide GPG key
842a37ed6c Add MakeScriptsExecutable= setting to optionally try to make scripts executable before bailing out
814f2004bb build(deps): bump github/codeql-action from 4.31.9 to 4.32.0
d8f4f628bf build(deps): bump actions/checkout from 6.0.1 to 6.0.2
3e55361142 docs: remove superfluous definition colon
5901524c48 mkosi-tools: add libarchive-tools package.
968392f1b9 docs: Add information about gui mkosi-tools profile
0e2960c245 Add missing call to run_locale_gen()
41cd2067bc rpm: Set pkgverify_level to digest
86fe0f448a dnf: Give advanced users some control over plugins
50a1feee52 run: Improve sandbox command logging
b1dffe1c3c Fix environment variable name for systemd-repart
07726068d9 Allow specifying "default" value for Initrds=
704f163ec0 Allow setting PORTABLE_PREFIXES= via Environment=
e6588afb45 opensuse: More GPG key handling fixes
c367f993dd opensuse: Fetch remote keys as well if RepositoryKeyFetch= is enabled
31852c9314 ci: Use mkosi box for unit test CI as well
e4229f5bf5 Make sure we pass the right context to finalize_default_initrd()
9b431b783a tools: don't pull in virtiofsd in bookworm tools trees
ae2d88d463 build(deps): bump github/codeql-action from 4.31.6 to 4.31.9
933401a8b6 build(deps): bump actions/checkout from 6.0.0 to 6.0.1
6bfeb4ac86 opensuse: Import GPG keys for all repositories
9829b9136f Add support for locale-gen
63ae86ec04 nixos: Use repository key fetching by default on nixos
f01ca9904b docs: Reword dependencies vs tools tree requirement a bit
ab47ba25ef docs: Minor correction on enabling unprivileged namespaces
7bd46a417e docs: Update unprivileged user namespace docs

11 days agofetch-mkosi: Shorten commit message title
Daan De Meyer [Thu, 5 Feb 2026 09:53:09 +0000 (10:53 +0100)] 
fetch-mkosi: Shorten commit message title

Currently github truncates the message so let's make it a little shorter
so it's not truncated.

11 days agosleep: allow HibernateDelaySec and low-battery hibernation to work together
gvenugo3 [Tue, 3 Feb 2026 03:57:30 +0000 (20:57 -0700)] 
sleep: allow HibernateDelaySec and low-battery hibernation to work together

Previously, setting HibernateDelaySec= would disable ACPI battery trip
point (_BTP) alarms, forcing the system to rely solely on software
polling for battery checks. This could result in the battery draining
to 0% between polling intervals, causing data loss.

Now, when ACPI _BTP is available AND HibernateDelaySec= is set, both
mechanisms work together. The system will hibernate on whichever comes
first: low battery (instant hardware alarm) or the configured timeout.

This also properly respects HibernateOnACPower=no by resetting the
timer while on AC power, matching the documented behavior.

Fixes: https://github.com/systemd/systemd/issues/26498
11 days agoInitial tweaks for the report tool (#40568)
Zbigniew Jędrzejewski-Szmek [Thu, 5 Feb 2026 09:15:39 +0000 (10:15 +0100)] 
Initial tweaks for the report tool (#40568)

12 days agometrics/report: add log messages, do not hang if no metrics are found 40568/head
Zbigniew Jędrzejewski-Szmek [Wed, 4 Feb 2026 17:20:11 +0000 (18:20 +0100)] 
metrics/report: add log messages, do not hang if no metrics are found

If the directory existed but was empty, we'd hang in the event loop.

12 days agometrics/report: use _cleanup_, avoid goto
Zbigniew Jędrzejewski-Szmek [Wed, 4 Feb 2026 16:57:24 +0000 (17:57 +0100)] 
metrics/report: use _cleanup_, avoid goto

12 days agopid1: shorten message about jobs skipped after failed condition checks
Zbigniew Jędrzejewski-Szmek [Wed, 4 Feb 2026 09:21:43 +0000 (10:21 +0100)] 
pid1: shorten message about jobs skipped after failed condition checks

I was looking at some logs on a console, and because of the lengthy message,
the actually interesting part, i.e. what condition failed, didn't even fit
on the screen. Let's make the sentence legible but brief.

12 days ago[metrics] Introduce metrics API (#39202)
Zbigniew Jędrzejewski-Szmek [Wed, 4 Feb 2026 15:31:55 +0000 (16:31 +0100)] 
[metrics] Introduce metrics API (#39202)

See the [design
doc](https://github.com/systemd/systemd/issues/38023#issue-3192567450)
by @ikruglov

This PR introduces the metrics API framework, adds some basic system
wide/per unit/service metrics, and a basic CLI. The PR is broken into
two commits as described below.

### Deviations from the original design
- Introduced top level field "object" for ease of filtering. Instead of
having `fields: { unit: "foo", unit_type: "service" }`, we now have
`object: foo.service` as the top level field.

### First commit

The first commit includes:
- Metrics API definitions
- Code to set up the varlink server
- The describe method which shows all the metrics families
- The list method which lists all the metrics
- Type definitions related to MetricFamily
- Common code to build json objects

### Second commit
The second commit adds some basic metrics, a basic CLI (systemd-report)
which
lists the metrics, and integration tests.

**System wide metrics:**
- units_by_type_total
- units_by_state_total

**Two per unit metrics:**
- unit_active_state
- unit_load_state

**A service state metric:**
- nrestarts

### Sample outputs

**units_by_type_total**:

```
{
        "name" : "io.systemd.Manager.units_by_type_total",
        "value" : 52,
        "fields" : {
                "type" : "target"
        }
}
{
        "name" : "io.systemd.Manager.units_by_type_total",
        "value" : 82,
        "fields" : {
                "type" : "device"
        }
}
{
        "name" : "io.systemd.Manager.units_by_type_total",
        "value" : 2,
        "fields" : {
                "type" : "automount"
        }
}
```
**units_by_state_total**:
```
{
        "name" : "io.systemd.Manager.units_by_state_total",
        "value" : 216,
        "fields" : {
                "state" : "active"
        }
}
{
        "name" : "io.systemd.Manager.units_by_state_total",
        "value" : 0,
        "fields" : {
                "state" : "reloading"
        }
}
{
        "name" : "io.systemd.Manager.units_by_state_total",
        "value" : 120,
        "fields" : {
                "state" : "inactive"
        }
}
```
**unit_active_state**:
```
{
        "name" : "io.systemd.Manager.unit_active_state",
        "object" : "multi-user.target",
        "value" : "active"
}
{
        "name" : "io.systemd.Manager.unit_active_state",
        "object" : "systemd-sysusers.service",
        "value" : "inactive"
}
```
**unit_load_state**:
```
{
        "name" : "io.systemd.Manager.unit_load_state",
        "object" : "multi-user.target",
        "value" : "loaded"
}

```
**nrestarts**:
```
{
        "name" : "io.systemd.Manager.nrestarts",
        "object" : "user@0.service",
        "value" : 0
}
{
        "name" : "io.systemd.Manager.nrestarts",
        "object" : "user-runtime-dir@0.service",
        "value" : 0
}
```

12 days agoefi-string: Unquote single-quoted strings as well as double
James Le Cuirot [Tue, 27 Jan 2026 17:12:34 +0000 (17:12 +0000)] 
efi-string: Unquote single-quoted strings as well as double

This code is used to read data copied from /etc/os-release. According to
the spec[1], values can be enclosed in single quotes or double quotes.
Not handling single quotes results in the quotes appearing in the
systemd-boot menu, e.g. 'Gentoo Linux'.

[1] https://www.freedesktop.org/software/systemd/man/latest/os-release.html

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
12 days agobash-completion/vmspawn: add -x/--ephemeral
Yu Watanabe [Wed, 4 Feb 2026 06:47:44 +0000 (15:47 +0900)] 
bash-completion/vmspawn: add -x/--ephemeral

Follow-up for 6e67fc2938ad690a065a984c5813c6b5c0e48806.

12 days agonetworkd-json: add human-readable address strings for IP addresses
gvenugo3 [Fri, 23 Jan 2026 02:38:30 +0000 (19:38 -0700)] 
networkd-json: add human-readable address strings for IP addresses

Add JSON_BUILD_PAIR_IN_ADDR_WITH_STRING, JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING,
and JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING macros (plus _NON_NULL variants) that
emit both the binary address array and a human-readable string representation.

For example, an address field now emits both:
  "Address": [192, 168, 1, 1]
  "AddressString": "192.168.1.1"

This improves usability of the JSON/Varlink output for debugging and tooling
that consumes networkd state.

Updated networkd-json.c to use these new macros for addresses, neighbors,
nexthops, routes, routing policy rules, DNS servers, NTP servers, SIP servers,
domains, DHCPv6 prefixes, and link-local addresses.

Also updated the Varlink interface definitions to include the new string fields.

12 days agosysext: Skip refresh if no changes are found (#39980)
Lennart Poettering [Wed, 4 Feb 2026 09:30:10 +0000 (10:30 +0100)] 
sysext: Skip refresh if no changes are found (#39980)

When the extensions for the final system are already set up from the
    initrd we should avoid disrupting the boot process with the remount
    (which currently isn't atomic) and the daemon reload for
systemd-confext and systemd-sysext. Similarly, when sysupdate ran and
updated extensions it's best to avoid the remount and daemon reload if
    no changes are found.
    To do this, encode the current extension state in more detail than
    before where only the names of the extensions where encoded in the
overlay mount. This can also be used to provide more details about the
    extension origin in "systemd-sysext status (--json=)". During the
refresh add a check whether the old state matches the new state and in
    this case skip the refresh unless the user provides a flag to always
    refresh. Besides the extension name and the resolved path the best
method for identification is the verity hash but that is not available
for plain image files or directories. Therefore, also include data to
check for file/directory replacements. The creation/modification times
are not always real on reproducible images or extracted archive content.
    The file handle together with the unique mount ID is the next best
identifier we can use when we have no verity hash. Fall back to an inode
when we get no handle. With the creation/modification time and the path
this should be good enough. Using a unique mount ID is important (with
a fallback to the regular non-unique mount ID) instead of st_dev because
    st_dev gets reused too easily, e.g., by a loop device mount and the
mount ID helps to catch this. For the mount ID to be valid it has to be
resolved before we enter the new mount namespace. Thus, it gets provided
    by the image dissect logic and handed over to the sysext subprocess
    which runs in a new mount namespace.
    Luckily, we can rule out online modification of directories or image
files because this is anyway not well supported with overlay mounts, so
we don't do a file checksum nor do we recurse into a directory to look
    for the most recently touched files.  But, as said, with the
    always-refresh flag one can force a reload.

12 days agoresolvectl: re-implement normal status output using varlink (#40529)
Yu Watanabe [Wed, 4 Feb 2026 06:47:02 +0000 (15:47 +0900)] 
resolvectl: re-implement normal status output using varlink (#40529)

Currently, `resolvectl status` (and other status commands like
`resolvectl dns $iface`) uses varlink when asked to print JSON, but uses
dbus otherwise. This PR re-implements the regular status output to use
varlink instead of dbus.

This both simplifies the `resolvectl status` code, and is an incremental
step in replacing dbus usage with varlink throughout `resolvectl`.

The first several commits move `dns-configuration.[ch]` from
`src/network/wait-online` to `src/shared`, and complete the JSON
dispatching so that all fields are available in a concrete type. The
next few commits re-implement global, link, and delegate status output.
Finally, the last commits consolidate and simplify the status logic
since varlink and the `DNSConfiguration` type can be used in all cases.

12 days agovmspawn: add --ephemeral (#40505)
Yu Watanabe [Wed, 4 Feb 2026 02:43:22 +0000 (11:43 +0900)] 
vmspawn: add --ephemeral (#40505)

This PR implements --ephemeral for vmspawn in the same way as nspawn.

Note that this does not support snapshots for --extra-drives.

12 days agosysext: Skip refresh if no changes are found 39980/head
Kai Lueke [Tue, 25 Nov 2025 15:04:43 +0000 (00:04 +0900)] 
sysext: Skip refresh if no changes are found

When the extensions for the final system are already set up from the
initrd we should avoid disrupting the boot process with the remount
(which currently isn't atomic) and the daemon reload for
systemd-confext and systemd-sysext. Similarly, when sysupdate ran and
updated extensions it's best to avoid the remount and daemon reload if
no changes are found.
To do this, encode the current extension state in more detail than
before where only the names of the extensions where encoded in the
overlay mount. This can also be used to provide more details about the
extension origin in "systemd-sysext status (--json=)". During the
refresh add a check whether the old state matches the new state and in
this case skip the refresh unless the user provides a flag to always
refresh. Besides the extension name and the resolved path the best
method for identification is the verity hash but that is not available
for plain image files or directories. Therefore, also include data to
check for file/directory replacements. The creation/modification times
are not always real on reproducible images or extracted archive content.
The file handle together with the unique mount ID is the next best
identifier we can use when we have no verity hash. Fall back to an inode
when we get no handle. With the creation/modification time and the path
this should be good enough. Using a unique mount ID is important (with
a fallback to the regular non-unique mount ID) instead of st_dev because
st_dev gets reused too easily, e.g., by a loop device mount and the
mount ID helps to catch this. For the mount ID to be valid it has to be
resolved before we enter the new mount namespace. Thus, it gets provided
by the image dissect logic and handed over to the sysext subprocess
which runs in a new mount namespace.
Luckily, we can rule out online modification of directories or image
files because this is anyway not well supported with overlay mounts, so
we don't do a file checksum nor do we recurse into a directory to look
for the most recently touched files.  But, as said, with the
always-refresh flag one can force a reload.

12 days agosysext: Create mutable directory with the right mode
Kai Lueke [Tue, 2 Dec 2025 15:02:32 +0000 (00:02 +0900)] 
sysext: Create mutable directory with the right mode

When the mutable directory didn't exist but gets created with
--mutable=yes then it used to get mode 700 and later it got patched by
a chmod because it is the top layer and must match the target hierarchy.
This meant one could not call the function to resolve the mutable
directory twice before the mount because it has a check for a proper
mode when the directory exists which is the case for the second call.
Also, this resulted in /var/lib/extensions.mutable getting created with
mode 700 which is not really required.

Don't rely on the chmod for the upper dir but directly create the
directory with the right mode by first creating all missing directories
with 755 as a sane default and then changing the mode as needed for the
mutable directory.

13 days agoresolvectl: add print_configuration() to consolidate status logic 40529/head
Nick Rosbrook [Fri, 30 Jan 2026 21:04:37 +0000 (16:04 -0500)] 
resolvectl: add print_configuration() to consolidate status logic

There is a lot of duplication across the functions for printing global,
link, and delegate output. Since these all use a common DNSConfiguration
type now, the logic can be consolidated.

Adapt printing and format helper functions to accept a DNSConfiguration
parameter to appropriately format output. Then, add print_configuration(),
a single function that prints the appropriate status output based on the
contents of DNSConfiguration.

13 days agoresolvectl: consolidate JSON and regular status output paths
Nick Rosbrook [Fri, 30 Jan 2026 20:10:49 +0000 (15:10 -0500)] 
resolvectl: consolidate JSON and regular status output paths

Now that varlink is always used for status output, consolidate the JSON
and regular status code paths. Add status_full(), which is the single
point that calls DumpDNSConfiguration, filters based on link names and
mode if needed, and prints the output in the appropriate format.

This simplifies status_ifindex(), and removes the need for a separate
status_json().

13 days agoresolvectl: use varlink to report delegate status
Nick Rosbrook [Fri, 30 Jan 2026 19:34:41 +0000 (14:34 -0500)] 
resolvectl: use varlink to report delegate status

This is an incremental commit to replacing dbus usage with varlink for
all status output.

Re-implement regular delegate status output using the DumpDNSConfiguration
varlink method. And, remove the DelegateInfo type and associated functions
which were used to map dbus properties.

Since this is the last type of status output to be switched to varlink,
lots of other code becomes dead with these changes, e.g.
read_dns_server_one(), map_dns_servers_internal(), etc., so remove those
too. Finally, status_all() no longer needs sd_bus, so drop that
parameter.

13 days agoresolvectl: use varlink to report link status
Nick Rosbrook [Fri, 30 Jan 2026 19:34:41 +0000 (14:34 -0500)] 
resolvectl: use varlink to report link status

This is an incremental commit to replacing dbus usage with varlink for
all status output.

Re-implement regular link status output using the DumpDNSConfiguration
varlink method. And, remove the LinkInfo type and associated functions
which were used to map dbus properties.

13 days agoresolvectl: use varlink to report global status
Nick Rosbrook [Fri, 30 Jan 2026 19:34:38 +0000 (14:34 -0500)] 
resolvectl: use varlink to report global status

This is an incremental commit to replacing dbus usage with varlink for
all status output.

Re-implement regular global status output using the DumpDNSConfiguration
varlink method. And, remove the GlobalInfo type and associated functions
which were used to map dbus properties.

13 days agodns-configuration: use OrderedSet for servers and domains
Nick Rosbrook [Fri, 30 Jan 2026 19:34:34 +0000 (14:34 -0500)] 
dns-configuration: use OrderedSet for servers and domains

This only has a small effect, which mostly matters for generating status
output. It ensures that the order of servers and domains displayed
matches the order they are stored on the daemon side, which keeps the
new resolvectl output consistent with the old.

13 days agodns-configuration: add DNSSEC support boolean to DNSConfiguration
Nick Rosbrook [Fri, 30 Jan 2026 19:34:33 +0000 (14:34 -0500)] 
dns-configuration: add DNSSEC support boolean to DNSConfiguration

This is one of several commits to dispatch all fields of the
DNSConfiguration JSON.

13 days agodns-configuration: add in_addr_union field to DNSServer type
Nick Rosbrook [Fri, 30 Jan 2026 19:34:28 +0000 (14:34 -0500)] 
dns-configuration: add in_addr_union field to DNSServer type

This makes it easier to use DNSServer with helpers from in-addr-util.h.

13 days agodns-configuration: dispatch delegate name to DNSConfiguration
Nick Rosbrook [Fri, 30 Jan 2026 19:34:27 +0000 (14:34 -0500)] 
dns-configuration: dispatch delegate name to DNSConfiguration

This is one of several commits to dispatch all fields of the
DNSConfiguration JSON.

13 days agodns-configuration: dispatch scopes to DNSConfiguration
Nick Rosbrook [Fri, 30 Jan 2026 19:34:23 +0000 (14:34 -0500)] 
dns-configuration: dispatch scopes to DNSConfiguration

This is one of several commits to dispatch all fields of the
DNSConfiguration JSON.

Introduce a DNSScope type, and all required JSON dispatching helpers.

13 days agodns-configuration: dispatch resolv conf mode to DNSConfiguration
Nick Rosbrook [Fri, 30 Jan 2026 19:34:22 +0000 (14:34 -0500)] 
dns-configuration: dispatch resolv conf mode to DNSConfiguration

This is one of several commits to dispatch all fields of the
DNSConfiguration JSON.

13 days agodns-configuration: dispatch negative trust anchors to DNSConfiguration
Nick Rosbrook [Fri, 30 Jan 2026 19:34:19 +0000 (14:34 -0500)] 
dns-configuration: dispatch negative trust anchors to DNSConfiguration

This is one of several commits to dispatch all fields of the
DNSConfiguration JSON.

13 days agodns-configuration: dispatch fallback servers to DNSConfiguration
Nick Rosbrook [Fri, 30 Jan 2026 19:34:16 +0000 (14:34 -0500)] 
dns-configuration: dispatch fallback servers to DNSConfiguration

This is one of several commits to dispatch all fields of the
DNSConfiguration JSON.

13 days agodns-configuration: dispatch all protocol modes to DNSConfiguration
Nick Rosbrook [Fri, 30 Jan 2026 19:34:15 +0000 (14:34 -0500)] 
dns-configuration: dispatch all protocol modes to DNSConfiguration

This is one of several commits to dispatch all fields of the
DNSConfiguration JSON.

13 days agoshared: move wait-online's dns-configuration.[ch] to shared
Nick Rosbrook [Fri, 30 Jan 2026 19:34:09 +0000 (14:34 -0500)] 
shared: move wait-online's dns-configuration.[ch] to shared

13 days agoresolve: add DNSConfiguration field to indicate DNSSEC support
Nick Rosbrook [Fri, 30 Jan 2026 19:34:03 +0000 (14:34 -0500)] 
resolve: add DNSConfiguration field to indicate DNSSEC support

The varlink API is currently missing the "DNSSEC supported" field, which
is required for to re-implement the existing resolvectl status output
with varlink instead of dbus.

Add this field to DNSConfiguration.

13 days agoIntroduce name_to_handle_at_u64() helper function and use it for getting pidfd ID...
Yu Watanabe [Tue, 3 Feb 2026 19:37:07 +0000 (04:37 +0900)] 
Introduce name_to_handle_at_u64() helper function and use it for getting pidfd ID and cgroup ID (#40500)

13 days agovmspawn: add --ephemeral option similar to nspawn 40505/head
Michael Vogt [Sun, 1 Feb 2026 13:07:40 +0000 (14:07 +0100)] 
vmspawn: add --ephemeral option similar to nspawn

This patch adds a `--ephemeral` option to vmspawn that will turn
on snapshot mode on the qemu disk passed via `--image` or the
directory passed via `--directory`. For disk images it uses the
native mechanism that qemu provides. For directories it (re)uses
the snapshot mechanism that nspawn is using, i.e. it will create
a btrfs snapshot if possible and if not falls back to a traditional
directory copy.

13 days agoPortabled capsule fixes (#40427)
Yu Watanabe [Tue, 3 Feb 2026 17:53:16 +0000 (02:53 +0900)] 
Portabled capsule fixes (#40427)

13 days agocgroup-util: declare file_handle union in cg_cgroupid_open() 40500/head
Yu Watanabe [Wed, 28 Jan 2026 17:16:32 +0000 (02:16 +0900)] 
cgroup-util: declare file_handle union in cg_cgroupid_open()

This also effectively reverts eb2e91b9815bcbc59997c1092d7b52fc18930bff,
as now the object is only used as input, and kernel would need to handle
input with only ID no matter whether the struct later gets extended.

13 days agotree-wide: replace cg_{fd,path}_get_cgroupid() with {fd,path}_to_handle_u64()
Yu Watanabe [Wed, 28 Jan 2026 17:02:56 +0000 (02:02 +0900)] 
tree-wide: replace cg_{fd,path}_get_cgroupid() with {fd,path}_to_handle_u64()

13 days agopidfd-util: use fd_to_handle_u64()
Yu Watanabe [Tue, 3 Feb 2026 15:29:06 +0000 (00:29 +0900)] 
pidfd-util: use fd_to_handle_u64()

13 days agomountpoint-util: introduce name_to_handle_at_u64() and friends
Yu Watanabe [Tue, 3 Feb 2026 15:27:10 +0000 (00:27 +0900)] 
mountpoint-util: introduce name_to_handle_at_u64() and friends

They will be used later.

13 days agomountpoint-util: make name_to_handle_at_loop() gracefully handle NULL path
Yu Watanabe [Tue, 3 Feb 2026 15:07:02 +0000 (00:07 +0900)] 
mountpoint-util: make name_to_handle_at_loop() gracefully handle NULL path

13 days agojournal: avoid strjoina()/newa() (#40489)
Yu Watanabe [Tue, 3 Feb 2026 14:42:23 +0000 (23:42 +0900)] 
journal: avoid strjoina()/newa() (#40489)

Fixes #40456.

13 days agovmspawn/firstboot/homectl: fixes for plymouth (#40558)
Yu Watanabe [Tue, 3 Feb 2026 14:38:38 +0000 (23:38 +0900)] 
vmspawn/firstboot/homectl: fixes for plymouth (#40558)

13 days agoudev: create /run/udev/queue file earlier (#40518)
Yu Watanabe [Tue, 3 Feb 2026 14:36:28 +0000 (23:36 +0900)] 
udev: create /run/udev/queue file earlier (#40518)

When udevd received a uevent or inotify event, then we will queue
events. To minimize the race between processing these events by udevd
and user invocation of 'udevadm settle', let's create /run/udev/queue
file earlier.
On some errors, no event may be queued, but in that case, the file will
be removed by the post event source if nothing queued. See on_post().

Hopefully mitigate the issue #40499.

13 days agoportable: Don't refuse copying out instance of template that exists 40427/head
Daan De Meyer [Fri, 16 Jan 2026 20:25:10 +0000 (21:25 +0100)] 
portable: Don't refuse copying out instance of template that exists

There's no reason to refuse copying out capsule@abc.service even if
capsule@.service already exists on the host, so let's optionally not
search for templates if we can't find an instance when looking up
units and use it in portabled.

13 days agotree-wide: Allow running capsules as any user
Daan De Meyer [Fri, 16 Jan 2026 20:23:11 +0000 (21:23 +0100)] 
tree-wide: Allow running capsules as any user

For many use cases DynamicUser= just doesn't cut it. Specifically lots
of stuff wants to run as root. Let's support this use case by relaxing
our checks for capsules a bit.

13 days agocore: Improve logging when we cannot create destination mountpoint
Daan De Meyer [Fri, 16 Jan 2026 20:21:06 +0000 (21:21 +0100)] 
core: Improve logging when we cannot create destination mountpoint

If we fail to create a parent directory, then the error from
make_mount_point_inode_from_path() will always be
"No such file or directory" which doesn't tell us anything. Add logging
for the mkdir_parents() call as well so we get a useful error.

13 days agojournal: check validity of PID field in syslog/kmsg earlier 40489/head
Yu Watanabe [Wed, 28 Jan 2026 04:23:50 +0000 (13:23 +0900)] 
journal: check validity of PID field in syslog/kmsg earlier

Then, let's make syslog_parse_identifier() returns PID as pid_t, rather
than the string.

This also makes the function refuse ridiculously long identifier.

Fixes #40456.
Fixes oss-fuzz#477990732 (https://issues.oss-fuzz.com/issues/477990732).

13 days agoparse-util: rename trivial argument for parse_pid()
Yu Watanabe [Wed, 28 Jan 2026 03:37:56 +0000 (12:37 +0900)] 
parse-util: rename trivial argument for parse_pid()

The function parse_pid() trivially returns pid, hence it is not
necessary to name the argument for storing result as 'ret_pid'.

13 days agojournal: check the length of timestamp field in syslog message
Yu Watanabe [Wed, 28 Jan 2026 04:41:28 +0000 (13:41 +0900)] 
journal: check the length of timestamp field in syslog message

No functional change. Just refactoring and adding assertion.

13 days agojournal: make security label always NUL-terminated
Yu Watanabe [Wed, 28 Jan 2026 03:20:07 +0000 (12:20 +0900)] 
journal: make security label always NUL-terminated

Then, we can drop label_len or label_size arguments at various places.

While doing this, SCM_SECURITY is now ignored when SELinux is disabled
or when it contains embedded NUL.

13 days agofuzz: assume all reproducers as binary
Yu Watanabe [Wed, 28 Jan 2026 04:49:08 +0000 (13:49 +0900)] 
fuzz: assume all reproducers as binary

Even if parsers expect text data, reproducers may not be suitable
for being handled as a text file.

13 days agoudev: create /run/udev/queue file earlier 40518/head
Yu Watanabe [Fri, 30 Jan 2026 11:32:15 +0000 (20:32 +0900)] 
udev: create /run/udev/queue file earlier

When udevd received a uevent or inotify event, we will queue or trigger
synthesized events. To minimize the race between processing these events
by udevd and user invocation of 'udevadm settle', let's create /run/udev/queue
file earlier.
On some errors, no event may be queued, but in that case, the file will
be removed by the post event source if nothing queued. See on_post().

Hopefully mitigate the issue #40499.

13 days agoudev: remember UUIDs of triggered events
Yu Watanabe [Fri, 30 Jan 2026 15:47:31 +0000 (00:47 +0900)] 
udev: remember UUIDs of triggered events

Otherwise, /run/udev/queue file may be removed before udevd receives
the triggered uevents. This avoids the following race:

1. uevent A is being processed,
2. received an inotify event and trigger a synthesized uevent,
3. uevent A has been processed,
4. the uevent queue becomes empty, and /run/udev/queue is removed,
5. received and queued the synthesized uevent, and /run/udev/queue is recreated.

With this patch, /run/udev/queue is not removed in step 4. Hence,
'udevadm settle' will wait for the synthesized event being processed.

This is similar to waiting for child processes that reread partitions
(thus trigger synthetic events) being terminated, but for synthetic
events triggered by the manager.

13 days agoudev/watch: drop redundant argument
Yu Watanabe [Fri, 30 Jan 2026 15:15:29 +0000 (00:15 +0900)] 
udev/watch: drop redundant argument

The arguments dev and target are always same.

13 days agofirstboot/homectl: hide plymouth splashscreen when asking questions 40558/head
Luca Boccassi [Mon, 2 Feb 2026 11:58:19 +0000 (12:58 +0100)] 
firstboot/homectl: hide plymouth splashscreen when asking questions

When plymouth is enabled, the screen gets all garbled when firstboot
runs and asks questions. Disable the splash screen, but only when
actually asking questions.

13 days agogetty: remove --issue-file parameter
Thorsten Kukuk [Mon, 2 Feb 2026 15:06:13 +0000 (16:06 +0100)] 
getty: remove --issue-file parameter

agetty from util-linux is meanwhile following the configuration file
specification for /etc/issue. The usage of "--issue-file" breaks this
on distributions with current util-linux.

13 days agossh-generator: several cleanups (#40556)
Yu Watanabe [Tue, 3 Feb 2026 11:59:18 +0000 (20:59 +0900)] 
ssh-generator: several cleanups (#40556)

13 days agoFollowups for the recent chagnes to stability statements (#40540)
Zbigniew Jędrzejewski-Szmek [Tue, 3 Feb 2026 11:50:39 +0000 (12:50 +0100)] 
Followups for the recent chagnes to stability statements (#40540)

13 days agodocs: update old man page links to the official location 40540/head
Zbigniew Jędrzejewski-Szmek [Mon, 2 Feb 2026 11:12:05 +0000 (12:12 +0100)] 
docs: update old man page links to the official location

13 days agodocs/INCOMPATIBILITIES: describe the new meson option
Zbigniew Jędrzejewski-Szmek [Mon, 2 Feb 2026 11:05:13 +0000 (12:05 +0100)] 
docs/INCOMPATIBILITIES: describe the new meson option

13 days agohomectl: trim some trailing whitespace
Luca Boccassi [Tue, 3 Feb 2026 11:45:13 +0000 (12:45 +0100)] 
homectl: trim some trailing whitespace

13 days agovmspawn: do not pass console=hvc0 in GUI mode
Luca Boccassi [Mon, 2 Feb 2026 10:59:24 +0000 (11:59 +0100)] 
vmspawn: do not pass console=hvc0 in GUI mode

This breaks when using qemu's GUI mode. Follow mkosi's example.

Follow-up for 773ca1def8f79a8509bf0846de9d75902ca31f79

13 days agogithub/linter: disable ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT and update super...
Yu Watanabe [Tue, 3 Feb 2026 08:44:10 +0000 (17:44 +0900)] 
github/linter: disable ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT and update super-linter to 8.4.0 (#40554)

13 days agossh-generator: drop unused variable 40556/head
Yu Watanabe [Sat, 31 Jan 2026 06:31:36 +0000 (15:31 +0900)] 
ssh-generator: drop unused variable

13 days agossh-generator: drop redundant check
Yu Watanabe [Sat, 31 Jan 2026 06:30:58 +0000 (15:30 +0900)] 
ssh-generator: drop redundant check

The loop STRV_FOREACH() below does nothing if the strv is empty.

13 days agossh-generator: fix memleak
Yu Watanabe [Sat, 31 Jan 2026 06:30:33 +0000 (15:30 +0900)] 
ssh-generator: fix memleak

13 days agosd-bus: do not log in higher than LOG_DEBUG from library
Yu Watanabe [Wed, 28 Jan 2026 01:48:10 +0000 (10:48 +0900)] 
sd-bus: do not log in higher than LOG_DEBUG from library

Follow-up for 6c8de404c98fb9b965cba68360c2db1e3f55b776.

This also adds full stop to the log message, and make "vs" followed by
dot for consistency to other messages.

13 days agomeson: Don't install systemdstatedir (/var/lib/systemd) (#31627)
Yu Watanabe [Tue, 3 Feb 2026 01:08:54 +0000 (10:08 +0900)] 
meson: Don't install systemdstatedir (/var/lib/systemd) (#31627)

13 days agobuild(deps): bump super-linter/super-linter in the actions group 40554/head
dependabot[bot] [Sun, 1 Feb 2026 09:33:53 +0000 (09:33 +0000)] 
build(deps): bump super-linter/super-linter in the actions group

Bumps the actions group with 1 update: [super-linter/super-linter](https://github.com/super-linter/super-linter).

Updates `super-linter/super-linter` from 8.3.2 to 8.4.0
- [Release notes](https://github.com/super-linter/super-linter/releases)
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md)
- [Commits](https://github.com/super-linter/super-linter/compare/d5b0a2ab116623730dd094f15ddc1b6b25bf7b99...12562e48d7059cf666c43a4ecb0d3b5a2b31bd9e)

---
updated-dependencies:
- dependency-name: super-linter/super-linter
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
13 days agogithub/linter: disable ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT for super-linter
Yu Watanabe [Mon, 2 Feb 2026 23:59:38 +0000 (08:59 +0900)] 
github/linter: disable ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT for super-linter

Since super-linter 8.4.0, it is enabled by default and requires GITHUB_TOKEN.
We do not provide GITHUB_TOKEN for the action, then it fails with the following:
```
Failed to get [GITHUB_TOKEN]. Terminating because status reports were explicitly enabled,
but GITHUB_TOKEN was not provided.
```

Also, even if GITHUB_TOKEN is set, the feature provides annoying
messages in each PR. See https://github.com/super-linter/super-linter/issues/7458
So, let's disable the feature.

13 days agoimport-generator: fix sysext/confext ordering in initrd
Antonio Alvarez Feijoo [Mon, 2 Feb 2026 14:09:40 +0000 (15:09 +0100)] 
import-generator: fix sysext/confext ordering in initrd

In the initrd, order the generated `systemd-import@.service` units before the
initrd-specific sysext/confext units.

13 days agossh-generator: follow symlink when searching for sshd@.service
Mike Yuan [Mon, 2 Feb 2026 15:24:00 +0000 (16:24 +0100)] 
ssh-generator: follow symlink when searching for sshd@.service

unit_file_exists() currently does not follow symlinks, as it is
mainly used to test whether the unit (of any install state)
has been seen under search dirs. However, in ssh-generator
we should search for and honor whatever the distro ships,
which might be an alias or linked externally.

13 days agoask-password: install polkit policy
Luca Boccassi [Mon, 2 Feb 2026 13:19:36 +0000 (14:19 +0100)] 
ask-password: install polkit policy

The policy was added, but never hooked into meson to be installed,
so it's unused. Install it.

Follow-up for 066f6bfb6278962e288cce2ba522a2e400980e7c

13 days agoFixes for ask-password (#40549)
Yu Watanabe [Mon, 2 Feb 2026 22:48:13 +0000 (07:48 +0900)] 
Fixes for ask-password (#40549)

2 weeks ago[metrics] Add a basic CLI 39202/head
Yaping Li [Tue, 21 Oct 2025 01:29:42 +0000 (18:29 -0700)] 
[metrics] Add a basic CLI

systemd-report will list all the metrics.

2 weeks ago[metrics] Add basic system wide and per unit metrics
Yaping Li [Tue, 21 Oct 2025 01:25:10 +0000 (18:25 -0700)] 
[metrics] Add basic system wide and per unit metrics

This commit adds some basic metrics and integration tests.

System wide metrics:
- units_by_type_total: target/device/automount etc.
- units_by_state_total: active/reloading/inactive etc.

Two per unit metrics which shows the current state of a unit:
- unit_active_state
- unit_load_state

A metric for service state:
- nrestarts

Here are some sample outputs:

units_by_type_total:

{
        "name" : "io.systemd.Manager.units_by_type_total",
        "value" : 52,
        "fields" : {
                "type" : "target"
        }
}
{
        "name" : "io.systemd.Manager.units_by_type_total",
        "value" : 82,
        "fields" : {
                "type" : "device"
        }
}
{
        "name" : "io.systemd.Manager.units_by_type_total",
        "value" : 2,
        "fields" : {
                "type" : "automount"
        }
}

units_by_state_total:

{
        "name" : "io.systemd.Manager.units_by_state_total",
        "value" : 216,
        "fields" : {
                "state" : "active"
        }
}
{
        "name" : "io.systemd.Manager.units_by_state_total",
        "value" : 0,
        "fields" : {
                "state" : "reloading"
        }
}
{
        "name" : "io.systemd.Manager.units_by_state_total",
        "value" : 120,
        "fields" : {
                "state" : "inactive"
        }
}

unit_active_state:

{
        "name" : "io.systemd.Manager.unit_active_state",
        "object" : "multi-user.target",
        "value" : "active"
}
{
        "name" : "io.systemd.Manager.unit_active_state",
        "object" : "systemd-sysusers.service",
        "value" : "inactive"
}

unit_load_state:

{
        "name" : "io.systemd.Manager.unit_load_state",
        "object" : "multi-user.target",
        "value" : "loaded"
}

nrestarts:

{
        "name" : "io.systemd.Manager.nrestarts",
        "object" : "user@0.service",
        "value" : 0
}
{
        "name" : "io.systemd.Manager.nrestarts",
        "object" : "user-runtime-dir@0.service",
        "value" : 0
}

2 weeks ago[metrics] Introduce metrics API framework
Yaping Li [Thu, 16 Oct 2025 06:21:36 +0000 (23:21 -0700)] 
[metrics] Introduce metrics API framework

This commit introduces the shared code for the metrics API framework:

- Metrics API definitions
- Code to set up the varlink server
- The describe method which shows all the metrics families
- The list method which lists all the metrics
- Type definitions related to MetricFamily
- Common code to build json objects

2 weeks agomkosi: update debian commit reference to ecec6127927ca59726e3d3535a2b2344f585cf74 31627/head
Luca Boccassi [Mon, 2 Feb 2026 15:28:55 +0000 (16:28 +0100)] 
mkosi: update debian commit reference to ecec6127927ca59726e3d3535a2b2344f585cf74

ecec612792 Stop installing /var/lib/systemd/
120f84266d d/rules: use --no-also for networkd and journald
41780703f2 d/rules: do not restart sockets, it fails if the service is running
5f219fbd65 Increase number of sections of sd-stub on amd64 too
5832d7f614 d/systemd.postinst: use --no-dbus for daemon-reexec

2 weeks agoDon't install systemdstatedir (/var/lib/systemd)
Max Gautier [Tue, 5 Mar 2024 08:54:47 +0000 (09:54 +0100)] 
Don't install systemdstatedir (/var/lib/systemd)

systemdstatedir is created by tmpfiles conf (tmpfiles.d/systemd.conf.in)
already.
By shipping it, systemd prevents the effect of tmpfiles.d/var.conf.in:

q /var 0755 - - -

This should helps implementing the "Hermetic /usr" pattern.

Links: https://0pointer.net/blog/fitting-everything-together.html

2 weeks agomkosi: workaround issue in mdadm-4.5 + linux-6.18
Yu Watanabe [Sat, 31 Jan 2026 17:37:07 +0000 (02:37 +0900)] 
mkosi: workaround issue in mdadm-4.5 + linux-6.18

After debian updated the kernel from 6.17 to 6.18, mdadm command fails
with the following:
```
+ mdadm --create /dev/md/mdmirror ...
mdadm: size set to 64512K
mdadm: Can't open /sys/module/md_mod/parameters/legacy_async_del_gendisk
mdadm: init md module parameters fail
```

This seems a bug in mdadm, and fix is already merged in the upstream:
https://github.com/md-raid-utilities/mdadm/pull/228
Until the fix is backported, let's workaround the issue.

See also: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1125390

2 weeks agoask-password: remove files in /run when query is aborted 40549/head
Zbigniew Jędrzejewski-Szmek [Mon, 2 Feb 2026 14:16:10 +0000 (15:16 +0100)] 
ask-password: remove files in /run when query is aborted

Because of the missing 'goto', if the query was aborted, we
would leave behind the ask.* ini file.

2 weeks agoask-password: reject control chars and quotes in query description
Zbigniew Jędrzejewski-Szmek [Mon, 2 Feb 2026 13:57:12 +0000 (14:57 +0100)] 
ask-password: reject control chars and quotes in query description

As reported in https://yeswehack.com/vulnerability-center/reports/705270,
YesWeHack issue #YWH-PGM9780-66, if a newline is injected into the message
field, it is passed through unmolested and lands in the .ini file. This
obviously would cause the parser to be confused.

Let's forbid any control characters or quotes in those fields. If we want
something more complicated in the future, we can add a custom validation
function and allow some escaping mechanism.

2 weeks agodiscover-image: fix typo in log message
Antonio Alvarez Feijoo [Mon, 2 Feb 2026 13:18:42 +0000 (14:18 +0100)] 
discover-image: fix typo in log message

2 weeks agonspawn: extract snapshot creation into new shared helper
Michael Vogt [Sun, 1 Feb 2026 13:03:22 +0000 (14:03 +0100)] 
nspawn: extract snapshot creation into new shared helper

This commit extracts the creation of the snapshot for
nspawn into a shared helper. Its not a lot of code but its
subtle so having a single place seems beneficial.

While extracting the snapshot code got tweaked/simplified based
on the feedback from Yu (many thanks!).

With that we can simplify the snapshot delete and error handling
as well. The shared helper is then going to be used by vmspawn
when it also gets the --ephemeral option.

2 weeks agopo: Translated using Weblate (Greek)
Jim Spentzos [Sun, 1 Feb 2026 15:58:28 +0000 (15:58 +0000)] 
po: Translated using Weblate (Greek)

Currently translated at 35.9% (95 of 264 strings)

Co-authored-by: Jim Spentzos <jimspentzos2000@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/el/
Translation: systemd/main

2 weeks agoUpdate the "portability and stability" document (#40502)
Mike Yuan [Sun, 1 Feb 2026 11:43:18 +0000 (12:43 +0100)] 
Update the "portability and stability" document (#40502)

2 weeks agomeson: conditionalize tmpfiles.d/legacy.conf 40502/head
Zbigniew Jędrzejewski-Szmek [Sat, 31 Jan 2026 16:48:18 +0000 (17:48 +0100)] 
meson: conditionalize tmpfiles.d/legacy.conf

This is a compat interface, so let downstream like Arch drop it easily.

2 weeks agounits: restore runlevel[0-6].target aliases
Zbigniew Jędrzejewski-Szmek [Wed, 28 Jan 2026 15:37:18 +0000 (16:37 +0100)] 
units: restore runlevel[0-6].target aliases

This partially reverts commit e58ba80a40fb6e96543d56774a5bc5aa9cdadbf3. Those
aliases were removed as part of the removal of sysvinit compat, but the removal
was immediately reported as a regression by users. In particular, users can
have one of those set as the default target, or use those names in Wants= or
Requires= dependencies. At least in Fedora, the removal was immediately
reverted.

When looking at our "portability and stability promise", I noticed that those
units are explicitly listed in the promise. Let's restore them upstream. They
are conditionalized under a new -Dcompat-sysv-interfaces=bool option, so that
downstreams like Arch that wasnt to strictly avoid legacy interfaces can easily
disable them. They are dropped from the docs, like we do for all deprecated
interfaces.

2 weeks agoboot: fix typo in variable name
Yu Watanabe [Sun, 1 Feb 2026 02:57:43 +0000 (02:57 +0000)] 
boot: fix typo in variable name

Fixed by GitHub Copilot.

2 weeks agodocs/PORTABILITY_AND_STABILITY: update the policy
Zbigniew Jędrzejewski-Szmek [Wed, 28 Jan 2026 15:29:37 +0000 (16:29 +0100)] 
docs/PORTABILITY_AND_STABILITY: update the policy

The kernel has a "don't break userspace" policy [1] which is very easy
to understand and like (even if the details are complicated). We had a
complicated policy statement, but the actual practice is that we'll
generally avoid changes that cause problems for users. So the whole
detailed table is more of a guideline than something that we can rely
on.

To improve public perception, and to align the docs with practice, let's
make a general promise to keep stability, and change the existing table
to a "guideline" that tells people which interfaces to use and which not
to use so that use and development of systemd don't conflict or create
pain.

The existing document was very long, and I think it'll have a bigger
impact if it shorter. In particular, the chart is dropped, because it
was of limited use and severly outdated, because we have added many new
interfaces and components without updating it. Adding the missing
elements (and then keeping it updated) would be a lot of effort. The
chart would be most useful to somebody trying to build a systemd
reimplementation, but there haven't been many attempts like this, so
let's save the work and drop it and make the document shorter.

I also dropped the mentions of Debian. Back in the day, we did indeed
adopt many Debian conventions for config files and such, but over the
years the scope of the project has grown quite a bit and that part
of systemd is a small fraction now. And we've adopted conventions
and ideas from many other places too, so we don't mention Debian
specifically.

[1] https://docs.kernel.org/admin-guide/reporting-regressions.html

2 weeks agoemacs: drop obsolete emacs property
Zbigniew Jędrzejewski-Szmek [Wed, 28 Jan 2026 09:42:15 +0000 (10:42 +0100)] 
emacs: drop obsolete emacs property

New emacs warns on every open about the old attribute. Let's assume that
everybody who uses emacs uses the latest version, so we can drop the compat.

2 weeks agoquirks: keyboard: d330 keyboard rework
David Santamaría Rogado [Thu, 29 Jan 2026 22:26:55 +0000 (23:26 +0100)] 
quirks: keyboard: d330 keyboard rework

change matches to generic input devices one as name can't be used
because these keyboards have multiple names and also they are used in
multiple devices. This way will be possible to define more detachable
keyboards in an easy way for multiple devices.

Known USB ids for D330 series are: 17EF:60C3, 17EF:60C6 and 17EF:60C8.

Also mark that the tablet part keys and the keyboard doesn't have any
LED to let interfaces decide to expose on-screen indicators.

2 weeks agobus-unit-util: convert StandardInputText to StandardInputData
Yu Watanabe [Fri, 30 Jan 2026 18:30:44 +0000 (03:30 +0900)] 
bus-unit-util: convert StandardInputText to StandardInputData

Fixes #40527.

2 weeks agobus-unit-util: make ExecSearchPath= accepts colon separated list
Yu Watanabe [Fri, 30 Jan 2026 11:52:39 +0000 (20:52 +0900)] 
bus-unit-util: make ExecSearchPath= accepts colon separated list

Unlike other settings that takes multiple values, the setting takes
colon separated list of paths, but when specified as a DBus property,
it previously accepted space separated list of paths.
Let's also make the DBus property accepts colon separated lists.

Fixes #40513.