summaryrefslogtreecommitdiff
path: root/src/basic/util.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-09-26 07:15:55 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-10-08 16:04:51 +0200
commit0307ea49c70b1ed4f3af3c80566c8c098dc080bb (patch)
treef956f5c279912ab2fa0f573d07ceeb0aa894a78e /src/basic/util.c
parent12580bc3eda2105b608210c72d791f41d1b9f0d0 (diff)
downloadsystemd-0307ea49c70b1ed4f3af3c80566c8c098dc080bb.tar.gz
Add $SYSTEMD_IN_INITRD=yes|no override for debugging
Diffstat (limited to 'src/basic/util.c')
-rw-r--r--src/basic/util.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/basic/util.c b/src/basic/util.c
index 081c63c898..0da963f4af 100644
--- a/src/basic/util.c
+++ b/src/basic/util.c
@@ -23,6 +23,7 @@
#include "def.h"
#include "device-nodes.h"
#include "dirent-util.h"
+#include "env-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "format-util.h"
@@ -106,6 +107,7 @@ int prot_from_flags(int flags) {
bool in_initrd(void) {
struct statfs s;
+ int r;
if (saved_in_initrd >= 0)
return saved_in_initrd;
@@ -120,9 +122,16 @@ bool in_initrd(void) {
* emptying when transititioning to the main systemd.
*/
- saved_in_initrd = access("/etc/initrd-release", F_OK) >= 0 &&
- statfs("/", &s) >= 0 &&
- is_temporary_fs(&s);
+ r = getenv_bool_secure("SYSTEMD_IN_INITRD");
+ if (r < 0 && r != -ENXIO)
+ log_debug_errno(r, "Failed to parse $SYSTEMD_IN_INITRD, ignoring: %m");
+
+ if (r >= 0)
+ saved_in_initrd = r > 0;
+ else
+ saved_in_initrd = access("/etc/initrd-release", F_OK) >= 0 &&
+ statfs("/", &s) >= 0 &&
+ is_temporary_fs(&s);
return saved_in_initrd;
}