#!/bin/sh BLKSZ=65536 [ -f "$1" -a -f "$2" ] || { echo "Usage: $0 [output file]" exit 1 } IMAGE=${3:-openwrt-combined.img} # Make sure provided images are 64k aligned. kern="${IMAGE}.kernel" root="${IMAGE}.rootfs" dd if="$1" of="$kern" bs=$BLKSZ conv=sync 2>/dev/null dd if="$2" of="$root" bs=$BLKSZ conv=sync 2>/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") # length of kernel encoded as zero padded 8 digit hex # length of rootfs encoded as zero padded 8 digit hex # checksum of the combined kernel and rootfs image ( printf "CI%08x%08x%32s" \ $(stat -c "%s" "$kern") $(stat -c "%s" "$root") "${md5%% *}" | \ dd bs=$BLKSZ conv=sync; cat "$kern" "$root" ) > ${IMAGE} 2>/dev/null # Clean up. rm -f "$kern" "$root" '/> [no description]
aboutsummaryrefslogtreecommitdiffstats
blob: 64ef5f303a2806a2e5a879e813d3048ba2172a3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68