我有一台笔记本电脑,安装了Ubuntu 12.10和Windows 8。系统上先安装了Windows 8,然后安装了Ubuntu。
在 Ubuntu 安装过程中,安装程序识别出存在现有分区,但未能在其中看到任何操作系统。我在可用空间中创建了另一个 ext4 分区,并安装了 Ubuntu。最初grub只添加了Ubuntu的条目,Ubuntu运行正常。
现在我想手动输入w8设置到Grub中,并修改/etc/grub.d/40_custom:
#!/bin/bash
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Windows 8" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
#set root='(hd0,gpt1)'
search --fs_uuid --no-floppy --set=root --hint-bios=hd0,gpt2 --hint efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2
chainloader /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
}
我使用此命令找到的搜索字符串(倒数第二个):sudo grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
现在,更新 grub 配置、重新启动并选择 Windows 8 条目后,它会抱怨:
error: unspecified search type
error: file '/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi' not found
Press any key to continue
然而在 Ubuntu 中,如果我这样做ls /boot/efi/EFI/Microsoft/Boot/b*
/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
/boot/efi/EFI/Microsoft/Boot/bootmgr.efi
/boot/efi/EFI/Microsoft/Boot/boot.stl
/boot/efi/EFI/Microsoft/Boot/bg-BG:
bootmgfw.efi.mui
bootmgr.efi.mui
现在,如果我按e编辑 Windows 8 条目,然后选择F2进入 grub shell,实际上,如果我尝试运行ls /boot/efi
,则不会显示任何文件。
有趣的是,如果此时我只需输入exit
,Windows 8 就会启动。
fdisk -l
让我知道它能识别/dev/sda1 as GPT partition
有什么想法我应该做什么才能让 grub “直接从菜单中”工作?
答案1
看一下重新寻找,它非常有用且灵活(并且做在我的测试中启动 win8,同时向 ALT Linux 添加 UEFI 支持)。
它不是一个引导加载程序,而是一个引导管理器,因此它允许您在 WBM 和 GRUB 之间进行选择,并且两者都能够实际链加载(in)适当的内核。
答案2
您需要在搜索行(最后)提供系统设备的 UUID。并删除 --bios 标签,因为您使用 EFI 启动。
要查找 UUID,请执行以下命令:
sudo grub-probe --target=fs_UUID /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
答案3
问题是您已经将 root 设置为“(hd0,gpt1)”,我认为这是/boot/efi
您的 grub 所在的位置(您的目录)。
因此,写作/boot/efi/...
就相当于/boot/efi/boot/efi...
很可能不存在的写作。
你应该/boot/efi/EFI/...
改为/EFI/...
答案4
我目前面临着同样的问题,但可以找出原因是提示 grub 命令的错误结果。实际上,它向我传递了错误的 .efi 文件路径。
我这里有两个磁盘,grub 将它们列为 hd1 和 hd2。我可以弄清楚只使用 grub 命令并选择在 grub 屏幕上按“c”,然后执行 ls 。
它列出了所有 gpt 分区和相应的磁盘,因为我在两个磁盘上都有不同的分区,所以我可以轻松识别我的 efi 文件在哪里,然后只需将 grub 条目的位置更改为我的 efi 所在的正确分区即可文件驻留在.
请注意,链式装载机路径必须与没有安装点的路径相对应。您可以使用 Ubuntu 上的磁盘实用程序来检查这一点!
现在我只是遇到一个错误,说搜索类型未指定,但启动后毫无问题地给我带来了 Windows 加载程序。
关于你的问题为什么退出 grub 时会点击 windows 加载程序,我想这很简单,当 grub 被绕过时,你的主板启动选项将 windows uefi 加载程序作为下一个选项。