我目前运行的是 Ubuntu 作为我的操作系统,但我想安装 Windows 作为我的辅助操作系统,以便玩一些我错过的游戏。我的 256gb SSD 上安装了 Ubuntu,还有一个 2tb HDD,我想知道我是否可以在不破坏我当前的操作系统或加载程序(我认为是 grub)的情况下将 Windows 10 安装到该驱动器上。我没有找到任何关于此的文章(可能是因为我搜索错了。我不知道),所以如果有人可以给我一篇文章的链接或直接在评论中告诉我,我将不胜感激。提前谢谢,抱歉我的英语不好,我是芬兰人。
答案1
在任何具有多个磁盘的系统上安装 Windows 10 时的当前建议似乎是暂时断开除您计划安装 Windows 的磁盘之外的所有磁盘,并仅在安装完成后重新连接它们。
这是因为 Windows 的现代版本将使用多个分区,尽管安装程序会询问 Windows C: 驱动器使用哪个磁盘/分区,但它不一定对其他分区使用相同的磁盘(并且不会专门询问其他分区)。断开其他磁盘的连接将消除不可预测性。安装完成后,您应该在 UEFI/BIOS 设置中检查启动顺序,并根据需要进行调整。
在 Linux 中运行sudo update-grub
可能足以让 Ubuntu 检测到 Windows 的存在并将其添加为 GRUB 中的菜单项。
如果使用 UEFI 启动方案
如果您的系统使用 UEFI,Windows 安装程序将在系统 NVRAM 中注册一个新的引导加载程序设置,通常Windows Boot Manager
将其命名为引导顺序中的第一个。如果您的系统固件自动删除任何引用不存在磁盘的引导条目,则断开 Ubuntu 系统磁盘的连接将导致从系统 NVRAM 中删除它的引导加载程序注册。
在将第二个操作系统安装到当前以 UEFI 模式启动 Linux 的双启动系统之前,您应该熟悉该efibootmgr
命令,记录 Linux 使用的当前 UEFI 引导加载程序条目(运行efibootmgr -v
并保存输出!),并确保您有一个实时 Linux 媒体,或者一个可用于在救援模式下启动系统的 Linux 安装媒体,在 UEFI 模式下。这样,如果您的系统固件在 Linux 系统磁盘断开连接以进行 Windows 安装时删除了 Ubuntu 的引导加载程序注册,您可以通过从外部媒体启动并使用efibootmgr
恢复引导注册轻松恢复它。所需的命令类似于以下内容:
efibootmgr -c -d /dev/sda -L "Ubuntu Linux" -l \\EFI\\Ubuntu\\grubx64.efi
(NVRAM 中的引导加载程序注册基于 GPT 分区 UUID,因此,如果从外部媒体启动时未使用相同的设备名称检测到您的 Linux 系统磁盘,则不会出现问题。只需告知efibootmgr
包含您的 UEFI 引导加载程序的设备是什么目前被称为,它就能正确地完成工作。)
但那是最糟糕的情况。在最好的情况下,固件不会自动删除启动项,在安装 Windows 并重新连接另一个磁盘后,您唯一需要做的就是访问固件设置(“BIOS 设置”)并将“Ubuntu”启动项翻转回第一优先级插槽。
答案2
首先使用 ESP 在单独的驱动器上安装 Windows(如果您的系统有 UEFI 固件),然后在 grub 中添加一个条目以链接加载 Windows 的 BOOTMGR efi 文件
安装带有 ESP 的 Windows 后,在 grub 提示符下执行以下操作:
ls #它将返回一些驱动器,例如 (hd0) (hd0,gpt1) (hd0,gpt2) (hd1) (hd2) (hd2,gpt1) (hd2,gpt2)
现在 (hdx,gpt2) 可能是 Windows 的 ESP,让我们假设它的 (hd2,gpt2)
在 Linux 中写入 /etc/default/grub.d/40_custom 文件
菜单项“Windows 启动”{设置 root=(hd2,gpt2) chainloader /EFI/Microsoft/Boot/bootmgfw.efi}
并保存文件然后执行
sudo grub-mkconfig -o /boot/grub/grub.cfg 重新启动,你应该会看到一个“Windows Boot”条目