--- upobsd Mon Apr 15 01:49:07 2019 +++ upobsd.new Fri Feb 28 23:41:36 2020 @@ -23,6 +23,7 @@ SIGNIFY_KEY='' AUTO='no' RESPONSE_FILE='' +DISKLABEL_FILE='' OUTPUT="${PWD}/bsd.rd" # get kernel version @@ -148,6 +149,7 @@ uo_addfile() { local dest=${1} local src=${2} + local disklabel=${3} local vnd_n=0 [ -r "${WRKDIR}/bsd.rd" ] || uo_err 2 "uo_addfile: no bsd.rd in WRKDIR" @@ -186,6 +188,17 @@ uo_err 1 "unable to copy: ${src}: ramdisk.d/${dest}" fi + # copy disklabel-file if requested + [[ -n "${disklabel}" && -e ${disklabel} ]] && \ + if ! uo_priv install -m 644 -o root -g wheel -- \ + "${disklabel}" "${WRKDIR}/ramdisk.d/disklabel.template"; then + + uo_priv umount "/dev/vnd${vnd_n}a" || true + uo_priv vnconfig -u "vnd${vnd_n}" || true + + uo_err 1 "unable to copy: ${src}: ramdisk.d/${dest}" + fi + # umount vndX if ! uo_priv umount "/dev/vnd${vnd_n}a" ; then uo_priv vnconfig -u "vnd${vnd_n}" || true @@ -243,7 +256,7 @@ } # parse command-line -while getopts 'hvm:V:a:p:i:u:o:' arg; do +while getopts 'hvm:V:a:p:i:u:d:o:' arg; do case "${arg}" in v) VERBOSE=1 ;; m) MIRROR="${OPTARG}" ;; @@ -252,6 +265,7 @@ p) SIGNIFY_KEY="${OPTARG}" ;; i) AUTO='install'; RESPONSE_FILE="${OPTARG}" ;; u) AUTO='upgrade'; RESPONSE_FILE="${OPTARG}" ;; + d) DISKLABEL_FILE="${OPTARG}" ;; o) OUTPUT="${OPTARG}" ;; *) uo_usage ;; esac @@ -283,7 +297,7 @@ # add response-file if requested [[ ${AUTO} != 'no' ]] && \ - uo_addfile "auto_${AUTO}.conf" "${RESPONSE_FILE}" + uo_addfile "auto_${AUTO}.conf" "${RESPONSE_FILE}" "${DISKLABEL_FILE}" # place bsd.rd where asked uo_output