我按照以下步骤将我的正常交换/dev/sda4
(UUID 5da9c956-e544-47e3-bb8e-fe18d9531b2f
)转换为 16.04 上的加密交换分区:
禁用旧的交换分区并用零覆盖它:
sudo swapoff -a sudo dd if=/dev/zero of=/dev/sda4 bs=4M
安装
cryptsetup
:sudo apt install cryptsetup
编辑
/etc/crypttab
以包含此内容:# <target name> <source device> <key file> <options> cryptswap UUID=5da9c956-e544-47e3-bb8e-fe18d9531b2f /dev/urandom swap
编辑
/etc/fstab
以删除旧的交换线并将其替换为以下内容:# cryptswap on /dev/sda4 configured in /etc/crypttab /dev/mapper/cryptswap none swap sw 0 0
重新加载 cryptdisks 配置:
sudo service cryptdisks reload sudo service cryptdisks-early reload
启用新的加密交换:
sudo swapon -a
但是,最后一步出现了以下错误消息:
swapon: stat of /dev/mapper/cryptswap failed: No such file or directory
确实,加密的设备文件似乎还没有被创建:
$ ls -la /dev/mapper/
total 0
drwxr-xr-x 2 root root 60 Aug 10 18:50 .
drwxr-xr-x 20 root root 4780 Aug 10 20:16 ..
crw------- 1 root root 10, 236 Aug 10 18:50 control
这里出了什么问题以及如何使加密的交换分区正常工作?
答案1
您的文件出现了问题/etc/crypttab
,导致一切都出了问题,而且您的交换分区也出现了问题。
首先,您需要指定mkswap
要用于加密交换文件的分区。cryptdisk 实用程序要求您的分区是交换分区,因此您应该将其保留为:
sudo mkswap /dev/sda4
现在,请注意这将更改分区的 UUID。使用以下命令获取新的 UUID,并记下它:
sudo blkid /dev/sda4
现在,我们需要处理手头上更大的问题:您的/etc/crypttab
文件。将其替换为以下内容:
# <target name> <source device> <key file> <options>
cryptswap UUID=<Your new UUID> /dev/urandom swap,offset=1024
重新启动系统,你就应该有一个可以工作的交换器了!
您cryptswap
目前已设置将整个分区重新创建为加密交换。这不是好事™,因为我们需要保留 UUID。通过将交换偏移 1024 个块,我们保留了关键的文件系统信息,包括 UUID。