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