Я использую 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
из /etc/nixos/hardware-configuration.nix
, чтобы система не пыталась импортировать пулы 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
.
Итак, как мне это исправить? Как мне смонтировать зашифрованный набор данных?
решение1
Это руководствохорошо обобщает процесс монтирования. Короче говоря, вам, вероятно, следует использовать zfs mount
вместо , mount -t zfs
потому что он будет знать, что нужно загрузить / запросить ключи шифрования. Чтобы сделать это во время загрузки, вы также можете использовать флаг -l
to zpool import
(хотя вам понадобится какой-то способ предоставить вашему загрузочному скрипту пароль).