先日の「FreeBSDのgbde(4)による重要データの暗号化」に関してその後の補足です。 結局、あれ以来ほぼ毎日常用していますが、 特に暗号化自体に起因する問題は起きていません。 ただし、半自動化スクリプトは書き換えました。
まずは GBDE を起動して暗号化されたメールスプールなどをマウントするためのスクリプトである ~/bin/gbdeattach.sh です。 前のバージョンでは fsck をしていなかったので、 fsck を preen モードで起動するように改良しました (/etc/fstab に記述がないので、「fsck -t ufs」の指定が必要です)。 また、正常にマウントできたかどうかを確認するため、 df の結果を 5 秒表示するようにしました。
#!/bin/sh if [ ! -d /home/cryptfs/hosokawa/Mail ] ; then if sudo mdconfig -a -t vnode -u 9 -f /home/cryptfs/hosokawa.img ; then sudo gbde attach /dev/md9 -l /home/cryptfs/md9 if [ -c /dev/md9.bde ] ; then sudo fsck -t ufs -p /dev/md9.bde sudo mount /dev/md9.bde /home/cryptfs/hosokawa else echo "Cannot init gbde." sudo mdconfig -d -u 9 sleep 1 fi fi fi /bin/df /bin/sleep 5
また、マウント解除用の ~/bin/gbdedetach.sh も df に関する改良を加えました。
#!/bin/sh [ -d /home/cryptfs/hosokawa/Mail ] && \ sudo umount /home/cryptfs/hosokawa && \ sudo gbde detach /dev/md9 && \ sudo mdconfig -d -u 9 /bin/df /bin/sleep 5
で、fsck だけを実行するための ~/bin/gbdefsck.sh も加えてみました。
#!/bin/sh if [ ! -d /home/cryptfs/hosokawa/Mail ] ; then if sudo /sbin/mdconfig -a -t vnode -u 9 -f /home/cryptfs/hosokawa.img ; then sudo /sbin/gbde attach /dev/md9 -l /home/cryptfs/md9 if [ -c /dev/md9.bde ] ; then sudo /sbin/fsck -t ufs -p /dev/md9.bde sudo /sbin/gbde detach /dev/md9 sudo /sbin/mdconfig -d -u 9 else echo "Cannot init gbde." sudo /sbin/mdconfig -d -u 9 sleep 1 fi fi fi
で、現状で判明している問題ですが、 異常終了後に、 イメージファイルが含まれるファイルシステムがバックグラウンド fsck を行っている最中に、 そのイメージを fsck しようとすると、 デッドロックの類が生じるようです。 まあ、無理もないといえば無理もありませんが…。 とりあえず、 バックグラウンド fsck が終了したことを確認してから gbdeattach.sh を起動することで回避しています。
その他は結構うまく動いています。 あとはサスペンド時、 もしくはレジューム時に強制 umount が可能かどうかを考えています。