Mac*_*Dre 31 encryption boot grub2 dual-boot lvm
我已按照本教程安装 Ubuntu 15.10:
重新启动计算机后,我进入了 grub 菜单并选择了 Ubuntu。不久之后,我收到了这个错误:
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
Run Code Online (Sandbox Code Playgroud)
这些消息每秒都会在黑屏上不断增加。过了一会儿,我可以访问initramfs
ash 控制台。
我究竟做错了什么?
小智 12
我今天在运行 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,如下所示而不会丢失功能:
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 中包含的 UUID 进行比较。我在这一点上的猜测:在你的情况下,有一个不匹配。
如果在 /dev/disk/by-uuid 下找不到专用的加密交换分区,那是因为您的救援系统当前正在使用它。在这种情况下,请执行以下操作:
swapoff -a
mkfs.ext2 /dev/sdX2
这很重要,尤其是在使用 GPT 分区 [2] 时,因为它消除了我之前提到的故障。分区在 sfdisk 列表中显示为“swap”类型的可能原因是您/我错误地使用了mkswap /dev/sdX2
在开始设置分区时。)mkswap /dev/mapper/swap
)sfdisk --list /dev/sdX
不会像这样识别交换分区(在这种情况下,重复最后的步骤)现在,重新检查 /etc/crypttab 中列出的 UUID 是否与您在下面看到的 /dev/disk/by-uuid 对应的加密分区一致。
同样,要使更改永久化,您必须update-initramfs
按上图所示执行。
如果您满意,请确保所有内容都写入磁盘并重新启动系统(无需手动卸载所有内容)。之后,您的问题应该消失了。
[1] 可能是我第一次没注意或者第一条错误信息“掩盖”了第二条;即,仅在重新启动(使用use_lvmetad=0
)后,我才看到“正在读取所有物理卷。这可能需要一段时间...... ”(重复多次),然后是“警报!/dev/disk/by-uuid/.. . 不存在。 ”。(应该注意的是,update-initramfs
还抱怨缺少分区。)
[2] 因为它们的类型是从分析它们的内容中推导出来的,而不是最终由标志/字节指定(这就是为什么没有简单的方法,例如,使用[g]parted
.更改 GPT 文件系统类型)
该Failed to connect to lvmetad
错误可能发生,因为硬盘是100%满。要解决此问题,请从 USB 拇指驱动器启动,安装完整磁盘,删除一些不需要的文件,然后重新启动。我还重新安装了引导系统 - 我不知道是否有必要。
这些是为我解决问题的命令,从 USB 驱动器启动后从终端运行。我有完整驱动器加密的 Ubuntu 18.04。天啊。
挂载驱动:
sudo cryptsetup luksOpen /dev/sda5 sda5_crypt
sudo vgscan --mknodes
sudo vgchange -ay
sudo mount /dev/mapper/ubuntu--vg-root /mnt
Run Code Online (Sandbox Code Playgroud)删除不需要的文件 ( cd /mnt/home/your_username
... rm ...
)
(可能没有必要)重新安装引导系统:
cd /mnt/
sudo mount /dev/sda1 boot
for d in dev sys proc run; do sudo mount --bind /$d $d; done
sudo vi etc/crypttab # make sure first line uses "sda5_crypt"
sudo chroot .
update-grub
grub-install /dev/sda
update-initramfs -u -k all
exit
sudo umount dev sys proc run boot
Run Code Online (Sandbox Code Playgroud)卸载:
cd /
sudo umount /mnt
sudo vgchange -an
sudo cryptsetup close sda5_crypt
Run Code Online (Sandbox Code Playgroud)重启:
sudo reboot
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
125364 次 |
最近记录: |