1 # $NetBSD: armv7.conf,v 1.42 2020/05/25 11:06:49 jmcneill Exp $ 2 # ARMv7 customization script used by mkimage 3 # 4 board=armv7 5 console=fb 6 resize=true 7 gpt=true 8 gpt_hybrid=true 9 gpt_create_flags="-p 16" 10 gpt_label_efi="EFI" 11 gpt_label_ffs="netbsd-root" 12 13 . ${DIR}/conf/evbarm.conf 14 15 kernels_generic="GENERIC" 16 17 make_label() { 18 make_label_evbarm 19 } 20 21 make_fstab() { 22 make_fstab_evbarm 23 } 24 25 customize() { 26 customize_evbarm 27 cat >> "${mnt}/etc/rc.conf" << EOF 28 mdnsd=YES 29 devpubd=YES 30 wscons=\$(dev_exists wsdisplay0) 31 EOF 32 } 33 34 populate_common() { 35 if [ -f "${release}/usr/mdec/bootarm.efi" ]; then 36 # Install EFI bootloader 37 mkdir -p "${mnt}/boot/EFI/BOOT" 38 cp "${release}/usr/mdec/bootarm.efi" "${mnt}/boot/EFI/BOOT/bootarm.efi" 39 40 # Install GENERIC kernel to root of the FFS partition 41 ${GZIP_CMD} -dc ${kernel}/netbsd-${kernels_generic}.gz > "${mnt}/netbsd" 42 echo "./netbsd type=file uname=root gname=wheel mode=0755" \ 43 >> "$tmp/selected_sets" 44 45 cp ${DIR}/files/armv7_boot.cmd ${mnt}/boot/boot.cmd 46 else 47 # Fallback to non-EFI boot command 48 cp ${DIR}/files/armv7_boot_nonefi.cmd ${mnt}/boot/boot.cmd 49 fi 50 51 # Install boot script 52 "${MKUBOOTIMAGE}" -A arm -C none -O netbsd -T script -a 0 -n "NetBSD/armv7 boot" "${mnt}/boot/boot.cmd" "${mnt}/boot/boot.scr" 53 } 54 55 populate_rpi() { 56 firmwaredir="${src}/external/broadcom/rpi-firmware/dist" 57 firmwarefiles="LICENCE.broadcom bootcode.bin fixup.dat fixup_cd.dat start.elf start_cd.elf" 58 59 # The GENERIC .img kernel needs to be installed as kernel7.img for RPI2 60 if [ -f "${mnt}/boot/netbsd-GENERIC.img" ]; then 61 echo "${bar} renaming netbsd-GENERIC.img to kernel7.img ${bar}" 62 mv "${mnt}/boot/netbsd-GENERIC.img" "${mnt}/boot/kernel7.img" 63 64 cat > "${mnt}/boot/cmdline.txt" << EOF 65 root=NAME=${gpt_label_ffs} console=${console} 66 #fb=1280x1024 # to select a mode, otherwise try EDID 67 #fb=disable # to disable fb completely 68 EOF 69 70 cat > ${mnt}/boot/config.txt << EOF 71 # 72 upstream_kernel=1 73 os_prefix=dtb/ 74 cmdline=../cmdline.txt 75 kernel=/kernel7.img 76 # Boot options, see https://www.raspberrypi.org/documentation/configuration/config-txt/boot.md 77 kernel_address=0x01000040 78 # UART settings, see https://www.raspberrypi.org/documentation/configuration/uart.md 79 enable_uart=1 80 force_turbo=0 81 EOF 82 83 echo "${bar} installing firmware files ${bar}" 84 (cd "${mnt}/boot" && 85 for f in ${firmwarefiles}; do 86 echo " $f" 87 cp "${firmwaredir}/${f}" . 88 done 89 ) 90 91 fi 92 93 # 94 # If arm_freq is specified in config.txt, set CPU frequency 95 # to match at boot time. 96 # 97 cp ${release}/etc/rc.local ${mnt}/etc/rc.local 98 cat >> ${mnt}/etc/rc.local << EOF 99 if /sbin/sysctl -q machdep.cpu.frequency.max; then 100 cpufreq_max=\$(/sbin/sysctl -n machdep.cpu.frequency.max) 101 cpufreq_cur=\$(/sbin/sysctl -n machdep.cpu.frequency.current) 102 if [ ! "\$cpufreq_max" = "\$cpufreq_cur" ]; then 103 /sbin/sysctl -w machdep.cpu.frequency.target=\$cpufreq_max 104 fi 105 fi 106 EOF 107 echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" \ 108 >> "$tmp/selected_sets" 109 } 110 111 populate_amlogic() { 112 odroidc1_kernelimg=netbsd-GENERIC.ub 113 114 # Create a boot.ini for Amlogic U-Boot 115 cat >> "${mnt}/boot/boot.ini" << EOF 116 ODROIDC-UBOOT-CONFIG 117 118 setenv bootargs "awge0.mac-address=\${ethaddr}" 119 setenv bootcmd "fatload mmc 0:1 0x21000000 ${odroidc1_kernelimg}; fatload mmc 0:1 0x20000000 dtb/meson8b-odroidc1.dtb; bootm 0x21000000 - 0x20000000" 120 run bootcmd 121 EOF 122 } 123 124 populate() { 125 echo "${bar} looking for kernels in ${kernel} ${bar}" 126 kernels="" 127 # .ub kernels 128 for k in $kernels_generic; do 129 f="${kernel}/netbsd-${k}.ub.gz" 130 test -f "${f}" && kernels="${kernels} ${f}" 131 done 132 # .img kernels 133 for k in $kernels_generic; do 134 f="${kernel}/netbsd-${k}.img.gz" 135 test -f "${f}" && kernels="${kernels} ${f}" 136 done 137 138 # install kernels to /boot partition 139 for k in ${kernels}; do 140 tgt="$(basename ${k} | sed 's/\.gz$//')" 141 echo "${bar} installing ${k} to /boot/${tgt} ${bar}" 142 case "${k}" in 143 *.gz) 144 ${GZIP_CMD} -dc "${k}" > "${mnt}/boot/${tgt}" 145 ;; 146 *) 147 cp "${k}" "${mnt}/boot/${tgt}" 148 ;; 149 esac || 150 fail "Copy of ${k} to ${mnt}/boot/${tgt} failed" 151 done 152 153 # board specific configuration 154 populate_amlogic 155 populate_rpi 156 157 # common configuration 158 populate_common 159 } 160