From 9931fd97d5f7dc6210a22ec0b7cc66fb56d1d17a Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Fri, 30 Oct 2020 13:45:21 -0400 Subject: "make usb" target --- src/parted-usb.sh | 81 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/parted-usb.sh b/src/parted-usb.sh index fff003c..af56c8c 100755 --- a/src/parted-usb.sh +++ b/src/parted-usb.sh @@ -234,6 +234,38 @@ boot_vm() -drive file="$installer_target",format=raw } +do_build() +{ + if [ -b "$target" ] + then + globalize + individualize + release_target_block_devices + elif [ -f "$target" -o ! -e "$target" ] + then + template=${target%.img}.template.img + final=$target + ( + target=$target.tmp + if [ ! -e "$template" ] + then + target="$template".tmp globalize + release_target_block_devices + mv -T "$template".tmp "$template" + fi + + cp -T --reflink=always "$template" "$target" + acquire_target_block_devices + individualize + release_target_block_devices + + mv -T "$target" "$final" + ) + else + die "Target must be a file or block device." + fi +} + . samizdat-paths.sh || die 'samizdat-paths.sh not found' samizdat_linux_dir=/ @@ -270,33 +302,36 @@ fi sanity_checks set -e -if [ "$1" = boot ] -then - boot_vm boot-disk.img -elif [ "$1" ] +if [ "$1" = -n ] then - [ -b "$1" ] || die "Not a block device: $1" - target=$1 - globalize - individualize - release_target_block_devices + shift + DO_BUILD= else - template=boot-disk.template.img - if [ ! -e "$template" ] + DO_BUILD=y +fi + +default_target=boot-disk.img + +if [ "$1" ] +then + + if [ "$1" = USB ] then - target="$template".tmp globalize - release_target_block_devices - mv -T "$template".tmp "$template" + target=$(./src/usb.sh) || exit 1 + elif [ -f "$1" ] + then + case "$1" in + *.img) ;; + *) die "Invalid image filename. Use *.img";; + esac fi + target=$1 +else + target=$default_target +fi - target=boot-disk.img.tmp - cp -T --reflink=always "$template" "$target" - acquire_target_block_devices - individualize - release_target_block_devices - - final=${target%.tmp} - mv -T "$target" "$final" - target=$final +if [ "$DO_BUILD" ] +then + do_build fi boot_vm "$target" -- cgit v1.2.3