Module Name: src Committed By: jmcneill Date: Thu May 28 10:22:49 UTC 2020
Modified Files: src/etc/etc.evbarm: Makefile.inc Added Files: src/distrib/utils/embedded/conf: arm64mbr.conf Log Message: Create a separate Arm64 image that uses MBR partitioning. Amlogic SoCs require the bootloader to be installed on SD cards at LBA1 which makes them incompatible with GPT images. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/distrib/utils/embedded/conf/arm64mbr.conf cvs rdiff -u -r1.119 -r1.120 src/etc/etc.evbarm/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/etc/etc.evbarm/Makefile.inc diff -u src/etc/etc.evbarm/Makefile.inc:1.119 src/etc/etc.evbarm/Makefile.inc:1.120 --- src/etc/etc.evbarm/Makefile.inc:1.119 Sun May 24 14:44:11 2020 +++ src/etc/etc.evbarm/Makefile.inc Thu May 28 10:22:49 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.119 2020/05/24 14:44:11 jmcneill Exp $ +# $NetBSD: Makefile.inc,v 1.120 2020/05/28 10:22:49 jmcneill Exp $ # # etc.evbarm/Makefile.inc -- evbarm-specific etc Makefile targets # @@ -146,6 +146,9 @@ SNAP_MD_POST_DEPS+= smp_armv7 smp_arm64: __mkimage MKI_OPTS.smp_arm64= -K ${IMAGE.kern} SNAP_MD_POST_DEPS+= smp_arm64 +smp_arm64mbr: __mkimage +MKI_OPTS.smp_arm64mbr= -K ${IMAGE.kern} +SNAP_MD_POST_DEPS+= smp_arm64mbr .endif .if !empty(KERNEL_SETS:MRPI) Added files: Index: src/distrib/utils/embedded/conf/arm64mbr.conf diff -u /dev/null src/distrib/utils/embedded/conf/arm64mbr.conf:1.1 --- /dev/null Thu May 28 10:22:49 2020 +++ src/distrib/utils/embedded/conf/arm64mbr.conf Thu May 28 10:22:49 2020 @@ -0,0 +1,110 @@ +# $NetBSD: arm64mbr.conf,v 1.1 2020/05/28 10:22:49 jmcneill Exp $ +# ARM64 (MBR partitioning) customization script used by mkimage +# +board=arm64mbr +hostname=arm64 +console=fb +resize=true + +. ${DIR}/conf/evbarm.conf + +kernel_GENERIC64="GENERIC64" + +make_label() { + make_label_evbarm +} + +make_fstab() { + make_fstab_evbarm +} + +customize() { + customize_evbarm + cat >> "${mnt}/etc/rc.conf" << EOF +mdnsd=YES +devpubd=YES +wscons=\$(dev_exists wsdisplay0) +ec2_init=\$(dev_exists ena0) +EOF +} + +populate_common() { + # Add EC2 init script + cp ${DIR}/files/ec2_init ${mnt}/etc/rc.d/ec2_init + echo "./etc/rc.d/ec2_init type=file uname=root gname=wheel mode=0555" \ + >> "$tmp/selected_sets" + + # Rename kernel to netbsd.img + mv "${mnt}/boot/netbsd-${kernel_GENERIC64}.img" "${mnt}/boot/netbsd.img" + + # Install EFI bootloader + mkdir -p "${mnt}/boot/EFI/BOOT" + cp "${release}/usr/mdec/bootaa64.efi" "${mnt}/boot/EFI/BOOT/bootaa64.efi" + + # Install kernel to root of the FFS partition + ${GZIP_CMD} -dc ${kernel}/netbsd-${kernel_GENERIC64}.gz > "${mnt}/netbsd" + echo "./netbsd type=file uname=root gname=wheel mode=0755" \ + >> "$tmp/selected_sets" +} + + +populate_rpi() { + firmwaredir="${src}/external/broadcom/rpi-firmware/dist" + firmwarefiles="LICENCE.broadcom bootcode.bin fixup4cd.dat fixup4.dat fixup_cd.dat fixup.dat start4cd.elf start4.elf start_cd.elf start.elf" + + cat > "${mnt}/boot/cmdline.txt" << EOF +root=ld0a console=${console} +EOF + + cat > "${mnt}/boot/config.txt" << EOF +# +upstream_kernel=1 +# +arm_64bit=1 +os_prefix=dtb/broadcom/ +cmdline=../../cmdline.txt +kernel=/netbsd.img +kernel_address=0x200000 +enable_uart=1 +force_turbo=0 +EOF + + echo "${bar} installing firmware files ${bar}" + (cd "${mnt}/boot" && + for f in ${firmwarefiles}; do + echo " $f" + cp "${firmwaredir}/${f}" . + done + ) +} + +populate() { + echo "${bar} looking for kernel in ${kernel} ${bar}" + kernels="" + k="$kernel_GENERIC64" + + # .img kernel + f="${kernel}/netbsd-${k}.img.gz" + test -f "${f}" && kernels="${kernels} ${f}" + + # install files to /boot partition + for k in ${kernels}; do + tgt="$(basename ${k} | sed 's/\.gz$//')" + echo "${bar} installing ${k} to /boot/${tgt} ${bar}" + case "${k}" in + *.gz) + ${GZIP_CMD} -dc "${k}" > "${mnt}/boot/${tgt}" + ;; + *) + cp "${k}" "${mnt}/boot/${tgt}" + ;; + esac || + fail "Copy of ${k} to ${mnt}/boot/${tgt} failed" + done + + # Board specific configuration + populate_rpi + + # common configuration + populate_common +}