1 # $NetBSD: rpi.conf,v 1.34.4.1 2020/04/08 14:03:55 martin Exp $ 2 # Raspberry Pi customization script used by mkimage 3 # 4 5 board=rpi 6 kerneldir=$src/sys/arch/evbarm/compile/RPI/ 7 kernel=$kerneldir/netbsd-RPI.bin 8 kernels_rpi="RPI RPI2" 9 resize=true 10 11 . ${DIR}/conf/evbarm.conf 12 13 firmwaredir=$src/external/broadcom/rpi-firmware/dist 14 firmwarefiles="LICENCE.broadcom bootcode.bin fixup.dat fixup_cd.dat start.elf start_cd.elf" 15 16 make_fstab() { 17 make_fstab_evbarm 18 } 19 20 make_label() { 21 make_label_evbarm 22 } 23 24 customize() { 25 customize_evbarm 26 cat >> ${mnt}/etc/rc.conf << EOF 27 wscons=YES 28 devpubd=YES 29 EOF 30 31 # 32 # If arm_freq is specified in config.txt, set CPU frequency 33 # to match at boot time. 34 # 35 cp ${release}/etc/rc.local ${mnt}/etc/rc.local 36 cat >> ${mnt}/etc/rc.local << EOF 37 if /sbin/sysctl -q machdep.cpu.frequency.max; then 38 cpufreq_max=\$(/sbin/sysctl -n machdep.cpu.frequency.max) 39 cpufreq_cur=\$(/sbin/sysctl -n machdep.cpu.frequency.current) 40 if [ ! "\$cpufreq_max" = "\$cpufreq_cur" ]; then 41 /sbin/sysctl -w machdep.cpu.frequency.target=\$cpufreq_max 42 fi 43 fi 44 EOF 45 echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" \ 46 >> "$tmp/selected_sets" 47 } 48 49 populate() { 50 rpi2_kernel="$(echo $kernel | sed -e 's/RPI/RPI2/g')" 51 52 cat > ${mnt}/boot/cmdline.txt << EOF 53 root=ld0a console=fb 54 #fb=1280x1024 # to select a mode, otherwise try EDID 55 #fb=disable # to disable fb completely 56 EOF 57 58 cat > ${mnt}/boot/config.txt << EOF 59 # 60 upstream_kernel=1 61 # UART settings, see https://www.raspberrypi.org/documentation/configuration/uart.md 62 enable_uart=1 63 force_turbo=0 64 EOF 65 66 echo "${bar} kernel ${kernel} ${bar}" 67 68 if [ ! -f ${kernel} ]; then 69 echo ${PROG}: Missing ${kernel} 1>&2 70 exit 1 71 fi 72 73 # .img files 74 echo "${bar} installing RPI kernel ${bar}" 75 case ${kernel} in 76 *.gz) 77 gzip -dc ${kernel} > ${mnt}/boot/kernel.img 78 ;; 79 *) 80 cp ${kernel} ${mnt}/boot/kernel.img 81 ;; 82 esac || fail "copy of ${kernel} to ${mnt}/boot/kernel.img failed" 83 84 echo "${bar} installing RPI2 kernel ${bar}" 85 case ${rpi2_kernel} in 86 *.gz) 87 gzip -dc ${rpi2_kernel} > ${mnt}/boot/kernel7.img 88 ;; 89 *) 90 cp ${rpi2_kernel} ${mnt}/boot/kernel7.img 91 ;; 92 esac || fail "Copy of ${rpi2_kernel} to ${mnt}/boot/kernel7.img failed" 93 94 # dtb files 95 for k in $kernels_rpi; do 96 test -d "${KERNOBJDIR}/${k}" && \ 97 dtbs="$(${MAKE} -C ${KERNOBJDIR}/${k} -v DTB)" || \ 98 dtbs= 99 for dtb in $dtbs; do 100 f="${KERNOBJDIR}/${k}/${dtb}" 101 test -f "${f}" && kernels="${kernels} ${f}" 102 done 103 done 104 105 echo "${bar} installing kernel files ${bar}" 106 # install kernels to /boot partition 107 for k in ${kernels}; do 108 tgt="$(basename ${k} | sed 's/\.gz$//')" 109 echo "${bar} installing ${k} to /boot/${tgt} ${bar}" 110 case "${k}" in 111 *.gz) 112 ${GZIP_CMD} -dc "${k}" > "${mnt}/boot/${tgt}" 113 ;; 114 *) 115 cp "${k}" "${mnt}/boot/${tgt}" 116 ;; 117 esac 118 done 119 120 echo "${bar} installing firmware files ${bar}" 121 (cd ${mnt}/boot && 122 for f in ${firmwarefiles}; do 123 echo " $f" 124 cp ${firmwaredir}/${f} . || exit 1 125 done 126 ) || fail "Copy of firmware into ${mnt}/boot failed" 127 128 } 129