xref: /freebsd/release/riscv/make-memstick.sh (revision 5523003a4cb036c64a3e2b61221c647582c0fafc)
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