私はNixOSを使用しており、ZFSを使用してハードドライブパーティションを暗号化しようとしています(将来的にはさらに多くなる可能性があります)。 このガイド に固執しようとしたので、追加しました
boot.zfs = {
enableUnstable = true;
requestEncryptionCredentials = true;
};
boot.supportedFilesystems = [ "zfs" ];
私のconfiguration.nix
に、プールとデータセットzroot
とzroot/genc
をmountpoint=legacy acltype=posixacl xattr=sa
で作成しました。プールを暗号化しました
$ Sudo zfs create -o acltype=posixacl -o xattr=sa -o encryption=aes-256-gcm -o keyformat=passphrase -o mountpoint=none zroot/genc
パスフレーズを求められたら、
$ Sudo zfs set mountpoint=legacy zroot/genc
$ Sudo mount -t zfs zroot/genc /home/gecku/genc
$ Sudo chown gecku:users ~/genc
$ touch ~/genc/hello
$ Sudo nixos-generate-config
これはすべて正常に機能しました(ファイル~/genc/hello
を作成できました)。しかし、nixos-rebuild switch
の後、私は緊急シェルに落とされ、何もできませんでした。以前のバージョンのNixOSに戻し、/etc/nixos/hardware-configuration.nix
からzfs
エントリを削除して、システムがZFSプールをインポートしようとしないようにしました(明らかに失敗したため)。この新しい構成で、私はしました
$ Sudo zfs import zroot
$ Sudo mount -t zfs zroot/genc ~/genc
> filesystem 'zroot/genc' can not be mounted: Permission denied
パスフレーズを求められるところまで来ませんでした。 zroot/genc
には属性canmount=on keylocation=Prompt
があります。
では、どうすればこれを修正できますか?暗号化されたデータセットをマウントするにはどうすればよいですか?
このガイド マウントプロセスをうまくまとめています。つまり、暗号化キーのロード/要求を認識しているため、zfs mount
ではなくmount -t zfs
を使用する必要があります。起動時にこれを行うには、-l
フラグを使用してzpool import
することもできます(ただし、起動スクリプトにパスワードを指定する方法が必要です)。