至此,我已成功在 Windows 8 机器上安装了 Ubuntu 12.04 。但是,我仍然没有方便的方法来选择在启动时加载哪个操作系统。
安装 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)没有提到这个问题。有什么我不应该做的吗?
答案1
首先,您的fdisk -l
输出没有问题;它只是标识您的磁盘正在使用GUID 分区表 (GPT)分区系统。要查看分区,您必须使用支持 GPT 的工具,例如gdisk
或parted
,而不是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
。您可以通过切换到橡胶靴。
第四,如果 rEFInd 定期报告错误,请记下这些错误或用数码相机拍下屏幕照片并报告给我。(我是 rEFInd 的维护者。)如果没有人报告错误,错误就无法修复;或者如果它们不是 rEFInd 中的错误,则这些消息可能会提供有关如何解决问题的线索。
最后,可以通过 rEFInd(或 gummiboot)启动 Linux,而无需使用 GRUB;你只需要一个不同的 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 超时值并将其设置为默认不显示菜单。
答案2
两个答案都/EFI/Microsoft/Boot/bootmgfw.efi
可以。不过我拼命破解才得到正确的设置set root='(hd0,gpt1)'
。如果你知道这很简单
当 GRUB 启动时:按提示c
输入命令。 您将获得硬盘上的分区列表,如 (hd0,gpt1) 等。 输入(hd0,gpt1) 并尝试其他分区。 查看标签,如果标签上写着 EFI,您就知道您找到了。 ls
ls
警告:可能有更多标有 EFI 的分区,具体取决于您安装 Ubuntu 的方式。请全部尝试。
答案3
使用 CD 启动 Ubuntu,
选择“试用 Ubuntu”,
连接到互联网,使用- -
打开终端窗口,然后运行:CtrlAlttboot-repair
如果没有找到启动修复,则安装它:
sudo add-apt-repository ppa:yannubuntu/boot-repair &&
sudo apt-get update &&
sudo apt-get install -y boot-repair &&
boot-repair
单击“推荐修复”。在纸上写下将出现的新 URL。重新启动电脑,您应该会看到一个可以访问 Ubuntu 和 Windows 的 GRUB 菜单。如果有任何问题,请指出新的 URL。
答案4
尝试创建一个名为的文件/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
并重新启动。