我最近一直在学习引导程序,并产生了一个奇怪的想法:是否可以直接在 Windows 上安装 GRUB2 来覆盖 Windows 的默认 MBR 和引导程序,以便以后如果我在同一磁盘上安装 Linux,则不必编辑 grub 配置文件来拯救 Windows 启动菜单?
此外,我正在使用 MBR 分区方案,因此最好将 GRUB2 安装在 BIOSBOOT 分区中。但我不知道如何在 Windows 中执行此操作。此外,新安装的 Linux 会覆盖现有的 BIOSBOOT 分区吗?也就是说,Linux 是否足够“智能”地检测到已经创建了 BIOSBOOT 分区以避免覆盖?
最后,从另一个角度陈述我的问题,我只是想知道我是否可以用稍后手动安装的 GRUB2 替换默认的 Windows 引导加载程序? Windows 会禁止这样做吗?
答案1
使用 grub-install 工具可以很容易地解决与 MBR 相关的问题。安装后,Windows 不会触及 MBR,除非您使用以下命令手动重新安装它:bootrec /FixMbr
每次运行 grub-install 时,GRUB 都会使用 BIOS BOOT。请注意,此分区是专门为 GRUB 引导加载程序发明的,因此如果存在,它将使用它。
GRUB2 依赖同一设备上包含 /grub 或 /boot/grub 的文件系统来获取其配置文件和模块。Grub 无法在第 2 阶段(加载模块之前)读取 NTFS(Windows)分区默认情况下因此,如果您想包含这些模块,它们不能是 Windows 分区的一部分。它们必须嵌入在 grub 的 core.img 中。
您可以使用该grub-mkimage
命令制作一个具有可加载 Windows 的模块和配置的 core.img。然后可以将 core.img 写入 bios 启动分区。