断开连接和休眠/挂起的 udev 规则

断开连接和休眠/挂起的 udev 规则

我有一个外部硬盘,其中包含不同的 GPT 分区。其中一个是 LVM 分区。此分区包含在 LVM 卷组(称为“volga”)中,该卷组又分为许多不同的逻辑卷,其中一个是“数据”,是一个加密分区。

每当我插入此外部硬盘时,我希望我的操作系统能够:

  1. 启用逻辑卷“数据”
  2. /dev/mapper/data使用 cryptsetup使用存储在中的密钥文件创建未加密的数据节点/somewhere/keyfile
  3. 挂载/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 规则,以便在断开连接时(或当计算机进入休眠/挂起状态时)调用第二个脚本。

相关内容