双启动 Ubuntu 和 Windows 8。w8 通过 grub shell 启动,但不从菜单启动

双启动 Ubuntu 和 Windows 8。w8 通过 grub shell 启动,但不从菜单启动

我有一台笔记本电脑,安装了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 加载程序作为下一个选项。

相关内容