从13.10升级到14.04打破了Grub


11

我在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阅读器中进行选择,如果单击HDD,则有以下三种选择:

选择要启动的设备:

Windows Boot Manager 
ubuntu
Ubuntu

Windows选项将我带回了grub营救。

使用其他两个选项,我进入了grub菜单,可以在其中启动Ubuntu,但是window选项不起作用

我不知道该怎么办

更新

感谢您的回答,我实际上尝试了所有这些方法(在USB记忆棒上从不同版本的Ubuntu重新安装grub超过5次,并使用了很多次引导修复,但无济于事)

最后,我正在使用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

(从意大利语翻译)



我试过这些命令,但卡在chroot上。我收到一个错误:“ chroot:无法运行命令`/ bin / bash':执行格式错误

在进入14.04时遇到了相同的错误,这对我有帮助:wiki.ubuntuusers.de/GRUB_2/Reparatur,几乎与freeseek的答案相同

1
@Larry请参见下面的方法3#1,这是您的问题,不能使用32位更改根来修复64位系统。
eyoung100

Answers:


7

我没有在14.04中使用破碎的grub对此进行测试,但我从未使用这些说明来遇到麻烦:https :
//wiki.ubuntu.com/Grub2#Recover

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

方法3-调整

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

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

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

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

须藤fdisk -l

如果不确定,请运行

df -Th  

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

4)挂载普通系统分区:

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

sudo mount /dev/sdXX /mnt  

示例:sudo mount / dev / sda1 / mnt

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

须藤挂载/ dev / sdYY / mnt / boot 
6) 挂载关键的虚拟文件系统:
须藤挂载--bind / dev / mnt / dev
sudo mount --bind / dev / pts / mnt / dev / pts
须藤安装--bind / proc / mnt / proc
须藤挂载--bind / sys / mnt / sys 
7) Chroot进入您的普通系统设备:

须藤chroot / mnt 

8)如果没有/boot/grub/grub.cfg或它不正确,请使用

更新grub 

9) 重新安装GRUB 2:

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

grub安装/ dev / sdX 

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

sudo grub-install-重新检查/ dev / sdX 

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

12) 卸载虚拟文件系统:

须藤umount / mnt / dev / pts
须藤umount / mnt / dev
须藤umount / mnt / proc
须藤umount / mnt / sys 

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

须藤umount / mnt / boot 

14) 卸载LiveCD的/ usr目录:

须藤umount / mnt / usr 

15) 卸载最后一个设备:

须藤umount / mnt 

16) 重新启动。

须藤重启 

另外,这些是修复g的其他方法:如何修复I?(如何在安装Windows后恢复Ubuntu?)


1
步骤3,4和9为我完成了工作。谢谢
ezdazuzena 2014年

1
启动修复悲惨地失败了-但这种完美地为我工作
乔恩Skarpeteig

2

发生了相同的错误“找不到符号'grub_term_highlight_color'”,卡在Grub救援中。尝试了引导修复(推荐选项),但是没有用!

解决方案:下载了可引导的boot-repair.iso(http://sourceforge.net/projects/boot-repair-cd/)并制作了可引导的USB磁盘。从它启动并连接到Internet,然后开始“推荐修复”,然后按照说明进行了几个步骤(删除/卸载grub,然后重新安装新版本),这对我来说很有效!我想在您的情况下,应先卸载grub,然后再将其重新安装在sda8而不是sdb1上。


这对我有用:我已经下载了启动修复CD映像 -我使用x64,因为Ubuntu安装是x64。然后通过unetbootin安装ISO 。进行了定期维修和中提琴!
2014年

从13.10升级到14.04后,具有启动修复功能的可启动磁盘(64位14.04桌面版)也对我有用。就我而言,我按照此处的说明(第二个选项)单击了工具中的“建议的维修”,然后the突然又恢复了工作!
Krøllebølle

2

我曾经也有过一样的问题。我的猜测是,由于我有两个硬盘驱动器,因此系统试图从安装了旧版本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并给您一些注意。


我得到挂载:挂载点/ tmp / drive / dev不存在
Alemur

1
@Akmur您是否忘了--bind,或者安装了错误的驱动器?--bind将文件系统放入USB驱动器中,并用usedevice / dev替换/ dex / sdX1 / dev
eyoung100

@Akmur您可能装入了错误的分区。当我提到sdX1时,它需要引用您的引导分区,该分区应该已经包含dev,proc,sys目录。如果不存在,则很可能是您安装了错误的分区。如果您相信已安装了正确的分区,则可以继续使用mkdir创建那些丢失的目录。
Freeseek 2014年

1

我从13.10升级到14.04时遇到了相同的错误。这些指示对我来说有点令人生畏。

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

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

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

运行该命令并接受默认更改。

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

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


OP指出启动修复无效,因此这可能不是答案。
mikewhatever 2014年

1

我的猜测是您在EFI分区中有过时的EFI文件。我怀疑有一个针对EFI情况启动板错误,我怀疑可以解决您的情况。在所有其他建议都没有完成之后,它对我有用。解决方法是手动更新EFI文件。下面是一个演练。请注意,您需要用EFI分区代替/dev/sda1

  1. 引导到现场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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.