aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Oberhollenzer <goliath@infraroot.at>2019-08-11 13:24:28 +0200
committerDavid Oberhollenzer <goliath@infraroot.at>2019-09-18 13:07:09 +0200
commit418ca4bc726b106698d2c5e4045fcc6de089101e (patch)
tree21c0a3b740272b33d3e864c2b2cf9821787e9447
parent628adf2e034acb040874e267451b0a6e3f3ff96a (diff)
Propperly unmount the overlay partition on shutdown
Signed-off-by: David Oberhollenzer <goliath@infraroot.at>
-rw-r--r--Makefile.am2
-rw-r--r--docs/defconfig.md2
-rw-r--r--services/Makemodule.am4
-rw-r--r--services/ifdown.in2
-rw-r--r--services/unmount9
5 files changed, 16 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index a74c62d..ccbadce 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -35,10 +35,12 @@ install-data-local:
$(LN_S) $(TEMPLATEDIR)/sync $(DESTDIR)$(SVCDIR)/sync@shutdown
$(LN_S) $(TEMPLATEDIR)/sigkill $(DESTDIR)$(SVCDIR)/sigkill@shutdown
$(LN_S) $(TEMPLATEDIR)/sigterm $(DESTDIR)$(SVCDIR)/sigterm@shutdown
+ $(LN_S) $(TEMPLATEDIR)/unmount $(DESTDIR)$(SVCDIR)/unmount@shutdown
$(LN_S) $(TEMPLATEDIR)/sync $(DESTDIR)$(SVCDIR)/sync@reboot
$(LN_S) $(TEMPLATEDIR)/sigkill $(DESTDIR)$(SVCDIR)/sigkill@reboot
$(LN_S) $(TEMPLATEDIR)/sigterm $(DESTDIR)$(SVCDIR)/sigterm@reboot
$(LN_S) $(TEMPLATEDIR)/ifdown $(DESTDIR)$(SVCDIR)/ifdown@reboot
+ $(LN_S) $(TEMPLATEDIR)/unmount $(DESTDIR)$(SVCDIR)/unmount@reboot
$(LN_S) $(TEMPLATEDIR)/ifcfg $(DESTDIR)$(SVCDIR)/ifcfg
$(LN_S) $(TEMPLATEDIR)/modules $(DESTDIR)$(SVCDIR)/modules
$(LN_S) $(TEMPLATEDIR)/network $(DESTDIR)$(SVCDIR)/network
diff --git a/docs/defconfig.md b/docs/defconfig.md
index c58848e..c4ab477 100644
--- a/docs/defconfig.md
+++ b/docs/defconfig.md
@@ -90,6 +90,8 @@ For the shutdown and reboot targets, the following services are executed:
* sigterm - send the SIGTERM signal to all processes and wait for 5 seconds
* sigkill - send the SIGKILL signal to all remaining processes
* ifdown - bring all network interfaces down
+ * unmount - unmount the overlay mount points and the underlying
+ writeable filesystem
* sync - run the sync command
diff --git a/services/Makemodule.am b/services/Makemodule.am
index 8bd2bb1..84904fb 100644
--- a/services/Makemodule.am
+++ b/services/Makemodule.am
@@ -8,7 +8,7 @@ init_DATA += services/unbound services/dnsmasq services/ifdown services/modules
init_DATA += services/network services/hostapd services/nft services/sigkill
init_DATA += services/sshd services/sshd_keygen services/consolefont
init_DATA += services/nginx services/usyslogd services/klogd
-init_DATA += services/gcrond services/mountusr
+init_DATA += services/gcrond services/mountusr services/unmount
init_DATA += services/tmpfsrun services/tmpfsvar
if DHCPCLIENT
@@ -24,4 +24,4 @@ EXTRA_DIST += services/sync services/sysctl services/tmpfs
EXTRA_DIST += services/dhcpcdmaster services/unbound
EXTRA_DIST += services/usyslogd services/dnsmasq services/network
EXTRA_DIST += services/consolefont services/gcrond services/nginx
-EXTRA_DIST += services/tmpfsrun
+EXTRA_DIST += services/tmpfsrun services/unmount
diff --git a/services/ifdown.in b/services/ifdown.in
index 1310098..2946ca0 100644
--- a/services/ifdown.in
+++ b/services/ifdown.in
@@ -2,6 +2,6 @@ description "stop all network interfaces"
type wait
target %0
after sigkill sigterm
-before sync
+before sync unmount
exec "@SCRIPTDIR@/ifdown.sh" \ No newline at end of file
diff --git a/services/unmount b/services/unmount
new file mode 100644
index 0000000..6574c8d
--- /dev/null
+++ b/services/unmount
@@ -0,0 +1,9 @@
+description unmount overlay filesystem
+type wait
+target %0
+after sigkill
+before sync
+exec {
+ umount -nli /var/lib /usr /etc
+ umount -nli /cfg/overlay
+}