无法在加密文件系统上重新安装 GRUB

无法在加密文件系统上重新安装 GRUB

我犯了一个错误,删除了 /boot 目录的内容,包括 GRUB(顺便说一句,这很容易做到,没有注意到它会让你的系统无法启动)!

我本来打算在重新启动之前尝试将 GRUB 重新复制到目录中,但我忘记了,然后重新启动,毫不奇怪,它无法启动。我有一个加密的文件系统和一个加密的主目录。

现在在 liveUSB 上,尝试各种论坛建议(我自己没有发帖)....没有运气。我已经成功挂载了我的加密驱动器(是的),但是启动修复包和 grub 修复都会抛出错误。这是我的粘贴箱: http://paste.ubuntu.com/14875709/

有人遇到过这种情况并且可以帮助我吗?

磁盘驱动器:

Device       Start       End   Sectors  Size Type   
/dev/sda1     2048   1050623   1048576  512M BIOS boot   
/dev/sda2  1050624   1550335    499712  244M Linux filesystem   
/dev/sda3  1550336 976771071 975220736  465G Linux filesystem   
/dev/sdb1  *      128 3911679 3911552  1.9G  b W95 FAT32  

尝试了下面建议的 grub-install、update-grub 顺序 - 它引发了一系列警告:

/run/lvm/lvmetad.socket: connect failed: No such file or directory  
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.  

但似乎成功了,grub-install 结束了:

Installation finished. No error reported.  

和 update-grub 结尾:

Adding boot menu entry for EFI firmware configuration  
done  

顺便说一句,我应该提到我还(之前)编辑/etc/default/grub和添加了

GRUB_ENABLE_CRYPTODISK=y  

正如在另一个论坛中所建议的那样 - 有必要吗?

无论如何,重新启动后,它立即要求加密的磁盘密码,然后似乎接受它,给我一个 grub 菜单,然后在完成大部分启动顺序后给我这个错误(可能不准确,我把它写下来):

drm:intel_pipe_config_compare error: mismatch in ips_enabled (expected 1, found 0)  

它会将我发送到 busybox 紧急 shell 提示符,并建议我这样做,cat /proc/cmdline因为:

/dev/mapper/ubuntu--vgroot does not exist  

然而,它确实存在,我可以通过 liveCD 安装它,它只是加密的。所以我又被困住了。

更新:我尝试按照建议编辑“/etc/lvm/lvm.conf”,现在当我重新启动时,我会看到 grub 菜单,但在选择 Ubuntu 后,它再次进入紧急 shell,并出现相同的错误:

drm:intel_pipe_config_compare [i915] ERROR mismatch in ips_enabled (expected 1, found 0)

答案1

既然你谈论的是 Ubuntu,我就假设你使用它。

要修复,请执行以下操作:

  • 首先,确保您正在致力于已安装系统,不是实时系统。实时映像通常有自己的根文件系统,这使得重新安装 grub 变得更加困难。假设您将已安装的根文件系统挂载在 上/mnt,您可以通过运行以下命令来完成此操作(全部以 root 身份运行,因此如果需要,请使用 sudo 或类似的命令):

    mount -o bind /dev /mnt/dev
    mount -t process proc /mnt/proc
    mount -t sysfs sys /mnt/sys
    chroot /mnt
    

    最后一个命令在您安装的系统中启动一个 shell。在该 shell 中运行接下来的命令。

  • 将 grub 重新安装到 MBR:grub-install --boot-directory=/boot /dev/sda。这假设您的计算机只有一个硬盘,或者如果有多个硬盘,则将其设置为从sda.如果情况并非如此,请酌情调整。
  • 重新生成 grub 菜单以获得良好的效果:update-grub.
  • 现在退出该 shell,然后重新启动。

事情应该会恢复正常。如果没有,请更新您的问题,并提供有关失败原因的更多详细信息。

更新:看起来由于 update-grub 想要lvmetad与在主机系统而不是来宾系统中运行的 进行对话,事情仍然失败。解决此问题的最简单方法是(暂时)禁用该守护程序。为此,请编辑/etc/lvm/lvm.conf,找到显示的设置use_lvmetad = 1并将其设置为0。然后运行update-initramfs -u -k all重新生成initramfs。

相关内容