交换无法使用加密的主目录进行干净的14.04安装


28

更新3:

我决定从头开始重新安装系统,以消除所有旧的碎片,因为升级后我也遇到了其他问题。但是,此问题仍然存在。

在全新安装中,选择使用“加密主目录”进行安装会导致损坏的加密交换配置。

更新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,并按照此处概述的步骤进行操作: 如何设置加密的交换文件?

但是,当我重新启动计算机时,问题仍然存在,当我运行时/ 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

图形化“磁盘”实用程序在使用磁盘打开磁盘时不会抱怨任何错误。

$ 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

原始问题:

从13.04升级到14.04之后,我的计算机一直在严重减速,当我运行kswap0时,我注意到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的设置有问题,但是我不知道如何解决它,因为它已设置为要加密。希望对如何进行提供一些帮助。


我对加密分区一无所知,但第一个错误表明未安装交换分区。/ etc / fstab中的安装线也被注释掉了。我会尝试只是取消注释该行并重新启动,以检查是否修复它
Anake

我非常确定应该将其注释掉,并且cryptswap1行负责使用/ etc / crypttab中的信息间接安装它。您的建议一定会以未加密的方式安装它吗?
2014年

1
这样行吗?https://ubuntuforums.org/showthread.php?t=2224129我不确定某些命令,也不想搞乱Ubuntu。

它看起来与我尝试的类似,我希望它可以重新启动一次,一旦您首次激活加密交换,便会再次停止工作。
2014年

目前,我只是回到使用常规交换。我使用加密技术的主要方案是,如果有人偷了我的笔记本电脑,并且具有中等linux技术的人决定四处看看,看看他们是否可以找到有趣的东西,即最有可能尝试使用usb引导并安装我的主分区。我没有任何东西可以相信有人会找到足够有价值的东西来尝试从交换中恢复它的片段。使用加密的家庭+常规交换确实应该是一个安装选项。
2014年

Answers:


16

已知错误

有一个错误(请参阅下文)会UUID在将数据写入分区后立即覆盖该分区。因此,您不能使用UUID来引用要用于加密交换的分区。

这些天来,几乎没有使用交换空间。在我的机器上,仅当我打开第40个标签时才使用交换。当我没有交换时,突然我的计算机开始滞后,浏览器自行关闭。或者在Chromium浏览器的情况下,很多标签会突然“死掉”。
因此,/dev/disk/by-uuid/在您中进行引用似乎/etc/crypttab可能会工作一段时间,但实际上使用交换空间后,它将被覆盖,因为整个分区都用于加密数据存储。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帐户,请登录并转到启动板上的错误#1310058,然后选择(或单击此处):“此错误也会影响我”,因此该错误将获得“欢迎”,并且更易于修复。


更新2014-10-27

我也偶然发现了这一点。未经我验证。它看起来像是offset带有更多冗长的技巧,并提供有关重建损坏的交换的注释。

https://bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/1310058/comments/22


5
我只想指出,截至几天前(2015年3月中),该错误已在bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/953875中进行了跟踪,但是状态为“已修复”该修复程序仅明确适用于15.04。我正在查看是否将其反向移植到14.04 LTS ...以及“官方”更新过程可能是什么
Tommy Trussell 2015年

1
@TommyTrussell:不回传对LTS来说是疯狂的。诸如此类的关键问题的错误在发布后将近一年仍然存在,这就是为什么连biggist Linux发行版也永远无法与OSX和Windows相提并论的原因。不幸。
Redsandro

我不知道关于bug的公开讨论,因为它们已在OSX和Windows中修复,因此如何将它们“相提并论”?根据我在OSX上的经验,错误是否得到修复。没有公开讨论,因此它们是“不透明的”。我只是提到了新的错误号(因为您链接的错误号被标记为重复),因此您可以更新参考。从Bug 953875中提到的论坛发布中的讨论中可以看到,最稳定的修复程序可能会因init系统而异,该系统在15.04中有所更改。因此,14.04修复程序可能会存在向前兼容性的技术挑战。
Tommy Trussell 2015年

我只是说您永远不会在Windows或OSX之类的系统上看到诸如“哦,SWAP坏了”之类的内容。这种核心功能是测试和修复之前永远不会获得RTM的。就这样。关于安全性,没有公开讨论,但仍然有统计数字
Redsandro

@Redsandro好吧,这是一个免费的操作系统,只有当人们在测试发行版时发现错误时,此类发行版才能在发行前得到修复。发布后,进行错误修复会破坏某人的配置上的其他内容,实在太冒险了。但是,它可能已在较新的版本中得到修复-因此可能值得使用-但无论如何,临时版本通常比LTS版本更不稳定,因为重点更多地放在常规更新上。但是您确实确定了为什么错误测试/修复/质量保证(QA)如此重要,而Ubuntu在这方面变得越来越好。
Ads20000

9

我在Ubuntu 14.04中遇到了同样的问题,并且遇到了这个线程。这个突变体提供的链接对我来说很好用。我使用的是/dev/disk/by-id引用而不是/ dev / sdXY,因为该引用并不总是指向同一物理分区。我/etc/crypttab最终像:

cryptswap1 /dev/disk/by-id/wwn-0x500...-part6 /dev/urandom swap, cipher=aes-cbc-essiv:sha256

3
这是正确容易解决的问题!
Serge Stroobandt,2015年

7

只需使用未加密的交换

...并保持/ home加密

我尝试了这里建议的其他几种解决方案。即使它们在热重启后仍能正常工作,但最终在关闭和冷重启后都失败了。

这告诉我们,我们实际上正在处理一个双重错误:

  1. 交换驱动器的UUID被加密系统覆盖,并且
  2. 引导过程中存在超时问题。

这些想法也反映在Launchpad上有关错误的注释中。但是,由于有待从Upstart迁移到systemd,因此无法解决当前LTS系统上的错误。

此时,我想到了以下想法:

  1. 在系统安装过程中,我只要求加密\home分区,而没有其他要求。
  2. 没有加密交换分区所涉及的风险相当有限。
  3. Canonical有责任清理他们的行为。我不会再为此浪费时间了。

因此,这是我的解决方案,可以将交换恢复为正常的未加密交换,而不必重新安装整个操作系统。

  1. 如果尚未安装,请安装blkid$ sudo apt-get install blkid
  2. 编辑/etc/crypttab并删除整cryptswap1行:$ sudo nano /etc/crypttab
  3. 从系统设置菜单中启动GParted。
  4. 您将看到带有感叹号的分区。这应该是错误的交换分区。仔细选择它并将其重新格式化为linux-swap分区。应用此操作后,将通知您有关已还原的常规交换分区的新UUID。您有机会保存此信息。如果不这样做,请知道您始终可以使用以下命令从命令行检索新的UUID blkid$ sudo blkid
  5. 现在,该恢复/etc/fstab其昔日的辉煌了:$ sudo nano /etc/fstab

    • 删除包含对的引用的整行/dev/mapper/cryptswap1
    • swap通过删除#前面的哈希来取消注释旧行UUID=...
    • 现在,用先前获得的新UUID替换旧的UUID。
    • 通过点击写入文件出来Ctrl+ O 和退出nanoCtrl+ X
  6. 完成所有这些操作之后,您就可以开始使用新的未加密交换了: $ sudo swapon -a
  7. 该解决方案在热重启和冷重启后均能幸免。

1
尽管我尝试了其他所有方法,但这是唯一对我有用的答案。
fifaltra

在gparted中,我的交换分区具有启动标志。这将仍然有效,还是让我无法启动?
ChristianSkjødt'16

@ChristianSkjødt您的交换分区不应设置其启动标志。无论如何,以上过程不会影响任何操作。
Serge Stroobandt,

2

看看这个。我通过简单地用/ etc / crypttab中的/ dev / sda3替换UUID = ...来解决此问题。


1
首先运行“ sudo fdisk -l”以检查您的交换分区是什么,它可能是“ / etc / sda5”或其他名称,然后按照变种的描述编辑cryptab。这对我有用,并且在重新启动后仍然存在。这绝对是一个错误,因为在新的SSD上进行全新安装后遇到了这个问题。我确实在安装时选择了“加密主目录”选项,在安装后对/ home进行加密要好得多,尤其是如果要从以前的安装中复制旧/ home中的文件时。
保罗·威廉姆斯

sudo fdisk -l是没人在说的。谢谢你!:)
阿曼阿拉姆2014年

您至少应该警告人们,/dev/sd*路径会随心所欲地更改,并导致错误的分区被交换数据破坏。/dev/disk/by-id优越。
underscore_d

0

我有这个问题,就像有问题的人332625一样。挂起和重新引导的某种组合会丢失交换分区的UUID(如/ etc / fstab中的注释所述,请使用进行确认sudo blkd),因此/ etc / crypttab中的行将UUID用作加密交换失败。

我没有运气切换/ etc / crypttab来使用分区的/dev名称(在您的情况下为/ dev / sda6)或dev/disk/by-id/名称,而不是消失的UUID。

遗憾的是,放弃加密交换是最简单也是迄今为止最好的解决方案。


这个问题非常老,我想知道为什么他们还没有解决它,现在我的台式机面临着同样的问题,无法运行,过去曾在笔记本电脑上修复过,但是不记得怎么了:(
tomasb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.