#!/bin/bash set -ex INPUT=$1 OUTPUT=$2 SIZE=$3 BUF=$4 COMMON_DIR=$(dirname $(readlink -f $0)) ROCKIMG_DIR=${COMMON_DIR}/../rockimg if [ ! -e ${INPUT} ]; then echo "ERROR: No input file \"${INPUT}\"" exit -1 fi rm ${ROCKIMG_DIR}/${OUTPUT} || true if [ ${SIZE} -gt 1024 ]; then echo "ERROR: SIZE bigger than 1K" exit -1 fi BIG_END=$[SIZE / 256] LIT_END=$[SIZE - (BIG_END * 256)] BIG_END=$(echo "ibase=10;obase=16;${BIG_END}" | bc) LIT_END=$(echo "ibase=10;obase=16;${LIT_END}" | bc) dd if=${INPUT} of=${OUTPUT} bs=1k count=10 echo -en "\x${LIT_END}\x${BIG_END}" >> ${OUTPUT} echo -n "$BUF" >> ${OUTPUT} SKIP=$[10 * 1024 + SIZE + 2] dd if=${INPUT} of=${OUTPUT} seek=${SKIP} skip=${SKIP} bs=1