mad*_*tim 36 dual-boot uefi boot-repair
我有一台 HP Pavilion Sleekbook 14 笔记本电脑,我在原来的 Windows 8 上安装了 Ubuntu 12.10 双引导。我使用引导修复来设置引导到 grub。
我的问题是我无法让它直接从创建的新 efi 文件中启动。我查看了 bios 屏幕中的启动选项,但它没有给我选择 Ubuntu。我可以引导到 Ubuntu 的唯一方法是在打开系统电源时按 F9,然后手动导航到 ubuntu efi 文件。这有效,但如果我不密切注意,它将启动到 Windows。
在我完成启动修复后,它告诉我从 sda2/EFI/ubuntu/shimx64.efi 启动我看到一些建议我应该移动这个文件来代替 windows bootmgfw.efi,但我担心我会破坏东西并且无法启动 Windows 8 安装。虽然我已经比 win7 更不喜欢 win8,但我确实不时需要它来完成一些任务......
我的引导修复的详细信息在这里:http : //paste.ubuntu.com/1418009/
小智 33
在尝试双启动 Ubuntu 12.04.3 LTS 和 Windows 8 时,我的 HP Pavilion g6 遇到了同样的问题。也就是说,即使在“成功”运行启动修复后,我的笔记本电脑仍然直接启动到 Windows 8。如果我在 HP 符号出现之前按 F9,我能够进入引导菜单(HP 的菜单?我不知道...),然后从那里选择“Ubuntu”条目,这又将我带到 GRUB 2 最后到我的 Ubuntu 安装。
尽管如此,我还是希望能够让计算机直接启动到 Linux,而无需任何用户干预。
最后,上面 Rod Smith 的回答,结合我在另一个论坛上找到的信息,对我有用。我禁用了安全启动,也禁用了传统启动。
这就是我所做的:
使用下面的命令,我检查了 Windows 引导加载程序所在的位置:
$ sudo efibootmgr -v
Run Code Online (Sandbox Code Playgroud)就我而言,原始引导加载程序在这里:/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
. 请注意,在您的计算机中,它可能位于不同的位置。如果是这样,您将需要调整以下命令。
根据 Rod 在他的回答中的建议(有关如何手动修复引导加载程序的建议),我通过将其向上移动一级来备份该文件:
$ sudo cp /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi /boot/efi/EFI/Microsoft/bootmgfw.efi
Run Code Online (Sandbox Code Playgroud)最后,我在那个地方复制了 GRUB2 的引导加载程序,“欺骗”系统加载我想要的引导加载程序,而不是 Windows 的原始引导加载程序。
$ sudo cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Run Code Online (Sandbox Code Playgroud)所以最后我让我的双启动与 GRUB2 一起工作。如果 Windows 在更新后再次覆盖引导加载程序(就像我所做的那样),我已经知道将 grub 恢复到原位的步骤。
希望这可以帮助某人。如果我的解决方案有任何问题,请告诉我。
小智 13
我在 HP ProBook 4340s 上遇到了同样的问题,原来的 Windows 8 已经被新的 Kubuntu 15.04 覆盖了(我不喜欢双启动)。在其他尝试中,我还尝试了 Boot-Repair(安装后从 HD 和通过boot-repair-disk 进行),但该练习很可能是不必要的。
诀窍在于 BIOS 设置中的以下更改(计算机启动后按F10 - 转到系统配置- 打开引导选项):
检查自定义引导
检查SecureBoot
Boot Mode : 选择UEFI Hybrid或UEFI Native (我选择UEFI Native)
UEFI 启动顺序:将自定义启动放在最上面
定义自定义启动选项:选择添加+ 放置设置:\EFI\ubuntu\grubx64.efi
通过快速启动选项(F9)中的从 EFI 文件启动选项打开 GRUB 时,我们找到了正确的路径字符串。一开始,选项列表包含:
添加自定义启动选项后,它被添加到列表中:
通常,运行引导修复会备份 Microsoft 的原始引导加载程序文件 ( bootmgfw.efi
),bootmgfw.efi.bkp
并将原始bootmgfw.efi
文件替换为 GRUB(或 shim)的副本,您发布的引导修复输出将显示这一点;但是,我没有看到这样的备份文件。因此,我建议您做以下三件事之一:
/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
(我建议将其向下移动一级,到/boot/efi/EFI/Microsoft/bootmgfw.efi
,而不是将其重命名为bootmgfw.efi.bkp
,因为后者是非标准的,并且使引导修复和 Ubuntu 的 GRUB 以外的工具无法找到它)。复制/boot/efi/EFI/ubuntu/grubx64.efi
到它的位置;或者,如果您打算保持安全启动正常工作,请/boot/efi/EFI/ubuntu/shimx64.efi
在其位置复制并复制grubx64.efi
到/boot/efi/EFI/Microsoft/Boot
使用其原始名称。然后,您需要修改 GRUB 配置,使其能够在新位置或以新名称启动 Windows 引导加载程序。(我听说 GRUB 还不能在安全启动模式下启动 Windows 启动加载程序,所以如果你想从 GRUB 启动 Windows,你可能需要禁用安全启动。OTOH,我自己从来没有尝试过,所以我可能会误认为 GRUB 在这方面的能力。)sudo mvrefind.sh /boot/efi/EFI/refind /boot/efi/EFI/Microsoft/Boot
。后一个命令移动和重命名文件的方式类似于我刚刚描述的手动过程或 Boot Repair 的作用,但它将 rEFInd 设置为默认引导加载程序而不是 GRUB。如果您想使用安全启动,您可以通过处理文件并安装新版本的 shim 来实现(Ubuntu 的 shim 足够早,无法与 rEFInd 一起正常工作)。以这种方式安装 rEFInd 使您能够在不使用 GRUB 的情况下进行引导,并且安装脚本(在您安装 Debian 软件包时由软件包系统执行)和mvrefind.sh
脚本的组合可以解决您遇到的问题。作为记录,您遇到的问题与 HP 的 EFI 实施中的已知错误有关。基本上,固件是硬编码的,可以从 Microsoft 的引导加载程序启动,并使从其他任何东西启动变得困难或不可能。我强烈建议您就此向 HP 投诉;除非人们抱怨,否则他们不会解决此类问题。
在这三种解决方案中,使用引导修复可能是最容易开始工作的。但正如我所指出的,引导修复使用的非标准命名最终可能会导致未来其他实用程序出现问题。手动调整需要更多的努力才能工作,但从长远来看会更干净。有些人报告了让 GRUB 链式加载 Windows 引导加载程序的问题,因此任何一个选项都可能让您头疼。rEFInd 更有可能在没有问题的情况下启动 Linux 或 Windows,但正如您从该过程中可以看出的那样,使其工作可能比再次运行启动修复需要更多的努力,尽管可能比手动处理文件要少。目前将 rEFInd 与安全启动结合使用需要更多的跳圈。(有关详细信息,请参阅 rEFInd 的文档。
所有三种解决方案都涉及风险;EFI 实现之间的差异太大,这意味着在一台计算机上运行良好的自动或手动程序在另一台计算机上可能会失败。为了保护自己,我建议备份您的 ESP(通常/boot/efi
在 Linux 下);只需将文件打包在 tarball 中或将它们复制到备份目录。如果出现严重问题,您可以使用紧急光盘启动并恢复文件。这可能会使计算机再次启动。
小智 7
惠普的 UEFI 已经让我心痛了一段时间。您的修复帮助我再次在 GRUB 中重新启动了我的 HP 笔记本电脑 - 无需先按 F9。
我有一个问题:在您修复后,我可以在 GRUB 中选择 Windows 8,但是 Windows 8 拒绝启动,我再次看到 GRUB 菜单。
我的修复:
/boot/efi/EFI/Microsoft/Boot/bootmgf2.efi
/boot/grub/grub.cfg
以识别重命名的 Microsoft efi 文件笔记本电脑现在可以启动到 GRUB,Ubuntu 和 Windows 8 现在可以从 GRUB 启动。
同样的问题我花了一天时间终于解决了。下面是准确的解决方案。解决该问题的完整文章在这里,由Rod Smith撰写。
有用的信息
为了使用 efi 引导加载程序引导到 GPT 分区表。efi
文件是操作系统在安装时创建的,必须将其提供给计算机的 UEFI BIOS,以便使其能够启动到相应的操作系统。
为了保存 efi 文件,我们需要有一个 EFI 分区。这通常是小于 200MB 的分区,fat32
格式为EFI system
. 它包括引导到任何可引导分区(通常是操作系统)所需的文件及其依赖项(以或.efi
的形式)。在我的计算机中,该分区的结构如下所示:.dll
.efi
\EFI
|_Boot
|_fw
|_Microsoft
|_Boot
|_Recovery
|_Ubuntu
|_fw
Run Code Online (Sandbox Code Playgroud)
通常.efi
文件可以有任何名称,但似乎有些计算机正在寻找特定的名称。所以我也提到了标准名称。
Boot
文件夹:如果 NVRAM 由于某种原因被擦除,则被识别为默认启动选项。默认情况下将使用此选项。efi 引导加载程序的名称是“bootx64.efi”。当您想要选择默认的 efi 引导加载程序时,请将您的 efi 文件及其周围的所有文件复制到引导文件夹,并将源的 efi 文件重命名为“bootx64.efi”。
Microsoft
文件夹:存放Windows的efi启动文件。有几个 efi 文件,但主要的是“efibootmgfw.efi”。我确信windows使用它来启动。
Ubuntu
文件夹:存放Ubuntu或Mint的efi文件。有几个.efi
文件,但主要的是grubx64.efi
该怎么办?
在安装操作系统时已经安装了一些引导选项。但是,它们可能会因为不同的原因而从 BIOS 的引导选项中消失,例如卸下并重新安装硬盘或安装新的操作系统甚至新的主板电池。有两种恢复启动选项的解决方案。
(不推荐)正如一些答案中所述,我们可以用不工作的启动选项替换工作启动选项。但问题仍然存在。
手动注册缺少的 efi 引导加载程序文件。
怎么做?
从 Linux 可启动闪存启动(我使用 Linux Mint 的可启动闪存)。这必须是 EFI USB。(可以通过 rufus 等程序创建 GPT USB)
挂载 EFI 分区,您的发行版可能会自动执行此操作。/boot
如果可用并显示与上面类似的结构,请跳过此步骤。现代 Ubuntu 应该可以为你做到这一点。
找到您的 EFI 分区的地址。parted
这可以通过使用命令或程序来完成Disks
。它通常是可启动磁盘中的第一个或第二个分区。(/dev/sda1
或/dev/sda2
) 该分区通常在 100MB-200MB 之间,FAT32,分区类型为 EFI 系统。
挂载EFI分区。您可以使用df
命令检查该分区是否已挂载。
df /boot/efi
Run Code Online (Sandbox Code Playgroud)
如果之前没有挂载过分区(前面的命令中没有显示)则使用mount
命令挂载分区:
mount /dev/sda1 /boot/efi
Run Code Online (Sandbox Code Playgroud)现在,如果您浏览,/boot/efi
您将看到与我上面解释的文件结构类似的文件结构。控制是否可以找到丢失的操作系统的文件夹。就我而言,计算机的 BIOS 只能看到 Windows 启动选项,但我也有 Linux Mint 的 Grub 启动选项。
(不推荐)我的 Windows 启动选项正常工作,因此首先出于测试目的,我备份了 Microsoft 文件夹,其中包含一堆文件以及 Windows 的启动 efi 文件。( bootmgfw.efi
) 然后我将 ubuntu 文件夹重命名为 Microsoft,接下来我grubx64.efi
将bootmgfw.efi
. 重新启动后,不会加载 grub 菜单,而是启动到 Windows,但是,这次只能使用 grub 启动到 Windows。并且直接启动到 Windows 是不可能的。
sudo cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Run Code Online (Sandbox Code Playgroud)(推荐方式)只需在BIOS的启动选项中写入您希望其相关操作系统看到的efi文件的地址即可。就我而言,计算机 BIOS 的启动列表中缺少 Linux Mint。其efi文件的地址是/efi/ubuntu/grubx64.efi
相对于EFI分区的根目录的。然后我使用efibootmgr命令将其注册到 NVRAM 中。
efibootmgr -c -d /dev/sda -p 1 -l \\efi\\ubuntu\\grubx64.efi -L nameForBootOption
Run Code Online (Sandbox Code Playgroud)
在p 1
命令的一部分中,1 定义给定磁盘中 efi 分区的分区号。
nameForBootOption
是为启动选项指定的自定义名称
*注意填写正确的地址。当你在linux中挂载分区时。它将分区安装到根目录下的某个文件夹,将真实地址扩展为类似的内容/media/mint/CC1F-9708/EFI/ubuntu
,但我们只需要提供/EFI/ubuntu
一部分。
*Disks
程序是一个很棒的图形工具,默认位于 Linux Mint 的可启动闪存上。它可以用于检查和查找EFI分区,也可以用于在不使用任何mount或parted命令的情况下挂载EFI分区。您只需在菜单、首选项、磁盘中搜索它即可。
归档时间: |
|
查看次数: |
156817 次 |
最近记录: |