Commit graph

74507 commits

Author SHA1 Message Date
Yu Watanabe 2c1ada796a
Merge pull request #33424 from poettering/machined-gc-rework
machined: clean up GC logic
2024-06-21 08:26:30 +09:00
Johannes Schneider b608bf5620 meson: bpf: propagate 'sysroot' for cross compilation
During cross-compilation of systemd, the compiler used to build the bpf's needs
to be pointed at the correct include searchpath. Which can be done by passing
the corresponding directory in through the cflags; for example in yocto/bitbake
this would work: CFLAGS += "--sysroot=${STAGING_DIR_TARGET}"

Signed-off-by: Johannes Schneider <johannes.schneider@leica-geosystems.com>
2024-06-21 08:25:58 +09:00
Lennart Poettering d42edbf1b8
Merge pull request #33430 from YHNdnzj/buserror-notify
core/service: store BUSERROR= & VARLINKERROR= received and show them through systemctl status
2024-06-20 23:05:32 +02:00
Lennart Poettering 5b272499dc
Merge pull request #33425 from poettering/json-enum-easier
json: make serializing/deserializing systemd-style enums easier in Varlink
2024-06-20 23:05:08 +02:00
Lennart Poettering 3fbbff83b6
Merge pull request #33428 from poettering/graceful-varlinkctl
varlinkctl: add new --graceful= switch for treating selected errors like a success
2024-06-20 23:04:45 +02:00
Lennart Poettering 1762c2c045 machined: watch leader PID's lifetime via pidfd
If we have a pidfd, we might as well track the machine's leader PID's
lifetime, and enqueue the machine for a GC run.

(This is similar to what we are already doing for logind's session
leaders)
2024-06-20 22:51:24 +02:00
Lennart Poettering 9b27811d49 machined: GC machines during runtime too
One major omission in machine's logic so far was that the GC was only
run at startup and on the check-idle timeout, which is really slow.

Let's make this more like the GC logic in homed or logind: make sure we
run it in a close-by event loop cycle.
2024-06-20 22:49:57 +02:00
Mike Yuan 4b89c55c3f
TEST-80-NOTIFYACCESS: introduce test for ERRNO= + BUS/VARLINKERROR= 2024-06-20 20:51:12 +02:00
Lennart Poettering 8ea918697a
busctl: send BUSERROR= to caller via sd_notify() protocol
varlinkctl has this nice feature that it sends the varlink error it gets
via sd_notify() to the caller. With previous commits this information
is collected and exposed in "systemctl status".

Let's make sure we can provide the same in busctl: also propagate errors
the same way.

With this we can comprehensively close #6073
2024-06-20 19:03:44 +02:00
Mike Yuan f488e97a75
systemctl-show: show Status{Bus,Varlink}Error in status 2024-06-20 19:03:44 +02:00
Mike Yuan 9c025022d9
core/service: store BUSERROR= & VARLINKERROR= received through notification
Closes #6073
2024-06-20 19:03:44 +02:00
Mike Yuan d319cbea45
sd-bus/bus-error: inline iterator var, use assert_return 2024-06-20 19:03:44 +02:00
Lennart Poettering 45840c2297 json: make it easy to dispatch our enums
This does the opposite of the previous patch: it undoes the "-" → "_"
mapping of enum values when we try to parse enums again.
2024-06-20 18:25:11 +02:00
Lennart Poettering a556a71e9c json: make it easy to serialize our enums to json
Most of our enums are mapped to strings that use dashes ("-") as word
separators, i.e. "foo-bar-baz". However, Varlink enums do not allow "-"
as separator, see:

https://varlink.org/Interface-Definition

Hence, let's add some simple glue to automatucally turn "-" into "_" for
use when serializing our enums.
2024-06-20 18:25:11 +02:00
Lennart Poettering ea441dbd9d ci: test new --graceful= switch of varlinkctl 2024-06-20 18:20:09 +02:00
Lennart Poettering da213bb5c0 varlinkctl: add --graceful= option for optionally marking some errors as successes
This is generally useful, but in some cases particularly: when
implementing enumeration calls that use the "more" flag to return
multiple replies then for the first reply we need to return an error in
case the list of objects to enumerate is empty, usually so form of
"NoSuchXYZ" error. In many cases this shouldn't really be treated as
error, as an empty list probably more than not is as valid as a list
with one, two or more entries.
2024-06-20 18:20:09 +02:00
Lennart Poettering 296027122b varlink: add helper that validates a qualified Varlink symbol name
Qualified Varlink symbol names are the combination of an interface name,
followed by a dot, followed by a symbol name. It's a primary concept,
after all it's what we send over the wire for method calls and get back
for error returns.

hence, let's add an explicit validator for it.
2024-06-20 18:20:09 +02:00
Yu Watanabe 912730a2d5
Merge pull request #33426 from aafeijoo-suse/conf-parser-parse-size-log
conf-parser: print why config_parse_iec_uint64() fails
2024-06-20 23:56:59 +09:00
Ludwig Nussel 0e10c3d872 logind: implement maintenance time
Update frameworks that work automatically in the background
occasionally need to schedule reboots. Systemd-logind already
provides a nice mechanism to schedule shutdowns, send notfications
and block logins short before the time. Systemd has a framework for
calendar events, so we may conveniently use logind to define a
maintenance time for reboots.

The existing ScheduleShutdown DBus method in logind expects a usec_t
with an absolute time. Passing USEC_INFINITY as magic value now tells
logind to take the time from the configured maintenance time if set.

"shutdown -r" leverages that and uses the maintenance time
automatically if configured. The one minute default is still used if
nothing was specified.

Similarly the new 'auto' setting for the --when parameter of systemctl
uses the maintenance time if configured or a one minute timer like the
shutdown command.
2024-06-20 14:37:42 +02:00
Kamil Szczęk e262205eb7 cryptenroll: support for enrolling FIDO2 tokens in manual mode
systemd-cryptsetup supports a FIDO2 mode with manual parameters, where
the user provides all the information necessary for recreating the
secret, such as: credential ID, relaying party ID and the salt. This
feature works great for implementing 2FA schemes, where the salt file
is for example a secret unsealed from the TPM or some other source.
While the unlocking part is quite straightforward to set up, enrolling
such a keyslot - not so easy. There is no clearly documented
way on how to set this up and online resources are scarce on this topic
too. By implementing a straightforward way to enroll such a keyslot
directly from systemd-cryptenroll we streamline the enrollment process
and reduce chances for user error when doing such things manually.
2024-06-20 14:26:24 +02:00
Antonio Alvarez Feijoo b3244d2b0a
conf-parser: print why config_parse_iec_uint64() fails
Print the same output as `config_parse_iec_size()` and
`config_parse_si_uint64()` if `parse_size()` fails, not only the `rvalue`.
2024-06-20 12:54:32 +02:00
Antonio Alvarez Feijoo 152f349385
conf-parser: set standard pointer alignment 2024-06-20 12:53:08 +02:00
Lennart Poettering ac6eb58f09
Merge pull request #33407 from poettering/varlink-idl-comment-fix
varlink: make comments on enum entries work
2024-06-20 12:13:59 +02:00
Lennart Poettering 8710bbfe96 bootctl: add comments to Varlink interface
This is mostly intended as test case for the early enum comment bugfix,
as this Varlink IDL description now contains such comments, and
test-varlink-idl will process it forth and back aleady.
2024-06-20 10:02:40 +02:00
Lennart Poettering 9e10f3a7e8 bootctl: normalize how we report no boot entries found
This normalizes how we report an empty list of boot entries in
ListBootEntries(). Our usual pattern is to return one item per method
call, but when there is none we usually return a NoSuchXYZ error. Do so
here too.

Before this we'd return a null item instead here, and only here.

This is a minor compat break, but given that this IPC interface is very
new and probably not used so far (we don't use it in our code at least,
and google doesn#t find any other use) I think this normalization is OK
at this point.
2024-06-20 10:02:40 +02:00
Lennart Poettering 5e542f8706 varlink: correctly format comments for enums too
I apparently never tested comments on enum values and hence they didn#t
work. Fix that.
2024-06-20 08:49:40 +02:00
Ludwig Nussel 8ce171bf51 bootctl: add --random-seed=yes/no 2024-06-20 14:26:13 +09:00
Yu Watanabe 8422d04e8d
Merge pull request #33420 from poettering/build-with-object
sd-json: add sd_json_build() flavour that implies we are building an object
2024-06-20 13:04:32 +09:00
Diego Viola 11b46dc117 man: fix typo in systemd-tmpfiles
Signed-off-by: Diego Viola <diego.viola@gmail.com>
2024-06-20 13:02:06 +09:00
Yu Watanabe 60e46382f4
Merge pull request #33419 from YHNdnzj/install-report-symlink
shared/install: several fixes for change reporting
2024-06-20 13:00:44 +09:00
Yu Watanabe 7fef19963d core/namespace: ensure private tmpfs is mounted earlier
And drop spurious assertion.

Fortunately, the previous logic worked, as /run/systemd/unit-private-tmp
is ordered earlier than /tmp or /var/tmp. But, let's ensure the tmpfs
mounted earlier to make the logic clearer.

Follow-up for 0e551b04ef.
2024-06-20 12:59:49 +09:00
Yu Watanabe 2bb69a2050
Merge pull request #33410 from poettering/sd-json-log-level-clean-up
sd-json: clean up SD_JSON_WARNING/SD_JSON_DEBUG definition and comments
2024-06-20 12:59:06 +09:00
Lennart Poettering 61e0b2bb65 update TODO 2024-06-19 22:50:02 +02:00
Lennart Poettering be5bee2a13 tree-wide: port over to new builder apis 2024-06-19 22:50:02 +02:00
Lennart Poettering 004c69a27f sd-json: add sd_json_build() wrapper macro that implies SD_JSON_BUILD_OBJECT()
In 99% of uses of sd_json_build() we want to build an object as
outermost construct. Let's shorten this most common case a bit, by
adding sd_json_buildo() that implies this. This allows us to shorten
much of our code, all across the tree.
2024-06-19 22:50:02 +02:00
Lennart Poettering 917b8bd377 update TODO 2024-06-19 22:42:51 +02:00
Lennart Poettering 357fa81375 sd-json: add comment clarifying that _SD_JSON_BUILD* enums are not to be used directly 2024-06-19 22:42:51 +02:00
Lennart Poettering 90cfb61c71 sd-json.h: reword SD_JSON_WARNING/SD_JSON_DEBUG comments
Even though we don't export json_log() in the public API, let's
officially make the SD_JSON_WARNING/SD_JSON_DEBUG that control its
effect in the public API.

After all, for our own dispatcher functions they have a nice effect, and
they are trivially reimplemented in user code independently.

(We might eventually consider exporting json_log() as public API, but
this is quite involved, given its use of macros/inline functions and
iternal logging API).

This mostly just swaps around the bit flags and cleans up comments.
2024-06-19 22:42:51 +02:00
Mike Yuan 9fb5a8ca24
test-install-root: introduce test case for #33411 2024-06-19 21:29:08 +02:00
Mike Yuan 4441cf330b
shared/install: correctly report changes in install_info_symlink_alias()
Follow-up for b2751cf039

Also make the conditions consistent for install_info_symlink_wants().

Fixes #33411
2024-06-19 21:28:55 +02:00
Mike Yuan a159aa07e1
shared/install: propagate all errors in install_info_apply()
Currently, install_info_apply() only updates r if it's 0,
meaning that if one of the earlier install_info_symlink_alias/wants()
calls returns > 0, errors generated by later calls will be discarded.
Fix that.
2024-06-19 21:28:40 +02:00
Mike Yuan dd6b325a05
shared/install: drop unneeded initialization 2024-06-19 21:19:13 +02:00
Yu Watanabe de732ade09
Merge pull request #33034 from yuwata/update-kernel-headers
basic/linux: update kernel headers from v6.10-rc3
2024-06-20 03:53:16 +09:00
Antonio Alvarez Feijoo 111f988992 kernel-install: correct the place where it works in man and help text 2024-06-20 03:01:22 +09:00
Maximilian Wilhelm 163bb43cea man/systemd.exec: list inaccessible files for ProtectKernelTunables 2024-06-20 03:00:59 +09:00
Xeonacid 5f7136a369 vmspawn: define QEMU_MACHINE_TYPE for riscv
Use ["virt"](https://www.qemu.org/docs/master/system/target-riscv.html#board-specific-documentation) as a commonly used generic platform on riscv.
2024-06-20 03:00:38 +09:00
Yu Watanabe 3176c78e68
Merge pull request #32868 from keszybz/more-whomification
Fix confusion between killer and prey
2024-06-20 02:59:14 +09:00
Yu Watanabe 834afa11ab core: drop unnecessary auto_fs4.h inclusion
auto_fs4.h is a trivial wrapper of auto_fs.h, and it is already included
by auto_dev-ioctl.h.
2024-06-20 02:35:35 +09:00
Yu Watanabe 0b37761936 missing: drop BCACHEFS_SUPER_MAGIC as it is now defined in linux/magic.h 2024-06-20 02:35:35 +09:00
Yu Watanabe 0cced2948f basic/linux: update kernel headers from v6.10-rc3
This also
- merges basic/linux and shared/linux,
- moves BPF_JUMP_A() to basic/missing_bpf.h,
- copies from usrspace kernel headers directory generated by 'make headers',
  rather than copying from kernel tree,
- copies const.h into our tree to reduce change in ethtool.h,
- copies auto_fs.h into our tree to reduce change in auto_dev-ioctl.h.
2024-06-20 02:35:35 +09:00