diff --git a/board/pc/genimage-efi.cfg b/board/pc/genimage-efi.cfg deleted file mode 100644 index ec96d73dd1..0000000000 --- a/board/pc/genimage-efi.cfg +++ /dev/null @@ -1,31 +0,0 @@ -image efi-part.vfat { - vfat { - file startup.nsh { - image = "efi-part/startup.nsh" - } - file EFI { - image = "efi-part/EFI" - } - file bzImage { - image = "bzImage" - } - } - size = 16M -} - -image disk.img { - - hdimage { - } - - partition boot { - partition-type = 0xEF - image = "efi-part.vfat" - } - - partition root { - partition-type = 0x83 - image = "rootfs.ext2" - } - -} diff --git a/board/pc/post-build.sh b/board/pc/post-build.sh index 552d488160..346f29ab6a 100755 --- a/board/pc/post-build.sh +++ b/board/pc/post-build.sh @@ -4,12 +4,7 @@ set -e BOARD_DIR=$(dirname "$0") -# Detect boot strategy, EFI or BIOS -if [ -f "$BINARIES_DIR/efi-part/startup.nsh" ]; then - cp -f "$BOARD_DIR/grub-efi.cfg" "$BINARIES_DIR/efi-part/EFI/BOOT/grub.cfg" -else - cp -f "$BOARD_DIR/grub-bios.cfg" "$TARGET_DIR/boot/grub/grub.cfg" +cp -f "$BOARD_DIR/grub-bios.cfg" "$TARGET_DIR/boot/grub/grub.cfg" - # Copy grub 1st stage to binaries, required for genimage - cp -f "$HOST_DIR/lib/grub/i387-pc/boot.img" "$BINARIES_DIR" -fi +# Copy grub 1st stage to binaries, required for genimage +cp -f "$HOST_DIR/lib/grub/i387-pc/boot.img" "$BINARIES_DIR" diff --git a/board/pc/post-image-efi-gpt.sh b/board/pc/post-image-efi-gpt.sh new file mode 100755 index 0000000000..d2acd8f852 --- /dev/null +++ b/board/pc/post-image-efi-gpt.sh @@ -0,0 +1,62 @@ +#!/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 <