AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 462775
Accepted
ajn
ajn
Asked: 2014-05-09 01:06:16 +0800 CST2014-05-09 01:06:16 +0800 CST 2014-05-09 01:06:16 +0800 CST

Swap 无法在使用加密主页的全新 14.04 安装上运行

  • 772

更新 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 并按照此处概述的步骤操作: 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

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

$ 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)后,我的电脑一直在经历严重的减速,当运行 top 时,我注意到 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 的设置有问题,但我不知道如何修复它,因为它被设置为加密。对于如何进行,将不胜感激。

14.04
  • 5 5 个回答
  • 28259 Views

5 个回答

  • Voted
  1. Best Answer
    Redsandro
    2014-10-26T08:44:24+08:002014-10-26T08:44:24+08:00

    已知错误

    有一个错误(见下文)会在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帐户,请登录并转到Launchpad 上的 Bug #1310058并选择(或单击此处):“This bug affects me too”这样该 bug 将获得“流行”并且更容易得到修复。


    更新时间 2014-10-27

    我也偶然发现了这一点。未经本人验证。它看起来像是offset关于重建损坏交换的更多冗长和注释的技巧。

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

    • 16
  2. DoubleE
    2014-09-08T16:54:05+08:002014-09-08T16:54:05+08:00

    我在 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
    
    • 9
  3. Serge Stroobandt
    2015-05-03T02:35:09+08:002015-05-03T02:35:09+08:00

    只需使用未加密的交换

    ...并保持 /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 退出。nanoCtrlX
    6. 完成所有这些后,您就可以开始使用新的未加密交换:$ sudo swapon -a
    7. 该解决方案可以在热重启和冷重启关机时幸存下来。
    • 7
  4. mutant
    2014-06-22T06:29:42+08:002014-06-22T06:29:42+08:00

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

    • 2
  5. skierpage
    2014-06-15T14:07:54+08:002014-06-15T14:07:54+08:00

    我有这个问题,问题 332625的人也是如此。suspend 和 reboot 的某种组合会丢失交换分区的 UUID(如/etc/fstab中的注释所说,用 确认sudo blkd),因此/etc/crypttab中使用该 UUID 作为加密交换的行失败。

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

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

    • 0

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve