9

Is it possible to boot from UEFI on an exFAT partition?

I've been reading that it should be FAT32 and not NTFS, however I was able to boot SteamOS from an exFAT formatted USB - notably with errors... but it did seem to error.

I ask to exclude the fact it was exFAT for my diagnosis.

--EDIT This post maybe better of as a wiki post seeing as I did get reasonably far, so it's probably pretty obvious it is compatible... but this could act as a reference as there isn't an obvious reference for this.

13

The official UEFI spec [warning: 13 MiB PDF] doesn't even say that FAT32 is supported - it defines a filesystem called "EFI System Partition" that "happens" to be compatible with FAT32 and says to assign it a GPT partition type of C12A7328-F81F-11D2-BA4B-00A0C93EC93B and an MBR partition ID of 0xEF (previously more or less unused).

From §12.3.1 (File System Format):

The file system supported by the Extensible Firmware Interface is based on the FAT file system. EFI defines a specific version of FAT that is explicitly documented and testable. Conformance to the EFI specification and its associate reference documents is the only definition of FAT that needs to be implemented to support EFI. To differentiate the EFI file system from pure FAT, a new partition file system type has been defined.

EFI encompasses the use of FAT32 for a system partition, and FAT12 or FAT16 for removable media. The FAT32 system partition is identified by an OSType value other than that used to identify previous versions of FAT. This unique partition type distinguishes an EFI defined file system from a normal FAT file system. The file system supported by EFI includes support for long file names.

The definition of the EFI file system will be maintained by specification and will not evolve over time to deal with errata or variant interpretations in OS file system drivers or file system utilities. Future enhancements and compatibility enhancements to FAT will not be automatically included in EFI file systems. The EFI file system is a target that is fixed by the EFI specification, and other specifications explicitly referenced by the EFI specification.

So not only is exFAT not mentioned as a supported filesystem, but it is also made clear that formally only the ESP format is supported.

So why were you able to load SteamOS? There are a few options and possibilities; most EFI firmware implementations don't explicitly check for the ESP partition before searching for boot-related files, rather if no ESP partition is defined they will search all filesystem they can natively read (which is normally just FAT12/16/32) for the EFI boot files. But even if they were able to, the EFI application it would load from the exFAT-formatted USB wouldn't be able to understand its own filesystem... unless it was hardcoded to pull that off too.

Another, more likely, possibility is that even though you are on an EFI machine and your USB is exFAT formatted, you ended up booting from the USB in BIOS/MBR mode. Most EFI firmware settings (aka "BIOS") applications will have the option of enabling "CSM" or "legacy boot" mode to enable them to fall back to traditional BIOS/MBR/bootsector loading of of operating systems either as a first priority or as a fallback in the event that no ESP could be found or the ESP did not contain valid boot targets. The USB you created and used likely has a hybrid MBR with a bootsector containing valid boot code to boot SteamOS from the USB itself.

In our testing at NeoSmart Technologies, even motherboards/firmwares that are strictly EFI-only without an option to enable CSM/legacy boot will still silently use a minimal BIOS shim to load from external devices. That code is still required since loading from a CD, etc. requires alternatives to native EFI boot in most cases (even though the spec has accommodations for that as well).

Bottom line: more information is needed. A dump of the first 512 or 1024 bytes of the USB would shed a lot of light on the matter, as would information about your motherboard and its EFI firmware and configuration. EFI isn't compatible with exFAT and exFAT isn't backwards-compatible with FAT32 (not only is it not formally compatible, it explicitly breaks backward compatibility so platforms that are not exFAT-aware don't munge and mangle your exFAT data), so it's not as simple as a FAT32-aware firmware "making its way" through an exFAT filesystem with errors.

| improve this answer | |
  • Very insightful thanks, it was a 64GB USB stick and taking the easy - give it a shot - route first of all I simply formatted to exFAT and copied the SteamOS directory over. Interestingly after receiving errors that it couldn't partition during the install and putting back in the Win10 machine I noticed EFI partitions had been created on the USB key. – Alex KeySmith Jan 12 '16 at 21:47
  • Regarding the question of the motherboard, EFI firmware etc, that's an interesting one I've taken on the bold (perhaps silly) mission of attempting to get SteamOS working on an old Dell 1U R410. I explicitly turned on UEFI mode, interestingly compared to a consumer board there weren't many BIOS options to tweak. It does however appear to be a "traditional BIOS" (an overloaded term I'm sure), perhaps with UEFI boot capability (I'm kinda marking up terminology here as a person who hasn't dabbled with hardware for a while). – Alex KeySmith Jan 12 '16 at 21:51
  • For reference my particular problem (or the theory so far), is that SteamOS's auto install doesn't detect the SAS controller (non typical for a gamer PC) and oddly attempts to install itself on the boot / install media. However that's a different subject matter. Thanks again for the info on UEFI and file systems. – Alex KeySmith Jan 12 '16 at 22:22
2

Mahmoud's answer is good; however, I want to add a couple of points:

  • It's not clear how the boot disk was created, but from some of the comments, I suspect you either used dd to copy it over (as in, dd if=image.iso of=/dev/sdc) or used a utility like Unetbootin or Rufus to do the job. In either case, whatever partitions and filesystems you created on the disk might have been overwritten, so what the disk actually was may have had no relation to what you thought the disk was.
  • Distinguishing between the EFI System Partition (ESP) and the rest of the disk is critical. The ESP is a FAT partition (technically by another name, as Mahmoud says -- but in practice it's created by tools to create FAT filesystems and manipulated by OSes' FAT drivers), but that doesn't mean the rest of the disk must be FAT. Thus, you could easily have a FAT ESP and another (perhaps larger) exFAT partition. The boot loader goes on the ESP, and it would either contain an exFAT driver or provide some other way to load a kernel or other critical files from the exFAT partition. That's how Windows, OS X, Linux, and other EFI-capable OSes boot.
| improve this answer | |
  • Hi Rhod thanks for the info, the usb key was created simply by formatting to exFat and copying the files over. The partitions observed afterwards (see the comment towards the bottom of Mahmound's answer unfortunately was SteamOS's odd default of attempting to write to it's installation media!). – Alex KeySmith Jan 13 '16 at 15:57
2

2014 Answer: Yes, you can, but not portably without going through a usual FAT ESP first.

The Rufus flash drive writer supports UEFI-booting from NTFS or exFAT drives by a method called UEFI:NTFS. The README is quite clear about what it does: a tiny FAT ESP is created after the NTFS "ESP". If the firmware somehow supports NTFS, it sees the EFI/BOOT/BOOT{arch}.efi in the first partition and it's happy to go. Otherwise it loads the second ESP, which contains an NTFS or exFAT driver and a program that loads it and runs the EFI/BOOT/BOOT{arch}.efi from the first partition.

The code in boot.c only searches for NTFS or exFAT. It can be changed to work for other things like hfsplus or some "minix" fs available from the GRUB2-based efifs driver set too.


(I have actually never seen any vendors that use a non-FAT ESP, save for Apple which used HFS+ in some old mactel times. They still ship a HfsPlus.efi driver for some other purposes though.)

| improve this answer | |
  • 2
    Rufus author here. I feel I need to add that this still requires the bootloaders on the NTFS or exFAT partition to be NTFS or exFAT aware, which is not always the case. For instance, whereas recent versions of Windows can boot from exFAT, this is not true of Windows 7, so, even if you manage to launch the Windows 7 EFI bootloader from exFAT, the boot process will fail as it attempts to look for additional files. So you can't really use any file system driver you please. The file system must also be supported by the boot process, which isn't always a given. – Akeo Mar 14 at 20:39
0

I know this is a old thread, but for UEFI boot and Windows 10 installation I have found something that works (if you need large drives and UEFI support):

  1. Download a Linux-version that you would like (I used Linux Mint).
  2. Create a Bootable USB with the Linux-version
  3. Boot the Linux version (no need to install)
  4. Insert the USB-device you would like to format to FAT(32) into the computer
  5. Format the USB to FAT(32)
  6. Copy the Windows 10 ISO-files to the USB device
  7. Boot Windows 10 setup in UEFI mode

I did use Linux as Windows will not allow me to format large drives to FAT.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.