双重引导后,Grub不显示Windows 8选项


25

因此,我已经成功用Ubuntu 12.04双启动了Windows 8计算机。但是,我仍然没有方便的方法来选择在引导时加载哪个操作系统。

安装Ubuntu之后,我的计算机仍直接加载Windows 8。然后grubx64.efi,我将其添加到引导加载程序的白名单中。但是在那之后,我的机器直接加载了Ubuntu,甚至没有出现GRUB的阴影!

我使用了引导修复程序,并获得了以下paste.ubuntu URL:paste.ubuntu.com/1326074。运行引导修复(并重新列出grubx64.efi文件的白色)后,GRUB现在显示,但没有任何Windows 8选项!

最后,我跑了sudo fdisk -l,它给了我这个:

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sda: 750.2 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x6396389f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  1465149167   732574583+  ee  GPT
Partition 1 does not start on physical sector boundary.

我猜我的问题与fdisk上面的警告有关,但我不知道该如何处理。我现在该如何进行?

编辑

etc/default/grub的如下:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

另外,仅作记录,这就是我安装双重引导时遵循的内容。本教程(必须使用11.10,我必须注意)没有提及此问题。有什么我不应该做的吗?


阅读这个答案,可以帮助你:askubuntu.com/questions/84501/...
NickTux

Answers:


17

首先,您的fdisk -l输出没有问题;只需使用GUID分区表(GPT)分区系统即可识别您的磁盘。要查看分区,您必须改为使用启用了GPT的工具,例如gdiskparted,而fdisk不是使用不了解GPT的工具。

其次,您可以通过将合适的条目添加到/etc/grub.d/40_custom并执行来使GRUB链接Windows sudo update-grub。一个条目可能看起来像这样:

menuentry "Windows 8" {
    set root='(hd0,gpt1)'
    chainloader /EFI/microsoft/BOOT/bootmgfw.efi
}

但是,详细信息可能取决于您的安装。

第三,如果您认为rEFInd很难看,可以按照rEFInd文档中的描述随时尝试其他rEFInd主题或创建自己的主题另外,如果您喜欢文本模式启动加载程序,则可以在中设置textonly选项refind.conf。您可以通过切换到gummiboot来达到类似的目的

第四,如果rEFInd定期报告错误,请写下这些错误或使用数码相机拍照,然后向我报告。(我是rEFInd的维护者。)如果没有人报告错误,则无法修复。或如果它们不是rEFInd中的错误,则消息可能会提供有关如何解决问题的线索。

最后,无需使用GRUB即可通过rEFInd(或gummiboot)引导Linux。您只需要一个不同的EFI引导加载程序。我个人的喜好是Linux内核的EFI存根加载器。但是,仅在3.3.0和更高版本的内核中可用。由于Ubuntu 12.04附带了3.2.0内核,因此您需要为Ubuntu 12.04找到一个预先构建的3.3.0(我听说过这种情况,但是我没有任何可用的链接)或构建您的从源代码拥有。(您也可以安装带有合适内核的Ubuntu 12.10,但大概您想要的是LTS版本,因此这可能不是最佳选择。)请参阅rEFInd文档页面(有关引导Linux)有关如何设置的更多详细信息。您也可以使用ELILO或GRUB Legacy。如果您只是反对延迟,则可以减少GRUB 2超时值并将其设置为默认情况下不显示菜单。


1
首先,哇,我没有意识到您是rEFInd的维护者。接下来,关于GRUB菜单项...我已经尝试过了,但是没有用。在其他黑暗场景中,我尝试设置ESP分区,但无济于事。甚至尝试使用这些图形GRUB编辑器之一(忘记了名称)。最后,关于rEFInd,它报告的错误并不严重(将编辑我的帖子以指出这一点)---在启动时,它只是告诉我它找不到某些.efi。我不知道他们来自哪里。
skytreader 2012年

检查ESP上是否存在指定的文件。另外,请确保文件名大小写正确。(这没关系,但是我知道一个错误的EFI在哪里起作用!)如果这没有帮助,当您尝试通过该条目启动Windows时,GRUB返回什么错误消息(如果有)?
罗德·史密斯Rod

8

启动到Ubuntu的使用CD,
选择“试用Ubuntu”,
连接到互联网,
通过打开一个终端窗口Ctrl- - Altt然后运行:boot-repair

如果找不到启动修复,则安装它:

sudo add-apt-repository ppa:yannubuntu/boot-repair &&
sudo apt-get update &&
sudo apt-get install -y boot-repair &&
boot-repair

单击推荐修复。在纸上写下将出现的新URL。重启电脑,您将获得一个GRUB菜单,可以访问Ubuntu和Windows。如果有任何问题,请指明新的URL。


7

两个答案/EFI/Microsoft/Boot/bootmgfw.efi都可以。但是我像地狱一样乱砍了正确的设置set root='(hd0,gpt1)'。如果你知道这很简单

GRUB启动时:在提示符下按c 给定命令ls
您会在(hd0,gpt1)等硬盘上获得分区列表。
键入ls(hd0,gpt1)并尝试其他分区。
查看标签,如果标签上注明EFI,则说明您成功了。

警告:可能会有更多标有EFI的分区,具体取决于您安装Ubuntu的方式。尝试所有这些。


6

尝试跑步sudo update-grub。希望这会自动识别Windows 8并将其添加到GRUB并重新配置菜单。

如果失败,请/etc/default/grub在这里共享您的文件,我们会看一下。


1
你好 sudo update-grub没有做到这一点。我修改了问题,将我的问题包括在内/etc/default/grub。同时,我正在研究NikTh链接的答案。
skytreader 2012年

3

尝试制作一个/etc/grub.d/30_windows包含以下内容的文件:

#! /bin/bash
cat << EOF
menuentry "Windows 8" {
    insmod part_gpt
    insmod chain
    set root='(hd0,gpt1)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
EOF
然后运行sudo update-grub并重新启动。

完整教程


1
  1. 请下载超级Grub并遵循其指示。没有它,我永远不会离开家。当grub菜单不显示时,它非常有用。

  2. 您必须加载到cd并启动它。只需按照随附的说明进行操作即可。

  3. 它也可以用于修复窗口。由于您只能引导至Windows 8,因此您需要选择Linux修复程序。

试一试,但请仔细阅读说明。一段时间后,您会觉得自己像专家。RS


0

我的终极解决方法

(*因为汤姆(Tom's)不能正常工作,并且尼克斯(NikTh)的链接太复杂了。

安装rEFInd


我接受我自己的回答,直到有人指出可能的缺陷和修复程序或解决了我的问题(不幸的是,问的问题是“如何轻松地将Windows 8放入GRUB ?”)。

编辑8/6/17:我最终使用rEFInd解决了这个问题(请参见上面的可接受答案)。)

使用rEFInd远非完美的解决方案,似乎是一项艰巨的工作。首先,它看起来很丑陋(对不起rEFInd),并告诉我在启动时某些.efi({ext2_x64,hfs_x64,iso9660_x64,reiserfs_x64} .efi)的访问被拒绝-但这并不重要,并且没有按一下按钮按*。而且,最后,选择Ubuntu efi仍然会加载GRUB,这是完全不必要的步骤,至少因为我不会费心保留多个内核版本。

综上所述...

优点:我的系统现在差不多可以像UEFI之前的双引导一样工作了。缺点:看起来很丑,而且启动时间更长。

*我必须注意,该rEFInd是通过install.shUbuntu分区安装的。以前使用rEFInd的经验(通过Windows设置)没有此问题。


如果先前通过Windows安装的rEFInd不会产生找不到文件的错误,但是您当前从Linux安装会出现错误,那么我的直觉是发生了以下两种情况之一:1)您的主板上装有区分大小写的错误,在这种情况下,处理文件或目录可能会改善问题;或2)您的ESP有点奇怪(例如FAT16与FAT32或一些较小的文件系统损坏)。一些EFI似乎对其ESP上的文件系统非常挑剔。确切的文件名可能有助于缩小问题范围。
罗德·史密斯Rod

好。我的错。这并不是说它找不到某些efis,只是说某些efis拒绝了它的访问(所以我认为所说的efis在那儿,只是无法访问?)。我已经注意到了这些文件,尽管我仍然不知道它们来自何处。
skytreader 2012年

根据我的经验,“访问被拒绝”是EFI上的一个异常错误。AFAIK,EFI不像Linux支持所有权或权限,因此除非出现磁盘读取错误,否则它实际上没有任何意义。我已经看到在EFI下奇怪的磁盘写入错误在下次重新启动时消失了。如果此问题仍然存在,则可以考虑在磁盘上运行SMART测试,以防万一发生硬件故障;如果存在一些奇怪的文件系统损坏,而dosfsck无法解决,请备份并重新编写ESP。除此之外,报告哪些文件有问题可能很有用。
罗德·史密斯Rod

1
“拒绝访问”消息几乎肯定与安全启动有关。如果在安全启动模式下rEFInd尝试加载未签名的EFI二进制文件,则会出现此类消息。令人困惑的是,您可以启动rEFInd,因为它本身并未签名。我的直觉是,您的固件中存在某种奇怪的越野车半激活的安全启动设置。目前最简单的解决方案是完全禁用安全启动,但还有其他方法。有关更多信息,请参见我的网页rodsbooks.com/efi-bootloaders/secureboot.html
Rod Smith

在我的hp笔记本电脑上,我必须按f9键,然后grub启动,否则将加载Windows。也有一个选项可以从grub引导Windows,尽管我从未使用过。如果我对Windows无聊,只需打开它并等待Windows。如果我打算启动ubuntu,我只要打开电源就按f9键。
geoffmcc 2014年
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.