From 5e81f2a01bcdb81696d3cdbeb56dd8ac82e131c3 Mon Sep 17 00:00:00 2001 From: zalaare Date: Tue, 15 Aug 2017 13:02:29 -0400 Subject: [PATCH] build system: drop .img extension for the open virtual appliance and change the default syslinux entry from installer to run for the open virtual appliance. --- scripts/mkimage | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/scripts/mkimage b/scripts/mkimage index a5266207b8..6ff5b5e367 100755 --- a/scripts/mkimage +++ b/scripts/mkimage @@ -89,6 +89,7 @@ trap cleanup SIGINT parted -s "$DISK" set 1 boot on fi sync + # create part2 echo "image: creating part2..." STORAGE_PART_START=$(( $SYSTEM_PART_END + 1 )) @@ -184,7 +185,7 @@ EOF mcopy $RELEASE_DIR/3rdparty/bootloader/start.elf :: mcopy $RELEASE_DIR/3rdparty/bootloader/config.txt :: mcopy $RELEASE_DIR/3rdparty/bootloader/distroconfig.txt :: - + if [ -f $RELEASE_DIR/3rdparty/bootloader/dt-blob.bin ]; then mcopy $RELEASE_DIR/3rdparty/bootloader/dt-blob.bin :: fi @@ -282,7 +283,6 @@ fi # bootloader echo "image: merging part2 back to image..." dd if="$LE_TMP/part2.ext4" of="$DISK" bs=512 seek="$STORAGE_PART_START" conv=fsync,notrunc >"$SAVE_ERROR" 2>&1 || show_error - # extract part1 from image to run fsck echo "image: extracting part1 from image..." SYSTEM_PART_COUNT=$(( $SYSTEM_PART_END - $SYSTEM_PART_START + 1 )) @@ -291,15 +291,34 @@ fi # bootloader echo "image: checking filesystem on part1..." fsck -n $LE_TMP/part1.fat >"$SAVE_ERROR" 2>&1 || show_error -# create virtual images +# create virtual image if [ "$PROJECT" = "Generic" ]; then echo "image: creating open virtual appliance..." - qemu-img convert -O vmdk -o subformat=streamOptimized "$DISK" "$DISK.vmdk" - sed -e "s,@DISTRO@,$DISTRO,g" -e "s,@DISK@,$(basename $DISK),g" -e "s,@DISK_SIZE@,$(($DISK_SIZE*1024*1024)),g" $PROJECT_DIR/$PROJECT/config/ovf.template > $DISK.ovf - tar -C $TARGET_IMG -cf $DISK.ova $(basename $DISK).ovf $(basename $DISK).vmdk + # duplicate $DISK so anything we do to it directly doesn't effect original + dd if="$DISK" of="${DISK/img/tmp}" bs=1M >"$SAVE_ERROR" 2>&1 || show_error + # change syslinux default to 'run' + echo "image: modifying fs on part1 for open virtual appliance..." + sed -i "/DEFAULT/ s/installer/run/" "$LE_TMP"/syslinux.cfg + # FIXME: an unalias should work here, but it does not; call mcopy directly + $TOOLCHAIN/bin/mcopy -i $LE_TMP/part1.fat -o "$LE_TMP"/syslinux.cfg ::/EFI/BOOT + $TOOLCHAIN/bin/mcopy -i $LE_TMP/part1.fat -o "$LE_TMP"/syslinux.cfg :: + sync + # merge modified part1 back to tmp disk image + echo "image: merging part1 back to open virtual appliance..." + dd if="$LE_TMP/part1.fat" of="${DISK/img/tmp}" bs=512 seek="$SYSTEM_PART_START" conv=fsync,notrunc >"$SAVE_ERROR" 2>&1 || show_error + # create vmdk from tmp $DISK + qemu-img convert -O vmdk -o subformat=streamOptimized "${DISK/img/tmp}" "${DISK/img/vmdk}" + # generate ovf from template + sed -e "s,@DISTRO@,$DISTRO,g" -e "s,@DISK@,$(basename ${DISK/.img}),g" \ + -e "s,@DISK_SIZE@,$(($DISK_SIZE*1024*1024)),g" \ + $PROJECT_DIR/$PROJECT/config/ovf.template > ${DISK/img/ovf} + # combine ovf and vmdk into official ova + tar -C $TARGET_IMG -cf ${DISK/img/ova} $(basename ${DISK/img/ovf}) $(basename ${DISK/img/vmdk}) echo "image: cleaning up..." - rm $DISK.vmdk $DISK.ovf - [ -n "$SUDO_USER" ] && chown $SUDO_USER: $DISK.ova + # remove tmp $DISK, vmdk and ovf + rm ${DISK/img/tmp} ${DISK/img/vmdk} ${DISK/img/ovf} + # set owner + [ -n "$SUDO_USER" ] && chown $SUDO_USER: ${DISK/img/ova} fi # gzip