是否可以从 exFAT 分区上的 UEFI 启动?
我一直读到它应该是 FAT32 而不是 NTFS,但是我能够从 exFAT 格式的 USB 启动 SteamOS - 特别是出现错误......但它似乎确实出错了。
我要求排除它是 exFAT 的事实来诊断。
--编辑这篇文章可能更适合作为维基文章,因为我确实走得相当远,所以它可能很明显是兼容的......但这可以作为参考,因为没有明显的参考。
答案1
这官方 UEFI 规范[警告:13 MiB PDF] 甚至没有说支持 FAT32 - 它定义了一个名为“EFI 系统分区”的文件系统,该文件系统“恰好”与 FAT32 兼容,并表示为其分配一个 GPT 分区类型C12A7328-F81F-11D2-BA4B-00A0C93EC93B
和一个 MBR 分区 ID 0xEF
(以前或多或少未使用过)。
从§12.3.1(文件系统格式):
可扩展固件接口支持的文件系统基于 FAT 文件系统。EFI 定义了一个明确记录且可测试的特定版本的 FAT。符合 EFI 规范及其相关参考文档是支持 EFI 所需实现的唯一 FAT 定义。为了将 EFI 文件系统与纯 FAT 区分开来,已定义了一种新的分区文件系统类型。
EFI 包括使用 FAT32 作为系统分区,以及使用 FAT12 或 FAT16 作为可移动媒体。FAT32 系统分区由 OSType 值标识,不同于用于标识以前版本的 FAT 的值。这种独特的分区类型将 EFI 定义的文件系统与普通的 FAT 文件系统区分开来。EFI 支持的文件系统包括对长文件名的支持。
EFI 文件系统的定义将由规范维护,不会随着时间的推移而演变,以处理操作系统文件系统驱动程序或文件系统实用程序中的错误或变体解释。未来对 FAT 的增强和兼容性增强不会自动包含在 EFI 文件系统中。EFI 文件系统是 EFI 规范以及 EFI 规范明确引用的其他规范所确定的目标。
因此,不仅没有提到 exFAT 是受支持的文件系统,而且还明确指出正式地仅支持 ESP 格式。
那么为什么你能够加载 SteamOS?有几个选项和可能性;大多数 EFI 固件实现在搜索与启动相关的文件之前不会明确检查 ESP 分区,相反,如果没有定义 ESP 分区,它们将搜索它们可以本地读取的所有文件系统(通常只是 FAT12/16/32)以查找 EFI 启动文件。但即使他们能够这样做,它从 exFAT 格式的 USB 加载的 EFI 应用程序也无法理解自己的文件系统……除非它也被硬编码以实现这一点。
另一个更可能的情况是,即使您使用的是 EFI 机器,并且您的 USB 是 exFAT 格式的,您最终还是以 BIOS/MBR 模式从 USB 启动。大多数 EFI 固件设置(又名“BIOS”)应用程序都会有启用“CSM”或“传统启动”模式的选项,以使它们能够作为第一优先级或在找不到 ESP 或 ESP 不包含有效启动目标的情况下作为后备,恢复到操作系统的传统 BIOS/MBR/引导扇区加载。您创建和使用的 USB 可能具有混合 MBR,其引导扇区包含有效的启动代码,可以从 USB 本身启动 SteamOS。
在 NeoSmart Technologies 的测试中,即使是严格只支持 EFI 且没有启用 CSM/传统启动选项的主板/固件,仍会默默使用最小 BIOS 垫片从外部设备加载。该代码仍然是必需的,因为从 CD 等加载在大多数情况下需要原生 EFI 启动的替代方案(尽管规范也对此有所适应)。
底线:需要更多信息。转储 USB 的前 512 或 1024 个字节将对这个问题提供很多信息,有关主板及其 EFI 固件和配置的信息也是如此。EFI 与 exFAT 不兼容,exFAT 与 FAT32 不向后兼容(不仅形式上不兼容,而且明确破坏了向后兼容性,因此不支持 exFAT 的平台不会弄乱和破坏您的 exFAT 数据),因此它并不像支持 FAT32 的固件“穿过”有错误的 exFAT 文件系统那么简单。
答案2
Mahmoud 的回答很好;不过我想补充几点:
- 目前还不清楚启动盘是如何创建的,但从一些评论来看,我怀疑你要么曾经
dd
复制过它(如dd if=image.iso of=/dev/sdc
),要么使用了 Unetbootin 或 Rufus 等实用程序来完成这项工作。无论哪种情况,你在磁盘上创建的任何分区和文件系统都可能被覆盖,因此磁盘的实际内容可能与你想法磁盘是。 - 区分 EFI 系统分区 (ESP) 和磁盘的其余部分至关重要。ESP 是一个 FAT 分区(正如 Mahmoud 所说,从技术上讲是另一个名称——但实际上它是由创建 FAT 文件系统的工具创建的,并由操作系统的 FAT 驱动程序操作),但这并不意味着磁盘的其余部分必须是 FAT。因此,您可以轻松拥有一个 FAT ESP 和另一个(可能更大的)exFAT 分区。引导加载程序在 ESP 上运行,它要么包含 exFAT 驱动程序,要么提供其他方式从 exFAT 分区加载内核或其他关键文件。这就是 Windows、OS X、Linux 和其他支持 EFI 的操作系统的启动方式。
答案3
2014 回答:是的,可以,但如果不先经过通常的 FAT ESP 就无法移植。
这鲁弗斯闪存驱动器写入器通过一种称为UEFI:NTFS。README 非常清楚地说明了它的作用:在 NTFS“ESP”之后创建一个微小的 FAT ESP。如果固件以某种方式支持 NTFS,它会EFI/BOOT/BOOT{arch}.efi
在第一个分区中看到,并且很乐意继续。否则,它会加载第二个 ESP,其中包含NTFS 或 exFAT 驱动程序EFI/BOOT/BOOT{arch}.efi
以及一个从第一个分区加载并运行的程序。
中的代码boot.c
仅搜索 NTFS 或 exFAT。可以将其更改为适用于其他东西,例如 hfsplus 或基于 GRUB2 的某些“minix”文件系统有效效率驱动程序也设置了。
(实际上我从未见过任何供应商使用非 FAT ESP,除了 Apple 在某些旧的 mactel 时代使用 HFS+。但他们仍然为其他目的提供 HfsPlus.efi 驱动程序。)
答案4
我知道这是一个老话题,但对于 UEFI 启动和 Windows 10 安装,我发现了一些可行的方法(如果您需要大容量驱动器和 UEFI 支持):
- 下载您想要的 Linux 版本(我使用了 Linux Mint)。
- 创建 Linux 版本的可启动 USB
- 启动Linux版本(无需安装)
- 将要格式化为 FAT(32) 的 USB 设备插入计算机
- 将 USB 格式化为 FAT(32)
- 将 Windows 10 ISO 文件复制到 USB 设备
- 以 UEFI 模式启动 Windows 10 设置
我确实使用了 Linux,因为 Windows 不允许我将大驱动器格式化为 FAT。