diff options
author | Jessica Clarke <jrtc27@FreeBSD.org> | 2022-02-28 22:37:03 +0000 |
---|---|---|
committer | Jessica Clarke <jrtc27@FreeBSD.org> | 2022-02-28 22:37:03 +0000 |
commit | 13cb004130d2b62f79fe421eaf4a7973efd6a505 (patch) | |
tree | 507066d9a6dfbe8539884037aff87a972d09c3a4 /release/amd64 | |
parent | 045c8f526484cb3b97f5fd693987f4376fa43c5f (diff) | |
download | src-13cb004130d2b62f79fe421eaf4a7973efd6a505.tar.gz src-13cb004130d2b62f79fe421eaf4a7973efd6a505.zip |
Diffstat (limited to 'release/amd64')
-rwxr-xr-x | release/amd64/make-memstick.sh | 42 | ||||
-rw-r--r-- | release/amd64/mkisoimages.sh | 32 |
2 files changed, 59 insertions, 15 deletions
diff --git a/release/amd64/make-memstick.sh b/release/amd64/make-memstick.sh index c0e405c3a976..835dc126d61d 100755 --- a/release/amd64/make-memstick.sh +++ b/release/amd64/make-memstick.sh @@ -5,7 +5,7 @@ # clean up after itself very well for error conditions on purpose so the # problem can be diagnosed (full filesystem most likely but ...). # -# Usage: make-memstick.sh <directory tree> <image filename> +# Usage: make-memstick.sh <directory tree or manifest> <image filename> # # $FreeBSD$ # @@ -19,12 +19,20 @@ PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH if [ $# -ne 2 ]; then - echo "make-memstick.sh /path/to/directory /path/to/image/file" + echo "make-memstick.sh /path/to/directory/or/manifest /path/to/image/file" exit 1 fi -if [ ! -d ${1} ]; then - echo "${1} must be a directory" +MAKEFSARG=${1} + +if [ -f ${MAKEFSARG} ]; then + BASEBITSDIR=`dirname ${MAKEFSARG}` + METALOG=${MAKEFSARG} +elif [ -d ${MAKEFSARG} ]; then + BASEBITSDIR=${MAKEFSARG} + METALOG= +else + echo "${MAKEFSARG} must exist" exit 1 fi @@ -33,20 +41,30 @@ if [ -e ${2} ]; then exit 1 fi -echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab -echo 'root_rw_mount="NO"' > ${1}/etc/rc.conf.local -makefs -B little -o label=FreeBSD_Install -o version=2 ${2}.part ${1} -rm ${1}/etc/fstab -rm ${1}/etc/rc.conf.local +echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${BASEBITSDIR}/etc/fstab +echo 'root_rw_mount="NO"' > ${BASEBITSDIR}/etc/rc.conf.local +if [ -n "${METALOG}" ]; then + metalogfilename=$(mktemp /tmp/metalog.XXXXXX) + cat ${METALOG} > ${metalogfilename} + echo "./etc/fstab type=file uname=root gname=wheel mode=0644" >> ${metalogfilename} + echo "./etc/rc.conf.local type=file uname=root gname=wheel mode=0644" >> ${metalogfilename} + MAKEFSARG=${metalogfilename} +fi +makefs -D -B little -o label=FreeBSD_Install -o version=2 ${2}.part ${MAKEFSARG} +rm ${BASEBITSDIR}/etc/fstab +rm ${BASEBITSDIR}/etc/rc.conf.local +if [ -n "${METALOG}" ]; then + rm ${metalogfilename} +fi # Make an ESP in a file. espfilename=$(mktemp /tmp/efiboot.XXXXXX) -make_esp_file ${espfilename} ${fat32min} ${1}/boot/loader.efi +make_esp_file ${espfilename} ${fat32min} ${BASEBITSDIR}/boot/loader.efi mkimg -s mbr \ - -b ${1}/boot/mbr \ + -b ${BASEBITSDIR}/boot/mbr \ -p efi:=${espfilename} \ - -p freebsd:-"mkimg -s bsd -b ${1}/boot/boot -p freebsd-ufs:=${2}.part" \ + -p freebsd:-"mkimg -s bsd -b ${BASEBITSDIR}/boot/boot -p freebsd-ufs:=${2}.part" \ -a 2 \ -o ${2} rm ${espfilename} diff --git a/release/amd64/mkisoimages.sh b/release/amd64/mkisoimages.sh index 7f79ddc800e9..90e6aed5e7ec 100644 --- a/release/amd64/mkisoimages.sh +++ b/release/amd64/mkisoimages.sh @@ -41,7 +41,23 @@ if [ -z $MKIMG ]; then fi if [ "$1" = "-b" ]; then - BASEBITSDIR="$4" + MAKEFSARG="$4" +else + MAKEFSARG="$3" +fi + +if [ -f ${MAKEFSARG} ]; then + BASEBITSDIR=`dirname ${MAKEFSARG}` + METALOG=${MAKEFSARG} +elif [ -d ${MAKEFSARG} ]; then + BASEBITSDIR=${MAKEFSARG} + METALOG= +else + echo "${MAKEFSARG} must exist" + exit 1 +fi + +if [ "$1" = "-b" ]; then # This is highly x86-centric and will be used directly below. bootable="-o bootimage=i386;$BASEBITSDIR/boot/cdboot -o no-emul-boot" @@ -54,7 +70,6 @@ if [ "$1" = "-b" ]; then shift else - BASEBITSDIR="$3" bootable="" fi @@ -65,12 +80,23 @@ fi LABEL=`echo "$1" | tr '[:lower:]' '[:upper:]'`; shift NAME="$1"; shift +# MAKEFSARG extracted already +shift publisher="The FreeBSD Project. https://www.FreeBSD.org/" echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > "$BASEBITSDIR/etc/fstab" -$MAKEFS -t cd9660 $bootable -o rockridge -o label="$LABEL" -o publisher="$publisher" "$NAME" "$@" +if [ -n "${METALOG}" ]; then + metalogfilename=$(mktemp /tmp/metalog.XXXXXX) + cat ${METALOG} > ${metalogfilename} + echo "./etc/fstab type=file uname=root gname=wheel mode=0644" >> ${metalogfilename} + MAKEFSARG=${metalogfilename} +fi +$MAKEFS -D -t cd9660 $bootable -o rockridge -o label="$LABEL" -o publisher="$publisher" "$NAME" "$MAKEFSARG" "$@" rm -f "$BASEBITSDIR/etc/fstab" rm -f ${espfilename} +if [ -n "${METALOG}" ]; then + rm ${metalogfilename} +fi if [ "$bootable" != "" ]; then # Look for the EFI System Partition image we dropped in the ISO image. |