问题描述
更新3:
我决定从头开始重新安装系统以移除任何旧的残骸,因为我在升级后遇到了一些其他问题。但是,这个问题仍然存在。
在全新安装中,选择使用”encrypted home”进行安装会导致加密交换配置中断。
更新2:
我修复了cfdisk抱怨的分区顺序,但是他的问题仍然存在。交换现在在/dev /sda6上,我可以按如下方式启动并运行:
~$ sudo mkswap /dev/sda6
Setting up swapspace version 1, size = 7998460 KiB
no label, UUID=18881d0f-d9ec-43be-a23f-0cbd78ea6d22
$sudo nano /etc/crypttab # Update crypttad with new UUID
$ sudo /etc/init.d/cryptdisks reload
* Stopping remaining crypto disks...
* cryptswap1 (stopped)... [ OK ]
* Starting remaining crypto disks...
* cryptswap1 (starting)..
* cryptswap1 (started)... [ OK ]
$ sudo swapon -a
$ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 11 09:04 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 11 09:08 18881d0f-d9ec-43be-a23f-0cbd78ea6d22 -> ../../sda6
lrwxrwxrwx 1 root root 10 May 11 09:04 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 11 09:04 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 11 09:04 D28230E68230D129 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 11 09:08 fcc8c419-8fec-4d4d-b55e-9e4c3b04d21d -> ../../dm-0
但重启后交换无法激活,它再次看起来像这样:
$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 11 09:12 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 11 09:12 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 11 09:12 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 11 09:12 D28230E68230D129 -> ../../sda2
我现在的猜测是,当将磁盘设置为加密时,linux不再识别分区类型,因此不会正确加载它,导致它没有注册它的UUID,因此cryptswap无法找到它导致失败。但我不知道如何解决它..
更新的问题:
进一步的测试显示我可以通过运行$ mkswap /dev /sda5来获得交换和运行
然后使用正确的UUID更新/etc /crypttab并按照此处列出的步骤操作:How do I setup an encrypted swap file?
然而,当我重新启动计算机时问题仍然存在,我运行时不会出现/dev /sda5
$ ls -l /dev/disk/by-uuid/
如果我做:
$ cfdisk /dev/sda
我收到以下错误:
FATAL ERROR: Bad logical partition 6: enlarged logical partitions overlap
Press any key to exit cfdisk
使用它打开磁盘时,图形化”Disks”实用程序不会抱怨任何错误。
$ sudo fdisk -l
Disk /dev/sda: 256.1 GB, 256060514304 bytes
255 heads, 63 sectors/track, 31130 cylinders, total 500118192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x619aebf1
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS/exFAT
/dev/sda2 206848 100870143 50331648 7 HPFS/NTFS/exFAT
/dev/sda3 191397888 192397311 499712 83 Linux
/dev/sda4 192399358 500117503 153859073 5 Extended
/dev/sda5 484118528 500117503 7999488 82 Linux swap / Solaris
/dev/sda6 192399360 484118527 145859584 83 Linux
Partition table entries are not in disk order
原始问题:
在升级到14.04(从13.04开始)之后,我的计算机一直在经历严重的减速,当跑步时我发现kswap0占用了大量的cpu时间。我也注意到我没有任何交换空间!
$ sudo swapon -a
swapon: /dev/mapper/cryptswap1: stat failed: No such file or directory
我的加密交换设置似乎有些问题(甚至不知道我有一个)
$ cat /etc/crypttab
cryptswap1 UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 /dev/urandom swap,cipher=aes-cbc-essiv:sha256
$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 6 11:00 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 6 11:00 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda6
lrwxrwxrwx 1 root root 10 May 6 11:00 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 6 11:00 D28230E68230D129 -> ../../sda2
看着我的fstab
$ cat /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>
# / was on /dev/sda6 during installation
UUID=19aa372c-05c8-4226-8f09-c54e5566e816 / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda3 during installation
UUID=08b07f88-6da5-4b40-b062-42b3bb1c5f00 /boot ext2 defaults 0 2
# swap was on /dev/sda5 during installation
#UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 none swap sw 0 0
/dev/mapper/cryptswap1 none swap sw 0 0
我的猜测是sda5的设置有问题,但我不知道如何修复它,因为它设置为加密。将不胜感激如何继续前进。
最佳解决方法
已知错误
有一个错误(见下文),一旦数据被写入,就会覆盖分区的UUID
。因此,您无法使用UUID
引用要用于加密交换的分区。
这些天,几乎没有使用交换空间。在我的机器上,交换仅在我打开第40个选项卡时使用。当我没有交换时,突然我的电脑开始滞后,浏览器自行关闭。或者在Chromium
浏览器的情况下,很多标签会突然’die’。因此,在/etc/crypttab
中引用/dev/disk/by-uuid/
似乎可能会工作一段时间,但只要实际使用了交换空间,它就会覆盖UUID
,因为整个分区用于加密数据存储。
轻松修复
简单的解决方法是在/etc/crypttab
中引用设备的交换分区,例如:
cryptswap1 /dev/sda5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256
警告:这在笔记本电脑上可能是安全的(我这样使用它),但是如果你在具有可交换驱动器的桌面上或者有其他原因需要更改驱动器/分区布局,你不希望这样做,作为一个正常的存储分区可能会突然用于交换。
注意:您需要重新启动才能使此更改生效,因为只有在启动时才会创建/dev/mapper/cryptswap1
。
正确修复
解决此问题的正确方法是确保存储UUID
的原始分区的部分不会被加密的交换数据覆盖,因此在重新启动时它仍然存在。但是,我不确定UUID
的写入位置和占用的字节数。你可以自担风险,测试它如下:
cryptswap1 UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 /dev/urandom swap,offset=36,cipher=aes-cbc-essiv:sha256
请注意offset=36
。
如果您有一个Ubuntu One帐户登录并转到Bug #1310058 on Launchpad并选择(或单击此处):“This bug affects me too”,那么该错误将获得’popularity’并且更容易被修复。
更新2014-10-27
我也偶然发现了这一点。我没有核实过。看起来像offset
的伎俩有更多的冗长和关于重建破坏的交换的评论。
https://bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/1310058/comments/22
次佳解决方法
我在Ubuntu 14.04中遇到了同样的问题并遇到了这个问题;提供突变体的this link对我来说效果很好。我使用了/dev/disk/by-id
引用而不是/dev /sdXY,因为该引用并不总是指向同一个物理分区。我的/etc/crypttab
结果如下:
cryptswap1 /dev/disk/by-id/wwn-0x500...-part6 /dev/urandom swap, cipher=aes-cbc-essiv:sha256
第三种解决方法
只需使用未加密的交换
…并保持/家庭加密
我在这里尝试了其他一些解决方案。即使他们在热重启后继续工作,最终他们在关机和冷启动后都失败了。
这告诉我们我们实际上正在处理一个双重错误:
-
交换驱动器的UUID被加密系统覆盖,并且
-
引导期间存在超时问题。
这些想法也反映在对相关bug filed at Launchpad的评论中。然而,随着从Upstart到systemd的未决移动,很少解决当前LTS系统上的错误。
在这一点上,我想到了以下想法:
-
在系统安装期间,我要求只加密我的
\home
分区,没有别的。 -
没有加密交换分区所涉及的风险相当有限。
-
由Canonical来清理他们的行为。我将不再浪费时间。
所以,这是我的解决方案,将交换恢复为正常的,未加密的交换,而无需重新安装整个操作系统。
-
如果您还没有这样做,请安装
blkid
:$ sudo apt-get install blkid
-
编辑
/etc/crypttab
并删除整个cryptswap1
行:$ sudo nano /etc/crypttab
-
从系统设置菜单启动GParted。
-
您将看到带有感叹号的分区。这应该是错误的交换分区。仔细选择它并将其重新格式化为
linux-swap
分区。应用此操作后,将通知您已恢复的正常交换分区的新UUID。您将有机会保存此信息。如果不这样做,请知道您始终可以使用blkid
从命令行检索新的UUID:$ sudo blkid
-
现在,是时候将
/etc/fstab
恢复到昔日的辉煌:$ sudo nano /etc/fstab
-
删除包含对
/dev/mapper/cryptswap1
的引用的整行。 -
通过删除
UUID=...
前面的哈希#
来取消注释旧的swap
行。 -
现在,将旧的UUID替换为之前获得的新UUID。
-
通过点击
Ctrl
+O
写出文件,并用Ctrl
+X
退出nano
。
-
-
完成所有这些后,您就可以开始使用新的未加密交换:
$ sudo swapon -a
-
这种解决方案在热重启和冷启动关机后都能存活。
第四种方法
看看this。我通过简单地用/etc /crypttab中的/dev /sda3替换UUID = …来解决这个问题。