这个问题肯定已经被问过无数次了,但我还没有找到真正的与 GRUB 相关的解决方案。
我需要在一台同时安装了 Windows 和 Linux (Fedora) 的机器上安装 GRUB。它必须始终正常工作,即使在更新后也是如此。
有大量的操作指南描述了如何先安装 Windows,然后再安装 Linux,这当然是最简单的方法。Windows 可以位于 /dev/sda1 上,Linux 只位于一个 /dev/sda2 分区(包括 /boot)(此示例中没有交换)。GRUB 安装程序将检测 Windows 并将其添加到菜单中。因此,GRUB 安装在 /dev/sda2 上。然后,在进行重大更新(可能是对该 Linux 进行全面升级)后,GRUB 菜单将重建,并且不会自动添加 Windows(是的,它应该是的,我也是这么想的)。在 Windows/Fedora/Debian 配置中也发生了类似的事情(不记得哪个操作系统消失了,但这并不重要)。这个 GRUB 并不独立于这两个系统。
所以我想创建一个小型启动分区 /dev/sda1,我将自己(手动)安装 GRUB,将 Windows 安装在 /dev/sda2 中,将 Linux 安装在 /dev/sda3 中(/dev/sda1 未安装在任何地方)。第一个 GRUB 要么加载 Windows,要么加载 Linux(我基本上会复制 Linux 系统的当前 GRUB 配置)。这样效果很好(无论如何,Windows 都不会自动从启动菜单中消失),但 Linux 条目会指向一个特定的 sda3/boot/vmlinuz-3... / initrd sda3/boot/initramfs-3... 内核文件,因此内核更新不会自动启动新内核(更糟糕的是,如果更新删除了旧内核,Linux 将根本无法启动,直到在第一个 GRUB 菜单中调整内核文件名)。
那么那些必须能够启动 Windows 的人如何解决这个问题呢?两个都操作系统将总是无论如何都可以启动(无需更改 /dev/sda1 中的启动配置)?