summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Schmidt <mschmidt@redhat.com>2012-06-07 16:03:33 +0200
committerMichal Schmidt <mschmidt@redhat.com>2012-06-07 16:33:45 +0200
commited061a8dc2acd93c2eb569d2d983d5a77f7e5b77 (patch)
treea758baacdf5e0cf88f6f90fc60ae82a69f4880b2
parenta2368a3f37ede469d4359421c1e4ad304c682a07 (diff)
units: add systemd-debug-shell.service
If enabled, the service provides a root shell from an early boot. It also remains active late into shutdown. It is useful for debugging startup and shutdown problems. This is the unit referenced in http://freedesktop.org/wiki/Software/systemd/Debugging#early_debug_shell
-rw-r--r--Makefile.am5
-rw-r--r--configure.ac6
-rw-r--r--units/systemd-debug-shell.service.in25
3 files changed, 35 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am
index 9ffd8c7b44..6cc352ab91 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -340,7 +340,8 @@ nodist_systemunit_DATA = \
units/user@.service \
units/systemd-udev.service \
units/systemd-udev-trigger.service \
- units/systemd-udev-settle.service
+ units/systemd-udev-settle.service \
+ units/systemd-debug-shell.service
dist_userunit_DATA = \
units/user/default.target \
@@ -378,6 +379,7 @@ EXTRA_DIST += \
units/systemd-udev.service \
units/systemd-udev-trigger.service \
units/systemd-udev-settle.service \
+ units/systemd-debug-shell.service.in \
units/hibernate.service.in \
units/suspend.service.in \
introspect.awk \
@@ -3019,6 +3021,7 @@ SED_PROCESS = \
-e 's,@VERSION\@,$(VERSION),g' \
-e 's,@rootprefix\@,$(rootprefix),g' \
-e 's,@udevlibexecdir\@,$(libexecdir)/udev,g' \
+ -e 's,@sushell\@,$(sushell),g' \
< $< > $@ || rm $@
units/%: units/%.in Makefile
diff --git a/configure.ac b/configure.ac
index c499d222fa..59892cb3d2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -172,6 +172,12 @@ if test "x$enable_selinux" != "xno"; then
fi
fi
AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"])
+if test "x${have_selinux}" != xno ; then
+ sushell=/sbin/sushell
+else
+ sushell=/bin/bash
+fi
+AC_SUBST(sushell)
# ------------------------------------------------------------------------------
have_xz=no
diff --git a/units/systemd-debug-shell.service.in b/units/systemd-debug-shell.service.in
new file mode 100644
index 0000000000..70c01c21f6
--- /dev/null
+++ b/units/systemd-debug-shell.service.in
@@ -0,0 +1,25 @@
+[Unit]
+Description=Early root shell on tty9 FOR DEBUGGING ONLY
+DefaultDependencies=no
+IgnoreOnIsolate=yes
+
+[Service]
+Environment=TERM=linux
+ExecStart=@sushell@
+Restart=always
+RestartSec=0
+StandardInput=tty
+TTYPath=/dev/tty9
+TTYReset=yes
+TTYVHangup=yes
+KillMode=process
+IgnoreSIGPIPE=no
+# bash ignores SIGTERM
+KillSignal=SIGHUP
+
+# Unset locale for the console getty since the console has problems
+# displaying some internationalized messages.
+Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
+
+[Install]
+WantedBy=sysinit.target