Home | History | Annotate | Line # | Download | only in conf
      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