1 # $NetBSD: arm64.conf,v 1.9 2020/02/23 10:56:03 jmcneill 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 devpubd=YES 25 wscons=\$(dev_exists wsdisplay0) 26 ec2_init=\$(dev_exists ena0) 27 EOF 28 } 29 30 populate_common() { 31 # Add EC2 init script 32 cp ${DIR}/files/ec2_init ${mnt}/etc/rc.d/ec2_init 33 echo "./etc/rc.d/ec2_init type=file uname=root gname=wheel mode=0555" \ 34 >> "$tmp/selected_sets" 35 36 # Rename kernel to netbsd.img 37 mv "${mnt}/boot/netbsd-${kernel_GENERIC64}.img" "${mnt}/boot/netbsd.img" 38 39 # Install EFI bootloader 40 mkdir -p "${mnt}/boot/EFI/BOOT" 41 cp "${release}/usr/mdec/bootaa64.efi" "${mnt}/boot/EFI/BOOT/bootaa64.efi" 42 43 # Install kernel to root of the FFS partition 44 ${GZIP_CMD} -dc ${kernel}/netbsd-${kernel_GENERIC64}.gz > "${mnt}/netbsd" 45 echo "./netbsd type=file uname=root gname=wheel mode=0755" \ 46 >> "$tmp/selected_sets" 47 } 48 49 populate_allwinner() { 50 # U-Boot expects 64-bit DTB files to live in an allwinner/ subdirectory 51 mkdir -p "${mnt}/boot/dtb/allwinner" 52 mv "${mnt}"/boot/sun50i-*.dtb "${mnt}/boot/dtb/allwinner/" 53 } 54 55 populate_amlogic() { 56 # U-Boot expects 64-bit DTB files to live in an amlogic/ subdirectory 57 mkdir -p "${mnt}/boot/dtb/amlogic" 58 mv "${mnt}"/boot/meson-*.dtb "${mnt}/boot/dtb/amlogic/" 59 } 60 61 populate_rockchip() { 62 # U-Boot expects 64-bit DTB files to live in a rockchip/ subdirectory 63 mkdir -p "${mnt}/boot/dtb/rockchip" 64 mv "${mnt}"/boot/rk3328-*.dtb "${mnt}/boot/dtb/rockchip/" 65 mv "${mnt}"/boot/rk3399-*.dtb "${mnt}/boot/dtb/rockchip/" 66 } 67 68 populate_rpi() { 69 firmwaredir="${src}/external/broadcom/rpi-firmware/dist" 70 firmwarefiles="LICENCE.broadcom bootcode.bin fixup4cd.dat fixup4.dat fixup_cd.dat fixup.dat start4cd.elf start4.elf start_cd.elf start.elf" 71 72 cat > "${mnt}/boot/cmdline.txt" << EOF 73 root=ld0a console=${console} 74 EOF 75 76 cat > "${mnt}/boot/cmdline-pi4.txt" << EOF 77 root=ld1a console=${console} 78 EOF 79 80 cat > "${mnt}/boot/config.txt" << EOF 81 # 82 upstream_kernel=1 83 # 84 arm_64bit=1 85 kernel=netbsd.img 86 kernel_address=0x200000 87 enable_uart=1 88 force_turbo=0 89 # 90 [pi4] 91 cmdline=cmdline-pi4.txt 92 # 93 [all] 94 EOF 95 96 echo "${bar} installing firmware files ${bar}" 97 (cd "${mnt}/boot" && 98 for f in ${firmwarefiles}; do 99 echo " $f" 100 cp "${firmwaredir}/${f}" . 101 done 102 ) 103 } 104 105 populate_nvidia() { 106 # Move tegra dtb files to /boot/dtb 107 mkdir -p "${mnt}/boot/dtb" 108 mv "${mnt}"/boot/tegra*.dtb "${mnt}/boot/dtb/" 109 } 110 111 populate() { 112 echo "${bar} looking for kernel in ${kernel} ${bar}" 113 kernels="" 114 k="$kernel_GENERIC64" 115 116 # .img kernel 117 f="${kernel}/netbsd-${k}.img.gz" 118 test -f "${f}" && kernels="${kernels} ${f}" 119 120 # .dtb files 121 test -d "${KERNOBJDIR}/${k}" && \ 122 dtbs="$(${MAKE} -C ${KERNOBJDIR}/${k} -v DTB)" || \ 123 dtbs= 124 for dtb in $dtbs; do 125 f="${kernel}/${dtb}.gz" 126 test -f "${f}" && kernels="${kernels} ${f}" 127 done 128 129 # install files to /boot partition 130 for k in ${kernels}; do 131 tgt="$(basename ${k} | sed 's/\.gz$//')" 132 echo "${bar} installing ${k} to /boot/${tgt} ${bar}" 133 case "${k}" in 134 *.gz) 135 ${GZIP_CMD} -dc "${k}" > "${mnt}/boot/${tgt}" 136 ;; 137 *) 138 cp "${k}" "${mnt}/boot/${tgt}" 139 ;; 140 esac || 141 fail "Copy of ${k} to ${mnt}/boot/${tgt} failed" 142 done 143 144 # SoC specific configuration 145 populate_allwinner 146 populate_amlogic 147 populate_nvidia 148 populate_rockchip 149 150 # Board specific configuration 151 populate_rpi 152 153 # common configuration 154 populate_common 155 } 156