Commit Graph

80093 Commits

Author SHA1 Message Date
Lennart Poettering
e5dfe2cd8d udevadm: check number of passed arguments
We didn't check the number of arguments first, hence ended up outputting
some ugly complaints with `(null)` in a format string. And what's worse
accepted any number of arguments, where we'd ignore all but the first
two though.
2025-03-15 05:12:46 +09:00
Lennart Poettering
d810815ed4 firstboot: welcome user with emoji in firstboot wizard 🧙 2025-03-15 05:12:12 +09:00
Zbigniew Jędrzejewski-Szmek
3a15daf440 Restore docs/PAX_CONTROL_GROUPS
This partially reverts 8d04b8198d.
If we completely drop the file, users will get a 404. But this document
has been in place for a long time and is referred to in many other places,
incl. our old wiki at https://www.freedesktop.org/wiki/Software/.
The page already says that it's been replaced
("… Please consult this document only as a historical reference. …").
We should only remove it from the index (which
8d04b8198d did).

In general, let's be more careful about preserving link stability.
When we change something in a way that breaks URLs, we're creating
pain for users.
2025-03-14 20:33:37 +09:00
Zbigniew Jędrzejewski-Szmek
51eab4afa6 docs/ROOTFS_DISCOVERY: removed doubled dot
Inadvertent change in 487b95d9b6.
2025-03-14 11:06:37 +01:00
Luca Boccassi
104587314f mkosi: update debian commit reference
* d8c7f8f7f4 Update changelog for 257.4-2 release
* f74cf88300 Split bootctl to new systemd-boot-tools package
* 10a8764966 Update changelog for 257.4-1 release
2025-03-14 05:25:20 +09:00
Lennart Poettering
e707d0459c analyze: don't connect to bus from analyze test run (#36719)
This thing should not be "live", hence don't try to connect to the bus,
or bind the private bus socket.

Fixes: #36540
2025-03-13 17:51:45 +01:00
Lennart Poettering
96a0cfbf47 emergency-action: sleep 5s before rebooting in various cases
This adds a new EMERGENCY_ACTION_SLEEP_5S flag, which when set will
delay the emergency action for 5s. This is supposed to be used together
with EMERGENCY_ACTION_WARN so that users can actually read the message
we output.

We enable this with all emergency action requests that already set
EMERGENCY_ACTION_WARN, except for the 7x ctrl-alt-del burst reboot,
where the user knows what they do and there's no real reason to wait,
they don't need to be informed.

This also enables both EMERGENCY_ACTION_WARN + EMERGENCY_ACTION_SLEEP_5S
for FailureAction= processing of regular units, where these were so far
off. (it leaves this off for SuccessAction= however!). This is a good
thing to make things more debuggable: if something fails and we reboot
this really deserves notification of the user.

(For SuccessAction= this logic does not apply, since the shutdown action
induced here is apparently intended part of the codeflow, for example in
systemd-reboot.service or a similar unit, where the shutdown is goal and
not exception and derserves no additional noisy reporting).

Inspired by: https://github.com/systemd/systemd/pull/36705#issuecomment-2717014120
2025-03-13 17:03:42 +01:00
Zbigniew Jędrzejewski-Szmek
487b95d9b6 docs/ROOTFS_DISCOVERY: minor wording and syntactic improvements 2025-03-13 16:05:03 +01:00
Lennart Poettering
66c2a2e42a test-execute: prominently show which test we are about to enter 2025-03-13 14:22:13 +01:00
Lennart Poettering
2544075c0b execute: add some minor debug logging 2025-03-13 14:22:13 +01:00
Lennart Poettering
ec5bcf0b69 pid1: don't connect to oomd in test runs 2025-03-13 14:22:13 +01:00
Lennart Poettering
71a737d68d analyze: don't connect to bus from analyze test run
This thing should not be "live", hence don't try to connect to the bus,
or bind the private bus socket.

Fixes: #36540
2025-03-13 14:22:13 +01:00
Lennart Poettering
e75fbee624 manager: explicitly create our private runtime directory
So far /run/systemd/ was created as side-effect of initializing the
D-Bus client/server. But in one of the next commits we'll suppress
connecting to D-Bus in test runs, hence let's move the logic our of the
D-Bus code and into manager_startup().

Then, also drop creating it again and again in PID 1 at various places,
and just rely on it to exist.
2025-03-13 14:22:13 +01:00
Lennart Poettering
da65941c3e coredump,analyze: use read_full_file() for reading various top-level /proc/ files
Kernel API file systems typically use either "raw" or "seq_file" to
implement their various interface files. The former are really simple
(to point I'd call them broken), in that they have no understanding of
file offsets, and return their contents again and again on every read(),
and thus EOF is indicated by a short read, not by a zero read. The
latter otoh works like a typical file: you read until you get a
zero-sized read back.

We have read_virtual_file() to read the "raw" files, and can use regular
read_full_file() to read the "seq_file" ones.

Apparently all files in the top-level /proc/ directory use 'seq_file'.
but we accidentally used read_virtual_file() for them. Fix that.

Also clarify in a comment what the rules are.

Fixes: #36131
2025-03-13 14:18:46 +01:00
Lennart Poettering
cca655dcbf bootctl: make sure bootctl --image= works on image with /usr/ but without / (#36727)
```
Let's make sure we can use the tool on ParticleOS images. They have no
root fs by default (until they are instantiated), but always have /usr/.
Hence add DISSECT_IMAGE_USR_NO_ROOT which has the desired effect.
```
2025-03-13 14:14:56 +01:00
Lennart Poettering
a462280c9a bootctl: tweak status output when operating on --image= files
Let's not claim the system was not booted with UEFI if we use --image=.
The system wasn't booted at all, after all. Hence supress the whole
section altogether in this case.
2025-03-13 10:49:53 +01:00
Lennart Poettering
742e26ba20 bootctl: make sure bootctl --image= works on image with /usr/ but without /
Let's make sure we can use the tool on ParticleOS images. They have no
root fs by default (until they are instantiated), but always have /usr/.
Hence add DISSECT_IMAGE_USR_NO_ROOT which has the desired effect.
2025-03-13 10:49:33 +01:00
Lennart Poettering
76f1c94674 update TODO 2025-03-13 10:35:24 +01:00
Lennart Poettering
ceaf0bda47 update TODO 2025-03-13 09:55:59 +01:00
Yu Watanabe
e0b915f77a test-localed-util: use ASSERT_OK() and friends 2025-03-13 09:27:05 +01:00
Yu Watanabe
d8a353552a TEST-73-LOCALE: do not unnecessarily restart systemd-localed
It is not necessary to clear previous keymap assignment, as
`localectl set-keymap` will anyway overwrite the previous assignment.

This drops the unnecessary restart of systemd-localed in the loop.
The mkosi test image contains about 500~700 keymaps. The test
performance is greatly improved by reducing the number of restarts,
especially when the test is running with sanitizers.

On Fedora 41 with sanitizers,
Before:
1/1 systemd:integration-tests / TEST-73-LOCALE OK             1157.50s
After:
1/1 systemd:integration-tests / TEST-73-LOCALE OK              104.43s
2025-03-13 09:24:49 +01:00
Yu Watanabe
fdab24bf6a Fix several issues found by Coverity (#36726) 2025-03-13 07:54:06 +09:00
Daan De Meyer
3ed45e7fd3 copy: Bubble up ENOSPC immediately in fd_copy_directory()
It doesn't really make sense to continue once we start getting ENOSPC.
2025-03-13 07:53:06 +09:00
Lennart Poettering
520372b7ee man: document how Restart= reacts to oom kill
Fixes: #36529
2025-03-12 22:35:51 +00:00
Yu Watanabe
e0111277e4 nsresource: fix GID check in io.systemd.UserDatabase.GetGroupRecord method
Fixes a bug in 8aee931e7a (v256).
2025-03-13 05:35:54 +09:00
Franck Bui
dbe61d9ec7 getty-generator: don't use "3270!tty1" when instantiating serial-getty@.service on s390x
Path of the 3270 console in /sys is "/sys/class/tty/3270!tty1" but its device
node is "/dev/3270/tty1".
2025-03-13 05:34:37 +09:00
Yu Watanabe
36a9e47a0d nsresource: fix error handling 2025-03-13 05:27:50 +09:00
Yu Watanabe
e66c71a786 boot: several follow-ups for reboot-on-error feature (#36721) 2025-03-13 05:26:47 +09:00
Yu Watanabe
86cbb13a4e udev/net: enable new [EnergyEfficientEthernet] section
Also fixes a typo in setting name.

Follow-up for cdc9be29b1.
Addresses post-merge comments for #36302.
2025-03-13 05:26:14 +09:00
Lennart Poettering
5dbf476b11 units: order oomd after swap.target
oomd only works well if we have swap, hence we should not start it
before swaps are up, in particular as we will print an annoying message
otherwise.

Fixes: #36704
2025-03-13 05:24:11 +09:00
Yu Watanabe
278e3adf50 test: wrap assignments in ASSERT_OK() and friends with parentheses
Hopefully fixes many CID reports.
2025-03-13 05:15:28 +09:00
Yu Watanabe
8df80dfbbf test-netlink: fix use of ASSERT_OK()
Follow-up for 3841288e5f.
2025-03-13 05:15:22 +09:00
Yu Watanabe
55b13141fc homed: fix OOM check
Follow-up for f1b6417fea.
Fixes CID#1593167.
2025-03-13 04:57:02 +09:00
Yu Watanabe
26835b3e98 homectl: insert missing 'else'
Follow-up for cc14c14782.
Fixes CID#1593168 and CID#1593166.
2025-03-13 04:56:49 +09:00
Lennart Poettering
c5a5046792 boot: fallback to unrestricted allocation if initrd allocation doesn't fit below 4g (#36715)
Fixes: #36706
2025-03-13 04:14:40 +09:00
Yu Watanabe
f9ddbc5b35 udev: use INTERFACE property rather than sysname when processing network interface (#36627)
sd-device replaces '!' in sysname with '/', hence sysname may be
different from ifname.
Let's use INTERFACE property when we need network interface name.

This fixes the following unexpected renaming of network interfaces
created with '!' in their name, e.g. 'hoge!foo' -> 'hoge_foo':
```
$ run0 ip link add 'hoge!foo' type dummy
$ ip link show 'hoge!foo'
Device "hoge!foo" does not exist.
$ ip link show 'hoge_foo'
410: hoge_foo: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether ee:54:4a:dd:c4:c7 brd ff:ff:ff:ff:ff:ff
```

Closes #26156.
2025-03-13 04:12:57 +09:00
Michael Catanzaro
780f320229 resolve: add warning comment to config file
There are way too many users configuring the DNS= setting by mistake,
because what it seems to do is different from what it actually does. We
do not have consensus to change its behavior, so let's at least add a
warning comment.

Fixes #33973
2025-03-13 04:12:18 +09:00
Yu Watanabe
1ae60b69fa boot: introduce string tables for RebootOnError and sucure_boot_enroll 2025-03-13 02:40:12 +09:00
Yu Watanabe
c5710c00ff boot: fix use of uninitialized value on error
Follow-up for 0bdf94e588.
2025-03-13 02:40:12 +09:00
Yu Watanabe
2ee01dbc05 netlink-util: move several function prototypes 2025-03-13 01:48:50 +09:00
Yu Watanabe
472ad6af94 netlink-util: allow to call rtnl_set_link_name() and friends with NULL rtnl 2025-03-13 01:48:50 +09:00
Yu Watanabe
0e44a7c085 netlink-util: merge rtnl_get_link_info() and rtnl_get_ifname_full() into rtnl_get_link_info_full()
Then, this makes rtnl_get_ifname_full() and friends as inline wrappers of
rtnl_get_link_info_full().
2025-03-13 01:48:50 +09:00
Yu Watanabe
3841288e5f test-netlink: use ASSERT_OK() and friends 2025-03-13 01:48:50 +09:00
Yu Watanabe
f0ebc0c5bf tests: introduce ASSERT_PTR_EQ() 2025-03-13 01:48:50 +09:00
Yu Watanabe
6e316e8104 udev/net: replace device_unsigned_attribute() with device_get_sysattr_unsigned()
They are completely equivalent, except for logging.
This also drops duplicated log messages on failure paths.
2025-03-13 01:48:50 +09:00
Yu Watanabe
b15053de89 udev/net: fix assignment of ID_NET_NAME=
E.g. sd_device object of network interface 'hoge!foo' has sysname 'hoge/foo'.
So, previously udevd assigned 'hoge/foo' rather than 'hoge!foo' to ID_NET_NAME,
hence even when renaming is not requested, such interface was renamed to 'hoge_foo'
(note '/' cannot be used in network interface name, hence escaped to underbar).
2025-03-13 01:48:33 +09:00
Yu Watanabe
b3157fc912 udev-event: fix filtering logic of renaming network interface
The device sysname may be different from the network interface name.
2025-03-13 01:08:57 +09:00
Yu Watanabe
4352457a96 udev-event: set INTERFACE/INTERFACE_OLD property on rename only when the device is a network interface
This does not change any behavior, as currently udevd only supports
renaming for network interfaces.

Closes #26156.
2025-03-13 01:08:57 +09:00
Yu Watanabe
e3bc8d3449 udev-builtin-net_driver: use correct interface name
Previously, when the interface name contains '!', the builtin command
failed to get the driver of the interface.
2025-03-13 01:08:57 +09:00
Yu Watanabe
bec2f4dc3e sd_device: introduce device_get_ifname()
sd-device replaces '!' in sysname with '/'. Hence, sysname and ifname
may be different. Let's get network interface name through INTERFACE
property.
2025-03-13 01:08:57 +09:00