Se você executou um programa / script a partir do próprio USB, você deve ser capaz de descobrir em qual mapa / nome e dispositivo da LUKS ele está (ou apenas dizer ao script o nome mapeado ou dispositivo se você o conhece) e observar quando o dispositivo "desaparece" quando é removido. Então desmonte-o.
Estou bastante certo de que desconectar um USB fará com que o dispositivo ( /dev/sdXn
) desapareça, mas caso você não precise assistir dmesg
ou procurar o syslog, ou encontrá-lo em algum lugar em /sys
.
Aqui está um script bash de prova de conceito que parece funcionar, mas eu não tenho nenhuma partição LUKS em usbs para testar, então não tenho certeza se umount
pode precisar de opções como --lazy
ou --force
.
map=$( df --output=source $PWD |tail -n1 )
device=$( sudo cryptsetup status "$map" | grep -o "device:.*"|cut -d' ' -f 3 )
while [ -b "$device" ]
do
sleep 30
done
echo "Device $device is missing, unmounting"
sudo umount -v "$map"
Se ele for executado de dentro do contêiner LUKS montado, $PWD
deverá localizar o nome LUKS no qual está mapeado e, em seguida, o dispositivo, e se o dispositivo deixar de ser um arquivo especial de bloco, desmonte o dispositivo mapeado.
PS Se o dispositivo foi montado rw (gravável), o sistema de arquivos pode ser corrompido desconectando-o de repente. O FAT parece especialmente vulnerável, enquanto um sistema de arquivos de journaling deve ser mais robusto. Se estiver montado ro (somente leitura) pelo menos você pode evitar esse problema, o mount aceita -o ro
e o cryptsetup aceita --readonly
(ambos provavelmente não são necessários)