Commit Graph
53231 Commits
Author SHA1 Message Date
Daan De Meyer c4b4d42cae vconsole-util: Introduce vconsole_serialize()
Preparation for reuse in systemd-firstboot.
2025-02-07 09:18:36 +09:00
Daan De Meyer 6d0f502736 locale: Move vconsole specific logic to shared/vconsole-util.h
This allows reusing the logic in systemd-firstboot.c.

To avoid having to link libxkbcommon into libsystemd-shared, we add
a level of indirection to vconsole_convert_to_x11() so that the verify
function is passed in by the caller.
2025-02-07 09:18:36 +09:00
Yu WatanabeandRudi Heitbaum 0d879453ac basic/linux: update kernel headers from v6.14-rc1
Co-authored-by: Rudi Heitbaum <rudi@heitbaum.com>
2025-02-06 16:14:14 +00:00
Thorsten Kukuk ac9edf9911 systemd-pull: support .asc and .sha256.* signature 2025-02-06 16:49:36 +01:00
Martin Hundebøll df8bd4c171 vmspawn: ignore failure from sshd-vsock@ unit
The "main" sshd@.service unit ignores the return code from per-session
instances, so do the same for the vsock variant.
2025-02-06 16:49:11 +01:00
Lennart Poettering abf9e6ede5 homectl: make default area configurable 2025-02-06 09:23:49 +01:00
Lennart Poettering f44e7a8c11 run0: add explicit support for opening sessions in specific areas 2025-02-06 09:23:49 +01:00
Lennart Poettering c747c04146 pam: introduce multiple per-user "areas", i.e. "sub-home-directories" of sorts 2025-02-06 09:23:49 +01:00
Lennart Poettering add946e834 user-record: add new 'default_area' field, but don't hook it up yet 2025-02-06 09:23:49 +01:00
Lennart Poettering 2824946d33 json-util: add generic json_dispatch_filename() dispatch helper 2025-02-06 09:23:49 +01:00
Lennart Poettering c554acd11d exec-invoke: respect $HOME set via PAM
This follows the same recent change in util-linux:

https://github.com/util-linux/util-linux/pull/3354

i.e. we generally want that PAM modules can override $HOME and it is
honoured for the CWD after login.

(This renames the 'home' variable we maintained sofar to 'pwent_home',
to clarify that it's the home directory listed in the struct passwd
entry, and thus not necessarily the one actually used)
2025-02-06 09:23:49 +01:00
Yu Watanabe 229d91793f boot: several follow-ups for .efifw section support (#36230)
Follow-ups for #35091.
2025-02-06 14:53:12 +09:00
Yu Watanabe 570cd55783 udevadm: several cleanups for command line option parsers (#36241) 2025-02-06 09:39:03 +09:00
Yu Watanabe 2b6890d92f udev-builtin: several trivial cleanups (#36239)
- introduces UDEV_BUILTIN_DESTRUCTOR macro,
- normalize log messages on initialize/finalize,
- explicitly initialize global variable,
- drop using _UDEV_BUILTIN_INVALID.
2025-02-06 09:38:39 +09:00
Fabian Möller cac3b43eee resolved: fix DNSSEC missing-key error
Skip unsupport/invalid `DS` and `DNSKEY` combinations during verification.

Fixes: #12545
2025-02-05 22:11:55 +01:00
Matthieu LAURENT e8e778e8ab homectl: fix typo in help text 2025-02-05 17:28:37 +01:00
Daan De Meyer bc1291aa85 repart: Don't fail when we're unable to read file attributes
We're getting EOVERFLOW when reading file attributes trying to get
mkosi running in a docker container (don't ask). I have a suspicion
this is coming from fuse-overlayfs. Anyway, since the file attributes
stuff is supposed to be purely optional, let's not fail when we can't
read file attributes for whatever reason.
2025-02-05 16:18:42 +01:00
Luca Boccassi 2ee81b556f network/route: improve Gateway=_dhcp4 handling (#36183)
- Also configures route to the gateway and prefix route in the specified
table, if necessary.
- Also set preferred source address of the route.

Closes #36168.
2025-02-05 12:19:01 +00:00
Yu Watanabe bc45d9c959 network/routing-policy-rule: fix compare func
Previously, when comparing an existing and requested routing policy
rules, `all` flag was unset, thus the from and to addresses in the two
rules were not compared. Hence, a new request with from and/or to
addresses might be considered as it already exists even the addresses of
existing one were different from the newly requested one.

All existing rules have valid family, i.e. AF_INET or AF_INET6. And,
all requesting rules with from and/or to addresses also have a valid
family. Hence, even `all` flag is unset, the addresses can be and must
be compared in that case.

Fixes a regression caused by fc58350aa4 (v257).
Fixes #35874.
2025-02-05 09:14:54 +09:00
Daan De Meyer 060676871e machine: introduce io.systemd.MachineImage.CleanPool (#35928)
This PR introduces io.systemd.MachineImage.CleanPool method which is
alternative to DBus's CleanPool.
2025-02-04 18:43:23 +01:00
Daan De Meyer 38801c9129 ukify/measure: Revert changes to use SizeOfImage from Linux PE binary
With 19812661f1, we make sure at runtime
in the stub itself that SizeOfImage from the Linux EFISTUB PE binary is
taken into account, so there's no need to take this into account in ukify
itself. By reverting the ukify change, we again ensure that Misc_VirtualSize
reflects the actual size of the Linux EFISTUB PE binary in the .linux section
which lots of tooling depends on. It also makes sure we don't measure a bunch
of extra zeroes in the stub which should fix systemd-pcrlock measurements as
well.

This effectively reverts 2188c759f9 and
0005411352.

Fixes #35851
2025-02-04 14:11:38 +01:00
Ivan Kruglov f6a7328e24 machine: introduce io.systemd.MachineImage.CleanPool 2025-02-04 03:03:00 -08:00
Ivan Kruglov 5a99c9d778 machine: use image_clean_pool_operation() in dbus 2025-02-04 03:03:00 -08:00
Ivan Kruglov a4019c75c2 machine: image_clean_pool_operation() 2025-02-04 03:03:00 -08:00
Ivan Kruglov 2694549ddf machine: rename machine_copy_from_to() -> machine_copy_from_to_operation()
This is done to make it clear that machine_copy_from_to() use and
returns an Operation object.
2025-02-04 02:58:48 -08:00
Vyacheslav Yurkov b1e5a7aa3f meson: add install tag for systemctl
Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
2025-02-04 09:56:33 +01:00
Yu Watanabe 5078e36632 network: allow to configure routing policy rule even if requesting interface is not activated yet
In the kernel, all routing policy rules are not assigned to any interface,
and we can configure them even if the relevant interface is down state.

Fixes a regression caused by 4f8b153d90 (v257).
Fixes #36244.
2025-02-04 12:28:30 +09:00
Daan De Meyer 4ba3530d67 homectl: Fix empty checks 2025-02-03 19:24:31 +01:00
Daan De Meyer 7ebe910c88 user-runtime-dir: Log the quota limit in the warning message on failure 2025-02-03 11:10:22 +01:00
Zbigniew Jędrzejewski-Szmek 2e326aad7f ukify: Calculate section size more correctly (#36215)
We should only use Misc_VirtualSize if it's smaller than SizeOfRawData,
since in that case it'll be the non-aligned section size. Otherwise we
have to use SizeOfRawData to get the size on disk.
2025-02-03 10:17:37 +01:00
Yu Watanabe 295741c0d1 udevadm-verify: document '--resolve-names=late' and accept 'never' as is
When '--resolve-names=late', systemd-udevd resolves user/group names
during each event being processed, and does not verify names on parse.
When '--resolve-names=never', systemd-udevd refuses any user/group names
on parse. Hence, the parser of udev rules behaves diffrently. Let's not
convert 'never' -> 'late' silently, and use the specified option as is.

This also updates man page and shell completion for --resolve-names
option.
2025-02-02 15:55:01 +09:00
Yu Watanabe 8623980980 udevadm: introduce parse_resolve_name_timing() 2025-02-02 15:55:01 +09:00
Yu Watanabe be73f6e35b udevadm: several cleanups around parse_device_action()
- drop unnecessary one line function dump_device_action_table(),
- make parse_device_action() log about invalid action string,
- rename output argument of parse_device_action().
2025-02-02 15:55:01 +09:00
Yu Watanabe 7db4bdcd40 udev: replace '!= _UDEV_BUILTIN_INVALID' -> '>= 0'
No functional change, just refactoring.
2025-02-02 13:09:18 +09:00
Yu Watanabe 5bb83e3f30 udev-builtin-hwdb: explicitly initialize global variable 2025-02-02 12:44:57 +09:00
Yu Watanabe c791f61949 udev-builtin: normalize load/unload log messages by builtins 2025-02-02 12:43:26 +09:00
Yu Watanabe 1a85468768 udev: introduce UDEV_BUILTIN_DESTRUCTOR macro 2025-02-02 12:36:31 +09:00
Luca Boccassi 75ee025c5d kernel-install: install addons in 90-uki-copy.install if they are present
mkosi now has a kernel-install plugin to build addons, mkosi-addon.
If there are addons in <uki>.extra.d/ install them too to
the ESP.
2025-02-01 18:12:47 +09:00
Mike Yuan e14e9c9f17 Revert "Reduce priority of "cleared HibernateLocation" message"
This reverts commit 9f575145ea.
2025-02-01 15:30:50 +09:00
Yu Watanabe 546e6cb2e3 userdb: fix typo
Follow-up for 7419291670.
2025-02-01 14:09:06 +09:00
Yu Watanabe 52a0bf1621 boot: rename efifirmware.[ch] -> efi-firmware.[ch]
This also
- renames efifirmware_match_by_fwid() -> efi_firmware_match_by_fwid(),
- drops unnecessary wrapper efifw_get_fwid(),
- drops unnecessary inclusion of header <endian.h>,
- sort files in meson.build.

No functional change, just refactoring and follow-ups for
83bf58f39d.
2025-02-01 13:54:01 +09:00
Ani Sinha 83bf58f39d uki: introduce support for a .efifw section
UKIs can be used to bundle uefi firmwares that can be measured and
used on a confidential computing environment. There can be more than one
firmware blob bundle, each one for a specific platform. Also firmware images
can themselves be containers like IGVM files that can in turn bundle the
actual firmware blob. This change is specifically for uefi firmwares, not
IGVM container files.

This change adds support to introduce a .efifw section in UKI that can be
used for firmware blobs/images. There can be multiple such sections and each
section can contain a single firmware image.

The matching .hwids entry for a specific platform can be used to select the
most appropriate firmware blob.

ukify tool has been also changed to support addition of a firmware image
in UKI.

Since firmware gets measured automatically, we do not need to measure it
separately as a part of the UKI.
2025-01-31 10:05:00 +01:00
Zbigniew Jędrzejewski-Szmek b66a4c157e firstboot: fix crash when hostname question is skipped 2025-01-30 19:48:43 +01:00
Beniamino Galvani 30675a6ee9 dns-domain: accept encoded domain names without terminating zero label
Commit 1be9b30a3b ("dhcp6: use dns_name_from_wire_format") introduced a
stricter validation of domains received via DHCPv6, by using function
dns_name_from_wire_format() which rejects the domain when it is missing the
terminating zero label. According to RFC 4704 § 4.2, DHCPv6 servers should
always add the zero label:

   To send a fully qualified domain name, the Domain Name field is set
   to the DNS-encoded domain name including the terminating zero-length
   label.  To send a partial name, the Domain Name field is set to the
   DNS-encoded domain name without the terminating zero-length label.

   [...]

   Servers SHOULD send the complete fully qualified domain name in
   Client FQDN options.

In practice, there is at least on common DHCPv6 server implementation (dnsmasq)
that sends the FQDN option without the ending zero-length label; after
upgrading to the new systemd, the client cannot parse the option and therefore
the machine doesn't get the hostname provided by dnsmasq.

This commit restores the old behavior that considers a domain valid even when
it's missing the terminating zero label.

Here's a quick reproducer:

--8<--

ip link add veth0 type veth peer name veth1
ip netns add ns1
ip link set veth1 netns ns1
ip link set veth0 address 00:11:22:33:44:55
ip link set veth0 up
ip -n ns1 link set veth1 up
ip -n ns1 address add dev veth1 fd01::1/64

ip netns exec ns1 dnsmasq \
   --pid-file=/tmp/dnsmasq.pid --no-hosts \
   --bind-interfaces --interface veth1 --except-interface lo \
   --dhcp-range=fd01::100,fd01::200 --enable-ra \
   --dhcp-host 00:11:22:33:44:55,foobar &

cat <<EOF > /etc/systemd/network/veth0.network
[Match]
Name=veth0

[Network]
DHCP=ipv6
EOF

networkctl reload
networkctl up veth0
sleep 5
hostname

--8<--

Without this change, systemd-networkd prints the following message and doesn't
set the hostname from DHCP:

  veth0: DHCPv6 client: Failed to parse FQDN option, ignoring: Bad message
2025-01-30 16:18:49 +00:00
Luca Boccassi 515ab90e4d cryptenroll/repart/creds: no longer default to binding against literal PCR 7 (#36200)
PCR 7 covers the SecureBoot policy, in particular "dbx", i.e. the
denylist of bad actors. That list is pretty much as frequently updated
as firmware these days (as fwupd took over automatic updating). This
means literal PCR 7 policies are problematic: they likely break soon,
and are as brittle as any other literal PCR policies.

hence, pick safer defaults, i.e. exclude PCR 7 from the default mask.
This means the mask is now empty.

Generally, people should really switch to signed PCR policies covering
PCR 11, in combination with systemd-pcrlock for the other PCRs.
2025-01-30 14:57:15 +00:00
Andrew Sayers 9f575145ea Reduce priority of "cleared HibernateLocation" message
This message appears when a computer hibernates, then awakens, then reboots,
and everything goes OK.  It's a normal progress message the user doesn't need
to know about, but it distracts them from important startup messages and could
even train them to ignore the warning when the procedure fails.

Reduce the level to LOG_INFO.
2025-01-30 10:36:13 +01:00
Lennart Poettering c205840fe0 cryptenroll,repart: print a log message if no access restrictions are applied to TPM-based encryption 2025-01-30 10:32:26 +01:00
Lennart Poettering 4b840414be cryptenroll/repart/creds: no longer default to binding against literal PCR 7
PCR 7 covers the SecureBoot policy, in particular "dbx", i.e. the
denylist of bad actors. That list is pretty much as frequently updated
as firmware these days (as fwupd took over automatic updating). This
means literal PCR 7 policies are problematic: they likely break soon,
and are as brittle as any other literal PCR policies.

hence, pick safer defaults, i.e. exclude PCR 7 from the default mask.
This means the mask is now empty.

Generally, people should really switch to signed PCR policies covering
PCR 11, in combination with systemd-pcrlock for the other PCRs.
2025-01-30 10:32:26 +01:00
Luca Boccassi f6928e6b5d pe: do not warn about .initrd addons
We now support them, so stop warning about them.
2025-01-30 09:27:42 +01:00
Devilish Spirits 164295eb6d Fix inversion of timesyncd_usec/epoch_usec variables in clock-warp.c
In clock_apply_epoch() function, the /usr/lib/clock-epoch timestamp was set to timesyncd_usec instead of epoch_usec and vice-versa which produced a misleading log message about the clock source systemd used for early clock sanitization. This trivial commit fix the mistake.
2025-01-30 09:27:03 +01:00