1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #!/bin/sh
- set -e
- cd ${BINARIES_DIR}
- # GPT partition type UUIDs
- esp_type=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
- linux_type=44479540-f297-41b2-9af7-d131d5f0458a
- # Partition UUIDs
- efi_part_uuid=$(uuidgen)
- root_part_uuid=$(uuidgen)
- # Boot partition offset and size, in 512-byte sectors
- efi_part_start=64
- efi_part_size=32768
- # Rootfs partition offset and size, in 512-byte sectors
- root_part_start=$(( efi_part_start + efi_part_size ))
- root_part_size=$(( $(stat -c %s rootfs.ext2) / 512 ))
- first_lba=34
- last_lba=$(( root_part_start + root_part_size ))
- # Disk image size in 512-byte sectors
- image_size=$(( last_lba + first_lba ))
- cat > efi-part/EFI/BOOT/grub.cfg <<EOF
- set default="0"
- set timeout="5"
- menuentry "Buildroot" {
- linux /bzImage root=PARTUUID=$root_part_uuid rootwait console=tty1
- }
- EOF
- # Create EFI system partition
- rm -f efi-part.vfat
- dd if=/dev/zero of=efi-part.vfat bs=512 count=0 seek=$efi_part_size
- mkdosfs efi-part.vfat
- mcopy -bsp -i efi-part.vfat efi-part/startup.nsh ::startup.nsh
- mcopy -bsp -i efi-part.vfat efi-part/EFI ::EFI
- mcopy -bsp -i efi-part.vfat bzImage ::bzImage
- rm -f disk.img
- dd if=/dev/zero of=disk.img bs=512 count=0 seek=$image_size
- sfdisk disk.img <<EOF
- label: gpt
- label-id: $(uuidgen)
- device: /dev/foobar0
- unit: sectors
- first-lba: $first_lba
- last-lba: $last_lba
- /dev/foobar0p1 : start=$efi_part_start, size=$efi_part_size, type=$esp_type, uuid=$efi_part_uuid, name="efi-part.vfat"
- /dev/foobar0p2 : start=$root_part_start, size=$root_part_size, type=$linux_type, uuid=$root_part_uuid, name="rootfs.ext2"
- EOF
- dd if=efi-part.vfat of=disk.img bs=512 count=$efi_part_size seek=$efi_part_start conv=notrunc
- dd if=rootfs.ext2 of=disk.img bs=512 count=$root_part_size seek=$root_part_start conv=notrunc
|