Como desmontar automaticamente o dispositivo de loop criptografado no desligamento?

1

Estou usando o teste da Debian e tenho um arquivo, é um contêiner LUKS com sistema de arquivos ext4. Meu sistema monta-o a cada inicialização. Eu tive que usar os três arquivos a seguir para fazer isso:

/ etc / crypttab

sda2_crypt     UUID=727fa348-8804-4773-ae3d-f3e176d12dac   none        luks
crypt_dropbox   /media/Server/Dropbox/luks_dropbox          sda2_crypt  luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived,noauto

/ etc / fstab

# dropbox
UUID=0d959e74-ec19-43bf-b779-60134c676aef   /media/Dropbox  ext4    defaults,noauto,user,nofail,noatime,commit=20   0 2

/etc/rc.local

cryptdisks_start crypt_dropbox
mount /media/Dropbox

O contêiner não pode ser aberto e montado automaticamente na inicialização via /etc/crypttab + /etc/fstab porque o volume da caixa de depósito está em uma partição e precisa ser aberto antes que a partição seja montada. Então, é por isso que há noauto em /etc/crypttab . O sistema de arquivos dentro desse container também não pode ser montado via mount -a (pelo menos na inicialização) porque ainda não há nenhum dispositivo. A opção nofail existe para suprimir o erro "no device". E a primeira fase está concluída. A segunda fase é quando a inicialização é feita, por isso usei o arquivo /etc/rc.local . A primeira linha abre sem senha (por causa das configurações em / etc / crypttab) o volume do dropbox, o segundo monta via / etc / fstab. E isso funciona.

O erro ocorre enquanto o sistema tenta desmontar a partição onde está o volume da caixa de depósito. Eu não sei exatamente por quê, mas pode ser porque o sistema de arquivos do volume da caixa de depósito está amontoado, ou talvez o contêiner esteja aberto ou até mesmo porque o dispositivo loop0 ainda está ativo. Para fechar o volume da caixa de depósito completamente, eu tenho que usar os seguintes comandos:

umount /media/Dropbox
cryptdisks_stop crypt_dropbox
losetup -d /dev/loop0

Existe uma maneira de fazer isso apenas quando o sistema está inativo, mas antes de desmontar qualquer outra partição? Existe um arquivo onde eu possa inserir esses comandos, semelhante ao /etc/rc.local?

    
por Mikhail Morfikov 23.11.2013 / 23:18

1 resposta

2

Os detalhes dependerão exatamente de qual distribuição você está executando e como ela está configurada, mas pintando com um pincel muito amplo, quando um sistema Linux desce, entra no nível de execução 0 (desligamento) ou 6 (reinicialização). / p>

Ao alternar os níveis de execução, o processo de inicialização executará os scripts "kill" e "start" para o nível de execução inserido .

Você pode adicionar esses scripts para executar comandos arbitrários ao inserir um determinado nível de execução. Por exemplo, para adicionar um script no Debian que é executado como o sistema está se preparando para reiniciar, crie um script de shell /etc/init.d/my-reboot-prepare-script com qualquer comando que você goste (veja os outros scripts nesse diretório para alguns detalhes sobre como fazer isso), e, em seguida, adicione um link simbólico a ele de /etc/rc6.d/K00my-reboot-prepare-script . O K no início fará com que o script seja chamado para "parar" o processo em questão, com o parâmetro stop .

    
por 23.11.2013 / 23:35