
Eu tenho um disco rígido externo que contém diferentes partições GPT. Uma delas é uma partição LVM. Esta partição está contida em um grupo de volumes LVM (chamado "volga"), que por sua vez se divide em muitos volumes lógicos diferentes, um deles é "dados" e é uma partição criptografada.
Sempre que eu conecto este disco rígido externo, gostaria que meu sistema operacional:
- habilitar os "dados" do volume lógico
- use cryptsetup para criar um nó de dados não criptografado
/dev/mapper/data
usando um arquivo de chave armazenado em/somewhere/keyfile
- montar
/dev/mapper/data
em/mnt/data
4. vincular/mnt/data/Music
em/home/qdii/Music
(e outros diretórios)
Além disso, sempre que o dispositivo estiver desconectado, gostaria que meu sistema operacional limpasse tudo.
Até agora, tenho 2 scripts. O primeiro abre e mapeia o 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
O segundo fecha e desmapeia o 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 a execução do primeiro script, escrevi uma regra simples do udev:
SUBSYSTEMS=="usb", ATTRS{serial}=="20120530280019", KERNEL=="sd?2", NAME="%k", SYMLINK+="thomson", GROUP="usb", RUN="/bin/bash /somewhere/open.sh"
Funciona muito bem, mas não tenho certeza de como escrever a segunda regra do udev, para chamar o segundo script após a desconexão (ou quando o computador entrar em hibernação/suspensão).