745aef8c6a
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
68 lines
2.0 KiB
Bash
68 lines
2.0 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
DTB_DIR="/usr/local/share/rpi-firmware"
|
|
DTB="bcm2710-rpi-3-b.dtb"
|
|
EMBEDDED_TARGET_ARCH="aarch64"
|
|
EMBEDDED_TARGET="arm64"
|
|
EMBEDDEDBUILD=1
|
|
EMBEDDEDPORTS="sysutils/u-boot-rpi3 sysutils/rpi-firmware"
|
|
FAT_SIZE="50m -b 1m"
|
|
FAT_TYPE="16"
|
|
IMAGE_SIZE="2560M"
|
|
KERNEL="GENERIC"
|
|
MD_ARGS="-x 63 -y 255"
|
|
NODOC=1
|
|
OL_DIR="${DTB_DIR}/overlays"
|
|
OVERLAYS="mmc.dtbo pwm.dtbo pi3-disable-bt.dtbo"
|
|
PART_SCHEME="MBR"
|
|
export BOARDNAME="RPI3"
|
|
|
|
arm_install_uboot() {
|
|
UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi3"
|
|
UBOOT_FILES="README u-boot.bin"
|
|
DTB_FILES="armstub8.bin bootcode.bin fixup_cd.dat \
|
|
fixup_db.dat fixup_x.dat fixup.dat LICENCE.broadcom \
|
|
start_cd.elf start_db.elf start_x.elf start.elf ${DTB}"
|
|
FATMOUNT="${DESTDIR%${KERNEL}}fat"
|
|
UFSMOUNT="${DESTDIR%${KERNEL}}ufs"
|
|
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
|
|
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
|
|
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
|
|
for _UF in ${UBOOT_FILES}; do
|
|
chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/${_UF} \
|
|
${FATMOUNT}/${_UF}
|
|
done
|
|
for _DF in ${DTB_FILES}; do
|
|
chroot ${CHROOTDIR} cp -p ${DTB_DIR}/${_DF} \
|
|
${FATMOUNT}/${_DF}
|
|
done
|
|
chroot ${CHROOTDIR} cp -p ${DTB_DIR}/config_rpi3.txt \
|
|
${FATMOUNT}/config.txt
|
|
chroot ${CHROOTDIR} mkdir -p ${FATMOUNT}/overlays
|
|
for _OL in ${OVERLAYS}; do
|
|
chroot ${CHROOTDIR} cp -p ${OL_DIR}/${_OL} \
|
|
${FATMOUNT}/overlays/${_OL}
|
|
done
|
|
|
|
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
|
|
}
|