Date: Sat, 20 Feb 2010 20:11:00 +1000 From: "Andrew D. Boyd" <decado@gmail.com> To: svn-src-head@freebsd.org Subject: Re: svn commit: r204044 - head/release/scripts Message-ID: <4B7FB534.5000701@gmail.com> In-Reply-To: <201002181545.o1IFjiAq007348@svn.freebsd.org> References: <201002181545.o1IFjiAq007348@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 19/02/2010 1:45 AM, Ken Smith wrote: > Author: kensmith > Date: Thu Feb 18 15:45:43 2010 > New Revision: 204044 > URL: http://svn.freebsd.org/changeset/base/204044 > > Log: > Provide a script that can be used to create the memstick images. For now > it isn't being integrated into 'make release' because for the forseeable > future the memstick images will be identical to what's on the DVD except > for which package set is provided. If/when what's on the memstick diverges > from what's on the DVD it would make more sense to generate a "memstick" > directory in $CHROOT/R/cdrom and build the memstick image along with the > ISO images. > > Reviewed by: jhb, ru, Garrett Cooper (yanefbsd at gmail dot com) > > Added: > head/release/scripts/make-memstick.sh (contents, props changed) > > Added: head/release/scripts/make-memstick.sh > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/release/scripts/make-memstick.sh Thu Feb 18 15:45:43 2010 (r204044) > @@ -0,0 +1,83 @@ > +#!/bin/sh > +# > +# This script generates a "memstick image" (image that can be copied to a > +# USB memory stick) from a directory tree. Note that the script does not > +# clean up after itself very well for error conditions on purpose so the > +# problem can be diagnosed (full filesystem most likely but ...). > +# > +# Usage: make-memstick.sh <directory tree> <image filename> > +# > +# $FreeBSD$ > +# > + > +PATH=/bin:/usr/bin:/sbin:/usr/sbin > +export PATH > + > +BLOCKSIZE=10240 > + > +if [ $# -ne 2 ]; then > + echo "make-memstick.sh /path/to/directory /path/to/image/file" > + exit 1 > +fi > + > +tempfile="${2}.$$" > + > +if [ ! -d ${1} ]; then > + echo "${1} must be a directory" > + exit 1 > +fi > + > +if [ -e ${2} ]; then > + echo "won't overwrite ${2}" > + exit 1 > +fi > + > +rm -f ${tempfile} > +makefs ${tempfile} ${1} > +if [ $? -ne 0 ]; then > + echo "makefs failed" > + exit 1 > +fi > + > +# > +# Use $BLOCKSIZE for transfers to improve efficiency. When calculating > +# how many blocks to transfer "+ 2" is to account for truncation in the > +# division and to provide space for the label. > +# > + > +filesize=`stat -f "%z" ${tempfile}` > +blocks=$(($filesize / ${BLOCKSIZE} + 2)) > +dd if=/dev/zero of=${2} bs=${BLOCKSIZE} count=${blocks} > +if [ $? -ne 0 ]; then > + echo "creation of image file failed" > + exit 1 > +fi > + > +unit=`mdconfig -a -t vnode -f ${2}` > +if [ $? -ne 0 ]; then > + echo "mdconfig failed" > + exit 1 > +fi > + > +fdisk -BIq /dev/${unit} > +if [ $? -ne 0 ]; then > + echo "fdisk failed" > + exit 1 > +fi > + > +bsdlabel -B -w /dev/${unit} > +if [ $? -ne 0 ]; then > + echo "bsdlabel failed" > + exit 1 > +fi > + > +dd if=${tempfile} of=/dev/${unit}a bs=$BLOCKSIZE conv=sync > +if [ $? -ne 0 ]; then > + echo "copying filesystem into image file failed" > + exit 1 > +fi > + > +mdconfig -d -u ${unit} > + > +rm -f ${tempfile} > + > _______________________________________________ > svn-src-head@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/svn-src-head > To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org" > I think trap should be used to clean up the tempfile in the case of the script exiting before cleaning it up. -- Andrew D. Boyd (decado@gmail.com)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B7FB534.5000701>