#!/bin/shBLKSZ=65536[-f"$1"-a-f"$2"]||{echo"Usage: $0 <kernel image> <rootfs image> [output file]"exit1}IMAGE=${3:-openwrt-combined.img}# Make sure provided images are 64k aligned.kern="${IMAGE}.kernel"root="${IMAGE}.rootfs"
ddif="$1"of="$kern"bs=$BLKSZconv=sync2>/dev/null
ddif="$2"of="$root"bs=$BLKSZconv=sync2>/dev/null
# Calculate md5sum over combined kernel and rootfs image.md5=$(cat"$kern""$root"|md5sum-)# Write image header followed by kernel and rootfs image.# The header is padded to 64k, format is:# CI magic word ("Combined Image")# <kernel length> length of kernel encoded as zero padded 8 digit hex# <rootfs length> length of rootfs encoded as zero padded 8 digit hex# <md5sum> checksum of the combined kernel and rootfs image(printf"CI%08x%08x%32s"\$(stat-c"%s""$kern")$(stat-c"%s""$root")"${md5%% *}"|\ddbs=$BLKSZconv=sync;cat"$kern""$root")>${IMAGE}2>/dev/null
# Clean up.
rm-f"$kern""$root"