加密交换分区未显示在 /dev/mapper 中

加密交换分区未显示在 /dev/mapper 中

我按照以下步骤将我的正常交换/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。

相关内容