当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

因此,我已经成功将dual-booted安装在具有Ubuntu 12.04的Windows 8计算机上。但是,我仍然没有方便的方法来选择在引导时加载哪个操作系统。

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

我使用boot-repair并得到了这个paste.ubuntu URL:paste.ubuntu.com/1326074。运行boot-repair(以及列出了grubx64.efi文件的re-white)之后,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发出的警告有关,但我不知道该怎么办。我现在该如何进行?

Edit

我的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"

另外,为了记录,this is what I followed安装了我的dual-boot。本教程(必须使用11.10,我必须注意)没有提及此问题。有什么我不应该做的吗?

最佳回答

首先,您的fdisk -l输出不是问题;可以简单地将您的磁盘标识为使用GUID Partition Table (GPT)分区系统。要查看分区,必须改为使用GPT-enabled工具(例如gdiskparted),而不要使用不了解GPT的fdisk工具。

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

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

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

第三,如果您认为rEFInd丑陋,则可以始终尝试另一个rEFInd主题或创建自己的主题,如in the rEFInd documentation.所述。或者,如果您更喜欢text-mode引导加载程序,则可以在refind.conf中设置textonly选项。您可以切换到gummiboot.来达到类似的目的

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

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

次佳回答

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

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

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

第三种回答

使用CD引导到Ubuntu,选择”Try Ubuntu”,连接到互联网,使用CtrlAltt打开一个终端窗口,然后运行:boot-repair

如果找不到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。

第四种回答

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

如果失败,请在此处共享您的/etc/default/grub文件,我们将进行介绍。

第五种回答

尝试制作一个名为/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并重新启动。

Full tutorial

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9868.html,未经允许,请勿转载。