web-dev-qa-db-ja.com

シャットダウン時に暗号化されたループデバイスを自動的にアンマウントする方法は?

私はDebianテストを使用していますが、ファイルがあります。これは、ext4ファイルシステムを備えたLUKSコンテナーです。私のシステムは、起動するたびにそれをマウントします。そのためには、次の3つのファイルを使用する必要がありました。

/ 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_派生、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

ドロップボックスボリュームはパーティション上にあり、パーティションをマウントする前に開く必要があるため、コンテナは起動時に/etc/crypttab + /etc/fstabを介して自動的に開いてマウントすることはできません。そのため、/etc/crypttabnoautoがあります。そのコンテナ内のファイルシステムは、まだデバイスがないため、mount -aを介して(少なくとも起動時に)マウントすることもできません。 「デバイスなし」エラーを抑制するためのオプションnofailが存在します。そして、最初のフェーズが完了します。 2番目のフェーズは、起動が完了したときです。そのため、/etc/rc.localファイルを使用しました。最初の行は(/ etc/crypttabの設定のために)パスワードなしでドロップボックスボリュームを開き、2番目の行は/ etc/fstabを介してマウントします。そしてそれはうまくいきます。

このエラーは、システムがドロップボックスボリュームがあるパーティションをアンマウントしようとしたときに発生します。正確な理由はわかりませんが、Dropboxボリュームのファイルシステムがマウンドされているか、コンテナが開いているか、loop0デバイスがまだアクティブであることが原因である可能性があります。ドロップボックスボリュームを完全に閉じるには、次のコマンドを使用する必要があります。

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

システムがダウンしたときだけ、他のパーティションをアンマウントする前にそれを行う方法はありますか? /etc/rc.localのように、これらのコマンドを挿入できるファイルはありますか?

1

詳細は、実行しているディストリビューションとその設定方法によって異なりますが、非常に幅広いブラシでペイントすると、Linuxシステムがダウンすると、ランレベル0(シャットダウン)または6(リブート)のいずれかになります。

ランレベルを切り替えると、initプロセスは「kill」および「start」スクリプトを実行します入力されたランレベルに対して

このような独自のスクリプトを追加して、特定のランレベルに入るときに任意のコマンドを実行できます。たとえば、システムが再起動の準備をしているときに実行されるDebianにスクリプトを追加するには、任意のコマンドを使用してシェルスクリプト/etc/init.d/my-reboot-prepare-scriptを作成します(実行方法の詳細については、そのディレクトリ内の他のスクリプトを参照してください)。 )、次に/etc/rc6.d/K00my-reboot-prepare-scriptからシンボリックリンクを追加します。最初のKにより、スクリプトが呼び出され、パラメータstopを使用して問題のプロセスが「停止」されます。

2
a CVn