Byt*_*der 4 encryption swap cryptsetup
我按照以下步骤将/dev/sda4(UUID 5da9c956-e544-47e3-bb8e-fe18d9531b2f)上的正常交换转换为 16.04 上的加密交换分区:
禁用旧的交换分区并用零覆盖它:
sudo swapoff -a
sudo dd if=/dev/zero of=/dev/sda4 bs=4M
Run Code Online (Sandbox Code Playgroud)安装cryptsetup:
sudo apt install cryptsetup
Run Code Online (Sandbox Code Playgroud)编辑/etc/crypttab以包含此内容:
# <target name> <source device> <key file> <options>
cryptswap UUID=5da9c956-e544-47e3-bb8e-fe18d9531b2f /dev/urandom swap
Run Code Online (Sandbox Code Playgroud)编辑/etc/fstab以删除旧的交换行并将其替换为:
# cryptswap on /dev/sda4 configured in /etc/crypttab
/dev/mapper/cryptswap none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)重新加载 cryptdisks 配置:
sudo service cryptdisks reload
sudo service cryptdisks-early reload
Run Code Online (Sandbox Code Playgroud)启用新的加密交换:
sudo swapon -a
Run Code Online (Sandbox Code Playgroud)但是,这最后一步给了我以下错误消息:
swapon: stat of /dev/mapper/cryptswap failed: No such file or directory
Run Code Online (Sandbox Code Playgroud)
确实,加密的设备文件似乎没有被创建:
$ 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
Run Code Online (Sandbox Code Playgroud)
这里出了什么问题,如何让我的加密交换分区工作?
您的/etc/crypttab文件有问题导致所有内容都向南,并且您的交换分区有问题。
首先,您需要mkswap用于加密交换文件的分区。cryptdisk 实用程序希望您的分区被交换,因此您应该保持它如下:
sudo mkswap /dev/sda4
Run Code Online (Sandbox Code Playgroud)
现在,请注意这将更改分区的 UUID。使用以下命令获取新的,并记下它:
sudo blkid /dev/sda4
Run Code Online (Sandbox Code Playgroud)
现在,我们需要处理手头更大的问题:您的/etc/crypttab文件。将其替换为以下内容:
# <target name> <source device> <key file> <options>
cryptswap UUID=<Your new UUID> /dev/urandom swap,offset=1024
Run Code Online (Sandbox Code Playgroud)
重新启动系统,你应该有一个有效的交换!
您cryptswap当前已设置为将整个分区重新创建为加密交换。这不是 Good™,因为我们需要保留 UUID。通过将交换偏移 1024 个块,我们保留了关键文件系统信息,包括 UUID。