Commit Graph
43545 Commits
Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek 6483bcef54 shared/loop-util: add comment
Requested in https://github.com/systemd/systemd/commit/afbe20b7d4ed4c3aebbd1b3de00b9b7385dd0ae8#r115653459.
2023-05-30 16:04:35 +02:00
Zbigniew Jędrzejewski-Szmek 5fdec39796 dissect: use pager for --help
This output is already too long to fit on an normal terminal, and the
interesting parts are towards the top.
2023-05-30 16:04:13 +02:00
Zbigniew Jędrzejewski-Szmek 78435d620c basic/user-util: attach pointer symbol to return type, not function
Surrounding code was predominantly using this style already, let's make things
consistent.
2023-05-30 16:03:32 +02:00
Daan De Meyer 0690160e2c label: Rename to label-util.h 2023-05-30 14:50:56 +02:00
Daan De Meyer 5dcb40a1b0 oom: Make sure temporary test file is in /tmp 2023-05-30 14:48:38 +02:00
Daan De Meyer abf25fae90 kmod-setup: Load virtio-vsock kernel module early
We might want to send sd-notify over vsock very early on so let's
make sure we load the relevant kernel module as early as possible.
2023-05-30 14:48:38 +02:00
Daan De Meyer 5249e95385 gpt: Fix copy paste error 2023-05-30 13:54:59 +02:00
Daan De Meyer 600bf76c17 repart: Allow target directory excludes
Currently, ExcludeFiles= supports excluding directories on the host
from being copied. Let's extend this to also support preventing files
from being copied into specific directories in the partition by adding
a new option ExcludeFilesTarget=. An example where this is useful is
when setting up btrfs subvolumes in the top level that are intended to
be mounted into specific locations, so /usr would be stored in @usr,
/home in @home, .... To accomplish this, we need to copy /usr to @usr
and prevent any files from being copied into /usr in the partition,
which with this commit, we'd be able to do as follows:

```
[Partition]
CopyFiles=/usr:@usr
ExcludeFilesTarget=/usr
```
2023-05-30 13:45:49 +02:00
Zbigniew Jędrzejewski-Szmek afbe20b7d4 shared/loop-util: use longer delay when waiting for loop device
The kernel may be syncing a file system or doing something else that requires
more time. So make the delay a bit longer, but provide some feedback and also
grow the delay exponentially (though with a long exponent). If the kernel is
doing something else, no need to repeat so often. With 38 attempts, we get a
total of slightly above 5000 ms.

I wrote this when I thought that the the delay is not long enough. It turned
out that we were blocking the file system on the loop device, so waiting longer
wasn't helpful. But I think it's nicer to do it this way anyway.
2023-05-30 13:41:56 +02:00
Richard Phibel fc6172b1d8 Fix failing test
In test-execute, only the unit was started, not the slice. Because of
that the slice cgroup was pruned even if it was still needed. From what
I can tell, this is because, in the test, we don't have all the
mechanics that starts the slice for a service. To fix the issue the
slice is started manually.
2023-05-30 12:38:47 +02:00
Yu Watanabe 9e7d91ed97 network: do not request dynamic addressing protocols finished when at least one static address is configured
The setting IPv6AcceptRA= is defaults to yes, hence, even if a .network
file for an interface has static IP address configuration, it may takes
few seconds for the interface being configured state, as NDisc for the
interface needs to be finished. That makes wait-online.service
needlessly slow. Typically, such delay is not necessary for statically
configured networks.

Let's make the required condition slightly relaxed; if a .network file
has static IP address configurations, then let's make the matching
interface enter the 'configured' state soon after the static addresses
configured on the interface.

Note, this does not change the default for IPv6AcceptRA=, hence, NDisc
still runs on interfaces by default. So, addresses, routes, DNS servers,
and so on based on RA will be assigned on interfaces later.

Strictly speaking, this breaks backward compatibility, but the previous
behavior is not clearly documented. If a user requested both static
IPv4 address and IPv6 SLAAC address configured before an interface being
entered to the 'configured' state, then '--ipv6' for wait-online can be
used. So, the behavior change should not cause severe regression.

Closes #27779.
2023-05-30 17:39:11 +09:00
Yu Watanabe 195b83edf8 network: require DHCP protocol to be finished when an address of delegated prefix is assigned 2023-05-30 17:39:05 +09:00
Frantisek Sumsal 13bb569b75 boot: make Event a standard-conforming flexible array 2023-05-30 10:22:44 +02:00
Russell Harmon bcc1ee56c0 Support no-journal for dm-integrity devices.
As documented in integritysetup.8, dm-integrity devices support running
without a journal whatsoever. This change allows the
CRYPT_ACTIVATE_NO_JOURNAL flag (the same as is used with `integritysetup
--integrity-no-journal`) to be passed in during dmsetup by specifying
the `no-journal` option in integritytab.5.
2023-05-30 16:35:46 +09:00
Yu Watanabe 5f950e5621 network: rewrite dynamic addressing protocol checkers in link_check_ready()
Notable change is,
- UseAddress=no in [DHCPv6],
- Assign=no in [DHCPPrefixDelegation], and
- UseAutonomousPrefix=no in [IPv6AcceptRA]
are gracefully handled now.
2023-05-30 16:22:54 +09:00
Mike Yuan dd3775ab88 Merge pull request #27687 from keszybz/boot-efi-choices
gpt-auto-generator: rework/simplify logic for picking /efi or /boot
2023-05-30 15:21:42 +08:00
Frantisek Sumsal e4ab2db9df home: move the assert back to the intended place
98d81cf974 moved the assertion at the beginning of home_dispatch_acquire(),
which is however before we even check for any ongoing operation, hence we
might hit it even in legitimate cases.

Let's move it back to after we check for any possibly ongoing operation, to
make it once again a safety check.

Follow-up to 98d81cf974.
Resolves: #22443 and #24036
2023-05-30 10:00:29 +09:00
Zbigniew Jędrzejewski-Szmek 1d96dae716 dissect: implement the same logic as gpt-auto-generator
gpt-auto-generator does three checks: 1. whether the directory doesn't have
files, 2. whether it's not in fstab, and 3. whether it is not a mount point.
For dissect logic, 3. is not relevant, and it ignores 2.
But the check whether files exists was done only partially: it was done
for /efi, but not for /boot.

Two changes are made:
- the check whether /boot is empty is now done.
- for ESP, /boot is used in preference to /efi, if not used for XBOOTLDR.

With those changes, the logic in dissect matches what gpt-auto-generator does.
There are the two intentional differences described in the first paragraph,
2023-05-30 00:21:44 +02:00
Zbigniew Jędrzejewski-Szmek 6a488fa7cc gpt-auto-generator: rework/simplify logic for picking /efi or /boot
I started looking into https://github.com/uapi-group/specifications/issues/35.

BLS says:
> Otherwise [no existing XBOOTLDR partition], if on GPT and an ESP is found and
> it is large enough (let’s say at least 1G) it should be used as $BOOT and
> used as primary location to place boot loader menu resources in.

> It is recommended to mount $BOOT to /boot/, and the ESP to /efi/.

DPS says:
> The ESP used for the current boot is automatically mounted to /efi/ (or
> /boot/ as fallback), unless a different partition is mounted there (possibly
> via /etc/fstab, or because the Extended Boot Loader Partition — see below —
> exists) or the directory is non-empty on the root disk.

I don't think we want to mount the same partition in two places.
If the same partition is not mounted in two places, then the two specs are
contradictory.

The code in gpt-auto-generator implemented the logic from the DPS. It is
modified to implement the logic from BLS.

Effectively:
- if both /boot and /efi are available:
  - if both XBOOTLDR and ESP exist:
    ESP on /efi, XBOOTLDR on /boot
  - if only ESP exists:
    ESP on /boot
  - if only XBOOTLDR exists:
    XBOOTLDR on /boot
- if only /boot is available:
  - if XBOOTLDR exists:
    XBOOTLDR on /boot
  - if only ESP exists:
    ESP on /boot
- if only /efi is available:
  - if ESP exists:
    ESP on /efi

"Available" means that it the mount point is not mounted over and does not
contain files. If the directory doesn't exist, it is also "available" and will
be created later when the mount or automount unit is started.

Thus, the generator attempts to match the partitions and mount points to the
extent possible. In all cases, /boot is the primary place to install kernels.
ESP can be found on /boot or /efi, depending on the situation.

If this patch is merged, I'll submit fixes for BLS and DPS to describe the
same logic.
2023-05-29 22:53:08 +02:00
Richard Phibel 380dd17779 core: Handle cgroup pruning in on_cgroup_empty_event
This change removes the pruning of cgroups for FAILED/INACTIVE units
from per-unit-type handlers and moves it in on_cgroup_empty_event.
2023-05-29 13:26:16 +02:00
Richard Phibel 8db998981a core: Don't GC unit if it is in cgroup_empty_queue
The gc_unit_queue is dispatched before the cgroup_empty_queue.  Because
of this, when we enter in on_cgroup_empty_event, the unit in
cgroup_empty_queue may already have been freed and we don't clean up the
corresponding cgroup. With this change, we prevent the unit from being
garbage collected if it is in the cgroup_empty_queue.
2023-05-29 13:26:15 +02:00
David Tardon e30b4c1357 resolvectl: drop extra colon 2023-05-29 11:37:18 +09:00
Yu Watanabe 7b975e9f45 basic/syscall: update syscall list
Only notable change is that memfd_secret is now defined on s390(x).
2023-05-29 06:59:10 +08:00
Luca Boccassi 8340d5003d gpt/DPS: add more aliases for python's machine
In mkosi we set the default architecture to platform.machine() which
is again slightly incompatible for a few architectures, so add more
aliases, so that repart works by default with these names.
2023-05-28 18:33:31 +01:00
Yu Watanabe 80ec3db5c7 journalctl: fix --follow with non-matching filter
When there is no matching entry stored in journal, then initial call of
`sd_journal_previous()` following `sd_journal_seek_tail()` returns
zero, and does not move the read pointer.
In the main loop, on every journal event, we call `sd_journal_next()`,
even though the current location is tail, and it takes no effect.

In such a case, we need to call `sd_journal_previous()` instead of
`sd_journal_next()`.
2023-05-28 23:53:58 +09:00
Yu Watanabe b78f9481bc sd-journal: introduce sd_journal_step_one()
After the commit 7a4ee86161,
sd_journal_next() following sd_journal_seek_tail() takes no-op,
and we need to call sd_journal_previous(). This may be useful in
some cases, e.g. to fix the issue explained in the previous commit.
2023-05-28 23:53:18 +09:00
Yu Watanabe 24d633e438 journalctl: also update cursor with --follow
Fixes #26746.
2023-05-28 14:52:32 +09:00
Yu Watanabe 713342d9b0 journalctl: replace ppoll() loop with sd_event_loop()
No functional change, just refactoring.
2023-05-28 14:52:32 +09:00
Yu Watanabe e4c4a9db87 journalctl: split out show()
No functional changes, just refactoring.
2023-05-28 14:52:32 +09:00
Yu Watanabe 8c12d3586a journalctl: split out update_cursor()
No functional change, just refactoring.
2023-05-28 14:52:32 +09:00
Yu Watanabe 2ce9a07b34 journalctl: split out action_list_fields()
No functional change, just refactoring.
2023-05-28 14:52:32 +09:00
Yu Watanabe 3f2203f64d journalctl: fix --no-tail handling
Fixes a bug introduced by 62f21ec91a.
2023-05-28 14:52:32 +09:00
Yu Watanabe 20e933ae74 journalctl: use correct variable to check if --since is specified 2023-05-28 14:52:32 +09:00
Yu Watanabe 4f0165fd34 journalctl: always initialize global variables
That's not necessary, as they are initialized with zero, but for safety
and readability.
2023-05-28 14:52:32 +09:00
Daan De Meyer 30868c1c8d tree-wide: Downgrade a few more noisy log messages to trace 2023-05-27 14:47:56 +02:00
Dan Streetman b2efe28658 boot/measure: replace TPM PolicyPCR session with calculation
Instead of using a trial policy with a TPM to calculate the measurement hash,
this uses a function to calculate the hash with no TPM needed.
2023-05-27 08:50:04 +02:00
Yu Watanabe 9e39cb2855 Merge pull request #27721 from yuwata/journalctl-cleanup
journalctl: split get_boots() into three
2023-05-27 07:59:22 +09:00
Rene Hollander 58fa558ae4 Add DHCPServer information to JSON output.
Adds a new JSON object called DHCPServer for each interface that has a
DHCPServer configured. It has the following attributes:
- PoolSize and PoolOffset from the configuration
- List of offered leases
- List of static leases from the configuration
2023-05-27 07:58:12 +09:00
Daan De Meyer dcc5547b8b Merge pull request #27517 from ddstreet/tpm2_calculate_policy
Tpm2 calculate policy
2023-05-26 23:08:15 +02:00
Yu Watanabe e44f06065b journalctl: split get_boots() into three
Previously, get_boots() used for three ways; finding boot entry by
boot ID, finding boot entry by offset, listing up all boot IDs.

Let's split it into three for each usecase.

No functional change, just refactoring.
2023-05-27 03:57:39 +09:00
Yu Watanabe c93d3c0512 logs-show: introduce add_match_boot_id() helper function 2023-05-27 03:57:01 +09:00
Mike Yuan 97d822abac Merge pull request #27787 from keszybz/firstboot-synchronous-restart
firstboot: make restart of vconsole-setup synchronuous
2023-05-27 02:30:45 +08:00
Yu Watanabe d4fd160f69 Merge pull request #27786 from YHNdnzj/format-timestamp-monotonic
time-util,format-table: add relative_monotonic variant for timestamp
2023-05-27 03:05:34 +09:00
Yu Watanabe f254238204 Merge pull request #27803 from mrc0mmand/even-more-nalloc-shenanigans
A couple more fixes for potential OOM-related issues
2023-05-27 02:58:32 +09:00
Luca Boccassi 08a2bb7b82 gpt/DPS: alias amd64 to x86-64 and aarch64 to arm64
The DSP and our implementation mixes Debian terminology with CPU
terminology. It uses arm64 which is a Debian thing instead of
aarch64, but x86-64 which is a CPU thing instead of amd64.
Add some convenience and transparent aliasing, so that we don't
need to maintain architecture-specific and tool-specific translation
layers in mkosi among other places, while at the same time the DDIs
still look the same (ie: the partlabel does not change depending on
which alias is used, the canonical label is used on disk).
2023-05-26 18:33:35 +01:00
Lennart Poettering 719771adca test-gpt: verify that alias entries are identical to the primary ones
Given we allow aliases we better check for consistency of alias entries
and the primary one.
2023-05-27 02:21:17 +09:00
Dan Streetman d9a1f1a724 tpm2: add tpm2_calculate_sealing_policy()
This adds a function to fully calculate the authPolicy needed to seal a secret,
and updates tpm2_seal() to use the new function instead of a trial policy.
2023-05-26 11:12:22 -04:00
Dan Streetman 524cef3ff5 tpm2: use tpm2_policy_authorize()
This updates the function to build the sealing policy to use the dedicated
function to perform PolicyAuthorize.

This is separate from the previous commit to make each commit easier to read.
2023-05-26 11:12:22 -04:00
Dan Streetman 5c7852f78c tpm2: add tpm2_policy_authorize()
This adds functions to get the digest for a PolicyAuthorize operation. For
building a policy hash, this provides a function to calculate the hash; and for
building a policy hash to satisfy the authPolicy for an existing object, this
provides a function to perform PolicyAuthorize with an existing session.
2023-05-26 11:12:12 -04:00
Dan Streetman 8a716354bb tpm2: add tpm2_policy_auth_value()
This adds functions to get the digest for a PolicyAuthValue operation. For
building a policy hash, this provides a function to calculate the hash; and for
building a policy hash to satisfy the authPolicy for an existing object, this
provides a function to perform PolicyAuthValue with an existing session.
2023-05-26 11:11:50 -04:00