boot1.efi have some trouble to read MBR partitions, it needs them to be aligned a certain way while loader.efi can cope with them either way. We want to switch to loader.efi as the main efi loader everywhere, it seems that arm64 using MBR partition will be the guinea pig. Tested On: RPI3, Pine64 Reviewed by: imp Approved by: gjb
48 lines
1.3 KiB
Bash
48 lines
1.3 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
EMBEDDED_TARGET_ARCH="aarch64"
|
|
EMBEDDED_TARGET="arm64"
|
|
EMBEDDEDBUILD=1
|
|
EMBEDDEDPORTS="sysutils/u-boot-pine64"
|
|
FAT_SIZE="54m -b 1m"
|
|
FAT_TYPE="16"
|
|
IMAGE_SIZE="2560M"
|
|
KERNEL="GENERIC"
|
|
MD_ARGS="-x 63 -y 255"
|
|
NODOC=1
|
|
PART_SCHEME="MBR"
|
|
export BOARDNAME="PINE64"
|
|
|
|
arm_install_uboot() {
|
|
UBOOT_DIR="/usr/local/share/u-boot/u-boot-pine64"
|
|
UBOOT_FILES="u-boot-sunxi-with-spl.bin"
|
|
FATMOUNT="${DESTDIR%${KERNEL}}fat"
|
|
UFSMOUNT="${DESTDIR%${KERNEL}}ufs"
|
|
chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILES} \
|
|
of=/dev/${mddev} bs=1k seek=8 conv=sync
|
|
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
|
|
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
|
|
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
|
|
|
|
BOOTFILES="$(chroot ${CHROOTDIR} \
|
|
env TARGET=${EMBEDDED_TARGET} TARGET_ARCH=${EMBEDDED_TARGET_ARCH} \
|
|
WITH_UNIFIED_OBJDIR=yes \
|
|
make -C ${WORLDDIR}/stand -V .OBJDIR)"
|
|
BOOTFILES="$(chroot ${CHROOTDIR} realpath ${BOOTFILES})"
|
|
|
|
chroot ${CHROOTDIR} mkdir -p ${FATMOUNT}/EFI/BOOT
|
|
chroot ${CHROOTDIR} cp -p ${BOOTFILES}/efi/loader/loader.efi \
|
|
${FATMOUNT}/EFI/BOOT/bootaa64.efi
|
|
chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
|
|
sync
|
|
umount_loop ${CHROOTDIR}/${FATMOUNT}
|
|
umount_loop ${CHROOTDIR}/${UFSMOUNT}
|
|
chroot ${CHROOTDIR} rmdir ${FATMOUNT}
|
|
chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
|
|
|
|
return 0
|
|
}
|