summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mount-data/Makefile36
-rwxr-xr-xmount-data/files/init58
2 files changed, 94 insertions, 0 deletions
diff --git a/mount-data/Makefile b/mount-data/Makefile
new file mode 100644
index 0000000..3af25b5
--- /dev/null
+++ b/mount-data/Makefile
@@ -0,0 +1,36 @@
+#
+## Copyright (C) 2020 Karel Kočí
+#
+## This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+# #
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=mount-data
+PKG_VERSION:=1.0.0
+PKG_MAINTAINER:=Karel Kočí <cynerd@email.cz>
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/mount-data
+ TITLE:=Mount filesystem to /data directory
+endef
+
+define Package/mount-data/install
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_DATA) ./files/init $(1)/etc/init.d/data
+endef
+
+Build/Compile:=:
+
+define Package/mount-data/postinst
+[ -n "$$IPKG_INSTROOT" ] || /etc/init.d/data enable
+endef
+
+define Package/mount-data/prerm
+[ -n "$$IPKG_INSTROOT" ] || /etc/init.d/data disable
+endef
+
+$(eval $(call BuildPackage,mount-data))
diff --git a/mount-data/files/init b/mount-data/files/init
new file mode 100755
index 0000000..035f82f
--- /dev/null
+++ b/mount-data/files/init
@@ -0,0 +1,58 @@
+#!/bin/sh /etc/rc.common
+
+START=36
+STOP=90
+
+UUID_A="3472bef9-cbae-48bd-873e-fd4858a0b72f"
+UUID_B="ad73f0bf-3cc5-4aee-842f-992db6a642e3"
+UUID="f71f2b6c-fc49-4a9b-91b3-7eaab853a02d"
+
+is_open() {
+ [ -b "/dev/mapper/data_$1" ]
+}
+
+open() {
+ cryptsetup open --key-file /etc/keys/sd "UUID=$2" "data_$1"
+}
+
+close() {
+ cryptsetup close "data_$1"
+}
+
+is_mounted() {
+ findmnt >/dev/null "$1"
+}
+
+mount_btrfs() {
+ mount -o subvol="$1" "UUID=$UUID" "$2"
+}
+
+umount_drive() {
+ umount -lf "UUID=$UUID"
+}
+
+
+status() {
+ is_mounted "/data" && is_mounted "/srv"
+}
+
+start() {
+ is_open a || open a "$UUID_A"
+ is_open b || open b "$UUID_B"
+ is_mounted "/data" || mount @data /data
+ is_mounted "/srv" || mount @srv /srv
+}
+
+stop() {
+ unmount_drive
+ close a
+ close b
+}
+
+restart() {
+ :
+}
+
+reload() {
+ :
+}