1*5523003aSGlen Barber#!/bin/sh 2*5523003aSGlen Barber# 3*5523003aSGlen Barber# This script generates a "memstick image" (image that can be copied to a 4*5523003aSGlen Barber# USB memory stick) from a directory tree. Note that the script does not 5*5523003aSGlen Barber# clean up after itself very well for error conditions on purpose so the 6*5523003aSGlen Barber# problem can be diagnosed (full filesystem most likely but ...). 7*5523003aSGlen Barber# 8*5523003aSGlen Barber# Usage: make-memstick.sh <directory tree> <image filename> 9*5523003aSGlen Barber# 10*5523003aSGlen Barber# $FreeBSD$ 11*5523003aSGlen Barber# 12*5523003aSGlen Barber 13*5523003aSGlen Barberset -e 14*5523003aSGlen Barber 15*5523003aSGlen BarberPATH=/bin:/usr/bin:/sbin:/usr/sbin 16*5523003aSGlen Barberexport PATH 17*5523003aSGlen Barber 18*5523003aSGlen Barberscriptdir=$(dirname $(realpath $0)) 19*5523003aSGlen Barber. ${scriptdir}/../../tools/boot/install-boot.sh 20*5523003aSGlen Barber 21*5523003aSGlen Barberif [ $# -ne 2 ]; then 22*5523003aSGlen Barber echo "make-memstick.sh /path/to/directory /path/to/image/file" 23*5523003aSGlen Barber exit 1 24*5523003aSGlen Barberfi 25*5523003aSGlen Barber 26*5523003aSGlen Barberif [ ! -d ${1} ]; then 27*5523003aSGlen Barber echo "${1} must be a directory" 28*5523003aSGlen Barber exit 1 29*5523003aSGlen Barberfi 30*5523003aSGlen Barber 31*5523003aSGlen Barberif [ -e ${2} ]; then 32*5523003aSGlen Barber echo "won't overwrite ${2}" 33*5523003aSGlen Barber exit 1 34*5523003aSGlen Barberfi 35*5523003aSGlen Barber 36*5523003aSGlen Barberecho '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab 37*5523003aSGlen Barberecho 'root_rw_mount="NO"' > ${1}/etc/rc.conf.local 38*5523003aSGlen Barbermakefs -B little -o label=FreeBSD_Install -o version=2 ${2}.part ${1} 39*5523003aSGlen Barberrm ${1}/etc/fstab 40*5523003aSGlen Barberrm ${1}/etc/rc.conf.local 41*5523003aSGlen Barber 42*5523003aSGlen Barber# Make an ESP in a file. 43*5523003aSGlen Barberespfilename=$(mktemp /tmp/efiboot.XXXXXX) 44*5523003aSGlen Barbermake_esp_file ${espfilename} ${fat32min} ${1}/boot/loader.efi 45*5523003aSGlen Barber 46*5523003aSGlen Barbermkimg -s gpt \ 47*5523003aSGlen Barber -p efi:=${espfilename} \ 48*5523003aSGlen Barber -p freebsd-ufs:=${2}.part \ 49*5523003aSGlen Barber -o ${2} 50*5523003aSGlen Barberrm ${espfilename} 51*5523003aSGlen Barberrm ${2}.part 52*5523003aSGlen Barber 53