exFAT
What is it?
exFAT is the filesystem on most USB drives larger than 32 GB and on every SDXC card, because the SD Association requires it there and Windows formats large removable drives with it by default. Impossible OS has no exFAT driver yet: an exFAT partition is not recognised and does not get a drive letter. This roadmap writes a clean-room read-write driver from Microsoft's published specification, in twelve sections, none of them started.
How does it work?
Today. At boot, probe_filesystem() in partition.c checks each partition for IXFS, NTFS, FAT32 and ext2, in that order. None of those checks matches an exFAT boot sector: the NTFS check looks for the NTFS OEM name, and the FAT32 check needs the classic BIOS parameter block, which exFAT leaves zeroed. The partition is classed PART_FS_UNKNOWN (partition.h) and skipped without a message. On an MBR disk, exFAT shares partition type 0x07 with NTFS (mbr.h), so the type byte alone cannot tell them apart; the driver will have to read the boot sector's EXFAT OEM name.
Planned design. The roadmap builds the driver in the order the format needs:
- The volume boot record and its 11-sector boot checksum.
- The allocation bitmap (one bit per cluster, unlike FAT32's chain-walking free count).
- The up-case table, which defines case-insensitive name comparison for the volume.
- Directory entry sets: a File entry, a Stream Extension entry and one or more File Name entries, each set checksummed.
- Directory and file reads, including the NoFatChain fast path for contiguous files, which skips the FAT entirely.
- Writes, create, delete and rename, timestamps with 10 ms precision and UTC offsets, then VFS registration and a repair pass.
- Unicode edge cases and files larger than 4 GiB.
The driver will register a struct vfs_fs_driver with vfs_mount() (vfs.h) the same way the FAT32, NTFS and IXFS drivers do.
flowchart LR
VBR[VBR + boot checksum] --> BM[allocation bitmap]
VBR --> UC[up-case table]
BM --> ES[entry sets]
UC --> ES
ES --> R[directory and file read]
R --> W[write, create, delete, rename]
W --> V[VFS registration + fsck]
What are its interfaces?
None yet. The planned surface is an exfat_probe() for the probe chain in Volume Management and a vfs_ops table for the VFS, with no new user-facing API: programs will open exFAT files through the same file calls as any other drive.
How do I use it?
It cannot be used yet. A USB drive or SD card formatted exFAT is detected as a disk, and its partition is scanned, but nothing mounts. Reformatting it as FAT32 (with a 4 GiB per-file limit) is the workaround today.
What is not implemented yet?
Everything in the roadmap:
- The on-disk foundation: VBR Parser + Boot Checksum, Allocation Bitmap, Up-Case Table and Directory Entry Sets.
- The read path: Directory Read and File Read.
- The write path: File Write, Create / Delete / Rename and Timestamp Encoding.
- Integration and edges: VFS Registration + Probe + fsck, Unicode Edge Cases and Large File Support.
The probe chain the driver plugs into is itself unbuilt (Filesystem Probe Chain).
How does it compare with Windows 11 and Linux?
Windows 11 has read-write exFAT in exfat.sys and formats with format /fs:exfat; Linux has had an in-kernel read-write exfat driver since 5.7, with exfatprogs for format and repair. Both mount exFAT media automatically. Impossible OS cannot read exFAT at all yet; the roadmap's aim is spec conformance, not new features.