diff options
-rw-r--r-- | mount-data/Makefile | 36 | ||||
-rwxr-xr-x | mount-data/files/init | 58 |
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() { + : +} |