从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> 

使用来自live cd(13.10或14.10)的启动修复报告发生错误并创建此报告: http : //paste2.org/Y8mDwa0M

(引导修复说它将从Ubuntu 13.10安装软件包)

但没有变化。

如果我在启动时按f12,我会进入BIOS屏幕(启动菜单),在那里我可以选择hdd,usb,dvd阅读器,如果我点击硬盘,我会得到三个选择:

选择要引导的设备:

 Windows Boot Manager ubuntu Ubuntu 

Windows选项让我回到grub救援。

使用其他两个选项,我进入grub菜单,我可以启动Ubuntu,但窗口选项不起作用

我不知道该怎么办

更新

谢谢你的答案,我实际上尝试了所有这些(在U盘上从Ubuntu的不同版本重新安装了超过5次grub并且使用了很多次启动修复但没有任何工作)

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

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

更新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 

(翻译自意大利语)

我没有在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-install / dev / sdX 

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

  sudo grub-install --recheck / dev / sdX 

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

12)卸载虚拟文件系统:

  sudo umount / mnt / dev / pts
 sudo umount / mnt / dev
 sudo umount / mnt / proc
 sudo umount / mnt / sys 

13)如果你安装了一个单独的/ boot分区:

  sudo umount / mnt / boot 

14)卸载LiveCD的/ usr目录:

  sudo umount / mnt / usr 

15)卸载最后一个设备:

  sudo umount / mnt 

16)重新启动。

  sudo重启 

还有这些是修复grub的其他方法: 我该如何修复grub? (安装Windows后如何恢复Ubuntu?)

有同样的错误“符号’grub_term_highlight_color’未找到”,卡在Grub救援。 尝试过引导修复(推荐选项),但没有用!

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

我曾经也有过一样的问题。 我的猜测是,由于我有两个硬盘驱动器,系统正在尝试从安装旧版GRUB的错误驱动器开始。 我的解决方案是用U盘启动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并给你一些心思。

我有同样的错误从13.10升级到14.04。 这些说明对我来说有点令人生畏。

我最终创建了一个带有Super Grub Disk的可启动USB驱动器。 http://www.supergrubdisk.org/

从那里开始。 在启动时告诉它检测已安装的操作系统。 它发现我的Ubuntu 14.04安装,所以我告诉它启动它。 启动没问题。

我已经在我的系统上安装了Boot Repair。 https://sourceforge.net/p/boot-repair

跑了然后接受了默认的变化。

关掉。 将USB驱动器从插槽中拔出,按下电源并等待屏住呼吸。

系统正常启动! 问题解决了。

我的猜测是你的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

使用启动修复CD修复grub错误: https ://help.ubuntu.com/community/Boot-Repair#A1st_option_: _get_a_CD_including_Boot -Repair