| @@ -1,123 +1,125 @@ | | | @@ -1,123 +1,125 @@ |
1 | # $NetBSD: rpi_inst.conf,v 1.12 2019/12/16 11:00:30 skrll Exp $ | | 1 | # $NetBSD: rpi_inst.conf,v 1.13 2020/01/01 14:16:51 skrll Exp $ |
2 | # Raspberry Pi customization script used by mkimage | | 2 | # Raspberry Pi customization script used by mkimage |
3 | # | | 3 | # |
4 | | | 4 | |
5 | board=rpi_inst | | 5 | board=rpi_inst |
6 | kerneldir=${KERNOBJDIR}/RPI_INSTALL | | 6 | kerneldir=${KERNOBJDIR}/RPI_INSTALL |
7 | kernel=$kerneldir/netbsd-RPI_INSTALL.img | | 7 | kernel=$kerneldir/netbsd-RPI_INSTALL.img |
8 | | | 8 | |
9 | . ${DIR}/conf/evbarm.conf | | 9 | . ${DIR}/conf/evbarm.conf |
10 | | | 10 | |
11 | image=$HOME/${board}.img | | 11 | image=$HOME/${board}.img |
12 | | | 12 | |
13 | swap=8 | | 13 | swap=8 |
14 | extra=8 # spare space | | 14 | extra=8 # spare space |
15 | boot=112 | | 15 | boot=112 |
16 | init=8 | | 16 | init=8 |
17 | | | 17 | |
18 | size=$(( 10485760 + ${swap} * 1024 * 512 + ${boot} * 1024 * 512 + ${init} * 1024 * 512 )) | | 18 | size=$(( 10485760 + ${swap} * 1024 * 512 + ${boot} * 1024 * 512 + ${init} * 1024 * 512 )) |
19 | msdosid=12 | | 19 | msdosid=12 |
20 | | | 20 | |
21 | make_label() { | | 21 | make_label() { |
22 | # compute all sizes in terms of sectors | | 22 | # compute all sizes in terms of sectors |
23 | local totalsize=$(( ${newsize} * 1024 * 2 / 512 )) | | 23 | local totalsize=$(( ${newsize} * 1024 * 2 / 512 )) |
24 | | | 24 | |
25 | local swapsize=$(( ${swap} * 1024 )) | | 25 | local swapsize=$(( ${swap} * 1024 )) |
26 | local bootsize=$(( ${boot} * 1024 )) | | 26 | local bootsize=$(( ${boot} * 1024 )) |
27 | | | 27 | |
28 | local bootoffset=$(( ${init} * 1024 )) | | 28 | local bootoffset=$(( ${init} * 1024 )) |
29 | local swapoffset=$(( ${bootoffset} + ${bootsize} )) | | 29 | local swapoffset=$(( ${bootoffset} + ${bootsize} )) |
30 | | | 30 | |
31 | local asize=$(( ${totalsize} - ${swapsize} - ${bootsize} - ${bootoffset} )) | | 31 | local asize=$(( ${totalsize} - ${swapsize} - ${bootsize} - ${bootoffset} )) |
32 | local aoffset=$(( ${swapoffset} + ${swapsize} )) | | 32 | local aoffset=$(( ${swapoffset} + ${swapsize} )) |
33 | | | 33 | |
34 | local bps=512 | | 34 | local bps=512 |
35 | local spt=32 | | 35 | local spt=32 |
36 | local tpc=64 | | 36 | local tpc=64 |
37 | local spc=2048 | | 37 | local spc=2048 |
38 | local cylinders=$(( ${totalsize} / ${spc} )) | | 38 | local cylinders=$(( ${totalsize} / ${spc} )) |
39 | | | 39 | |
40 | cat << EOF | | 40 | cat << EOF |
41 | type: SCSI | | 41 | type: SCSI |
42 | disk: STORAGE DEVICE | | 42 | disk: STORAGE DEVICE |
43 | label: fictitious | | 43 | label: fictitious |
44 | flags: removable | | 44 | flags: removable |
45 | bytes/sector: ${bps} | | 45 | bytes/sector: ${bps} |
46 | sectors/track: ${spt} | | 46 | sectors/track: ${spt} |
47 | tracks/cylinder: ${tpc} | | 47 | tracks/cylinder: ${tpc} |
48 | sectors/cylinder: ${spc} | | 48 | sectors/cylinder: ${spc} |
49 | cylinders: ${cylinders} | | 49 | cylinders: ${cylinders} |
50 | total sectors: ${totalsize} | | 50 | total sectors: ${totalsize} |
51 | rpm: 3600 | | 51 | rpm: 3600 |
52 | interleave: 1 | | 52 | interleave: 1 |
53 | trackskew: 0 | | 53 | trackskew: 0 |
54 | cylinderskew: 0 | | 54 | cylinderskew: 0 |
55 | headswitch: 0 # microseconds | | 55 | headswitch: 0 # microseconds |
56 | track-to-track seek: 0 # microseconds | | 56 | track-to-track seek: 0 # microseconds |
57 | drivedata: 0 | | 57 | drivedata: 0 |
58 | | | 58 | |
59 | 8 partitions: | | 59 | 8 partitions: |
60 | # size offset fstype [fsize bsize cpg/sgs] | | 60 | # size offset fstype [fsize bsize cpg/sgs] |
61 | a: ${asize} ${aoffset} 4.2BSD ${fsize} ${bsize} 0 # | | 61 | a: ${asize} ${aoffset} 4.2BSD ${fsize} ${bsize} 0 # |
62 | b: ${swapsize} ${swapoffset} swap # | | 62 | b: ${swapsize} ${swapoffset} swap # |
63 | d: ${totalsize} 0 unused 0 0 # | | 63 | d: ${totalsize} 0 unused 0 0 # |
64 | e: ${bootsize} ${bootoffset} MSDOS # | | 64 | e: ${bootsize} ${bootoffset} MSDOS # |
65 | EOF | | 65 | EOF |
66 | } | | 66 | } |
67 | | | 67 | |
68 | customize() { | | 68 | customize() { |
69 | echo "${bar} creating directories ${bar}" | | 69 | echo "${bar} creating directories ${bar}" |
70 | mkdir ${mnt}/proc ${mnt}/kern | | 70 | mkdir ${mnt}/proc ${mnt}/kern |
71 | } | | 71 | } |
72 | | | 72 | |
73 | make_fstab() { | | 73 | make_fstab() { |
74 | : | | 74 | : |
75 | } | | 75 | } |
76 | | | 76 | |
77 | firmwaredir=$src/external/broadcom/rpi-firmware/dist | | 77 | firmwaredir=$src/external/broadcom/rpi-firmware/dist |
78 | firmwarefiles="LICENCE.broadcom bootcode.bin fixup.dat fixup_cd.dat start.elf start_cd.elf" | | 78 | firmwarefiles="LICENCE.broadcom bootcode.bin fixup.dat fixup_cd.dat start.elf start_cd.elf" |
79 | dtbs="$(${MAKE} -C ${kerneldir} -v DTB)" | | 79 | dtbs="$(${MAKE} -C ${kerneldir} -v DTB)" |
80 | | | 80 | |
81 | populate() { | | 81 | populate() { |
82 | cat > ${mnt}/boot/cmdline.txt << EOF | | 82 | cat > ${mnt}/boot/cmdline.txt << EOF |
83 | root=ld0a console=fb | | 83 | root=ld0a console=fb |
84 | #fb=1280x1024 # to select a mode, otherwise try EDID | | 84 | #fb=1280x1024 # to select a mode, otherwise try EDID |
85 | #fb=disable # to disable fb completely | | 85 | #fb=disable # to disable fb completely |
86 | EOF | | 86 | EOF |
87 | | | 87 | |
88 | cat > ${mnt}/boot/config.txt << EOF | | 88 | cat > ${mnt}/boot/config.txt << EOF |
| | | 89 | # |
| | | 90 | upstream_kernel=1 |
89 | # UART settings, see https://www.raspberrypi.org/documentation/configuration/uart.md | | 91 | # UART settings, see https://www.raspberrypi.org/documentation/configuration/uart.md |
90 | enable_uart=1 | | 92 | enable_uart=1 |
91 | force_turbo=0 | | 93 | force_turbo=0 |
92 | EOF | | 94 | EOF |
93 | | | 95 | |
94 | if [ ! -f ${kernel} ]; then | | 96 | if [ ! -f ${kernel} ]; then |
95 | echo ${PROG}: Missing ${kernel} 1>&2 | | 97 | echo ${PROG}: Missing ${kernel} 1>&2 |
96 | exit 1 | | 98 | exit 1 |
97 | fi | | 99 | fi |
98 | | | 100 | |
99 | echo "${bar} installing kernel ${bar}" | | 101 | echo "${bar} installing kernel ${bar}" |
100 | case ${kernel} in | | 102 | case ${kernel} in |
101 | *.gz) | | 103 | *.gz) |
102 | echo " ${kernel} uncompressed to kernel.img" | | 104 | echo " ${kernel} uncompressed to kernel.img" |
103 | ${GZIP_CMD} -dc ${kernel} > ${mnt}/boot/kernel.img | | 105 | ${GZIP_CMD} -dc ${kernel} > ${mnt}/boot/kernel.img |
104 | ;; | | 106 | ;; |
105 | *) | | 107 | *) |
106 | echo " ${kernel} copied" | | 108 | echo " ${kernel} copied" |
107 | cp ${kernel} ${mnt}/boot/kernel.img | | 109 | cp ${kernel} ${mnt}/boot/kernel.img |
108 | ;; | | 110 | ;; |
109 | esac || fail "copy of ${kernel} to ${mnt}/boot/kernel.img failed" | | 111 | esac || fail "copy of ${kernel} to ${mnt}/boot/kernel.img failed" |
110 | | | 112 | |
111 | echo "${bar} installing firmware files ${bar}" | | 113 | echo "${bar} installing firmware files ${bar}" |
112 | (cd ${mnt}/boot && | | 114 | (cd ${mnt}/boot && |
113 | for f in ${firmwarefiles}; do | | 115 | for f in ${firmwarefiles}; do |
114 | echo " $f" | | 116 | echo " $f" |
115 | cp ${firmwaredir}/${f} . || exit 1 | | 117 | cp ${firmwaredir}/${f} . || exit 1 |
116 | done | | 118 | done |
117 | for f in ${dtbs}; do | | 119 | for f in ${dtbs}; do |
118 | echo " $f" | | 120 | echo " $f" |
119 | cp ${kerneldir}/${f} . || exit 1 | | 121 | cp ${kerneldir}/${f} . || exit 1 |
120 | done | | 122 | done |
121 | ) || fail "Copy of firmware to ${mnt}/boot failed" | | 123 | ) || fail "Copy of firmware to ${mnt}/boot failed" |
122 | | | 124 | |
123 | } | | 125 | } |