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