summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--install/sd-shutdown14
-rw-r--r--mkinitcpio-generate-shutdown-ramfs.service15
3 files changed, 32 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 1b933c9..38a7111 100644
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,8 @@ DIRS = \
/usr/share/man/man8 \
/usr/share/man/man5 \
/usr/share/man/man1 \
- /usr/share/mkinitcpio
+ /usr/share/mkinitcpio \
+ /usr/lib/systemd/system
all: doc
@@ -48,6 +49,7 @@ install: all
cp -at $(DESTDIR)/usr/lib/initcpio hooks install
install -m644 -t $(DESTDIR)/usr/share/mkinitcpio mkinitcpio.d/*
+ install -m644 mkinitcpio-generate-shutdown-ramfs.service $(DESTDIR)/usr/lib/systemd/system/mkinitcpio-generate-shutdown-ramfs.service
install -m755 50-mkinitcpio.install $(DESTDIR)/usr/lib/kernel/install.d/50-mkinitcpio.install
diff --git a/install/sd-shutdown b/install/sd-shutdown
new file mode 100644
index 0000000..7e86dad
--- /dev/null
+++ b/install/sd-shutdown
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+build() {
+ add_binary /usr/lib/systemd/systemd-shutdown /shutdown
+}
+
+help() {
+ cat <<HELPEOF
+This hook adds systemd-shutdown to the initramfs. This is only
+if the image is extracted to /run/initramfs before shutdown.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/mkinitcpio-generate-shutdown-ramfs.service b/mkinitcpio-generate-shutdown-ramfs.service
new file mode 100644
index 0000000..36c2508
--- /dev/null
+++ b/mkinitcpio-generate-shutdown-ramfs.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Generate shutdown-ramfs
+DefaultDependencies=no
+Before=shutdown.target
+ConditionFileIsExecutable=!/run/initramfs/shutdown
+
+[Service]
+Type=oneshot
+# /tmp could be umounted at this point
+# use /run as temporary directory
+Environment=TMPDIR=/run
+ExecStart=/usr/bin/mkinitcpio -A sd-shutdown -c /dev/null -d /run/initramfs
+
+[Install]
+WantedBy=shutdown.target