Deleted Added
sdiff udiff text old ( 219584 ) new ( 219856 )
full compact
1#!/bin/sh
2#
3# This script generates a "memstick image" (image that can be copied to a
4# USB memory stick) from a directory tree. Note that the script does not
5# clean up after itself very well for error conditions on purpose so the
6# problem can be diagnosed (full filesystem most likely but ...).
7#
8# Usage: make-memstick.sh <directory tree> <image filename>
9#
10# $FreeBSD: head/release/i386/make-memstick.sh 219584 2011-03-13 01:38:24Z nwhitehorn $
11#
12
13PATH=/bin:/usr/bin:/sbin:/usr/sbin
14export PATH
15
16BLOCKSIZE=10240
17
18if [ $# -ne 2 ]; then

--- 8 unchanged lines hidden (view full) ---

27 exit 1
28fi
29
30if [ -e ${2} ]; then
31 echo "won't overwrite ${2}"
32 exit 1
33fi
34
35rm -f ${tempfile}
36makefs ${tempfile} ${1}
37if [ $? -ne 0 ]; then
38 echo "makefs failed"
39 exit 1
40fi
41
42#
43# Use $BLOCKSIZE for transfers to improve efficiency. When calculating
44# how many blocks to transfer "+ 2" is to account for truncation in the
45# division and to provide space for the label.
46#
47
48filesize=`stat -f "%z" ${tempfile}`
49blocks=$(($filesize / ${BLOCKSIZE} + 2))
50dd if=/dev/zero of=${2} bs=${BLOCKSIZE} count=${blocks}
51if [ $? -ne 0 ]; then
52 echo "creation of image file failed"
53 exit 1
54fi
55
56unit=`mdconfig -a -t vnode -f ${2}`
57if [ $? -ne 0 ]; then
58 echo "mdconfig failed"
59 exit 1
60fi
61
62fdisk -BIq /dev/${unit}
63if [ $? -ne 0 ]; then
64 echo "fdisk failed"
65 exit 1
66fi
67
68bsdlabel -B -w /dev/${unit}
69if [ $? -ne 0 ]; then
70 echo "bsdlabel failed"
71 exit 1
72fi
73
74dd if=${tempfile} of=/dev/${unit}a bs=$BLOCKSIZE conv=sync
75if [ $? -ne 0 ]; then
76 echo "copying filesystem into image file failed"
77 exit 1
78fi
79
80mdconfig -d -u ${unit}
81
82rm -f ${tempfile}
83