私は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の以前のバージョンに戻して、システムがZFSプールをインポートしないようzfs
にエントリを削除しました/etc/nixos/hardware-configuration.nix
(どうやらその時点で失敗したようです)。この新しい構成では、
$ 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
。
では、どうすればこれを修正できるでしょうか? 暗号化されたデータセットをマウントするにはどうすればよいでしょうか?
答え1
このガイドマウント プロセスをうまく要約しています。つまり、暗号化キーをロード/要求することを認識するためzfs mount
、 の代わりにを使用する必要があるでしょう。起動時にこれを実行するには、 フラグをmount -t zfs
使用することもできます(ただし、起動スクリプトにパスワードを提供する何らかの方法が必要になります)。-l
zpool import