Я пытаюсь создать файл с минимально достаточным размером для файловой системы FAT32, которая, в свою очередь, отражает содержимое каталога (структура ESP). Это необходимо для создания загрузочного образа UEFI ISO.
Мне удалось создать файл успешно (загружается ISO-образ), но мне пришлось создать его с фиксированным размером, а не с реальным размером его содержимого.
Вот что я сделал, чтобы добиться этого:
BOOT_IMG_DATA=$(mktemp -d)
BOOT_IMG=$ISO_DIR/boot/efi.img
mkdir -p $(dirname $BOOT_IMG)
truncate -s 4M $BOOT_IMG
mkfs.vfat $BOOT_IMG
mount $BOOT_IMG $BOOT_IMG_DATA
mkdir -p $BOOT_IMG_DATA/efi/boot
grub-mkimage \
-C xz \
-O x86_64-efi \
-p /boot/grub \
-o $BOOT_IMG_DATA/efi/boot/bootx64.efi \
boot linux search normal configfile \
part_gpt btrfs fat iso9660 loopback \
test keystatus gfxmenu regexp probe \
efi_gop efi_uga all_video gfxterm font \
echo read ls cat png jpeg halt reboot
umount $BOOT_IMG_DATA
Этот код является частью сценария, который генерирует загрузочный UEFI-образ ISO. Весь сценарий находится здесь: https://github.com/Nitrux/mkiso/blob/master/mkiso#L79-L100.
Мне нужен способ создать файл, который будет содержать структуру ESP с точным размером для хранения как данных ESP (каталогов и файлов), так и метадады FAT32. Как мне этого добиться?