From d9513087a1a0702325bef126ebfcaf6755602f76 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Thu, 28 Nov 2024 22:54:29 +0100 Subject: Add mount-devices script under cryptsetup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- cryptsetup/Makefile | 15 +++++++++++++++ cryptsetup/mount-devices | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 cryptsetup/Makefile create mode 100755 cryptsetup/mount-devices (limited to 'cryptsetup') diff --git a/cryptsetup/Makefile b/cryptsetup/Makefile new file mode 100644 index 0000000..0666bc6 --- /dev/null +++ b/cryptsetup/Makefile @@ -0,0 +1,15 @@ +.POSIX: + +install: + ../check-installed-shebang mount-devices + ../check-in-path test + ../check-in-path mountpoint + ../check-in-path cryptsetup + ../check-in-path mount + mkdir -p -- ~/.local/bin + test ! -e ~/.local/bin/mount-devices || test -L ~/.local/bin/mount-devices + ln -sf -- ~/.dotfiles/cryptsetup/mount-devices ~/.local/bin/mount-devices + +uninstall: + +! ../check-installed cryptsetup + -unlink -- ~/.local/bin/mount-devices diff --git a/cryptsetup/mount-devices b/cryptsetup/mount-devices new file mode 100755 index 0000000..a26fd1c --- /dev/null +++ b/cryptsetup/mount-devices @@ -0,0 +1,35 @@ +#!/bin/sh + +# Although the name doesn't indicate it, this is only for encrypted +# partitions, and it exists only because systemd is absolutely +# terrible at mounting encrypted filesystems. Thanks you, Lennart +# and all the idiots that thought your craps smelled good. + +cd /devices + +for f in *; do + # Make sure the symlink points to an available device + if ! test -e "$f"; then + continue + fi + + # Make sure that the device should be mounted in /media/ + if ! test -d "/media/$f"; then + continue; + fi + + # Make sure the device is not already mounted + if mountpoint -q "/media/$f"; then + continue; + fi + + # If the device has not been decrypted already, attempt to decrypt it + if ! test -e "/dev/mapper/$f"; then + if ! cryptsetup open "/devices/$f" "$f"; then + continue + fi + fi + + # And of course, mount the decrypted device + mount "/dev/mapper/$f" "/media/$f" +done -- cgit v1.2.3-70-g09d2