我已经阅读了一些答案和指南,包括:
- 如何在预装了 UEFI 的 Windows 的同时安装 Ubuntu?
- Ubuntu wiki 上有关 UEFI 的帮助页面
- 维基百科关于 UEFI 的页面
- 如何创建仅 UEFI 可启动的 USB 实时媒体?
我在一台 PC 上安装了预先安装的 Windows 10 (x64)。主板附带 3 类 UEFI 固件(不支持 CSM 启动)。我已禁用安全启动以进行故障排除。我的分区如下:
Partition ### Type Size Offset
------------- ---------------- ------- -------
Partition 1 System 101 MB 1024 KB
Partition 2 Reserved 16 MB 102 MB
Partition 3 Primary 473 GB 118 MB
Partition 4 Primary 2052 MB 473 GB
Partition 5 Recovery 1794 MB 475 GB
我的理解UEFI 固件搜索 EFI 系统分区(分区 1)以查找匹配的文件:
<EFI_SYSTEM_PARTITION>/EFI/BOOT/<MACHINE_TYPE_SHORT_NAME.EFI>
。然后固件将“控制权移交给”固件中启动优先级最高的启动管理器(案例 1)/启动加载程序(案例 2)。案例 1 将“加载其他启动加载程序”,而案例 2 将“加载内核”,从而结束启动过程的早期部分并启动操作系统。
根据输出
bcdedit /enum
Windows 启动经理位于分区 1 上,path=/EFI/Microsoft/Boot/bootmgfw.efi
这对我来说很有意义。Windows 启动装载机在分区 3 上找到path=\Windows\System32\winload.efi
。
这将是可以的,除了在 UEFI 固件中的启动优先级下,Windows 启动经理在分区 1 上执行同样的操作file name
,这听起来是对的,但是反而Windows 启动装载机UEFI: kX650znv512GP3 NVMe Toshiba SSD
,我在分区 3 上有第二个列表,其中file name: /EFI/Microsoft/Boot/bootmgfw.efi
。将后者设置为第一启动优先级后,没有操作系统加载,并且我得到一个屏幕,提示缺少 BCD 文件。此外,为什么分区 3 也有/EFI/Boot/bootx64.efi /EFI/Microsoft/Boot/BootMgFw.efi /Boot/BCD /Boot/boot.sdi /Boot/bootfix.bin
?
我的问题是:
- 为什么我在 EFI 系统分区(分区 1)之外有几个启动文件?
- 为什么我的固件列出的文件似乎不是可启动文件(
UEFI: kX650znv512GP3 NVMe Toshiba SSD
在分区 3 上file name: /EFI/Microsoft/Boot/bootmgfw.efi
)?
当我安装另一个引导时经理到分区 1(GRUB2 或 rEFInd),我希望能够在 Ubuntu 和我当前安装的 Windows 10 之间进行选择。(如果我错了请纠正我,但我不认为我需要 Windows 启动管理器,因为它所做的只是启动 winload.efi;rEFInd 或 GRUB2 应该可以完成这项任务)。rEFInd 会自动检测 Windows 10 吗,还是我必须使用 Windows 10 启动加载程序 efi 文件手动编辑它(我目前不知道会是哪一个,因为分区 3 上有很多)?
这网站说 Windows 启动管理器(我假设/EFI/Microsoft/Boot/bootmgfw.efi
在分区 1 上)已启动C:\Windows\System32\Boot\winload.efi
。
答案1
因为我终于让所有事情都正常运转了,所以我只想回答我自己的问题,这可能会帮助其他有类似问题或疑问的人。
问题 1:
似乎efi
重要的文件(默认情况下)位于您的 EFI 系统分区(分区 1)上,通常在固件中显示(在 下FS0
),如/EFI/Microsoft/Boot/bootmgfw.efi
和/EFI/Boot/bootx64.efi
。bootx64.efi
似乎只是一个引导加载程序而 bootmgfw.efi 启动Windows 启动管理器efi
。如果你只安装了 1 个操作系统(Windows),那么你选择从哪个文件启动就无关紧要了,因为Windows 启动管理器如果只检测到 1 个操作系统,则菜单将不会出现。
问题2:
说实话,我还是不明白为什么/EFI/Microsoft/Boot/bootmgfw.efi
如果我使用实际位于(分区 1)上的功能文件,我的固件总是会将(分区 3)添加到启动列表中bootmgfw.efi
。我也不知道为什么非功能efi
文件会在我的 C: 驱动器(分区 3)上。
问题 3:
就我而言,检测到了硬盘上的rEFInd
每个文件,但无法启动 Windows。我不知道这是为什么。此外,在尝试启动其中一个文件时,屏幕闪烁,计算机重新启动,当我查看启动顺序(在 UEFI 固件中)时,Windows 启动管理器再次位于首位。从那时起,即使我将 rEFInd 重新放回顺序中的第一位,它也无法启动。它只会导致计算机重新启动(我并不真正关心这一点,因为我刚刚安装了 GRUB,然后除了 rEFInd 之外,一切都正常)。efi
efi
tldr;有时会有多余的启动文件,Windows 10 启动管理器可能会杀死 rEFInd。这是在戴尔“BIOS”固件 1.2.2 上。