tum*_*tya 4 bootloader multi-boot ubuntu uefi windows-8
所以,我有一台带有 Windows 8 OEM 副本的笔记本电脑,显然安装在带有 GPT 分区的 UEFI 配置中。不久前,我在它旁边安装了 Ubuntu 13.xx(最新的),幸运的是 GRUB 检测到了 Windows,直到现在一切都很好。
所以昨天,我更新到了 Windows 8.1,它显然重写了引导加载程序,很自然地我无法引导到 Ubuntu。它直接带我进入 Windows。
如何修复 GRUB?大多数帮助页面/文章都讨论了 MBR 分区,这与 UEFI+GPT AFAIK 完全不同。确实谈论 UEFI 的文章是关于在安装 linux 后修复不可引导的 Windows 安装,这不是我的情况。
任何尝试和测试过的方法来重新启动 Ubuntu?
PS:在你推荐之前,不;如果 Windows 安装了 UEFI,EasyBCD 或类似工具无法将 linux 添加到 Windows 引导加载程序。
正如 MariusMatutiae 所建议的那样,使用 Boot Repair 可能会起作用;然而,该程序有时会做得比明智的多,所以我宁愿避免它。至少有三种不太激进的解决方案:
解决方案 1:使用固件
许多 EFI 提供了一个内置的引导管理器,使您可以调整引导顺序。您的 Ubuntu/GRUB 条目可能仍然存在,因此您需要做的就是使用固件调整引导顺序。这种方法的问题在于,EFI 设置实用程序差异很大,无法提供普遍适用的说明来说明如何执行此操作。但是,如果您的固件支持此功能,那么这可能是最简单的方法——一旦您弄清楚如何使用该选项!
解决方案 2:bcdedit在 Windows 中使用
Windowsbcdedit工具可以将非 Windows 引导加载程序添加到引导列表中。诀窍是弄清楚文件是什么。你可以这样做:
bcdedit其中一些无法正常工作。)mountvol S: /S以将 ESP 挂载为S:. (S:如果您愿意,可以更改为其他内容。)S:以找到您的 Ubuntu 引导加载程序。它可能是S:\EFI\ubuntu\grubx64.efi或S:\ubuntu\shimx64.efi。如果看到后者,使用它应该是安全的,并且可能需要使用它——shim 是 Ubuntu 处理安全启动 (SB) 的方式,但在非 SB 计算机上,它几乎没有影响。如果Secure Boot是inactive的,那么shim可能安装也可能没有安装,可能需要grubx64.efi直接参考。bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi,更改shimx64.efi为grubx64.efiifshimx64.efi不存在。如果是其他东西,则更改路径,这是不太可能的。bcdedit /set {bootmgr} description "Ubuntu"以设置出现在 EFI 自己的引导管理器列表中的名称。更改Ubuntu到任何你喜欢的。如果您已经知道引导加载程序的文件名,则可以跳过步骤 #3 和 #4。(bcdedit这种方式使用不需要安装ESP 。)
这种方法的优点是它可以防止 Windows 弄乱引导顺序——有时 Windows 会尝试不经意地调整引导顺序。不过,如果/当您升级到 Windows 8.1 之后的任何版本时,我不知道这是否会防止重复出现此问题。
解决方案 3:引导至 Linux 并使用 efibootmgr
您可能可以使用固件自己的启动管理器启动到 Linux,您可以在大多数计算机上通过在启动时按 Esc 或功能键来访问它,尽管哪个键因一台计算机而异。或者,如果您的不足,您可以使用USB 闪存驱动器或 CD-R 上的rEFInd作为启动管理器。您也可以使用 Linux live CD 或紧急磁盘启动,但请确保以 EFI 模式启动——BIOS 模式启动是不够的。进入 Linux 后,您可以使用以下efibootmgr命令调整引导顺序:
sudo efibootmgr -v以获取引导程序列表。一种用于 Linux,将启动 shim 或 GRUB。请注意BootOrder列表。有可能 Windows 条目现在是第一个,而 Ubuntu 条目在列表中的后面。有些条目可能令人困惑。忽略它们;专注于查找 Ubuntu 条目并识别其编号(Boot####在行首的条目中)。sudo efibootmgr -o {list},改变{list}到以逗号分隔的引导号码的列表,如sudo efibootmgr -o 5,0如果Boot0005是Ubuntu和Boot0000Windows系统使用。如果您愿意,可以添加更多条目,但第一个是最重要的,因为它将首先启动。如果一个Ubuntu项不不存在,你可以创建一个有efibootmgr,如:
efibootmgr -c -d /dev/sda -p 1 -l '\EFI\ubuntu\shimx64.efi' -L "Ubuntu"
Run Code Online (Sandbox Code Playgroud)
更改-d /dev/sda为指向整个磁盘设备并-c 1指定分区号。(事实上,/dev/sda和1是默认值,因此只有当您的 ESP 不是 时,您才真正需要这些/dev/sda1。)
| 归档时间: |
|
| 查看次数: |
19030 次 |
| 最近记录: |