我正在设置一个新的 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。所以我只是尝试了一下并成功重启。之后,我尝试按照错误消息中的说明操作并删除了 package cryptsetup-initramfs
,这也迫使我也删除了 packagecryptsetup
本身。剩下的唯一的东西是cryptsetup-bin
and 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 也是必需的。
我敢打赌你还有一个 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/[email protected]
PS 值得一提的是,如果你有一个加密的根文件系统,并且你的 initramfs init 不是 systemd,你仍然需要 cryptsetup-bin 等。人。打开/解锁加密的块设备。