[arch-projects] [mkinitcpio] [PATCHv2 3/3] Add mkinitcpio-generate-shutdown-ramfs.service

Thomas Bächler thomas at archlinux.org
Tue Nov 19 17:10:28 EST 2013


When enabled, this service generates an "initramfs" that systemd
pivots to on shutdown to ensure clean umounting and shutdown of
loop and dm devices.

The actual work is done by systemd-shutdown.
---
 Makefile                                   |  4 +++-
 install/sd-shutdown                        | 14 ++++++++++++++
 mkinitcpio-generate-shutdown-ramfs.service | 15 +++++++++++++++
 3 files changed, 32 insertions(+), 1 deletion(-)
 create mode 100644 install/sd-shutdown
 create mode 100644 mkinitcpio-generate-shutdown-ramfs.service

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
-- 
1.8.4.2



More information about the arch-projects mailing list