FAT32 파일 시스템을 보유하기 위해 디렉토리와 파일의 정확한 크기의 파일을 만드는 방법은 무엇입니까?


0

나는 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 데이터 (디렉토리 및 파일)와 FAT32 메타 데이터를 모두 담을 수있는 정확한 크기의 ESP 구조를 포함하는 파일을 만드는 방법이 필요합니다. 이것을 어떻게 할 수 있습니까?


너는 의미한다. mkfs.vfat -C /path/to/image_to_create.img size 어디에서 size 당신은 이미지를 원하십니까? 그런 다음 mount 이미지를 복사하고 필요에 따라 파일을 복사하십시오. 같은 일을 할 수 있습니다. dd 다음 전화 mkfs.vfat 이미지 자체에.
David C. Rankin

@ DavidC.Rankin, 내가 필요한 건 size 매개 변수, 그 경우.
Luis Lavaire

디스크 이미지를 만든 다음 보관을 위해 축소합니다.
juniorRubyist

답변:


0

이 작업에 적합한 도구는 다음과 같습니다. du.

mkfs.vfat -C $BOOT_IMG \
    $(( ($(du -b $BOOT_IMG_DATA | tail -n 1 | awk '{ print $1 }') / 1024 + 511) / 1024 ))

이 명령은 파일을 생성합니다. $BOOT_IMG, 그것의 내용을 지키기에 충분한 크기를 가질 것입니다. $BOOT_IMG_DATA.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.