summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ENVIRONMENT.md5
-rw-r--r--src/basic/proc-cmdline.c14
2 files changed, 19 insertions, 0 deletions
diff --git a/ENVIRONMENT.md b/ENVIRONMENT.md
index 4ace45751f..1ad2addfee 100644
--- a/ENVIRONMENT.md
+++ b/ENVIRONMENT.md
@@ -21,6 +21,11 @@ All tools:
* `$SD_EVENT_PROFILE_DELAYS=1` — if set, the sd-event event loop implementation
will print latency information at runtime.
+* `$SYSTEMD_PROC_CMDLINE` — if set, may contain a string that is used as kernel
+ command line instead of the actual one readable from /proc/cmdline. This is
+ useful for debugging, in order to test generators and other code against
+ specific kernel command lines.
+
systemctl:
* `$SYSTEMCTL_FORCE_BUS=1` — if set, do not connect to PID1's private D-Bus
diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c
index 8297a222b7..98c94ed5e2 100644
--- a/src/basic/proc-cmdline.c
+++ b/src/basic/proc-cmdline.c
@@ -34,8 +34,22 @@
#include "virt.h"
int proc_cmdline(char **ret) {
+ const char *e;
assert(ret);
+ /* For testing purposes it is sometimes useful to be able to override what we consider /proc/cmdline to be */
+ e = secure_getenv("SYSTEMD_PROC_CMDLINE");
+ if (e) {
+ char *m;
+
+ m = strdup(e);
+ if (!m)
+ return -ENOMEM;
+
+ *ret = m;
+ return 0;
+ }
+
if (detect_container() > 0)
return get_process_cmdline(1, 0, false, ret);
else