summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/live.cfg1
-rw-r--r--files/halt-local.service23
-rwxr-xr-xfiles/halt.local.CD7
3 files changed, 24 insertions, 7 deletions
diff --git a/config/live.cfg b/config/live.cfg
index c93fb24..da35792 100644
--- a/config/live.cfg
+++ b/config/live.cfg
@@ -44,6 +44,7 @@ my $_l = {
[ 'files/defaultspooler', '/etc/foomatic/defaultspooler', { mode => 0644 } ],
if_($live->{settings}{media} eq 'CD',
#- eject eject cd medium before halt/reboot
+ [ 'files/halt-local.service', '/etc/systemd/system/halt-local.service', { mode => 0644 } ],
[ 'files/halt.local.CD', '/sbin/halt.local', { mode => 0755 } ],
#- do not load usblp and trigger autosetupprintqueues in live since cups is not available
[ 'files/live.modprobe.CD', '/etc/modprobe.d/live.conf', { mode => 0644, no_install => 1 } ],
diff --git a/files/halt-local.service b/files/halt-local.service
new file mode 100644
index 0000000..bc7f284
--- /dev/null
+++ b/files/halt-local.service
@@ -0,0 +1,23 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=/sbin/halt.local Compatibility
+ConditionFileIsExecutable=/sbin/halt.local
+DefaultDependencies=no
+After=shutdown.target
+Before=final.target
+
+[Service]
+Type=oneshot
+ExecStartPre=-/bin/kill -54 1
+ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/chvt 1
+ExecStart=/sbin/halt.local
+TimeoutSec=0
+StandardOutput=tty
+RemainAfterExit=yes
diff --git a/files/halt.local.CD b/files/halt.local.CD
index e34f56d..6254c61 100755
--- a/files/halt.local.CD
+++ b/files/halt.local.CD
@@ -8,13 +8,6 @@ use c;
my ($device) = cat_("/proc/mounts") =~ m!(/dev/\S+)\s+/live/media\s+iso9660!;
$device or exit;
-# stop plymouth
-system("/bin/plymouth quit");
-# send SIGRTMIN+20 to systemd to enable console output
-system("/bin/kill -54 1");
-# switch to console 1
-system("/usr/bin/chvt 1");
-
# try to put halt/reboot in cache, if not called directly from them
# mount is also needed by end of /etc/init.d/halt
system("$_ --help &>/dev/null") foreach qw(halt mount reboot);