问题描述
因此,我已经成功将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工具(例如gdisk
或parted
),而不要使用不了解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”,连接到互联网,使用Ctrl
–Alt
–t
打开一个终端窗口,然后运行: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
并重新启动。