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