我有一个非常复杂的配置。我正在尝试合成:
我有 4 个磁盘(1 个 ssd、2 个 nvme 和 1 个 HDD)和 4 个操作系统(3 个 Win10 和 1 个 ubuntu):
- Nvme 1 (Win10-1 + Ubuntu 20.04) /dev/nvme0n1
- 虚拟机 2 (Win10-2) /dev/nvme1n1
- 硬盘 1(只是数据+交换)/dev/sda
- SSD 1 (Win10-3) /dev/sdb
电脑是 UEFI。
一开始我没有问题。Grub 显示了我的 4 个启动选项。
但是我不得不重新安装 Win10-1,然后我完全失去了我的 grub。所以我只能通过 Windows 启动管理器在 Win10-1 或 Win10-2 上启动。
我尝试在实时 ubuntu 上修复 Grub 引导,但成功减轻了...这里的实际行为:
Boot
|_______Grub
|______*Ubuntu > boots Ubuntu
|______*Windows Boot manager on /dev/nvme1n1
|_______Windows Boot Manager GUI
|______*Win10-1 > boots Win10-1
|______*Win10-2
|_______Grub
|______*Ubuntu > Grub rescue
|______*Windows Boot manager on /dev/nvme1n1 > boots Win10-2
所以这对我来说是一团糟,顺便说一句,我失去了在 Win10-3 上启动的能力......
我不知道如何在 MBR 中删除这个凌乱的启动配置并回滚到这个:
Boot
|_______Grub
|______*Ubuntu > boots Ubuntu
|______*Windows Boot manager on /dev/nvme0n1 > boots Win10-1
|______*Windows Boot manager on /dev/nvme1n1 > boots Win10-2
|______*Windows Boot manager on /dev/sdb > boots Win10-3
有没有一个神奇的工具来配置这个?
任何帮助/建议将不胜感激。
---编辑 1--- 感谢您的回答 WaterOfDark。
我已经经历了这个过程,但没有运气。
此外,Win3 没什么大不了的,因为我可以使用 EFI 选择来启动它。我在 Nvme1、Nvme2 和 SSD1 上也有 3 个 EFI 分区
也许问题出在那些分区上?也许我可以以某种方式重置 EFI 部分的内容,然后再次运行 update-grub?
我必须承认我对 EFI 的东西不是很放心。
---编辑2---
我确认 Windows 快速启动已禁用
---编辑3---
这是命令的结果:这是结果
willy@Ubuntu:~$ sudo efibootmgr
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,000A,0000,0008,0006,000B,0007
Boot0000* Windows Boot Manager
Boot0002* ubuntu
Boot0006* UEFI: SAMSUNG SSD 830 Series, Partition 2
Boot0007* UEFI: Sabrent Rocket 4.0 1TB, Partition 1
Boot0008* Windows Boot Manager
Boot000A* ubuntu
Boot000B* UEFI OS
willy@Ubuntu:~$ sudo dmidecode -t0 | grep -Ei "BIOS boot|UEFI"
BIOS boot specification is supported
UEFI is supported
首先感谢大家为我指出正确的方式,这给了我很好的线索。经过大量阅读该主题后,我对该主题有了更好的理解。
这是我如何进行的详细信息:
在 Ubuntu 中,使用 Gparted,我完全删除了 Nvme2 上的 EFI 分区,并在 Nvme1 上格式化了该分区。(带有引导标志)
然后在终端:
sudo gedit /etc/fstab
替换EFI分区的UID。它在格式化后改变。该行应如下所示UUID=1A2B-3C4D /boot/efi vfat defaults 0 1
,保存 fstab 然后挂载 EFI 分区sudo mount /boot/efi
并重新安装 grubsudo grub-install
现在,重新启动后,UEFI 条目不再混乱,但您只有一个条目:Ubnutu。这里没有 Windows,所以我必须为 Windows 重新创建 EFI 条目
在我发现的很多指南中,都说要使用 Windows 启动修复工具,但是:
所以我手动做了:
在 Windows10 安装媒体上启动 > 选择语言 > 修复计算机 > 高级选项 > 疑难解答 > 命令提示符
使用 diskpart 我挂载并向 EFI 分区添加一个字母
然后我使用 bcdboot 在 EFI 分区中创建 Windows 条目
重新启动时,现在 UEFI 选择中有 2 个选择:Grub 或 Windows 启动管理器,但 grub 仍然不知道 Windows。最后,在 Ubuntu 上启动最后一次并执行
sudo update-grub
.这是启动时的实际行为:
为了更清楚,我们可以使用 bcdedit 重命名 WBM 中的条目
从任何 Windows 命令提示符:
现在非常干净。但我必须先通过 Grub,然后再通过 Windows 引导管理器 GUI 才能在任何 Windows 上引导。所以我继续玩!
我确实在 Nvme1 上再次格式化了 EFI 分区,在 Nvme2 上创建了一个新分区,在 SSD1 上创建了另一个(FAT32 分区 100Mo 带有来自 Gparted 的“引导”标志)
在 Nvme1 /boot/EFI 上安装 Grub。
从 Windows10 安装媒体,与上述相同,挂载每 3 个 EFI 分区,并在每个分区上添加相关的 EFI 条目:
update-grub
重新启动后最终从 Ubuntu执行。现在这是行为:此外,我现在可以从 UEFI 选择启动任何系统,如果我丢失了 Nvme1 磁盘,我仍然可以从其他磁盘启动
希望这本小说对其他人有用
我遇到了类似的问题,我通过 linux-live 版本更新 grub-loader 解决了这个问题。但首先我建议让 Win-3 操作系统再次运行。对于您的 Win-3,我假设您已经以某种方式删除了引导标志。比恢复它最简单的方法是拔下所有其他“工作”操作系统,以便仅连接带有 win-3 的硬盘驱动器(SSD1),使用 Windows 恢复工具(如果正常启动不使用,请使用 Windows Live 系统启动修复工具,如果只连接了win-3驱动器)来修复引导标志。之后再次连接所有内容并更新 grub。
在 Win-3 工作后,从 linux-live 系统更新 grub。你可以在这里找到一个很好的详细解释它是如何工作的。请务必选择正确的分区,因为您在同一硬盘上有两个操作系统。
编辑:
好吧,我猜这不是 EFI 特有的东西。我在这里找到了一些有用的信息,但它们是德语的。使用实时或已安装的系统更详细地检查情况 读取 NVRAM
Boot000X 只是增加数字并且 * 将其标记为活动,因此您应该至少获得 2 个带有星号的条目,或者如果还测试了普通磁盘,则可能有 4 个条目。
您可以运行
sudo dmidecode -t0 | grep -Ei "BIOS boot|UEFI"
以查看您的 UEFI 是否支持 CSM(如果支持,它将支持 bios 和 UEFI)。任何问题都可能是,windows 检查 EFI-Bootloader 中的第一个 entrece 是否是 Windwos,如果不是,它将删除它并用它自己的引导标志替换。防止这种情况的建议是首先将其保留但禁用它。但我想这仅适用于 1 个windosOS。