AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1299998
Accepted
willy nuisance
willy nuisance
Asked: 2020-12-15 02:13:52 +0800 CST2020-12-15 02:13:52 +0800 CST 2020-12-15 02:13:52 +0800 CST

我的引导经理大乱

  • 772

我有一个非常复杂的配置。我正在尝试合成:

我有 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
dual-boot mbr grub-efi nvme windows-10
  • 2 2 个回答
  • 232 Views

2 个回答

  • Voted
  1. Best Answer
    willy nuisance
    2020-12-18T06:37:33+08:002020-12-18T06:37:33+08:00

    首先感谢大家为我指出正确的方式,这给了我很好的线索。经过大量阅读该主题后,我对该主题有了更好的理解。

    这是我如何进行的详细信息:

    在 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并重新安装 grub sudo grub-install

    现在,重新启动后,UEFI 条目不再混乱,但您只有一个条目:Ubnutu。这里没有 Windows,所以我必须为 Windows 重新创建 EFI 条目

    在我发现的很多指南中,都说要使用 Windows 启动修复工具,但是:

    1. 它对我不起作用(也许是因为 Grub?)
    2. 我不完全知道它的作用和方式......

    所以我手动做了:

    在 Windows10 安装媒体上启动 > 选择语言 > 修复计算机 > 高级选项 > 疑难解答 > 命令提示符

    使用 diskpart 我挂载并向 EFI 分区添加一个字母

    diskpart
    diskpart>list vol            (to display assigned letter to partitions and volume numbers)
    diskpart>sel vol 4           (volume number of the EFI partition)
    diskpart>assign letter=Z:    (or other available letter)
    diskpart>exit
    

    然后我使用 bcdboot 在 EFI 分区中创建 Windows 条目

    bcdboot D:\Windows /l fr-fr /s Z: /f UEFI                (D is the letter of the partition with the first Windows system to boot, here Win10-1)
    bcdboot E:\Windows /l fr-fr /s Z: /f UEFI /d /addlast    (E is the letter of the partition with the first Win10-2 system)
    bcdboot F:\Windows /l fr-fr /s Z: /f UEFI /d /addlast    (F is the letter of the partition with the first Win10-3 system)
    

    重新启动时,现在 UEFI 选择中有 2 个选择:Grub 或 Windows 启动管理器,但 grub 仍然不知道 Windows。最后,在 Ubuntu 上启动最后一次并执行sudo update-grub.

    这是启动时的实际行为:

    Boot 
    |_______Grub
            |______*Ubuntu > boots Ubuntu
            |______*Windows Boot manager on /dev/nvme0n1
                    |_______Windows Boot Manager GUI
                            |______*Win10-1 > boots Win10-1
                            |______*Win10-2 > boots Win10-2
                            |______*Win10-3 > boots Win10-3                       
    

    为了更清楚,我们可以使用 bcdedit 重命名 WBM 中的条目

    从任何 Windows 命令提示符:

    bcdedit (to list entries and not identifiers)
    bcdedit /set {identifier} description "My Custom Windows"
    

    现在非常干净。但我必须先通过 Grub,然后再通过 Windows 引导管理器 GUI 才能在任何 Windows 上引导。所以我继续玩!

    我确实在 Nvme1 上再次格式化了 EFI 分区,在 Nvme2 上创建了一个新分区,在 SSD1 上创建了另一个(FAT32 分区 100Mo 带有来自 Gparted 的“引导”标志)

    在 Nvme1 /boot/EFI 上安装 Grub。

    从 Windows10 安装媒体,与上述相同,挂载每 3 个 EFI 分区,并在每个分区上添加相关的 EFI 条目:

    bcdboot D:\Windows /l fr-fr /s Z: /f UEFI /d /addlast    (D is system Win10-1 and Z EFI on Nvme1)
    bcdboot E:\Windows /l fr-fr /s Y: /f UEFI /d /addlast    (E is system Win10-2 and Y EFI on Nvme2)
    bcdboot F:\Windows /l fr-fr /s X: /f UEFI /d /addlast    (F is system Win10-3 and X EFI on SSD1)
    

    update-grub重新启动后最终从 Ubuntu执行。现在这是行为:

    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
    

    此外,我现在可以从 UEFI 选择启动任何系统,如果我丢失了 Nvme1 磁盘,我仍然可以从其他磁盘启动

    希望这本小说对其他人有用

    • 1
  2. WaterOfDark
    2020-12-15T05:38:54+08:002020-12-15T05:38:54+08:00

    我遇到了类似的问题,我通过 linux-live 版本更新 grub-loader 解决了这个问题。但首先我建议让 Win-3 操作系统再次运行。对于您的 Win-3,我假设您已经以某种方式删除了引导标志。比恢复它最简单的方法是拔下所有其他“工作”操作系统,以便仅连接带有 win-3 的硬盘驱动器(SSD1),使用 Windows 恢复工具(如果正常启动不使用,请使用 Windows Live 系统启动修复工具,如果只连接了win-3驱动器)来修复引导标志。之后再次连接所有内容并更新 grub。

    在 Win-3 工作后,从 linux-live 系统更新 grub。你可以在这里找到一个很好的详细解释它是如何工作的。请务必选择正确的分区,因为您在同一硬盘上有两个操作系统。


    编辑:

    好吧,我猜这不是 EFI 特有的东西。我在这里找到了一些有用的信息,但它们是德语的。使用实时或已安装的系统更详细地检查情况 读取 NVRAM

    sudo apt-get install efibootmgr 
    ...
    sudo efibootmgr -v 
    Boot0002* Ubuntu    HD(1,800,32000,34911255-cfd8-43ce-a600-fb43636a9c2c)File(\EFI\trusty\shimx64.efi)
    

    Boot000X 只是增加数字并且 * 将其标记为活动,因此您应该至少获得 2 个带有星号的条目,或者如果还测试了普通磁盘,则可能有 4 个条目。

    您可以运行sudo dmidecode -t0 | grep -Ei "BIOS boot|UEFI"以查看您的 UEFI 是否支持 CSM(如果支持,它将支持 bios 和 UEFI)。

    任何问题都可能是,windows 检查 EFI-Bootloader 中的第一个 entrece 是否是 Windwos,如果不是,它将删除它并用它自己的引导标志替换。防止这种情况的建议是首先将其保留但禁用它。但我想这仅适用于 1 个windosOS。

    • 0

相关问题

  • 如何在 ubuntu 中挂载加密的 windows 分区?[关闭]

  • 如何使用 Debian 进行双引导?

  • 如何使用 Ubuntu 和 Windows XP 安装双启动配置?[关闭]

  • 如何让双启动 USB 驱动器在 Vista 中工作 [关闭]

  • 如何从双启动计算机访问加密的主文件夹?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve