]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
units: simplify rescue.service and emergency.service (#5623)
authorMichael Biebl <mbiebl@gmail.com>
Thu, 23 Mar 2017 03:37:06 +0000 (04:37 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 23 Mar 2017 03:37:06 +0000 (23:37 -0400)
The emergency.service and rescue.service units have become rather
convoluted. We spawn multiple shells and the help text spans multiple lines
which makes the units hard to read.

Move the logic into a single shell script and call that via ExecStart.

Makefile.am
src/sulogin-shell/.gitignore [new file with mode: 0644]
src/sulogin-shell/systemd-sulogin-shell.in [new file with mode: 0755]
units/emergency.service.in
units/rescue.service.in

index ad0f202b9015630ea1037a046f17c764a17f3c27..1fe86fd543a9bf895ae5e3553271df700405d339 100644 (file)
@@ -443,6 +443,12 @@ userenvgenerator_PROGRAMS = \
        30-systemd-environment-d-generator
 endif
 
+rootlibexec_SCRIPTS = \
+       src/sulogin-shell/systemd-sulogin-shell
+
+EXTRA_DIST += \
+       src/sulogin-shell/systemd-sulogin-shell.in
+
 dist_bashcompletion_data = \
        shell-completion/bash/busctl \
        shell-completion/bash/journalctl \
@@ -6329,6 +6335,10 @@ src/core/%.systemd: src/core/%.systemd.in
 src/%.policy.in: src/%.policy.in.in
        $(SED_PROCESS)
 
+src/sulogin-shell/%: src/sulogin-shell/%.in
+       $(SED_PROCESS)
+       $(AM_V_GEN)chmod +x $@
+
 shell-completion/%: shell-completion/%.in
        $(SED_PROCESS)
 
diff --git a/src/sulogin-shell/.gitignore b/src/sulogin-shell/.gitignore
new file mode 100644 (file)
index 0000000..01a3155
--- /dev/null
@@ -0,0 +1 @@
+systemd-sulogin-shell
diff --git a/src/sulogin-shell/systemd-sulogin-shell.in b/src/sulogin-shell/systemd-sulogin-shell.in
new file mode 100755 (executable)
index 0000000..d4f32af
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x /bin/plymouth ]; then
+    /bin/plymouth --wait quit
+fi
+
+cat <<EOF
+You are in $1 mode. After logging in, type "journalctl -xb" to view
+system logs, "systemctl reboot" to reboot, "systemctl default" or ^D to
+boot into default mode.
+EOF
+
+@SULOGIN@
+@SYSTEMCTL@ --job-mode=fail --no-block default
index 9f60931a9f57bc025a48710eccceaf65fdfb616b..e9eb238b98f047ae90cd5a7fb6021be1df430f7b 100644 (file)
@@ -17,9 +17,7 @@ Before=shutdown.target
 [Service]
 Environment=HOME=/root
 WorkingDirectory=-/root
-ExecStartPre=-/bin/sh -c "[ -x /bin/plymouth ] && /bin/plymouth --wait quit"
-ExecStartPre=-/bin/echo -e 'You are in emergency mode. After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\ntry again to boot into default mode.'
-ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default"
+ExecStart=-@rootlibexecdir@/systemd-sulogin-shell emergency
 Type=idle
 StandardInput=tty-force
 StandardOutput=inherit
index dc6d14b25a61f915bd99b009602b90c916476289..4ab66f48560a55d8caa1eb03102481a34b64ed46 100644 (file)
@@ -16,9 +16,7 @@ Before=shutdown.target
 [Service]
 Environment=HOME=/root
 WorkingDirectory=-/root
-ExecStartPre=-/bin/sh -c "[ -x /bin/plymouth ] && /bin/plymouth --wait quit"
-ExecStartPre=-/bin/echo -e 'You are in rescue mode. After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.'
-ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default"
+ExecStart=-@rootlibexecdir@/systemd-sulogin-shell rescue
 Type=idle
 StandardInput=tty-force
 StandardOutput=inherit