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
    • 最新
    • 标签
主页 / unix / 问题 / 775092
Accepted
eyoung100
eyoung100
Asked: 2024-04-24 01:58:24 +0800 CST2024-04-24 01:58:24 +0800 CST 2024-04-24 01:58:24 +0800 CST

在不断开已安装驱动器的情况下安装多个 EFI 分区

  • 772

请不要将此问题移交给超级用户。我的问题与 EFI 分区操作有关,这不是 Windows 固有的。

背景

我遇到了 UEFI 和操作系统版本的问题,我需要一些帮助。这绝不是我的 OEM 的广告,也不是操作系统的偏好,但我使用它们来对问题进行全面的描述。最近,我发现了Xidax,一家游戏系统的 OEM 构建商。除了游戏之外,我还使用他们为 Linux 和操作系统实验构建的系统。我曾经自己建造,但年龄和残疾严重限制了我的手力和耐心,这就是这个问题的开始。

问题

我的系统采用支持 UEFI、SecureBoot 等的 MSI 主板构建(相当新近构建)。我已将现有的 MS Windows UEFI 加载程序替换为rEFInd。这个 EFI 启动管理器允许我启动以下操作系统,所有操作系统都位于不同的驱动器上:

  1. Windows 11 M2 - 1TB(也是 EFI 分区所在的位置)
  2. Gentoo Linux
  3. FreeBSD 12 或 13(我删除了它,因为我已经很久没有接触或更新它了)

删除 #3 后,我现在有一个空驱动器(大小为 8TB),并决定尝试一些我从未做过的事情。我在空的 8TB 上安装了 Windows 11,希望将其“转换”为当前的AtlasOS。Windows 安装程序在我的 M2 驱动器上正确找到了 EFI 分区,并将条目添加到 Windows 加载程序 (WinLoad.efi)。我现在有一个基于winloader(白色和蓝色屏幕)的启动菜单,其中有 2 个适用于 Widows 11 的选项。

Linux 的并行版本

暂时忘记了这是 Windows,并记住我无法断开第一次安装来欺骗第二次安装在第二个驱动器上构建 EFI 分区(由于残疾),并使用以下场景:

  1. 将上面的 Word Windows 替换为 Linux 发行版
    • 为了这个例子,我将选择 Ubuntu
  2. 将 Ubuntugrub版本 X 副本 1 安装到唯一的 EFI 分区
  3. 将 Ubuntugrub版本 X 副本 2 安装到唯一的 EFI 分区

现在意识到我已经grub用第二个安装破坏了第一个安装,因为 EFI 分区中只有一个ubuntu文件夹,我陷入困境,因为我想独立访问两个副本。有关我需要以不同方式实现的修复类型的示例,请参阅In rEFInd, need 2 different OS icon for 2instance of same OS (Ubuntu-MATE)。

为了对 Windows/rEFInd 执行此操作,我从以下内容开始:从第三方启动管理器启动多个 Windows 安装。如果您查看“7 进入 Windows...”步骤,这正是我在修复此问题之前必须执行的操作才能进入任一版本。

在使用在双启动 Windows 10 计算机上安装 rEFInd中的第二个答案之前,我尝试仅使用 1 个 EFI 分区来执行此操作(看看为什么我现在不希望它移动?)。如果可以的话,我不想在我的驱动器上到处都是 EFI 分区。

尝试修复

  1. 从 Windows 命令提示符发出mountvol b: /s.
    • 那行得通,我第一次安装时就这样做了rEFInd,没有访问我的 Gentoo 安装
  2. mkdir b:\EFI\Win10和mkdir b:\EFI\AtlasOS。
    • 再次工作,但该死的他们是空的,我肯定不想搞砸我的 EFI 分区。
  3. 第一的xcopy /s b:\EFI\Microsoft\Boot b:\EFI\win10
    • 好吧,拍摄失败了Sharing Violation。什么?!?!等等,我不是以管理员身份运行提示吗,并且我的帐户不是在管理员组中吗...正在检查...是的哦等等,微软认为我很愚蠢,因为想要在我的计算机上手动更改 EFI自己的。但是等等,我可以在我的 Gentoo 安装中编辑它:
  4. 重新启动进入 Gentoo
  5. 已安装boot
  6. 打开是gparted因为我记不住/devEFI 分区的名称
  7. Mount将 EFI 分区编辑为/boot/efi
  8. Cd编为/boot/efi/EFI/Microsoft/Boot
  9. 已发布cp -xa . /boot/EFI/Win10且与 AtlasOS 相同
  10. 重新安装,grub因为我必须直接从rEFInd.

现在我终于到了更改 BCD 的步骤,回到 Windows。那个时候已经是昨晚12点30分了,我需要睡觉,所以我决定来这里寻求建议/帮助。

问题

正如我所说,我宁愿有 1 个 EFI 分区,所以我想通过询问以下问题来稍微修改该修复:

  1. /boot/efi/EFI/{Win10,AltlasOS}为了顺利启动, 需要具备哪些准系统要素?
    • cp -xa事实上确实复制了,但是当我重新启动以在 BCD 上启动时,我注意到菜单xcopy上列出了各种文件等。rEFInd当可能有数百个时,我不想将它们全部隐藏。
  2. 有没有比我选择的方法更简单的方法来拆分条目?
  3. 以后如何对待EFI分区的更新,即如果Windows Update决定将更新推送到EFI/BCD,是否需要阅读手动添加?
windows
  • 1 1 个回答
  • 32 Views

1 个回答

  • Voted
  1. Best Answer
    eyoung100
    2024-05-01T06:33:30+08:002024-05-01T06:33:30+08:00

    我提供我在这里使用的方法,以避免我给可能经过此页面的其他读者带来的麻烦。

    我选择的解决方案

    经过近两周(包括周末)的努力,发现:

    问题是第三方引导加载程序通常根据 EFI 目录中的文件夹创建菜单项。因为 Windows 只有一个文件夹,所以只会出现一个菜单项。诀窍是为 Windows 创建两个单独的文件夹 - 每个文件夹启动一个特定版本。

    以及其后的注释:

    请注意,所有这些仅适用于 Windows 的第二次安装找到原始 ESP 并更新它的情况。如果您在安装第二个版本的 Windows 时断开原始 ESP 驱动器的连接,它将在安装驱动器上创建一个新的 ESP,并且当您重新连接原始驱动器时,启动管理器应该会找到这两个驱动器。在这种情况下,您将自动获得两个菜单项。

    我决定使用Sachithm 的答案中概述的方法的变体,尽管这不是我的初衷。遗憾的是他没有更多的答案,因为这个答案是彻底且易于理解的。我将按顺序列出我的方法以及随后的注意事项部分。

    1. 删除所有当前分区,并在下面第 2 项中使用的现在为空的驱动器上创建一个空的 GPT 分区表。
    2. 安装一个空 HDD/SSD 并创建 2 个分区
      • 在本例中,一个分区是 FAT32,另一个分区是 NTFS,但该方法适用于 2 个相同的 Ubuntu,例如 Debian/Arch 等
    3. 标记分区
      • 这一点很重要!正确标记 FAT32 EFI 分区和新操作系统分区将有助于防止操作系统安装程序中的用户错误。防白痴翻译:标记您的驱动器/分区,以防止格式化您想要保留的安装。
    4. 可选但强烈推荐:当使用相同的文件系统类型进行并行安装时,相互隐藏安装。请参阅注意事项。
    5. 如果您在步骤 2 中没有创建 2 个分区,请使用 GParted 等分区软件调整分区大小以创建空间。查看注意事项
    6. 使用我链接的答案中概述的步骤,但跳过涉及shrink. 这只是我个人的观点:我从来不信任基于 Microsoft 的工具来管理分区操作,而不会以某种方式破坏分区本身内的数据。

    注意事项

    我将把这些问题列为问题,然后是原因:

    1. RE: 4 - 隐藏分区
      • 实际上,我必须执行上述步骤两次。这可能不会像 Windows 那样严重影响并行 Linux 安装,但由于 Microsoft 在我的第一次安装尝试期间实施了安全性,其中我的安装没有隐藏,我从 Windows 11 打开 AtlasOS 安装后丢失了它,由于分配 GUID 的帐户不能混合的方式
        • 批准查看新安装的 UAC 请求后,您可以使用旧安装中的管理员 GUID 覆盖新的管理员 GUID。
        • 请注意,新安装将启动,但涉及安装或更新的所有内容都将被破坏
    2. 回复:5 - 创建分区。
      • 由于我在安装之前无法断开驱动器电缆,因此 Windows Installer 第一次使用了整个分区(我错误地认为安装程序会在不干预的情况下创建第二个 EFI 分区,这就是我发布此问题的原因。
        • 我在这里写下这些只是为了让读者知道不仅仅是喝一杯咖啡。使用 Netboot.xyz 和 GParted 回收 200MB 用作 8 TB 驱动器上的 EFI 分区需要 37 到 40 小时
    • 0

相关问题

  • Kali Linux 已安装但未显示在引导管理器中

  • 无法运行 .exe 文件

  • 需要 SSH 在 Cygwin 上中断的 Git 功能

  • 如何为 plink.exe 设置环境变量?

  • 在 Kali Linux 中的 Windows 7 分区上安装 grub

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve