没有交换空间。crypttab 中的加密交换未创建

没有交换空间。crypttab 中的加密交换未创建

今天我发现我的 Ubuntu 12.04LTS 没有任何交换空间。

几周前我才从头开始安装这个系统。我根据需要加密了所有分区。我一开始没有安装任何交换空间,因为当我尝试设置加密交换时,安装对话框出现错误。完成安装后,我通过编辑和添加了加密交换空间/etc/crypttab/etc/fstab我可能发出了更多命令来传播更改(我不记得了)。此后,交换空间工作正常。

今天我偶然发现我没有可用的交换。没有错误消息。


一些系统信息:(交换应该在sdb1_crypt上)

/etc/crypttab

sda1_crypt UUID=91cb1de3-0754-4aa3-89b9-807e9a95a55a /root/keyfileToHome luks
sdb1_crypt UUID=96558522-6c79-4ddc-8f93-7defee6a9255 /dev/urandom cipher=aes-cbc-essiv:sha256,hash=ripemd160,size=256,swap
sdb2_crypt UUID=5fd25f3a-de63-4a5d-94a7-3e509a70b68c none luks

/etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/sdb2_crypt /               ext4    errors=remount-ro 0       1
# /boot used to be on /dev/sdb3 during installation
UUID=9cdce42f-3894-4878-af03-12284dd5cab9 /boot           ext4    defaults        0       2
/dev/mapper/sda1_crypt /home           ext4    defaults        0       2
/dev/mapper/sdb1_crypt none            swap    sw              0       0

$ ll /dev/mapper显示 sdb1_crypt 实际上并未创建:

total 0
drwxr-xr-x  2 root root     120 Sep 29 16:26 ./
drwxr-xr-x 16 root root    4460 Sep 29 16:26 ../
crw-------  1 root root 10, 236 Sep 29 16:24 control
lrwxrwxrwx  1 root root       7 Sep 29 16:24 sda1_crypt -> ../dm-1
lrwxrwxrwx  1 root root       7 Sep 29 16:24 sdb2_crypt -> ../dm-0

因此/proc/swaps当然是空的:

Filename                Type        Size    Used    Priority

我尝试更新 initramfs:

# update-initramfs -u

那没有帮助。

我可以通过运行以下命令暂时打开交换空间:

# cryptsetup -d /dev/urandom create sdb1_crypt /dev/disk/by-uuid/96558522-6c79-4ddc-8f93-7defee6a9255
# mkswap /dev/mapper/sdb1_crypt
# swapon -a

我尝试在此处添加 dmesg 的输出。我收到一条错误消息,指出消息正文太长。如果有帮助,请索取 dmesg 输出的具体部分。


问题的原因是什么?我该如何修复它?我该如何让交换空间再次正常工作?任何帮助都非常感谢。

答案1

当设置这样的加密交换时,您不能使用如上所述的“by-uuid”方法,因为每次计算机启动时,交换分区都会使用随机密钥重新格式化,并且每次发生这种情况时 UUID 都会发生变化。

正确的做法是使用另一种持久性方法,例如“by-id”或“by-path”方法。如果列出 的内容/dev/disk,您将看到四五个不同的条目(取决于您的分区表类型):

[root@computer~]# ls -lA /dev/disk/
total 0
drwxr-xr-x 2 root root 360 Feb 24 23:51 by-id
drwxr-xr-x 2 root root  80 Feb 24 23:51 by-label
drwxr-xr-x 2 root root  80 Feb 24 23:51 by-partlabel
drwxr-xr-x 2 root root 100 Feb 24 23:51 by-partuuid    # only available if your disk is GPT-formatted
drwxr-xr-x 2 root root 160 Feb 24 23:51 by-uuid
[root@computer ~]#

您从未列出原始 blkid 或 lsblk -f,但从您的原始帖子来看,我相信您的 sdb1 是一个 luks 格式的分区,您将该卷挂载为交换分区。如果是这样,当您列出“/dev/disk/by-path/”的内容时,您应该会看到类似以下内容:

[root@computer ~]# ls -lA /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root  9 Feb 24 23:51 ata-MY_OTHER_HARD_DISK -> ../../sda
lrwxrwxrwx 1 root root 10 Feb 24 23:51 ata-MY_OTHER_HARD_DISK-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Feb 24 23:51 ata-MY_OTHER_HARD_DISK-part2 -> ../../sda2
lrwxrwxrwx 1 root root  9 Feb 24 23:51 ata-HARD_DISK_MAKE_MODEL -> ../../sdb
lrwxrwxrwx 1 root root 10 Feb 24 23:51 ata-HARD_DISK_MAKE_MODEL-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Feb 24 23:51 ata-HARD_DISK_MAKE_MODEL-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Feb 24 23:51 ata-HARD_DISK_MAKE_MODEL-part3 -> ../../sdb3
lrwxrwxrwx 1 root root 10 Feb 24 23:51 dm-name-luks-12345678-abcd-1234-5678-abcdef123456 -> ../../dm-0
lrwxrwxrwx 1 root root 10 Feb 24 23:51 dm-uuid-CRYPT-LUKS1-12345678abcd12345678abcdef123456-luks-12345678-abcd-1234-5678-abcdef123456 -> ../../dm-0
lrwxrwxrwx 1 root root  9 Feb 24 23:51 wwn-0x1234567890123456 -> ../../sda
lrwxrwxrwx 1 root root 10 Feb 24 23:51 wwn-0x1234567890123456-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Feb 24 23:51 wwn-0x1234567890123456-part2 -> ../../sda2
lrwxrwxrwx 1 root root  9 Feb 24 23:51 wwn-0x5555444433332222 -> ../../sdb
lrwxrwxrwx 1 root root 10 Feb 24 23:51 wwn-0x5555444433332222-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Feb 24 23:51 wwn-0x5555444433332222-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Feb 24 23:51 wwn-0x5555444433332222-part3 -> ../../sdb3
[root@computer ~]# 

从此输出:

  • 我有两个磁盘,其品牌和型号分别为“HARD_DISK_MAKE_MODEL”和“MY_OTHER_HARD_DISK”,其“序列号”分别为 1234567890123456 和 5555444433332222。在这两种情况下,它们分别为sdasdb
  • 通过-partX每个分区的后缀,您还可以识别哪个分区是哪个。
  • 这些值也是用于识别您的分区和磁盘的明确值,但它们不会改变,因为它们基于来自磁盘的硬值。

因此,/dev/disk/by-id/ata-HARD_DISK_MAKE_MODEL-part2无论磁盘是否为/dev/sda/dev/sdb或者分区是否重新格式化并且其 UUID 是否发生变化,都将是相同的分区。这将是在 crypttab 上引用交换分区的最佳方式,因为它不依赖于分区内记录的任何内容。

更多参考:

相关内容