swapDevices =
[ {
device = "/dev/disk/by-uuid/..."; #This is already done for you. Leave as-is.
encrypted = {
enable = true;
keyFile = "/mnt-root/root/swap.key"; #Yes, /mnt-root is correct.
label = "..."; The name used with `cryptsetup` when unlocking the LUKS container. It can be whatever you want, ex "luksswap".
blkDev = "/dev/disk/by-uuid/[UUID of the LUKS partition]";
};
}
];
简而言之,要在加密交换上使用休眠,您需要创建一个密钥文件,然后用于解锁 LUKS 加密交换分区。这与使用随机加密密钥形成对比,后者是与休眠不兼容的选项。
当然,使用这种方法,密钥文件的位置很重要。你最好也加密你的根文件系统,然后把密钥文件放在那里,(例如/root/swap.key)。在这种情况下,系统会在引导过程中提示您输入根文件系统密码,然后该密钥文件可用于引导过程,因此它可以解锁交换 LUKS 容器并将“解锁”设备用作交换设备。
说明
注意: 将这些说明视为一般指导,而不是您可以简单地复制粘贴的内容。
启动安装媒体后...
创建您的分区、LUKS 容器、文件系统并挂载它们。
创建密钥文件:
dd count=1 bs=512 if=/dev/urandom of=/mnt/root/swap.key
使用密钥文件为您的加密交换创建和 LUKS 容器。
解锁交换 LUKS 容器,使用 格式化并使用
mkswap
激活它swapon
。继续生成 NixOS 配置。到目前为止,它就像一个普通的 NixOS 安装。
创建密钥文件:
dd count=1 bs=512 if=/dev/urandom of=/mnt/root/swap.key
将
swapDevices
配置从/mnt/etc/nixos/hardware-configuration.nix
移至/mnt/etc/nixos/configuration.nix
。注意:如果您nixos-generate-config
再次运行,则需要重复此步骤。编辑
swapDevices
以/mnt/etc/nixos/configuration.nix
启用加密。这是一个例子:您可以使用 . 获取 LUKS 分区的 UUID
lsblk -o name,uuid
。最后,
nixos-rebuild boot
再重启系统。重新启动后,NixOS 将解锁加密交换分区并激活它。如果不是,请检查journalctl -b
相关错误。所以,我的方法是:
blkid
:pm-hibernate
。