Reference: UEFI Specification (Version 2.9, March 2021), Section 13.3.1 "EFI System Partition":
"An ESP must contain an EFI directory at the root of the partition. The path to the boot file is \EFI\BOOT\BOOTX64.EFI for 64-bit x86 systems."
Ah, that answered my question about why older Windows command stuff named things in all-caps (MKDIR)!and DOS basically (unless forcibly done by filers like fd and Norton commander) forcibly converts lower cases to upper cases for 8.3 finenames.
Well, could UEFI entry on Wikipedia be of (part of) the answer?I wonder if a Windows dev involved with the first UEFI implementation (around XP) may know? They had to get the idea from somewhere or chose it for a reason, unless they copied from something else, which would have more digging![]()
If I understand/recall correctly, IBM and Microsoft supported long file names differently.Short DOS/FAT file names are 8.3. Lowercase FAT file names use records for long names.
UEFI is a standard, FreeBSD intends/tries to adhere to it; firmware is rather fundamental. The standard (as referenced by VladiBG),On the ESP partition the /EFI/ directory is in all CAPS? WHY? msdosfs doesn't differentiate between them on file names and directories.
Inquiring minds want to know.
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 subdirectories 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 subdirectory name is up to the vendor, but [...]
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.
For more information about the EFI file system and file image format, visit the web site from which this document
was obtained.
It would be accessible, unless Human68k allowed coexisting files such as A.txt and a.TxT in the same directory at the same time like in UFS and so on.Fat's long file names are summarised on wikipedia.
The Human68k does not generate uppercase filename, so if you gave a lowercase filename, the file could not be accessed from MS-DOS.Long filename - Wikipedia
en.wikipedia.org
Is it ? Not on my systems. My EFI loader is located under the funny hierarchy /boot/efi/efi/boot/bootx64.efi. I didn't create that myself, so this is what the FreeBSD installer does by default.On the ESP partition the /EFI/ directory is in all CAPS
Exactly. But it's because of the filesystem "driver" implementation.In DOS/Microsoft world, filenames are case insensitive. For that reason ABC.txt and Abc.TXT is the same file.
It usually works, because directory names EFI and efi are not distinguished as different on FAT, as discussed above. And /boot/efi are mountpoint to mount ESP, on (usually) UFS or ZFS for FreeBSD.Is it ? Not on my systems. My EFI loader is located under the funny hierarchy /boot/efi/efi/boot/bootx64.efi. I didn't create that myself, so this is what the FreeBSD installer does by default.
I have seen that directory structure before. I only occurs when there is an existing ESP.Is it ? Not on my systems. My EFI loader is located under the funny hierarchy /boot/efi/efi/boot/bootx64.efi. I didn't create that myself, so this is what the FreeBSD installer does by default.
Would be just because:But with loader filename not in CAPs I had to ask.
Focussing on the capitalization and not on the curious dir structure quoted, then, by the looks of it, it seems that Phishfry has their dir structure installed according pre-2021-01-15 and bsduck post date this commit bootconfig - bsdinstall: create /efi/boot directory in ESPIs it ? Not on my systems. My EFI loader is located under the funny hierarchy /boot/efi/efi/boot/bootx64.efi. I didn't create that myself, so this is what the FreeBSD installer does by default.
DESCRIPTION
[...]
The UEFI boot process proceeds as follows:
1. UEFI firmware runs at power up and searches for an OS loader
in the EFI system partition. The path to the loader may be
set by an EFI environment variable managed by efibootmgr(8).
If not set, an architecture-specific default is used.
Architecture Default Path
amd64 /EFI/BOOT/BOOTX64.EFI
arm /EFI/BOOT/BOOTARM.EFI
arm64 /EFI/BOOT/BOOTAA64.EFI
i386 /EFI/BOOT/BOOTIA32.EFI
riscv /EFI/BOOT/BOOTRISCV64.EFI
To test UEFI booting on a memory stick or a hard disk, create a GPT partition table
with a small EFI partition and the rest of the space dedicated to a FreeBSD UFS partition:
gpart create -s gpt da0
gpart add -t efi -s 40M da0
gpart add -t freebsd-ufs da0
newfs_msdos -F 32 -c 1 /dev/da0p1
mount -t msdosfs /dev/da0p1 /mnt
mkdir -p /mnt/EFI/BOOT
It was directy taken from RockPro64 -CURRENT image. I am using that as my jumping off point.by the looks of it, it seems that Phishfry has their dir structure installed according pre-2021-01-15
~/Downloads # mdconfig FreeBSD-14.1-RELEASE-arm64-aarch64-ROCKPRO64.img
md0
~/Downloads # gpart show -p md0
=> 40 10485680 md0 GPT (5.0G)
40 32728 - free - (16M)
32768 102400 md0p1 efi (50M)
135168 10350464 md0p2 freebsd-ufs (4.9G)
10485632 88 - free - (44K)
~/Downloads # mount -t msdosfs /dev/md0p1 /mnt
~/Downloads # ls /mnt
EFI dtb
~/Downloads # ls /mnt/EFI/BOOT
bootaa64.efi
~/Downloads # umount /mnt
~/Downloads # mdconfig FreeBSD-14.1-RELEASE-amd64-memstick.img
md0
~/Downloads # gpart show -p md0
=> 1 2734760 md0 MBR (1.3G)
1 66584 md0s1 efi (33M)
66585 2668176 md0s2 freebsd [active] (1.3G)
~/Downloads # mount -t msdosfs /dev/md0s1 /mnt
~/Downloads # ls /mnt
EFI
~/Downloads # ls /mnt/EFI
BOOT
~/Downloads # ls /mnt/EFI/BOOT
bootx64.efi