afe637bbfd
The Pine64 root filesystem was incorrectly created directly on the MBR partition. This can cause the loader to get confused when loading the kernel from this filesystem. The loader will see this as a small partition meaning later checks to ensure it doesn't read past the end of the disk incorrectly report a failure. This seems to work mostly by accident with the released images as they are smaller than the reported size, however after growfs has run the image may no longer boot. Reviewed by: gjb, emaste, imp Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14343
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/boot1/boot1.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
|
|
}
|