OpenWrt – Diff between revs 2 and 3
?pathlinks?
Rev 2 | Rev 3 | |||
---|---|---|---|---|
1 | #!/bin/sh |
1 | #!/bin/sh |
|
2 | # |
2 | # |
|
3 | # Copyright (C) 2011 OpenWrt.org |
3 | # Copyright (C) 2011 OpenWrt.org |
|
4 | # |
4 | # |
|
5 | # This is free software, licensed under the GNU General Public License v2. |
5 | # This is free software, licensed under the GNU General Public License v2. |
|
6 | # See /LICENSE for more information. |
6 | # See /LICENSE for more information. |
|
7 | # |
7 | # |
|
8 | |
8 | |
|
9 | usage() { |
9 | usage() { |
|
10 | echo "Usage: $0 <OM2P|OM5P|OM5PAC|MR600|MR900|MR1750|A60|A42|A62> <out file path> <kernel path> <rootfs path>" |
10 | echo "Usage: $0 <OM2P|OM5P|OM5PAC|MR600|MR900|MR1750|A60|A42|A62> <out file path> <kernel path> <rootfs path>" |
|
11 | rm -f $CFG_OUT |
11 | rm -f $CFG_OUT |
|
12 | exit 1 |
12 | exit 1 |
|
13 | } |
13 | } |
|
14 | |
14 | |
|
15 | [ "$#" -lt 4 ] && usage |
15 | [ "$#" -lt 4 ] && usage |
|
16 | |
16 | |
|
17 | CE_TYPE=$1 |
17 | CE_TYPE=$1 |
|
18 | CFG_OUT=$2 |
18 | CFG_OUT=$2 |
|
19 | KERNEL_PATH=$3 |
19 | KERNEL_PATH=$3 |
|
20 | ROOTFS_PATH=$4 |
20 | ROOTFS_PATH=$4 |
|
21 | |
21 | |
|
22 | case $CE_TYPE in |
22 | case $CE_TYPE in |
|
23 | OM2P) |
23 | OM2P) |
|
24 | MAX_PART_SIZE=7168 |
24 | MAX_PART_SIZE=7168 |
|
25 | KERNEL_FLASH_ADDR=0x1c0000 |
25 | KERNEL_FLASH_ADDR=0x1c0000 |
|
26 | FLASH_BS=262144 |
26 | FLASH_BS=262144 |
|
27 | MD5_SKIP_BLOCKS=4 |
27 | MD5_SKIP_BLOCKS=1 |
|
28 | SIZE_FACTOR=1 |
28 | SIZE_FACTOR=1 |
|
29 | SIZE_FORMAT="%d" |
29 | SIZE_FORMAT="%d" |
|
30 | ;; |
30 | ;; |
|
31 | OM5P|OM5PAC|MR600|MR900|MR1750|A60) |
31 | OM5P|OM5PAC|MR600|MR900|MR1750|A60) |
|
32 | MAX_PART_SIZE=7808 |
32 | MAX_PART_SIZE=7808 |
|
33 | KERNEL_FLASH_ADDR=0xb0000 |
33 | KERNEL_FLASH_ADDR=0xb0000 |
|
34 | FLASH_BS=65536 |
34 | FLASH_BS=65536 |
|
35 | MD5_SKIP_BLOCKS=4 |
35 | MD5_SKIP_BLOCKS=4 |
|
36 | SIZE_FACTOR=1 |
36 | SIZE_FACTOR=1 |
|
37 | SIZE_FORMAT="%d" |
37 | SIZE_FORMAT="%d" |
|
38 | ;; |
38 | ;; |
|
39 | A42) |
39 | A42) |
|
40 | MAX_PART_SIZE=15616 |
40 | MAX_PART_SIZE=15616 |
|
41 | KERNEL_FLASH_ADDR=0x180000 |
41 | KERNEL_FLASH_ADDR=0x180000 |
|
42 | FLASH_BS=65536 |
42 | FLASH_BS=65536 |
|
43 | MD5_SKIP_BLOCKS=4 |
43 | MD5_SKIP_BLOCKS=4 |
|
44 | SIZE_FACTOR=1024 |
44 | SIZE_FACTOR=1024 |
|
45 | SIZE_FORMAT="0x%08x" |
45 | SIZE_FORMAT="0x%08x" |
|
46 | ;; |
46 | ;; |
|
47 | A62) |
47 | A62) |
|
48 | MAX_PART_SIZE=15552 |
48 | MAX_PART_SIZE=15552 |
|
49 | KERNEL_FLASH_ADDR=0x1a0000 |
49 | KERNEL_FLASH_ADDR=0x1a0000 |
|
50 | FLASH_BS=65536 |
50 | FLASH_BS=65536 |
|
51 | MD5_SKIP_BLOCKS=4 |
51 | MD5_SKIP_BLOCKS=4 |
|
52 | SIZE_FACTOR=1024 |
52 | SIZE_FACTOR=1024 |
|
53 | SIZE_FORMAT="0x%08x" |
53 | SIZE_FORMAT="0x%08x" |
|
54 | ;; |
54 | ;; |
|
55 | *) |
55 | *) |
|
56 | echo "Error - unsupported ce type: $CE_TYPE" |
56 | echo "Error - unsupported ce type: $CE_TYPE" |
|
57 | exit 1 |
57 | exit 1 |
|
58 | ;; |
58 | ;; |
|
59 | esac |
59 | esac |
|
60 | |
60 | |
|
61 | CHECK_BS=65536 |
61 | CHECK_BS=65536 |
|
62 | |
62 | |
|
63 | KERNEL_SIZE=$(stat -c%s "$KERNEL_PATH") |
63 | KERNEL_SIZE=$(stat -c%s "$KERNEL_PATH") |
|
64 | KERNEL_MD5=$(mkhash md5 $KERNEL_PATH) |
64 | KERNEL_MD5=$(mkhash md5 $KERNEL_PATH) |
|
65 | KERNEL_SHA256=$(mkhash sha256 $KERNEL_PATH) |
65 | KERNEL_SHA256=$(mkhash sha256 $KERNEL_PATH) |
|
66 | KERNEL_PART_SIZE_KB=$(size=$(($KERNEL_SIZE / $FLASH_BS)); [ $(($size * $FLASH_BS)) -lt $KERNEL_SIZE ] && size=$(($size + 1)); echo $(($size * $FLASH_BS / 1024))) |
66 | KERNEL_PART_SIZE_KB=$(size=$(($KERNEL_SIZE / $FLASH_BS)); [ $(($size * $FLASH_BS)) -lt $KERNEL_SIZE ] && size=$(($size + 1)); echo $(($size * $FLASH_BS / 1024))) |
|
67 | KERNEL_PART_SIZE=$(printf $SIZE_FORMAT $(($KERNEL_PART_SIZE_KB * $SIZE_FACTOR))) |
67 | KERNEL_PART_SIZE=$(printf $SIZE_FORMAT $(($KERNEL_PART_SIZE_KB * $SIZE_FACTOR))) |
|
68 | |
68 | |
|
69 | ROOTFS_FLASH_ADDR=$(addr=$(($KERNEL_FLASH_ADDR + ($KERNEL_PART_SIZE_KB * 1024))); printf "0x%x" $addr) |
69 | ROOTFS_FLASH_ADDR=$(addr=$(($KERNEL_FLASH_ADDR + ($KERNEL_PART_SIZE_KB * 1024))); printf "0x%x" $addr) |
|
70 | ROOTFS_SIZE=$(stat -c%s "$ROOTFS_PATH") |
70 | ROOTFS_SIZE=$(stat -c%s "$ROOTFS_PATH") |
|
71 | ROOTFS_CHECK_BLOCKS=$((($ROOTFS_SIZE / $CHECK_BS) - $MD5_SKIP_BLOCKS)) |
71 | ROOTFS_CHECK_BLOCKS=$((($ROOTFS_SIZE / $CHECK_BS) - $MD5_SKIP_BLOCKS)) |
|
72 | ROOTFS_MD5=$(dd if=$ROOTFS_PATH bs=$CHECK_BS count=$ROOTFS_CHECK_BLOCKS 2>&- | mkhash md5) |
72 | ROOTFS_MD5=$(dd if=$ROOTFS_PATH bs=$CHECK_BS count=$ROOTFS_CHECK_BLOCKS 2>&- | mkhash md5) |
|
73 | ROOTFS_MD5_FULL=$(mkhash md5 $ROOTFS_PATH) |
73 | ROOTFS_MD5_FULL=$(mkhash md5 $ROOTFS_PATH) |
|
74 | ROOTFS_SHA256_FULL=$(mkhash sha256 $ROOTFS_PATH) |
74 | ROOTFS_SHA256_FULL=$(mkhash sha256 $ROOTFS_PATH) |
|
75 | ROOTFS_CHECK_SIZE=$(printf '0x%x' $(($ROOTFS_CHECK_BLOCKS * $CHECK_BS))) |
75 | ROOTFS_CHECK_SIZE=$(printf '0x%x' $(($ROOTFS_CHECK_BLOCKS * $CHECK_BS))) |
|
76 | ROOTFS_PART_SIZE_KB=$(($MAX_PART_SIZE - $KERNEL_PART_SIZE_KB)) |
76 | ROOTFS_PART_SIZE_KB=$(($MAX_PART_SIZE - $KERNEL_PART_SIZE_KB)) |
|
77 | ROOTFS_PART_SIZE=$(printf $SIZE_FORMAT $(($ROOTFS_PART_SIZE_KB * $SIZE_FACTOR))) |
77 | ROOTFS_PART_SIZE=$(printf $SIZE_FORMAT $(($ROOTFS_PART_SIZE_KB * $SIZE_FACTOR))) |
|
78 | |
78 | |
|
79 | cat << EOF > $CFG_OUT |
79 | cat << EOF > $CFG_OUT |
|
80 | [vmlinux] |
80 | [vmlinux] |
|
81 | filename=kernel |
81 | filename=kernel |
|
82 | md5sum=$KERNEL_MD5 |
82 | md5sum=$KERNEL_MD5 |
|
83 | filemd5sum=$KERNEL_MD5 |
83 | filemd5sum=$KERNEL_MD5 |
|
84 | filesha256sum=$KERNEL_SHA256 |
84 | filesha256sum=$KERNEL_SHA256 |
|
85 | flashaddr=$KERNEL_FLASH_ADDR |
85 | flashaddr=$KERNEL_FLASH_ADDR |
|
86 | checksize=0x0 |
86 | checksize=0x0 |
|
87 | cmd_success=setenv bootseq 1,2; setenv kernel_size_1 $KERNEL_PART_SIZE; saveenv |
87 | cmd_success=setenv bootseq 1,2; setenv kernel_size_1 $KERNEL_PART_SIZE; saveenv |
|
88 | cmd_fail=reset |
88 | cmd_fail=reset |
|
89 | |
89 | |
|
90 | [rootfs] |
90 | [rootfs] |
|
91 | filename=rootfs |
91 | filename=rootfs |
|
92 | md5sum=$ROOTFS_MD5 |
92 | md5sum=$ROOTFS_MD5 |
|
93 | filemd5sum=$ROOTFS_MD5_FULL |
93 | filemd5sum=$ROOTFS_MD5_FULL |
|
94 | filesha256sum=$ROOTFS_SHA256_FULL |
94 | filesha256sum=$ROOTFS_SHA256_FULL |
|
95 | flashaddr=$ROOTFS_FLASH_ADDR |
95 | flashaddr=$ROOTFS_FLASH_ADDR |
|
96 | checksize=$ROOTFS_CHECK_SIZE |
96 | checksize=$ROOTFS_CHECK_SIZE |
|
97 | cmd_success=setenv bootseq 1,2; setenv kernel_size_1 $KERNEL_PART_SIZE; setenv rootfs_size_1 $ROOTFS_PART_SIZE; saveenv |
97 | cmd_success=setenv bootseq 1,2; setenv kernel_size_1 $KERNEL_PART_SIZE; setenv rootfs_size_1 $ROOTFS_PART_SIZE; saveenv |
|
98 | cmd_fail=reset |
98 | cmd_fail=reset |
|
99 | EOF |
99 | EOF |
|
100 | |
100 | |