我犯了一个错误,删除了 /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。