Swap

有沒有辦法在 nixos 上進行休眠和加密交換?

  • December 19, 2021

有一種方法可以在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相關錯誤。

引用自:https://unix.stackexchange.com/questions/529047