1219918Snwhitehorn#!/bin/sh
2219918Snwhitehorn#
3219918Snwhitehorn# This script generates a "memstick image" (image that can be copied to a
4219918Snwhitehorn# USB memory stick) from a directory tree.  Note that the script does not
5219918Snwhitehorn# clean up after itself very well for error conditions on purpose so the
6219918Snwhitehorn# problem can be diagnosed (full filesystem most likely but ...).
7219918Snwhitehorn#
8219918Snwhitehorn# Usage: make-memstick.sh <directory tree> <image filename>
9219918Snwhitehorn#
10219918Snwhitehorn# $FreeBSD$
11219918Snwhitehorn#
12219918Snwhitehorn
13219918SnwhitehornPATH=/bin:/usr/bin:/sbin:/usr/sbin
14219918Snwhitehornexport PATH
15219918Snwhitehorn
16219918SnwhitehornBLOCKSIZE=10240
17219918Snwhitehorn
18219918Snwhitehornif [ $# -ne 2 ]; then
19219918Snwhitehorn  echo "make-memstick.sh /path/to/directory /path/to/image/file"
20219918Snwhitehorn  exit 1
21219918Snwhitehornfi
22219918Snwhitehorn
23219918Snwhitehorntempfile="${2}.$$"
24219918Snwhitehorn
25219918Snwhitehornif [ ! -d ${1} ]; then
26219918Snwhitehorn  echo "${1} must be a directory"
27219918Snwhitehorn  exit 1
28219918Snwhitehornfi
29219918Snwhitehorn
30219918Snwhitehornif [ -e ${2} ]; then
31219918Snwhitehorn  echo "won't overwrite ${2}"
32219918Snwhitehorn  exit 1
33219918Snwhitehornfi
34219918Snwhitehorn
35224504Snwhitehornecho '/dev/da0s3 / ufs ro,noatime 1 1' > ${1}/etc/fstab
36219918Snwhitehornrm -f ${tempfile}
37219918Snwhitehornmakefs -B big ${tempfile} ${1}
38219918Snwhitehornif [ $? -ne 0 ]; then
39219918Snwhitehorn  echo "makefs failed"
40219918Snwhitehorn  exit 1
41219918Snwhitehornfi
42219918Snwhitehornrm ${1}/etc/fstab
43219918Snwhitehorn
44271633Semastemkimg -s apm -p freebsd-boot:=${1}/boot/boot1.hfs -p freebsd-ufs/FreeBSD_Install:=${tempfile} -o ${2}
45219918Snwhitehorn
46219918Snwhitehornrm -f ${tempfile}
47219918Snwhitehorn
48