
我有一個外部硬碟驅動器,其中包含不同的 GPT 分割區。其中之一是 LVM 分割區。該分區包含在 LVM 卷組(稱為“volga”)中,該卷組又分為許多不同的邏輯卷,其中一個是“資料”,是一個加密分割區。
每當我插入此外接硬碟時,我希望我的作業系統能夠:
- 啟用邏輯磁碟區“資料”
/dev/mapper/data
使用 cryptsetup使用儲存在中的金鑰檔案建立未加密的資料節點/somewhere/keyfile
- 掛載
/dev/mapper/data
到/mnt/data
4. 綁定/mnt/data/Music
到/home/qdii/Music
(和其他目錄)
此外,每當設備被拔掉時,我希望我的作業系統清除所有內容。
到目前為止,我有 2 個腳本。第一個開啟並映射設備:
#!/bin/bash
sleep 5
vgchange -aly volga
cryptsetup luksOpen -d /somewhere/keyfile /dev/mapper/volga-data data
mount /dev/mapper/data /mnt/data
for i in Music Videos Ebooks Iso Vbox Games Vrac
do
mount --bind /mnt/data/$i /home/qdii/$i
done
第二個關閉並取消映射設備:
#!/bin/bash
umount -l /run/media/qdii/zero
umount -l /home/qdii/{Videos,Ebooks,Iso,Music,Vbox,Games,Vrac}
umount -l /mnt/data
sleep 2
cryptsetup luksClose /dev/mapper/data
lvchange -aln volga/data
為了自動執行第一個腳本,我寫了一個簡單的 udev 規則:
SUBSYSTEMS=="usb", ATTRS{serial}=="20120530280019", KERNEL=="sd?2", NAME="%k", SYMLINK+="thomson", GROUP="usb", RUN="/bin/bash /somewhere/open.sh"
它很神奇,但我不確定如何編寫第二個 udev 規則,在斷開連接時(或當電腦進入休眠/掛起狀態時)調用第二個腳本。