Commit Graph
300 Commits
Author SHA1 Message Date
Thomas Blume fc5c6eccb4 units: make templates for quotaon and systemd-quotacheck service 2024-03-09 19:32:09 +00:00
Mike Yuan 4f49512695 extract-word: modernize extract_many_words 2024-03-03 19:01:00 +08:00
Lennart Poettering efb9b3bab2 env-util: rename getenv_bool_secure() → secure_getenv_bool()
The glibc API is behind the wrapper is called "secure_getenv()", hence
our wrapper really should keep the order too, otherwise things are just
too confusing.
2024-02-28 15:38:00 +01:00
Mike Yuan 9f6c32ac96 fstab-generator: drop unapplicable options for /usr/ too
We already drop these for /sysroot/usr/ in parse_fstab
(1e9b2e4fdd). Let's make
things consistent, and do the same for /usr/ too (after
switch-root).
2024-01-26 01:06:41 +08:00
Mike Yuan 74467890ff fstab-generator: modernize write_extra_dependencies 2024-01-26 01:06:41 +08:00
Mike Yuan 27db64bce8 fstab-generator: add missing assertions 2024-01-26 01:06:41 +08:00
Mike Yuan 4c7cc69652 fstab-generator: drop unneeded initialization 2024-01-26 01:06:40 +08:00
Mike Yuan c521ce42b4 fstab-generator: drop assertions for mount opts
fstab_filter_options accepts NULL and (with later changes)
might even return NULL.
2024-01-26 01:06:40 +08:00
Mike Yuan 39a4c452d2 fstab-generator: disable default deps if x-systemd.{wanted,required}-by= is used
Fixes #30273
2023-12-12 00:34:32 +08:00
Luca Boccassi 9e615fa3aa core: add WantsMountsFor=
This is the equivalent of RequiresMountsFor=, but adds Wants= instead
of Requires=. It will be useful for example for the autogenerated
systemd-cryptsetup units.

Fixes https://github.com/systemd/systemd/issues/11646
2023-11-29 11:04:59 +00:00
Mike Yuan b3ee014879 fstab-generator: drop unapplicable mount options for / from mount unit Options=
Prompted by #29705

Note that x-systemd.wanted-by= and x-systemd.required-by= are not
dropped, since we ignore them because they are unnecessary rather
than unapplicable.
2023-10-27 23:51:01 +08:00
Mike Yuan ba2f3ec832 fstab-generator: use RET_GATHER more 2023-10-27 17:51:18 +08:00
Michal Sekletar 1e9b2e4fdd fstab-generator: drop nofail and noauto options for critical mounts
Setting nofail for /usr mount doesn't make sense because without /usr we
can't really boot. However, having the flag set might cause races in
initrd where we could try to switchroot into rootfs before /usr is
actually mounted. Let's just ignore it so that we always have proper
mount unit ordering for /sysroot/usr mount.
2023-10-27 00:07:54 +01:00
Lennart Poettering be8f478c0f efi-loader: rename efi_stub_measured() → efi_measured_uki()
Let's say "uki" rather than "stub", since that is just too generic, and
we shouldn't limit us to our own stub anyway, but generally define a
concept of a "measured UKI", which is a UKI that measures its part to
PCR 11.

This is mostly preparation for exposing this check to the user via
ConditionSecurity=.
2023-09-27 11:51:13 +02:00
Yu Watanabe b564224b37 fstab-generator: update cache in fstab_enabled_full() based on the parsed result of fstab=
Currently, fstab-generator does not use fstab file parsers in
fstab-util.c. So, this is not necessary. Just for a possible
optimization in the case the parsers used in the future.
2023-08-09 17:57:43 +09:00
Luca Boccassi bcb299e461 Merge pull request #28727 from yuwata/proc-cmdline-cleanups
tree-wide: fixlet and optimization for parsing kernel command line
2023-08-09 01:18:13 +01:00
Yu Watanabe 9289e093ae meson: use install_emptydir() and drop meson-make-symlink.sh
The script is mostly equivalent to 'mkdir -p' and 'ln -sfr'.
Let's replace it with install_emptydir() builtin function and
inline meson call.
2023-08-08 22:11:34 +01:00
Yu Watanabe a8d3315ba4 tree-wise: drop unnecessary use of proc_cmdline_key_streq()
If the key does not contain '-' or '_', then it is not necessary to use
proc_cmdline_key_streq(), and streq() is sufficient.

This also adds missing assertions about 'key' argument.
2023-08-09 03:16:31 +09:00
Yu Watanabe 2a4566203e meson: move declarations of several generators 2023-08-01 02:31:36 +09:00
Daan De Meyer 7ccb171c4c Merge pull request #28359 from keszybz/ret-gather
Add RET_GATHER macro to make continue-but-remember-first-error functions easier
2023-07-28 14:28:35 +02:00
Yu Watanabe 239cce3870 fstab-generator: enable fsck for block device mounts specified in systemd.mount-extra=
Like we do for root= or so.

Another possible option is adding support of fifth (sixth?) field in
systemd.mount-extra=. But that may be overkill, hence let's do that
later if someone request that.

Fixes fsck part of issue #28541.
2023-07-28 09:28:26 +09:00
Yu Watanabe 22f5a825e4 fstab-generator: add a flag to accept entry for "/" in initrd
When both prefix_sysroot and accept_root is true, the entry for "/" will
be accepted and converted to "/sysroot/".

Why? If the entry is read from the main system's fstab, then we already
mounted /sysroot/, hence it is not and should not re-add the .mount unit
for /sysroot/. However, if we want to specify the root mount through the
kernel command line or credential, without this change, we need to
specify the same entry in the two options. E.g.
===
systemd.mount-extra=/dev/sda1:/:auto:defaults
rd.systemd.mount-extra=/dev/sda1:/sysroot:auto:defaults
===
That's inconvenient. Of course, we can dedup that by using traditional
options, but cannot when defined in credential.
2023-07-27 00:50:15 +09:00
Yu Watanabe dfd10549ac fstab-generator: read both credentials in initrd
This makes the behavior consistent with the way we already do for
fstab and command line options.
In initrd, entries read from fstab.extra are mounted under /sysroot.
2023-07-27 00:50:15 +09:00
Yu Watanabe 45c535ddb0 fstab-generator: add rd.systemd.mount-extra= and friends
Previously, mounts specified in systemd.mount-extra= are equally handled
both in initrd and the main system. So, the mounts for the main system
are also mounted in initrd.

This introduces rd.systemd.mount-extra=, which specifies mounts in initrd.
Then, mounts specified in systemd.mount-extra= are still mounted both in
initrd and the main system, but prefixed with /sysroot/ when running in
initrd.

Fixes #28516.
2023-07-27 00:50:01 +09:00
Yu Watanabe b93d9e06fc fstab-generator: fix target of /sysroot/usr
If /usr mount is picked from the main system's fstab file (prefix_sysroot
is true, and the path is prefixed as /sysroot/usr), then previously it
was installed in the wrong target unit.
2023-07-26 23:59:56 +09:00
Yu Watanabe 8f88e57397 fstab-generator: rename 'initrd' flag to 'prefix_sysroot'
The name 'initrd' is confusing with 'in_initrd()'.
2023-07-26 05:08:01 +09:00
Mike Yuan b5fd3956ec fstab-generator: resolve bind mount source when in initrd
We currently prepend /sysroot to mount points for entries
in /sysroot/etc/fstab. But when it comes to bind mounts,
the source needs to canonicalized too.

Fixes #6827
Replaces #7894
2023-07-14 01:29:23 +08:00
Zbigniew Jędrzejewski-Szmek 9ef648cca1 various: use RET_GATHER
No functional change indentended.
2023-07-13 11:12:00 +02:00
Lennart Poettering a93993584d bus-unit-util: add common code for reloading PID 1
We have this very similar code in various places, and it#s not entirely
obvious (since we want a prolonged timeout for the reload), hence unify
this at one place.
2023-07-10 16:39:16 +02:00
Lily Foster 9cf2203524 fstab-generator: unify initrd-root-device.target dependency handling code
This fixes a bug from #26038 where it would actually write generator
stuff during sysroot check when it was only supposed to check for daemon
reload.
2023-07-07 11:58:43 +09:00
Lennart Poettering 3a065dfc29 fstab-generator: add more parameter name comments 2023-07-04 23:08:01 +02:00
Lennart Poettering 6ac62485cf fstab-generator: optional read addtional fstab lines from credentials
Fixes: #27260
2023-07-04 23:06:48 +02:00
Lennart Poettering 2130a2e5a6 fstab-generator: if we mount via roothash=/usrhash= let's imply "ro" mount option
If we discover the root or /usr/ fs via roothash=/usrhash= we know the
file system mounted on it will be read-only, since Verity volumes are by
definition immutable. Hence, let's imply the "ro" mount option for them.

This way the "kernel: /dev/mapper/usr: Can't open blockdev" boot-time
log message goes away, reported here:

https://github.com/systemd/systemd/issues/27682

(I do wonder though why erofs even tries to open the block device as
writable, that sounds utterly pointless for a file system that carries
the fact it is read-only even in the name...)
2023-06-02 13:31:31 +02:00
Frantisek Sumsal 3aed259328 fstab-generator: use correct swap name var
Follow-up to 9445623363.
2023-05-26 13:47:51 +01:00
Yu Watanabe 55365b0a23 fstab-generator: support defining mount units through kernel command line
Now, the following kernel command line options are supported:
  systemd.mount-extra=what:where:fstype:options
  systemd.swap-extra=what:options

Closes #27260.
2023-05-24 08:23:22 +09:00
Yu Watanabe 2646f18445 fstab-generator: fix error code propagation in run_generator()
Previously, some errors might be ignored.
2023-05-24 08:23:22 +09:00
Yu Watanabe 6742eca134 fstab-generator: refuse invalid mount point path in fstab earlier 2023-05-24 08:23:22 +09:00
Yu Watanabe 9445623363 fstab-generator: refuse to add swap earlier if disabled
No functional change, preparation for later commits.
2023-05-24 08:23:22 +09:00
Yu Watanabe 256604ccdd fstab-generator: call add_swap() earlier
As 'where' field will be ignored for swap entry.
2023-05-24 08:23:22 +09:00
Yu Watanabe cfeb4d378e fstab-generator: split out several functions from parse_fstab()
No functional changes, just refactoring and preparation for later
commits.
2023-05-24 08:23:22 +09:00
Daan De Meyer 32fe629abc fstab-generator: Fix log message 2023-05-11 14:44:16 +02:00
Daan De Meyer 338da50141 fstab-generator: Unset kernel cmdline options if empty value is given 2023-05-11 14:44:16 +02:00
Daan De Meyer 200268c6db fstab-generator: Take systemd.verity= into account
Disable verity logic if systemd.verity= switch is disabled.
2023-05-11 14:44:14 +02:00
Zbigniew Jędrzejewski-Szmek de47cd0610 fstab-generator: add missing phrase in comment 2023-04-18 11:55:03 +02:00
Frantisek Sumsal 006a60e079 fstab-generator: don't propagate ignored errno
With certain fstabs we may propagate ENXIO from the $SYSTEMD_SYSFS_CHECK
check all the way up, making fstab-generator exit with a non-zero EC and
without any helpful message, which is really confusing.
2023-04-06 10:26:47 +02:00
Daan De Meyer f461a28da7 chase-symlinks: Rename chase_symlinks() to chase()
Chasing symlinks is a core function that's used in a lot of places
so it deservers a less verbose names so let's rename it to chase()
and chaseat().

We also slightly change the pattern used for the chaseat() helpers
so we get chase_and_openat() and similar.
2023-03-24 13:43:51 +01:00
OMOJOLA JOSHUA 59228d0dbf src: changed instances of sd_bus_call_method() to bus_call_method() (#26819)
* src: changed instances of sd_bus_call_method() to bus_call_method()
2023-03-15 00:12:57 +00:00
Zbigniew Jędrzejewski-Szmek ba0e70673c Merge pull request #26038 from lilyinstarlight/fix/fstab-generator-sysroot-without-cmdline
fstab-generator: use correct targets when /sysroot is specificied in fstab only
2023-03-09 08:51:31 +01:00
Lily Foster 905dd992f8 fstab-generator: add SYSTEMD_SYSFS_CHECK env var
This forces processing of /dev entries in fstab when running in a
container is detected (checked as the existence of read-only /sys).
2023-01-25 19:05:11 -05:00
Lily Foster dfce61dda7 fstab-generator: use correct targets when /sysroot is specificied in fstab only 2023-01-25 19:05:08 -05:00