今天,我在运行Ubuntu 15.10的笔记本电脑上看到了相同的错误,该笔记本电脑始终保持最新状态,但是直到我想测试当前内核之前(一个新的更改),都没有重启一个月。
无论如何,我发现在我的情况下,根本原因实际上是遵循上述教程时由于安装故障而导致的“缺少”交换分区。如果是这种情况,和/或您实际上正在使用lvm
,则可以跳过下面的步骤2。当然,如果您的系统(或辅助数据)分区已损坏或找不到,也可能会看到上述错误消息(请参阅步骤3)。
步骤1:按照上述教程安装系统,引导分区
假设您的(ext2)引导分区是/ dev / sdX1,您的(加密的)交换分区是/ dev / sdX2,您的(加密的)数据分区是/ dev / sdX3,并且您已经使用成功地解密了后者cryptsetup luksOpen /dev/sdX3 data
,然后进行了挂载它:mkdir /tmp/data; mount /dev/mapper/data /tmp/data
。
请注意本教程中的绑定挂载,并确保挂载/ dev / sdX1,以便您可以从系统分区的/ boot目录访问它(这对于我们必须执行至关重要update-initramfs
)。
在下文中,我们假设您已成功执行chroot /tmp/data/@ubuntu1510
(或执行任何已挂载的系统分区)
步骤2:摆脱上面的错误信息
我正在使用btrfs(如您可能从提到的子卷名称中猜到的那样),因此可以轻松按以下方式禁用lvmetad,而不会失去功能:
- 编辑/etc/lvm/lvm.conf并更改
use_lvmetad=1
为use_lvmetad=0
- 执行
update-initramfs -k $(uname -r) -u ; sync
现在,您可以重新启动,错误消息应该消失了。但是,以我为例,下一条错误消息[1]使我指出了上面提到的潜在问题,因此,当我们处理此问题时,...
步骤3:确保/ etc / crypttab指向正确的,未损坏的分区
首先,运行sfdisk --list /dev/sdX
并检查加密的交换分区(在我的情况下为/ dev / sdX2)实际上没有显示为(正常)交换分区。如果确实如此(例如,在我的案例中),则意味着启动(例如,使用应急磁盘)可能会利用该可用的交换分区,从而覆盖与cryptsetup相关的元数据(关键字和UUID)。
接下来,查看/ dev / disk / by-uuid并将加密分区的相应UUID与/ etc / crypttab中包含的分区进行比较。在这一点上,我的猜测是:您的情况不匹配。
如果在/ dev / disk / by-uuid下找不到专用的加密交换分区,那是因为您的救援系统当前正在使用它。在这种情况下,请执行以下操作:
- 确保停止使用该分区:
swapoff -a
- 重新格式化:(
mkfs.ext2 /dev/sdX2
这很关键,特别是在使用GPT分区[2]时,因为它消除了我前面提到的故障。分区可能在sfdisk列表中显示为“ swap”类型的原因是您/我误用了mkswap /dev/sdX2
一开始设置分区时。)
- 按照教程对分区进行加密并设置密码;然后,使用cryptsetup打开它,并正确格式化现在解密的分区(使用类似的东西
mkswap /dev/mapper/swap
)
- 确保
sfdisk --list /dev/sdX
不会这样标识交换分区(在这种情况下,请重复最后的步骤)
现在,重新检查/ etc / crypttab中列出的UUID是否与您在各自的加密分区的/ dev / disk / by-uuid下面看到的一致。
同样,要使更改永久生效,您必须update-initramfs
如上所述执行。
如果满意,请确保所有内容均已写入磁盘并重新引导系统(无需手动卸载所有内容)。之后,您的问题应该消失了。
[1]也许我第一次没有注意,或者第一条错误消息“掩盖了”第二条错误消息;即,仅在重新启动后(带有use_lvmetad=0
),出现“ 读取所有物理卷。这可能需要一段时间... ”(重复多次),然后出现“ ALERT!/ dev / disk / by-uuid /。”。 。不存在。(应注意,update-initramfs
它还抱怨缺少分区。)
[2]因为它们的类型是从分析其内容中扣除的,并且最终没有由标志/字节指定(因此,没有简单的方法,例如,使用来更改GPT文件系统类型[g]parted
)。