Extensible Firmware Interface Specification
306 12/12/00 Version 1.02
16.1.1 File System Format
The first block (sector) of a partition contains a data structure called the BIOS Parameter Block,
BPB, that defines the type and location of FAT file system on the drive. The BPB contains a data
structure that defines the size of the media, the size of reserved space, the number of FAT tables,
and the location and size of the root directory (not used in FAT-32). The first block (sector) also
contains code that will be executed as part of the boot process on a legacy Intel architecture system.
This code in the first block (sector) usually contains code that can read a file from the root directory
into memory and transfer control to it. Since EFI firmware contains a file system driver, EFI
firmware can load any file from the file system with out needing to execute any code from the
media.
The EFI firmware must support the FAT-32, FAT-16, and FAT-12 variants of the EFI file system.
What variant of EFI FAT to use is defined by the size of the media. The rules defining the
relationship between media size and FAT variants is defined in the specification for the EFI file
system.
16.1.2 File Names
FAT stores file names in two formats. The original FAT format limited file names to eight
characters with three extension characters. This type of file name is called an 8.3, pronounced eight
dot three, file name. FAT was extended to include support for long file names. The acronym LFN
is used to denote long file names.
FAT 8.3 file names are always stored as upper case ASCII characters. LFN can either be stored as
ASCII or Unicode and are stored case sensitive. The string that was used to open or create the file
is stored directly into LFN. FAT defines that all files in a directory must have a unique name, and
unique is defined as a case insensitive match. The following are examples of names that are
considered to be the same, and can not exist in a single directory:
ThisIsAnExampleDirectory.Dir
thisisanexamppledirectory.dir
THISISANEXAMPLEDIRECTORY.DIR
ThisIsAnExampleDirectory.DIR
16.1.3 Directory Structure
An EFI system partition that is present on a hard disk must contain an EFI defined directory in the
root directory. This directory is named EFI. All OS loaders and applications will be stored in sub
directories below EFI. Applications that are loaded by other applications or drivers are not
required to be stored in any specific location in the EFI system partition. The choice of the sub
directory name is up to the vendor, but all vendors must pick names that do not collide with any
other vendor's sub directory name. This applies to system manufacturers, operating system
vendors, BIOS vendors, and third party tool vendors, or any other vendor that wishes to install files
on an EFI system partition. There must also only be one executable EFI image for each supported
CPU architecture in each vendor sub directory. This guarantees that there is only one image that
can be loaded from a vendor sub directory by the EFI Boot Manager. If more than one executable
EFI image is present, then the boot behavior for the system will not be deterministic. There may
also be an optional vendor sub directory called BOOT.