1
0
mirror of https://github.com/systemd/systemd synced 2024-07-05 17:39:42 +00:00

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).
This commit is contained in:
Lily Foster 2023-01-25 18:52:06 -05:00
parent dfce61dda7
commit 905dd992f8
No known key found for this signature in database
GPG Key ID: 49340081E484C893
2 changed files with 14 additions and 2 deletions

View File

@ -54,6 +54,10 @@ All tools:
* `$SYSTEMD_SYSROOT_FSTAB` — if set, use this path instead of
`/sysroot/etc/fstab`. Only useful for debugging `systemd-fstab-generator`.
* `$SYSTEMD_SYSFS_CHECK` — takes a boolean. If set, overrides sysfs container
detection that ignores `/dev/` entries in fstab. Only useful for debugging
`systemd-fstab-generator`.
* `$SYSTEMD_CRYPTTAB` — if set, use this path instead of `/etc/crypttab`. Only
useful for debugging. Currently only supported by
`systemd-cryptsetup-generator`.

View File

@ -9,6 +9,7 @@
#include "bus-locator.h"
#include "chase-symlinks.h"
#include "efi-loader.h"
#include "env-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "fstab-util.h"
@ -667,7 +668,7 @@ static int parse_fstab(bool initrd) {
_cleanup_endmntent_ FILE *f = NULL;
const char *fstab;
struct mntent *me;
int r = 0;
int r = 0, sysfs_check = -1;
if (initrd)
fstab = sysroot_fstab_path();
@ -705,7 +706,14 @@ static int parse_fstab(bool initrd) {
continue;
}
if (is_device_path(what)) {
if (sysfs_check < 0) {
r = getenv_bool_secure("SYSTEMD_SYSFS_CHECK");
if (r < 0 && r != -ENXIO)
log_debug_errno(r, "Failed to parse $SYSTEMD_SYSFS_CHECK, ignoring: %m");
sysfs_check = r != 0;
}
if (sysfs_check && is_device_path(what)) {
log_info("/sys/ is read-only (running in a container?), ignoring fstab device entry for %s.", what);
continue;
}