summaryrefslogtreecommitdiff
path: root/src/fstab-generator
diff options
context:
space:
mode:
authorLily Foster <lily@lily.flowers>2023-01-25 18:52:06 -0500
committerLily Foster <lily@lily.flowers>2023-01-25 19:05:11 -0500
commit905dd992f8fbfe486e68808ce88e1662c970ab35 (patch)
treec2c75edb7f563a4c3d60c075aa35a7f4d5e0ac79 /src/fstab-generator
parentdfce61dda7b7b15b910221e5ca1673b371554368 (diff)
downloadsystemd-905dd992f8fbfe486e68808ce88e1662c970ab35.tar.gz
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).
Diffstat (limited to 'src/fstab-generator')
-rw-r--r--src/fstab-generator/fstab-generator.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
index 2ad86a8980..3288e117d7 100644
--- a/src/fstab-generator/fstab-generator.c
+++ b/src/fstab-generator/fstab-generator.c
@@ -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;
}