[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