1#!/bin/bash 2 3set -e 4 5if [ "$#" -ne 1 ]; then 6 echo "$0 path-to-system.img | path-to-vendor.img" >&2 7 exit 1 8fi 9 10srcimg=$1 11if [[ ! -f "$srcimg" ]]; then 12 echo "$0: '${srcimg}' does not exist" 13 exit 1 14fi 15 16base_srcimg=`basename $srcimg` 17label="${base_srcimg%.*}" 18dir_name=$(dirname $srcimg) 19target=${dir_name}/$label-qemu.img 20 21#check if $srcimg is sparse 22magic="3aff26ed" 23src_magic=`xxd -p -l 4 $srcimg` 24 25if [[ $src_magic == $magic ]]; then 26echo "Unsparsing ${srcimg}" 27tmpfile=$(mktemp -t unsparse_image.XXXXXX) 28${SIMG2IMG:-simg2img} $srcimg $tmpfile > /dev/null 2>&1 29srcimg="$tmpfile" 30fi 31 32dd if=/dev/zero of=$target ibs=1024k count=1 > /dev/null 2>&1 33dd if=$srcimg of=$target conv=notrunc,sync ibs=1024k obs=1024k seek=1 > /dev/null 2>&1 34unamestr=`uname` 35curdisksize=$(stat -c %s $target) 36 37dd if=/dev/zero of=$target conv=notrunc bs=1 count=1024k seek=$curdisksize > /dev/null 2>&1 38 39disksize=`expr $curdisksize + 1024 \* 1024 ` 40 41end=`expr $disksize \/ 512 - 2048 - 1` 42${SGDISK:-sgdisk} --clear $target > /dev/null 2>&1 43${SGDISK:-sgdisk} --new=1:2048:$end --type=1:8300 --change-name=1:$label $target > /dev/null 2>&1 44 45if [[ -e $tmpfile ]]; then 46rm $tmpfile 47fi 48