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