我在笔记本电脑上安装了 Ubuntu 17.04,它安装在一个超短的 USB 棒上,大多数时候它都放在原处。我本来打算保留 Windows 10(GPT 格式的驱动器)引导记录不变,而只是在 BIOS 中切换引导设备。
看起来我忘记在安装过程中指定这一点了,因此,当我插入 USB 记忆棒时我仍然可以启动 Windows,但是当我将其取出时,我只会收到 grub2 提示符。
据我所知,使用 Windows 工具重新创建 Windows 启动记录将需要一些我手边没有的救援/启动媒体,所以我想知道是否有方法可以从备份中恢复 Windows GPT 启动记录(如果 Ubuntu 确实在安装过程中创建了这样的东西)。
答案1
BIOS/CSM/传统模式和 EFI/UEFI 模式的启动方式截然不同。特别是,你几乎肯定会不是覆盖了所有 Windows 启动记录或文件。相反,您只是将 GRUB 设置为默认启动加载程序;但由于 GRUB 依赖于 USB 闪存驱动器上存储的文件,因此除非插入 USB 闪存驱动器,否则 GRUB 将无法正常工作。有几种方法可以解决此问题,包括(但不一定限于):
- 安装另一个启动管理器-- 一些非 GRUB 启动管理器不依赖于存储在EFI 系统分区 (ESP)。例如,我的rEFInd 启动管理器应该可以很好地为您服务。如果您安装 rEFInd 并将其设为默认启动程序,则每次启动时都会看到 rEFInd,但即使拔下 USB 闪存驱动器,您仍然可以启动 Windows。一个可能的复杂因素是安全启动;如果启用了安全启动,您需要在第一次启动时使用不友好的 MokManager 用户界面注册一个或两个安全启动密钥。请参阅rEFInd 安全启动文档有关详细信息。理论上,您可以使用 Windows 启动管理器作为默认启动程序;但我不知道如何配置它以链式加载到 GRUB。如果您想采用此选项,我建议您在 Windows 论坛上询问。
- 使用内置启动管理器-- 您的计算机可能带有内置的启动管理器,您可以使用它来绕过 GRUB 并启动 Windows。不过,具体如何使用它因计算机而异。通常,您必须在打开计算机时按下 Esc、Enter 或功能键;但按下哪个键因系统而异。您可以这样做只是为了启动 Windows,或者您可以更改默认值(通过
efibootmgr
Ubuntu 或简易UEFI在 Windows 中)来启动 Windows,然后仅当您想要启动 Windows 时才使用内置启动管理器。 - 移动
/boot
-- GRUB 配置文件位于/boot/grub
目录中,因此处理此问题的一种方法是在计算机的内部硬盘上创建一个小/boot
分区(~500-1000MB)。这样即使拔下 USB 驱动器,GRUB 也能正常工作。这在 Ubuntu 安装过程中最容易完成,因此如果您愿意重新安装,您可以尝试一下。您也可以在安装 Ubuntu 后执行此操作,但这需要移动文件,然后重新安装 GRUB。请参阅这个问题进一步了解这种可能性。 - 重新配置 GRUB-- 可以重新配置 GRUB 以使其不依赖 Linux
/boot
目录中的文件。不过,这是一个高级主题。本维基页面描述了这种高级 GRUB 配置。(请注意,该页面将自己描述为过时的,并引用了另一个页面;但新页面缺少此方法所需的详细信息。)请注意,如果您这样做,默认的 GRUB 配置脚本将不再保持grub.cfg
更新,因此您需要自己处理,这意味着您需要付出更多的持续维护工作。总的来说,我不建议您尝试这种方法;我提到它只是为了完整性。
注意不Windows 内可能需要重新配置,但可能存在一些例外: