evbmips.conf revision 1.2 1 # $NetBSD: evbmips.conf,v 1.2 2020/12/23 10:35:18 rin Exp $
2 # evbmips shared config
3 #
4 image=$HOME/${board}.img
5
6 MACHINE=evbmips
7
8 extra=48 # spare space
9 init=32
10 boot=$((192 - ${init}))
11 ffsoffset=$(( (${init} + ${boot}) / 2 ))m
12
13 size=0 # autocompute
14 msdosid=12
15
16 if $gpt; then
17 partition_type="gpt"
18 else
19 partition_type="disklabel"
20 fi
21
22 mkdir -p ${mnt}/boot
23
24 make_label_evbmips() {
25 # compute all sizes in terms of sectors
26 local totalsize=$(( ${size} / 512 ))
27
28 local bootsize=$(( ${boot} * 1024 ))
29
30 local bootoffset=$(( ${init} * 1024 ))
31
32 local asize=$(( ${totalsize} - ${bootsize} - ${bootoffset} ))
33 local aoffset=$(( ${bootoffset} + ${bootsize} ))
34
35 local bps=512
36 local spt=32
37 local tpc=64
38 local spc=2048
39 local cylinders=$(( ${totalsize} / ${spc} ))
40
41 cat << EOF
42 type: SCSI
43 disk: STORAGE DEVICE
44 label: fictitious
45 flags: removable
46 bytes/sector: ${bps}
47 sectors/track: ${spt}
48 tracks/cylinder: ${tpc}
49 sectors/cylinder: ${spc}
50 cylinders: ${cylinders}
51 total sectors: ${totalsize}
52 rpm: 3600
53 interleave: 1
54 trackskew: 0
55 cylinderskew: 0
56 headswitch: 0 # microseconds
57 track-to-track seek: 0 # microseconds
58 drivedata: 0
59
60 8 partitions:
61 # size offset fstype [fsize bsize cpg/sgs]
62 a: ${asize} ${aoffset} 4.2BSD ${fsize} ${bsize} 0 #
63 c: ${totalsize} 0 unused 0 0 #
64 e: ${bootsize} ${bootoffset} MSDOS #
65 EOF
66 }
67
68 make_fstab_evbmips_gpt() {
69 cat > ${mnt}/etc/fstab << EOF
70 # NetBSD /etc/fstab
71 # See /usr/share/examples/fstab/ for more examples.
72 NAME=${gpt_label_ffs:-netbsd-root} / ffs rw,noatime 1 1
73 NAME=${gpt_label_boot:-boot} /boot msdos rw 1 1
74 kernfs /kern kernfs rw
75 ptyfs /dev/pts ptyfs rw
76 procfs /proc procfs rw
77 tmpfs /var/shm tmpfs rw,-m1777,-sram%25
78 EOF
79 }
80
81 make_fstab_evbmips_normal() {
82 cat > ${mnt}/etc/fstab << EOF
83 # NetBSD /etc/fstab
84 # See /usr/share/examples/fstab/ for more examples.
85 ROOT.a / ffs rw,noatime 1 1
86 ROOT.e /boot msdos rw 1 1
87 kernfs /kern kernfs rw
88 ptyfs /dev/pts ptyfs rw
89 procfs /proc procfs rw
90 tmpfs /var/shm tmpfs rw,-m1777,-sram%25
91 EOF
92 }
93
94 # From Richard Neswold's:
95 # http://rich-tbp.blogspot.com/2013/03/netbsd-on-rpi-minimizing-disk-writes.html
96 # Also for the postfix stuff below
97 make_fstab_evbmips_minwrites() {
98 cat > ${mnt}/etc/fstab << EOF
99 # NetBSD /etc/fstab
100 # See /usr/share/examples/fstab/ for more examples.
101 ROOT.a / ffs rw,log,noatime,nodevmtime 1 1
102 ROOT.e /boot msdos rw 1 1
103 kernfs /kern kernfs rw
104 ptyfs /dev/pts ptyfs rw
105 procfs /proc procfs rw
106 tmpfs /tmp tmpfs rw,-s32M
107 tmpfs /var/log tmpfs rw,union,-s32M
108 tmpfs /var/run tmpfs rw,union,-s1M
109 tmpfs /var/mail tmpfs rw,union,-s10M
110 tmpfs /var/spool/postfix tmpfs rw,union,-s20M
111 tmpfs /var/db/postfix tmpfs rw,union,-s1M
112 tmpfs /var/chroot tmpfs rw,union,-s10M
113 tmpfs /var/shm tmpfs rw,-m1777,-sram%25
114 EOF
115 }
116
117 make_fstab_evbmips() {
118 if $gpt; then
119 make_fstab_evbmips_gpt
120 elif $minwrites; then
121 make_fstab_evbmips_minwrites
122 else
123 make_fstab_evbmips_normal
124 fi
125 echo "./etc/fstab type=file uname=root gname=wheel mode=0644" \
126 >> "$tmp/selected_sets"
127
128 # Missing mount points from fstab
129 echo "./proc type=dir uname=root gname=wheel mode=0755" \
130 >> "$tmp/selected_sets"
131 echo "./kern type=dir uname=root gname=wheel mode=0755" \
132 >> "$tmp/selected_sets"
133 }
134
135 customize_evbmips() {
136 if $minwrites; then
137 mkdir ${mnt}/etc/postfix
138 (umask 022
139 sed -e 's/fifo/unix/' < ${release}/etc/postfix/master.cf > \
140 ${mnt}/etc/postfix/master.cf)
141 fi
142
143 cp ${release}/etc/rc.conf ${mnt}/etc/rc.conf
144 cat >> ${mnt}/etc/rc.conf << EOF
145 dev_exists() {
146 if /sbin/drvctl -l \$1 >/dev/null 2>&1 ; then
147 printf YES
148 else
149 printf NO
150 fi
151 }
152
153 rc_configured=YES
154 hostname=${hostname:-${board}}
155 no_swap=YES
156 savecore=NO
157 sshd=YES
158 dhcpcd=YES
159 ntpd=YES
160 ntpd_flags="-g"
161 creds_msdos=YES
162 creds_msdos_partition=/boot
163 EOF
164
165 if $resize; then
166 cat >> ${mnt}/etc/rc.conf << EOF
167 resize_${partition_type}=YES
168 resize_root=YES
169 resize_root_flags="-p"
170 resize_root_postcmd="/sbin/reboot -n"
171 EOF
172 fi
173
174 echo "./etc/rc.conf type=file uname=root gname=wheel mode=0644" \
175 >> "$tmp/selected_sets"
176
177 mkdir ${mnt}/etc/rc.d
178 for _f in resize_${partition_type} creds_msdos; do
179 cp ${DIR}/files/${_f} ${mnt}/etc/rc.d/${_f}
180 echo "./etc/rc.d/${_f} type=file uname=root gname=wheel mode=0555" \
181 >> "$tmp/selected_sets"
182 done
183
184 if [ ! -f ${release}/dev/MAKEDEV ]; then
185 echo ${PROG}: Missing ${release}/dev/MAKEDEV 1>&2
186 exit 1
187 fi
188 echo "${bar} running MAKEDEV ${bar}"
189 ${HOST_SH} ${release}/dev/MAKEDEV -s all | sed -e 's:^\./:\./dev/:' \
190 >> "$tmp/selected_sets"
191
192 echo "${bar} fixing up permissions"
193 echo "./boot type=dir uname=root gname=wheel mode=0755" \
194 >> "$tmp/selected_sets"
195 }
196