
Tengo un disco duro externo que contiene diferentes particiones GPT. Uno de ellos es una partición LVM. Esta partición está contenida en un grupo de volúmenes LVM (llamado "volga"), que a su vez se divide en muchos volúmenes lógicos diferentes, uno de ellos es "datos" y es una partición cifrada.
Cada vez que conecto este disco duro externo, me gustaría que mi sistema operativo:
- habilitar el volumen lógico "datos"
- use cryptsetup para crear un nodo de datos no cifrado
/dev/mapper/data
usando un archivo de clave almacenado en/somewhere/keyfile
- montar
/dev/mapper/data
en/mnt/data
4. vincularse/mnt/data/Music
a/home/qdii/Music
(y otros directorios)
Además, cada vez que desconecto el dispositivo, me gustaría que mi sistema operativo borre todo.
Hasta ahora tengo 2 guiones. El primero abre y asigna el dispositivo:
#!/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
El segundo cierra y desasigna el dispositivo:
#!/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
Para automatizar la ejecución del primer script, escribí una regla udev simple:
SUBSYSTEMS=="usb", ATTRS{serial}=="20120530280019", KERNEL=="sd?2", NAME="%k", SYMLINK+="thomson", GROUP="usb", RUN="/bin/bash /somewhere/open.sh"
Funciona de maravilla, pero no estoy seguro de cómo escribir la segunda regla udev, para llamar al segundo script al desconectarse (o cuando la computadora entra en hibernación/suspensión).