Grub 在多个驱动器上?

Grub 在多个驱动器上?

我的笔记本电脑(华硕 ROG G752)有 2 个 SSD。

首先,我在较小且较快的 256GB(NVMe)上安装了 Windows(BIOS),
并使用较大的 512GB(SATA)来玩游戏和程序。

最近我得到了一个外部硬盘,我想尝试一下 Ubuntu :D,
所以把它安装在那里,想着我会开始更多地使用它并延长我的 SSD 的使用寿命。

出色地,现在我的 Windows 系统无法在没有外部驱动器的情况下启动,因为 grub 在那里

我显然不希望我的整个系统依赖于该驱动器。

我在网上搜索了一下,发现要么必须在主驱动器上安装 grub,要么使用 Windows 恢复光盘修复 MBR。
这两个答案都让我很困惑,因为我要么有两个 grub,这没有意义,要么如果我执行 Windows 修复操作,当我的硬盘连接时,我将失去启动 Ubuntu 的选项。

我是不是理解错了什么?

总结:我希望在未连接外部驱动器时能够在主 SSD 上启动 Windows,在连接外部驱动器时仍能启动 Ubuntu。我并不是完全的菜鸟,但我对从网上获得的信息不太有信心。任何帮助我都感激不尽!

答案1

grub 的安装分为两部分:资源文件和引导加载程序。 [关于非 UEFI 启动] 每个操作系统安装都有自己的资源文件(位于与您安装的操作系统相同的分区中),但引导加载程序始终安装在主引导记录上。实际上,稍后安装的引导加载程序将覆盖前者。从这个意义上讲,您一次只能拥有一个功能齐全的 grub。

所以,不要担心,你的某个 grub 无法运行。

事实上,您的 Windows 在不可移动磁盘上无法在 Linux 可移动磁盘的帮助下启动,这意味着您的引导加载程序有一个需要的部分位于 Linux 分区中,正如我所写的,有 2 个部分。

(...) 我要么有 2 个 grub,这没有意义,要么如果我执行 Windows 修复操作,当我的硬盘连接时,我将失去启动 Ubuntu 的选项。

不,只有一个可以正常工作。有 2 个部分的那个现在只有一个部分,因为 Linux 重写了您的 MBR。

在您的情况下,您首先让 Windows 在不可移动驱动器的 MBR 中安装其引导加载程序,然后安装 Linux 发行版,并且您可能没有使用“在 Windows 旁边安装 Linux”选项(双启动),所以剩下的唯一 (MBR) 引导加载程序就是 Linux,因为您没有明确指定在安装期间保留启动 Windows 的能力。

我有时在安装时遇到问题,将 MBR 安装在错误的分区中,我想这种情况确实会发生。

我在网上搜索了一下,发现我要么在主驱动器上安装 grub,要么使用 Windows 恢复光盘来修复 MBR。

由于您有 2 个磁盘,因此您可以有 2 个可运行的 grub,即 Windows 磁盘的 MBR 中的 Windows grub,以及可移动磁盘的 MBR 中的 Linux grub。

您可以使用实时 CD/USB(每个人都应该有一个来修复启动时发生的坏事,比我们想象的要频繁得多)。
一张包含任何发行版的 Live CD 和一根以太网电缆,然后下载启动修复程序
或启动修复磁盘:要下载这里或者这里

(对于无法从实时 CD 或 USB 启动的用户,显然他们必须更改 BIOS 中的启动顺序

例如,您可以使用 Rufus 或 Unetbootin 制作可启动磁盘。
教程:https://linuxhint.com/ubuntu_boot_repair_tutorial/

还有其他磁盘可以帮到你,比如租借靴(这个非常好,因为您可以使用 Windows 和 Linux 从同一个 ISO 修复系统),系统救援 CD, SuperGrub 磁盘雷斯卡图克斯Grub 定制器(不是现场 CD)等等...

当然,由于它是双启动,您可以使用 Windows 方法(我认为 Linux 方法更安全)。
这并不令人困惑,有几种方法可以做到这一点。您可以在 Linux 磁盘拔出的情况下使用 Windows MBR 恢复,然后,您将拥有一个功能齐全的 Windows MBR。在这种情况下,它不会是双启动,但您会告诉您想要从磁盘或可移动媒体启动,或者两者择一。

更多信息:https://help.ubuntu.com/community/Grub2/Installing#via_the_LiveCD_terminal

下次,为了避免此类问题,请遵循以下建议:

将 Ubuntu 安装到特定分区(“其他”):

*使用“其他”选项时,系统会提示您选择“用于引导加载程序安装的设备”。请选择:* BIOS 设置用于引导的磁盘(例如 /dev/sdX,而不是 /dev/sdXY)(建议正常使用)* 或将安装 Ubuntu(/boot,否则为 /)的分区(例如 /dev/sdXY,而不是 /dev/sdX)(仅当您想从另一个引导加载程序链式加载它时;如果有任何疑问,请不要选择此项)*

切勿选择其他分区!(这可能会破坏其他系统的启动,请参阅错误 #1049549)。

在具有多个驱动器和操作系统的系统上,用户可以通过将 GRUB 2 安装在另一个驱动器上来保留原始引导加载程序。为此:指定当前未用于引导系统的磁盘(例如 /dev/sdX,而不是 /dev/sdaXY)作为引导加载程序位置。安装完成后,更改引导顺序(通过 BIOS 设置),以便写入 GRUB 信息的磁盘是首先引导的磁盘。如果用户希望使用原始引导加载程序恢复引导,请将引导顺序改回原始驱动器。

GRUB 2 通常将其引导加载程序信息写入主引导记录之后、第一个分区之前的区域。非 Linux 操作系统上的某些软件也使用此嵌入区域,并通过覆盖双引导系统上的 GRUB 2 信息来破坏系统。GRUB 2 现在可以识别并避免此潜在问题。

引导加载程序信息不必安装到 MBR 的嵌入区域。它也可以完全绕过 MBR 并安装到特定分区。在执行此操作时,使用阻止列表指定 GRUB 2 文件的位置。此选项无法通过 Ubuntu GUI 安装使用,但可以在安装后通过终端使用。即使这样,这种方法也不如写入 MBR 那么可靠,GRUB 开发人员也不推荐使用。


使用 Windows 方法修复:
https://www.pagestart.com/repairwin7dualboot02.html

使用 Windows CD/USB:选择“立即安装”,然后选择“修复计算机”

系统恢复选项 >> 命令提示符 >> Diskpart

Tuto 在这里

bootrec.exe /fixmbr
bootrec.exe /fixboot
bootrec.exe /RebuildBcd

答案2

如果系统确实是 UEFI(所有较新的系统都是如此),并且 Windows 以 UEFI 启动模式安装,则这些说明将不适用。

安装时,如果是 BIOS,您应该使用 Something Else 安装选项并选择将 grub 安装到哪个驱动器的 MBR。您只希望它在外部驱动器上,然后将外部驱动器设置为 BIOS 驱动器启动顺序中的第一个,然后如果未找到,则应默认为驱动器启动顺序中的下一个。

要修复此问题,现在您需要将 grub 安装到外部驱动器的 MBR 中,将 Windows 引导加载程序安装到内部驱动器中。并将 BIOS 设置为首先引导外部驱动器。

您可以使用 Boot-Repair 将 Windows 类型的引导加载程序安装到 Windows 驱动器。不要使用 Boot-Repair 运行自动修复,因为这会将 grub 安装到任何地方。或者使用 Windows 修复盘并运行 Windows 修复程序 (fixMBR) 将 Windows 引导加载程序恢复到 MBR。

如果启动到 Ubuntu,您可以直接将 grub 安装到外部驱动器的 MBR。或者您可以使用 Boot-Repair 的高级选项并选择安装和驱动器来安装引导加载程序。

从工作系统(不是 liveCD/DVD/USB)重新安装 - 首先找到 Ubuntu 驱动器(例如驱动器 sdb,但使用您的驱动器而不是分区):

sudo parted -l

如果是“/dev/sdb”,则只需运行:

sudo grub-install /dev/sdb
sudo update-grub

https://help.ubuntu.com/community/Boot-Repair

最好还配备 Windows 修复盘,以便在需要时修复 Windows,因为 Boot-Repair 主要用于 Linux,只能对 Windows 进行一些小修复。

相关内容