3 NANO_CFGDIR=${NANO_CFGDIR:-${NANO_SRC}/${NANO_TOOLS}/gateworks/cfg}
4 test -d ${NANO_CFGDIR} || NANO_CFGDIR=/var/empty
5 NANO_PMAKE="make" # NB: disable -j 3
8 TARGET_CPUTYPE=xscale; export TARGET_CPUTYPE # XXX
9 TARGET_BIG_ENDIAN=true; export TARGET_BIG_ENDIAN # XXX
11 NANO_CUSTOMIZE="cust_allow_ssh_root"
15 LOCAL_DIR=${NANO_WORLDDIR}/usr/local
16 pprint 2 "Clean and create world directory (${LOCAL_DIR})"
17 if rm -rf ${LOCAL_DIR}/ > /dev/null 2>&1 ; then
20 chflags -R noschg ${LOCAL_DIR}/
23 for f in bin etc lib libdata libexec sbin share; do
24 mkdir -p ${LOCAL_DIR}/$f
27 NANO_CUSTOMIZE="$NANO_CUSTOMIZE clean_usr_local"
29 cust_install_machine_files()
31 echo "cd ${NANO_TOOLS}/gateworks/Files"
32 cd ${NANO_TOOLS}/gateworks/Files
33 find . -print | grep -Ev '/(CVS|\.svn)' | cpio -dumpv ${NANO_WORLDDIR}
35 NANO_CUSTOMIZE="$NANO_CUSTOMIZE cust_install_files cust_install_machine_files"
40 env TARGET_ARCH=${NANO_ARCH} __MAKE_CONF=${NANO_MAKE_CONF} \
41 DESTDIR=${NANO_WORLDDIR} make buildenv
46 for f in wlanstats wlanwds wlanwatch; do
47 echo "(cd tools/tools/net80211/$f; make $1)";
50 net80211_clean_tools()
52 net80211_tools "clean"
54 net80211_build_tools()
58 net80211_install_tools()
60 net80211_tools "install"
62 NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_clean_tools"
63 NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_build_tools"
64 NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_install_tools"
68 echo "cd tools/tools/ath; make clean" | buildenv
72 echo "cd tools/tools/ath; make" | buildenv
76 echo "cd tools/tools/ath; make install" | buildenv
78 NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_clean_tools"
79 NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_build_tools"
80 NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_install_tools"
84 echo "cd tools/tools/npe; make clean" | buildenv
88 echo "cd tools/tools/npe; make" | buildenv
92 echo "cd tools/tools/npe; make install" | buildenv
94 NANO_CUSTOMIZE="$NANO_CUSTOMIZE npe_clean_tools"
95 NANO_CUSTOMIZE="$NANO_CUSTOMIZE npe_build_tools"
96 NANO_CUSTOMIZE="$NANO_CUSTOMIZE npe_install_tools"
98 NANO_MAKEFS="makefs -B big \
99 -o bsize=4096,fsize=512,density=8192,optimization=space"
102 # NB: leave c++ enabled so devd can be built
107 WITHOUT_BIND_DNSSEC=true
108 WITHOUT_BIND_ETC=true
109 WITHOUT_BIND_LIBS_LWRES=true
110 WITHOUT_BLUETOOTH=true
111 WITHOUT_CALENDAR=true
115 WITHOUT_EXAMPLES=true
124 WITHOUT_IPFILTER=true
126 WITHOUT_KERBEROS=true
134 WITHOUT_NS_CACHING=true
140 WITHOUT_SENDMAIL=true
141 WITHOUT_SHAREDOCS=true
146 CONF_INSTALL="$CONF_BUILD
147 WITHOUT_TOOLCHAIN=true
148 WITHOUT_INSTALLLIB=true
151 # NB: override to suppress install of kernel.symbols
154 pprint 2 "install kernel"
155 pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.ik"
158 env TARGET_ARCH=${NANO_ARCH} ${NANO_PMAKE} installkernel \
159 INSTALL_NODEBUG=true \
160 DESTDIR=${NANO_WORLDDIR} \
161 __MAKE_CONF=${NANO_MAKE_CONF} KERNCONF=`basename ${NANO_KERNEL}` \
162 > ${MAKEOBJDIRPREFIX}/_.ik 2>&1
165 # NB: override to force / on s1 instead of s1a
168 pprint 2 "configure nanobsd /etc"
173 # create diskless marker file
176 # Make root filesystem R/O by default
177 echo "root_rw_mount=NO" >> etc/defaults/rc.conf
179 # save config file for scripts
180 echo "NANO_DRIVE=${NANO_DRIVE}" > etc/nanobsd.conf
182 echo "/dev/${NANO_DRIVE}s1 / ufs ro 1 1" > etc/fstab
183 echo "/dev/${NANO_DRIVE}s3 /cfg ufs rw,noauto 2 2" >> etc/fstab
188 create_arm_diskimage()
190 pprint 2 "build diskimage"
191 pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.di"
194 echo "NANO_MEDIASIZE: $NANO_MEDIASIZE"
195 echo "NANO_IMAGES: $NANO_IMAGES"
196 echo "NANO_SECTS: $NANO_SECTS"
197 echo "NANO_HEADS: $NANO_HEADS"
198 echo "NANO_CODESIZE: $NANO_CODESIZE"
199 echo "NANO_CONFSIZE: $NANO_CONFSIZE"
200 echo "NANO_DATASIZE: $NANO_DATASIZE"
202 echo $NANO_MEDIASIZE $NANO_IMAGES \
203 $NANO_SECTS $NANO_HEADS \
204 $NANO_CODESIZE $NANO_CONFSIZE $NANO_DATASIZE |
209 # size of cylinder in sectors
212 # number of full cylinders on media
215 # output fdisk geometry spec, truncate cyls to 1023
217 print "g c" cyl " h" $4 " s" $3
219 print "g c" 1023 " h" $4 " s" $3
222 # size of data partition in full cylinders
223 dsl = int (($7 + cs - 1) / cs)
228 # size of config partition in full cylinders
229 csl = int (($6 + cs - 1) / cs)
232 # size of image partition(s) in full cylinders
233 isl = int ((cyl - dsl - csl) / $2)
235 isl = int (($5 + cs - 1) / cs)
238 # First image partition start at second track
239 print "p 1 165 " $3, isl * cs - $3
242 # Second image partition (if any) also starts offset one
243 # track to keep them identical.
245 print "p 2 165 " $3 + c, isl * cs - $3
249 # Config partition starts at cylinder boundary.
250 print "p 3 165 " c, csl * cs
253 # Data partition (if any) starts at cylinder boundary.
255 print "p 4 165 " c, dsl * cs
256 } else if ($7 < 0 && $1 > c) {
257 print "p 4 165 " c, $1 - c
259 print "Disk space overcommitted by", \
260 c - $1, "sectors" > "/dev/stderr"
264 # Force slice 1 to be marked active. This is necessary
265 # for booting the image from a USB device to work.
268 ' > ${MAKEOBJDIRPREFIX}/_.fdisk
270 IMG=${NANO_DISKIMGDIR}/${NANO_IMGNAME}
273 if [ "${NANO_MD_BACKING}" = "swap" ] ; then
274 MD=`mdconfig -a -t swap -s ${NANO_MEDIASIZE} -x ${NANO_SECTS} \
277 echo ""; echo "Creating md backing file ${IMG} ..."
278 _c=`expr ${NANO_MEDIASIZE} / ${NANO_SECTS}`
279 pprint 2 "dd if=/dev/zero of=${IMG} bs=${BS} count=${_c}"
280 dd if=/dev/zero of=${IMG} bs=${BS} count=${_c}
281 pprint 2 "mdconfig -a -t vnode -f ${IMG} -x ${NANO_SECTS} -y ${NANO_HEADS}"
282 MD=`mdconfig -a -t vnode -f ${IMG} -x ${NANO_SECTS} \
286 trap "mdconfig -d -u $MD" 1 2 15 EXIT
288 echo ""; echo "Write partition table ..."
289 FDISK=${MAKEOBJDIRPREFIX}/_.fdisk
290 pprint 2 "fdisk -i -f ${FDISK} ${MD}"
291 fdisk -i -f ${FDISK} ${MD}
292 pprint 2 "fdisk ${MD}"
296 IMG1=${NANO_DISKIMGDIR}/_.disk.image1
297 echo ""; echo "Create first image ${IMG1} ..."
298 SIZE=`awk '/^p 1/ { print $5 "b" }' ${FDISK}`
299 pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${IMG1} ${NANO_WORLDDIR}"
300 ${NANO_MAKEFS} -s ${SIZE} ${IMG1} ${NANO_WORLDDIR}
301 pprint 2 "dd if=${IMG1} of=/dev/${MD}s1 bs=${BS}"
302 dd if=${IMG1} of=/dev/${MD}s1 bs=${BS}
304 if [ $NANO_IMAGES -gt 1 -a $NANO_INIT_IMG2 -gt 0 ] ; then
305 IMG2=${NANO_DISKIMGDIR}/_.disk.image2
306 echo ""; echo "Create second image ${IMG2}..."
307 for f in ${NANO_WORLDDIR}/etc/fstab ${NANO_WORLDDIR}/conf/base/etc/fstab
309 sed -i "" "s/${NANO_DRIVE}s1/${NANO_DRIVE}s2/g" $f
312 SIZE=`awk '/^p 2/ { print $5 "b" }' ${FDISK}`
313 pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${IMG2} ${NANO_WORLDDIR}"
314 ${NANO_MAKEFS} -s ${SIZE} ${IMG2} ${NANO_WORLDDIR}
315 pprint 2 "dd if=${IMG2} of=/dev/${MD}s2 bs=${BS}"
316 dd if=${IMG2} of=/dev/${MD}s2 bs=${BS}
319 # Create Config slice
320 CFG=${NANO_DISKIMGDIR}/_.disk.cfg
321 echo ""; echo "Creating config partition ${CFG}..."
322 SIZE=`awk '/^p 3/ { print $5 "b" }' ${FDISK}`
323 # XXX: fill from where ?
324 pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${CFG} ${NANO_CFGDIR}"
325 ${NANO_MAKEFS} -s ${SIZE} ${CFG} ${NANO_CFGDIR}
326 pprint 2 "dd if=${CFG} of=/dev/${MD}s3 bs=${BS}"
327 dd if=${CFG} of=/dev/${MD}s3 bs=${BS}
329 rm ${CFG}; CFG= # NB: disable printing below
331 # Create Data slice, if any.
332 if [ $NANO_DATASIZE -gt 0 ] ; then
333 DATA=${NANO_DISKIMGDIR}/_.disk.data
334 echo ""; echo "Creating data partition ${DATA}..."
335 SIZE=`awk '/^p 4/ { print $5 "b" }' ${FDISK}`
336 # XXX: fill from where ?
337 pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${DATA} /var/empty"
338 ${NANO_MAKEFS} -s ${SIZE} ${DATA} /var/empty
339 pprint 2 "dd if=${DATA} of=/dev/${MD}s4 bs=${BS}"
340 dd if=${DATA} of=/dev/${MD}s4 bs=${BS}
341 pprint 2 "rm ${DATA}"
342 rm ${DATA}; DATA= # NB: disable printing below
345 if [ "${NANO_MD_BACKING}" = "swap" ] ; then
346 echo "Writing out _.disk.full..."
347 dd if=/dev/${MD} of=${IMG} bs=${BS}
351 echo "Completed images in:"
353 echo "Full disk: ${IMG}"
354 echo "Primary partition: ${IMG1}"
355 test "${IMG2}" && echo "2ndary partition: ${IMG2}"
356 test "${CFG}" && echo "/cfg partition: ${CFG}"
357 test "${DATA}" && echo "/data partition: ${DATA}"
359 echo "Use dd if=<file> of=/dev/<somewhere> bs=${BS} to transfer an"
360 echo "image to bootable media /dev/<somewhere>."
361 ) > ${MAKEOBJDIRPREFIX}/_.di 2>&1