diff options
author | Michael Biebl <mbiebl@gmail.com> | 2017-03-23 04:37:06 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2017-03-22 23:37:06 -0400 |
commit | 29f32655842a0712e8db482bcefc4da8908460c8 (patch) | |
tree | 3862ac91bd08946c13992c83c71784490eb19027 | |
parent | 1de2fef652c61621e876446c9f04417b6af18f0b (diff) |
units: simplify rescue.service and emergency.service (#5623)
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.
-rw-r--r-- | Makefile.am | 10 | ||||
-rw-r--r-- | src/sulogin-shell/.gitignore | 1 | ||||
-rwxr-xr-x | src/sulogin-shell/systemd-sulogin-shell.in | 14 | ||||
-rw-r--r-- | units/emergency.service.in | 4 | ||||
-rw-r--r-- | units/rescue.service.in | 4 |
5 files changed, 27 insertions, 6 deletions
diff --git a/Makefile.am b/Makefile.am index ad0f202b90..1fe86fd543 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 index 0000000000..01a315524b --- /dev/null +++ b/src/sulogin-shell/.gitignore @@ -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 index 0000000000..d4f32af5f9 --- /dev/null +++ b/src/sulogin-shell/systemd-sulogin-shell.in @@ -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 diff --git a/units/emergency.service.in b/units/emergency.service.in index 9f60931a9f..e9eb238b98 100644 --- a/units/emergency.service.in +++ b/units/emergency.service.in @@ -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 diff --git a/units/rescue.service.in b/units/rescue.service.in index dc6d14b25a..4ab66f4856 100644 --- a/units/rescue.service.in +++ b/units/rescue.service.in @@ -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 |