1 # $NetBSD: arm64.conf,v 1.1.2.4 2018/09/06 06:51:43 pgoyette Exp $ 2 # ARM64 customization script used by mkimage 3 # 4 board=arm64 5 console=fb 6 resize=true 7 8 . ${DIR}/conf/evbarm.conf 9 10 kernel_GENERIC64="GENERIC64" 11 12 make_label() { 13 make_label_evbarm 14 } 15 16 make_fstab() { 17 make_fstab_evbarm 18 } 19 20 customize() { 21 customize_evbarm 22 cat >> "${mnt}/etc/rc.conf" << EOF 23 mdnsd=YES 24 wscons=YES 25 devpubd=YES 26 EOF 27 } 28 29 populate_common() { 30 # Rename kernel to netbsd.img 31 mv "${mnt}/boot/netbsd-${kernel_GENERIC64}.img" "${mnt}/boot/netbsd.img" 32 33 # Install EFI bootloader 34 mkdir -p "${mnt}/boot/EFI/BOOT" 35 cp "${release}/usr/mdec/bootaa64.efi" "${mnt}/boot/EFI/BOOT/bootaa64.efi" 36 37 # Install kernel to root of the FFS partition 38 ${GZIP_CMD} -dc ${kernel}/netbsd-${kernel_GENERIC64}.gz > "${mnt}/netbsd" 39 echo "./netbsd type=file uname=root gname=wheel mode=0755" \ 40 >> "$tmp/selected_sets" 41 } 42 43 populate_allwinner() { 44 # U-Boot expects 64-bit DTB files to live in an allwinner/ subdirectory 45 mkdir -p "${mnt}/boot/dtb/allwinner" 46 mv "${mnt}"/boot/sun50i-*.dtb "${mnt}/boot/dtb/allwinner/" 47 } 48 49 populate_rockchip() { 50 # U-Boot expects 64-bit DTB files to live in a rockchip/ subdirectory 51 mkdir -p "${mnt}/boot/dtb/rockchip" 52 mv "${mnt}"/boot/rk3328-*.dtb "${mnt}/boot/dtb/rockchip/" 53 mv "${mnt}"/boot/rk3399-*.dtb "${mnt}/boot/dtb/rockchip/" 54 } 55 56 populate_rpi() { 57 firmwaredir="${src}/external/broadcom/rpi-firmware/dist" 58 firmwarefiles="LICENCE.broadcom bootcode.bin fixup.dat fixup_cd.dat start.elf start_cd.elf" 59 60 cat > "${mnt}/boot/cmdline.txt" << EOF 61 root=ld0a console=${console} 62 EOF 63 64 cat > "${mnt}/boot/config.txt" << EOF 65 arm_64bit=1 66 kernel=netbsd.img 67 kernel_address=0x200000 68 enable_uart=1 69 force_turbo=0 70 EOF 71 72 echo "${bar} installing firmware files ${bar}" 73 (cd "${mnt}/boot" && 74 for f in ${firmwarefiles}; do 75 echo " $f" 76 cp "${firmwaredir}/${f}" . 77 done 78 ) 79 } 80 81 populate_nvidia() { 82 # Move tegra dtb files to /boot/dtb 83 mkdir -p "${mnt}/boot/dtb" 84 mv "${mnt}"/boot/tegra*.dtb "${mnt}/boot/dtb/" 85 } 86 87 populate() { 88 echo "${bar} looking for kernel in ${kernel} ${bar}" 89 kernels="" 90 k="$kernel_GENERIC64" 91 92 # .imgkernel 93 f="${kernel}/netbsd-${k}.img.gz" 94 test -f "${f}" && kernels="${kernels} ${f}" 95 96 # .dtb files 97 test -d "${KERNOBJDIR}/${k}" && \ 98 dtbs="$(${MAKE} -C ${KERNOBJDIR}/${k} -v DTB)" || \ 99 dtbs= 100 for dtb in $dtbs; do 101 f="${kernel}/${dtb}.gz" 102 test -f "${f}" && kernels="${kernels} ${f}" 103 done 104 105 # install files to /boot partition 106 for k in ${kernels}; do 107 tgt="$(basename ${k} | sed 's/\.gz$//')" 108 echo "${bar} installing ${k} to /boot/${tgt} ${bar}" 109 case "${k}" in 110 *.gz) 111 ${GZIP_CMD} -dc "${k}" > "${mnt}/boot/${tgt}" 112 ;; 113 *) 114 cp "${k}" "${mnt}/boot/${tgt}" 115 ;; 116 esac || 117 fail "Copy of ${k} to ${mnt}/boot/${tgt} failed" 118 done 119 120 # SoC specific configuration 121 populate_allwinner 122 populate_nvidia 123 populate_rockchip 124 125 # Board specific configuration 126 populate_rpi 127 128 # common configuration 129 populate_common 130 } 131