make-memstick.sh revision 268162
1214501Srpaulo#!/bin/sh
2214501Srpaulo#
3252726Srpaulo# This script generates a "memstick image" (image that can be copied to a
4214501Srpaulo# USB memory stick) from a directory tree.  Note that the script does not
5252726Srpaulo# clean up after itself very well for error conditions on purpose so the
6252726Srpaulo# problem can be diagnosed (full filesystem most likely but ...).
7214501Srpaulo#
8214501Srpaulo# Usage: make-memstick.sh <directory tree> <image filename>
9214501Srpaulo#
10214501Srpaulo# $FreeBSD: head/release/amd64/make-memstick.sh 268162 2014-07-02 15:23:13Z nwhitehorn $
11214501Srpaulo#
12214501Srpaulo
13214501SrpauloPATH=/bin:/usr/bin:/sbin:/usr/sbin
14214501Srpauloexport PATH
15252726Srpaulo
16214501Srpauloif [ $# -ne 2 ]; then
17214501Srpaulo	echo "make-memstick.sh /path/to/directory /path/to/image/file"
18214501Srpaulo	exit 1
19214501Srpaulofi
20214501Srpaulo
21214501Srpauloif [ ! -d ${1} ]; then
22214501Srpaulo	echo "${1} must be a directory"
23252726Srpaulo	exit 1
24214501Srpaulofi
25214501Srpaulo
26214501Srpauloif [ -e ${2} ]; then
27214501Srpaulo	echo "won't overwrite ${2}"
28214501Srpaulo	exit 1
29214501Srpaulofi
30214501Srpaulo
31252726Srpauloecho '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab
32214501Srpaulomakefs -B little -o label=FreeBSD_Install ${2}.part ${1}
33214501Srpauloif [ $? -ne 0 ]; then
34214501Srpaulo	echo "makefs failed"
35214501Srpaulo	exit 1
36214501Srpaulofi
37214501Srpaulorm ${1}/etc/fstab
38214501Srpaulo
39214501Srpaulomkimg -s gpt -b ${1}/boot/pmbr -p efi:=${1}/boot/boot1.efifat -p freebsd-boot:=${1}/boot/gptboot -p freebsd-ufs:=${2}.part -p freebsd-swap::1M -o ${2}
40214501Srpaulorm ${2}.part
41214501Srpaulo
42214501Srpaulo