从 13.10 升级到 14.04 导致 Grub 崩溃

从 13.10 升级到 14.04 导致 Grub 崩溃

我在 UEFI 系统上安装了 Ubuntu + Windows 8 双启动系统。一切都很顺利,直到我从 13.10 升级到 Ubuntu 14.04。

现在,当我启动电脑时,我看到的是如下所示的 grub 救援屏幕:

Failed to open \EFI\Microsoft\Boot\grubx64.efi - 800000000000000E
Failed to load image
Failed to open \EFI\Microsoft\Boot\MokManager.efi.efi - 800000000000000E
Failed to load image
Welcome to GRUB!

error: symbol 'grub_term_highlight_color' not found.
grub rescue> 

使用实时 CD(13.10 或 14.10)中的启动修复报告发生错误并创建此报告:http://paste2.org/Y8mDwa0M

(启动修复显示它将安装来自 Ubuntu 13.10 的软件包)

但什么都没有改变。

如果我在启动时按下 f12,我会进入一个 BIOS 屏幕(启动菜单),在那里我可以从 hdd、usb、dvd reader 中进行选择,如果我单击 HDD,我会得到三个选择:

选择要启动的设备:

Windows Boot Manager 
ubuntu
Ubuntu

Windows 选项将我带回到 grub 救援。

使用另外两个选项,我可以进入 grub 菜单,在那里我可以启动 Ubuntu,但窗口选项不起作用

我不知道该怎么办了

更新

谢谢你的回答,我实际上尝试了所有方法(在 USB 上从不同版本的 Ubuntu 重新安装了 grub 超过 5 次,并且使用了很多次启动修复,但都不起作用)

最后我使用 rEFInd (http://www.rodsbooks.com/refind/getting.html) 允许我进入 grub,从中我可以启动 Ubuntu(但不是 Windows)并使用 rEFInd 菜单自行启动 Windows。

但这当然不是理想的解决方案

更新 2:

我只有一个磁盘:

在此处输入图片描述

更新 3:

这是我尝试安装 grub 或运行 grub-install 时出现的错误:

Installing for i386-pc platform. 
grub-install: Warning: This GPT partition label has no BIOS Boot Partition, the embed is not possible. 
grub-install: Warning: This embed is not possible. GRUB can only be installed in this configuration using blocklist. The blocklist however, are not reliable and it is not recommended to use ..
Installation completed, no errors reported.
Generating grub configuration file ... 
Found linux image: / boot/vmlinuz-3.13.0-24-generic 
Found initrd image: / boot/initrd.img-3.13.0-24-generic 
Found linux image: / boot/vmlinuz-3.11.0-19-generic 
Found initrd image: / boot/initrd.img-3.11.0-19-generic 
Found linux image: / boot/vmlinuz-3.11.0-7-generic 
Found initrd image: / boot/initrd.img-3.11.0-7-generic 
Found linux image: / boot/vmlinuz-3.11.0-5-generic 
Found initrd image: / boot/initrd.img-3.11.0-5-generic 
Found linux image: / boot/vmlinuz-3.11.0-4-generic 
Found initrd image: / boot/initrd.img-3.11.0-4-generic 
Found linux image: / boot/vmlinuz-3.11.0-3-generic 
Found initrd image: / boot/initrd.img-3.11.0-3-generic 
Found linux image: / boot/vmlinuz-3.11.0-2-generic 
Found initrd image: / boot/initrd.img-3.11.0-2-generic 
Found Windows Boot Manager on / dev/sda2 @ / EFI / Microsoft / Boot / Bootmgfw.efi 
Adding boot menu entry for the EFI firmware configuration 
done

(意大利语:译自意大利语)

答案1

我没有使用 14.04 中损坏的 grub 进行测试,但使用以下说明从未遇到麻烦:
https://wiki.ubuntu.com/Grub2#Recover

首先,您必须从 Live CD 或 USB 启动系统。然后

方法 3 - CHROOT

此安装方法使用 chroot 命令来访问损坏的系统的文件。一旦发出 chroot 命令,LiveCD 就会将损坏系统的 / 视为自己的。在 chroot 环境中运行的命令将影响损坏系统的文件系统,而不会影响 LiveCD 的文件系统。

1)启动 LiveCD 桌面(Ubuntu 9.10 或更高版本)。请注意,Live CD 必须与您正在修复的系统相同 - 32 位或 64 位(如果不是,则 chroot 将失败)。

2)打开终端(应用程序 > 附件 > 终端)。

3)确定您的正常系统分区 - (开关是小写的“L”)

sudo fdisk -l

如果你不确定,请运行

df -Th  

查找正确的磁盘大小和 ext3 或 ext4 格式。

4)挂载您的正常系统分区:

替换正确的分区:sda1、sdb5 等。

sudo mount /dev/sdXX /mnt  

例如:sudo mount /dev/sda1 /mnt

5)仅当您具有单独的启动分区时:sdYY 是 /boot 分区名称(例如 sdb3)

sudo mount /dev/sdYY /mnt/boot
6) 挂载关键虚拟文件系统:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
7) Chroot 进入你的正常系统设备:

sudo chroot/mnt

8)如果没有 /boot/grub/grub.cfg 或者不正确,请使用以下命令创建一个

更新 grub

9) 重新安装 GRUB 2:

替换正确的设备 - sda、sdb 等。不要指定分区号。

grub-安装/dev/sdX

10)验证安装(使用正确的设备,例如 sda。不要指定分区):

sudo grub-install --recheck /dev/sdX

11) 退出 chroot:键盘上的 CTRL-D

12) 卸载虚拟文件系统:

sudo 卸载 /mnt/dev/pts
sudo 卸载 /mnt/dev
sudo 卸载 /mnt/proc
sudo 卸载 /mnt/sys

13) 如果您挂载了单独的 /boot 分区:

sudo umount /mnt/boot

14) 卸载 LiveCD 的 /usr 目录:

sudo 卸载 /mnt/usr

15) 卸载最后一个设备:

sudo 卸载/mnt

16) 重启。

sudo 重启

另外,还有一些修复 grub 的方法:我该如何修复 grub?(安装 Windows 后如何恢复 Ubuntu?)

答案2

出现了同样的错误“未找到符号‘grub_term_highlight_color’”,卡在 Grub 救援中。尝试了启动修复(推荐选项),但没有用!

解决方案:下载可启动的 boot-repair.iso (http://sourceforge.net/projects/boot-repair-cd/) 并制作了一个可启动的 usb 磁盘。从它启动并连接到互联网并启动“推荐修复”,然后按照说明进行几个步骤(删除/卸载 grub 然后重新安装新版本),这对我有用!我猜你的情况应该卸载 grub 然后重新安装在 sda8 而不是 sdb1 上。

答案3

我也遇到过同样的问题。我猜是因为我有两块硬盘,所以系统试图从安装了旧版 GRUB 的错误驱动器启动。我的解决方案是使用 USB 启动 Ubuntu(无论哪个版本)。启动后,以下命令即可,以 root 身份运行:

mkdir /tmp/drive
sudo mount /dev/sdX1 /tmp/drive
sudo mount --bind /dev /tmp/drive/dev
sudo mount --bind /proc /tmp/drive/proc
sudo mount --bind /sys /tmp/drive/sys
sudo chroot /tmp/drive
dpkg-reconfigure grub-pc

其中 sdX1 必须是安装系统的驱动器。运行最后一个命令时,您应该选择 sdX 驱动器,不过我猜运行多次会在每个驱动器上安装新版本的 grub,让您放心。

答案4

我猜你的 EFI 分区中有过时的 EFI 文件。特定于 EFI 情况的启动板错误我怀疑这解决了你的情况。在其他所有建议都不起作用之后,它对我有用。解决方法是手动更新 EFI 文件。下面是操作步骤。请注意,您需要用 EFI 分区替换/dev/sda1

  1. 启动到 Live CD
  2. 打开 xterm
  3. 使用 parted 确定您的 EFI 分区:(sudo parted -l下一步中替换 /dev/sda1)
  4. 挂载你的 EFI 分区:sudo mount /dev/sda1 /mnt
  5. 更新启动 EFI 文件:sudo cp /mnt/EFI/ubuntu/grubx64.efi /mnt/EFI/Boot/bootx64.efi

相关内容