我正在设置一个新的 Linux 主机,并希望有一个加密的 SWAP 分区。该文件/etc/crypttab
丢失了,所以我安装了包cryptsetup
,创建了该文件。之后,我只需使用 VI 手动编辑该文件,然后/etc/fstab
重新启动,加密的 SWAP 就可用了。我更新了整个系统,结果出现了以下错误消息:
cryptsetup: ERROR: Couldn't resolve device rpool/ROOT/pve-1
cryptsetup: WARNING: Couldn't determine root device
cryptsetup: WARNING: The initramfs image may not contain cryptsetup binaries
nor crypto modules. If that's on purpose, you may want to uninstall the
'cryptsetup-initramfs' package in order to disable the cryptsetup initramfs
integration and avoid this warning.
需要注意的是,我没有加密任何其他分区或任何东西,只是 SWAP。所以我只是尝试了一下,并成功重新启动。之后,我尝试按照错误消息的操作并删除了软件包cryptsetup-initramfs
,这迫使我也删除了软件包cryptsetup
本身。剩下的只有cryptsetup-bin
和cryptsetup-run
,之后我通过它们删除了apt autoremove
。
让我感到疑惑的是:在最后一次重启并cryptsetup
删除了所有这些文件后,我似乎仍然加密了 SWAP。我预计 SWAP 会因为缺少 而不可用cryptsetup
。
root@pve:~# blkid | grep swap
/dev/mapper/swap_crypt: UUID="ccb3e6b9-ccaa-4c38-b34b-aa434134023c" TYPE="swap"
所以,我猜cryptsetup
真的只是顾名思义,设置一下?但之后运行时就不再需要了?所以/etc/crypttab
从一开始就使用 VI 手动创建也可以,cryptsetup
根本不需要安装?
当然,这只是因为我的用例不需要处理initramfs
等。不过,我总觉得cryptsetup
在启动过程中也需要正确设置,例如 SWAP。
答案1
我敢打赌你还有一个 libcryptsetup 包:
https://packages.ubuntu.com/hirsute/libcryptsetup12
Systemd 有自己的内置可执行文件,它利用库来处理 crypttab 条目:
https://github.com/systemd/systemd/blob/main/src/cryptsetup/cryptsetup.c
https://www.freedesktop.org/software/systemd/man/[电子邮件保护]
PS 值得一提的是,如果您有一个加密的根文件系统,并且您的 initramfs init 不是 systemd,那么您仍然需要 cryptsetup-bin 等来打开/解锁加密块设备。