有沒有辦法在 nixos 上進行休眠和加密交換?
有一種方法可以在Ubuntu上獲得加密交換 + 休眠。還有一種方法可以在 nixos 上獲得加密交換(使用 randomEncryption.enable = true),以及一種使休眠狀態交換的方法。有沒有辦法休眠到加密交換?
簡而言之,要在加密交換上使用休眠,您需要創建一個密鑰文件,然後用於解鎖 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
啟用加密。這是一個例子: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 分區的 UUID
lsblk -o name,uuid
。最後,
nixos-rebuild boot
再重啟系統。重新啟動後,NixOS 將解鎖加密交換分區並啟動它。如果不是,請檢查journalctl -b
相關錯誤。