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