From 319e8a24f991aa2d1a81ddf9319c8214b73c9027 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sat, 10 Oct 2020 13:56:41 -0400 Subject: improvements --- src/parted-usb.sh | 57 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/src/parted-usb.sh b/src/parted-usb.sh index e688473..4047331 100755 --- a/src/parted-usb.sh +++ b/src/parted-usb.sh @@ -62,7 +62,7 @@ make_target_bootable() sync } -release_target() +release_target_kernel_resources() { umount "$mnt" kpartx -d "$dev" @@ -92,7 +92,9 @@ add_keys() initrd_suffix=.samizdat add_initrd() { - rsync -aL --info=STATS "${1}vmlinuz${2}" "${1}initrd.img${2}${initrd_suffix}" "$mnt"/linux/ + mkdir -p "$mnt"/linux + rsync -aL --info=STATS "${1}vmlinuz${2}" "$mnt"/linux/vmlinuz + rsync -aL --info=STATS "${1}initrd.img${2}${initrd_suffix}" "$mnt"/linux/initrd.img } add_grub_cfg() @@ -101,7 +103,7 @@ add_grub_cfg() cp -aL "$GRUB_CONFIG" "$mnt"/boot/grub } -add_all() +individualize() { add_keys add_initrd "$samizdat_linux_dir"/ "${version_suffix}" @@ -117,8 +119,25 @@ sanity_checks() done } +create_template() +{ + local target="${1}.tmp" + if [ ! -e "${target%.tmp}" ] + then + initialize_target + partition_target + make_target_bootable + release_target_kernel_resources + mv -T "$target" "${target%.tmp}" + fi +} +individualize_target_from() +{ + cp -T --reflink=always "$1" "$target" + with_target "$target" individualize +} . samizdat-paths.sh || die 'samizdat-paths.sh not found' samizdat_linux_dir=/boot @@ -126,27 +145,29 @@ samizdat_linux_dir=/boot : ${GRUB_CONFIG:=conf/grub.cfg} start_keys=64 # megs end_keys=256 # megs -target=fallacy.img.tmp + +if [ "$1" ] +then + version_suffix=-$1 +fi + sanity_checks set -e +template=boot-disk.template.img +target=boot-disk.img.tmp +final=${target%.tmp} +create_template "$template" +individualize_target_from "$template" +mv -T "$target" "$final" -if [ ! -e "$target" ] -then - initialize_target - partition_target - make_target_bootable - release_target -fi -if [ "$1" ] +installer_target=target-disk.img +rm -f "$installer_target" +if [ ! -e "$installer_target" ] then - version_suffix=-$1 + fallocate -l 10G "$installer_target" fi -cp --reflink=always "$target" "$target".keyed -with_target "$target".keyed add_all - -qemu-system-x86_64 -enable-kvm -smp 2 -m 512 -k en-us -vga qxl -drive file="$target".keyed,format=raw -# rm -f "$target" +qemu-system-x86_64 -enable-kvm -smp 2 -m 512 -k en-us -vga qxl -drive file="$final",format=raw -drive file="$installer_target",format=raw -- cgit v1.2.3