X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=scripts%2Fubinize-image.sh;h=a18d6dc428d1cdc21161c5d414ab24211b2b8d03;hp=1b782a6cdc736b7fb2a0b76aea020b527051d1cf;hb=c6d41c320c795b0bb9a9350c7d4b1ce55f25769a;hpb=dc9ebfc9e6543bc9d757e41584015d6e5c7a6a70 diff --git a/scripts/ubinize-image.sh b/scripts/ubinize-image.sh index 1b782a6cdc..a18d6dc428 100755 --- a/scripts/ubinize-image.sh +++ b/scripts/ubinize-image.sh @@ -1,5 +1,6 @@ #!/bin/sh +part="" ubootenv="" ubinize_param="" kernel="" @@ -8,7 +9,7 @@ outfile="" err="" get_magic_word() { - dd if=$1 bs=2 count=1 2>/dev/null | hexdump -v -n 2 -e '1/1 "%02x"' + dd if=$1 bs=2 count=1 2>/dev/null | od -A n -N 2 -t x1 | tr -d ' ' } is_ubifs() { @@ -22,6 +23,7 @@ ubivol() { name=$2 image=$3 autoresize=$4 + size="$5" echo "[$name]" echo "mode=ubi" echo "vol_id=$volid" @@ -29,6 +31,7 @@ ubivol() { echo "vol_name=$name" if [ "$image" ]; then echo "image=$image" + [ -n "$size" ] && echo "vol_size=${size}MiB" else echo "vol_size=1MiB" fi @@ -46,6 +49,22 @@ ubilayout() { ubivol $vol_id ubootenv2 vol_id=$(( $vol_id + 1 )) fi + for part in $parts; do + name="${part%%=*}" + prev="$part" + part="${part#*=}" + [ "$prev" = "$part" ] && part= + + image="${part%%=*}" + prev="$part" + part="${part#*=}" + [ "$prev" = "$part" ] && part= + + size="$part" + + ubivol $vol_id "$name" "$image" "" "$size" + vol_id=$(( $vol_id + 1 )) + done if [ "$3" ]; then ubivol $vol_id kernel "$3" vol_id=$(( $vol_id + 1 )) @@ -65,6 +84,13 @@ while [ "$1" ]; do "--kernel") kernel="$2" shift + shift + continue + ;; + "--part") + parts="$parts $2" + shift + shift continue ;; "-"*) @@ -87,7 +113,7 @@ while [ "$1" ]; do done if [ ! -r "$rootfs" -o ! -r "$kernel" -a ! "$outfile" ]; then - echo "syntax: $0 [--uboot-env] [--kernel kernelimage] rootfs out [ubinize opts]" + echo "syntax: $0 [--uboot-env] [--part =] [--kernel kernelimage] rootfs out [ubinize opts]" exit 1 fi @@ -97,7 +123,11 @@ if [ ! -x "$ubinize" ]; then exit 1 fi -ubinizecfg="$( mktemp )" +ubinizecfg="$( mktemp 2> /dev/null )" +if [ -z "$ubinizecfg" ]; then + # try OSX signature + ubinizecfg="$( mktemp -t 'ubitmp' )" +fi ubilayout "$ubootenv" "$rootfs" "$kernel" > "$ubinizecfg" cat "$ubinizecfg" @@ -107,4 +137,3 @@ err="$?" rm "$ubinizecfg" exit $err -