blob: 1058aba812699cb1ef243bea03056e4161b3617a (
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#!/bin/sh
ubootenv=""
nokernel=""
ubinize_param=""
kernel=""
rootfs=""
outfile=""
err=""
get_magic_word() {
dd if=$1 bs=2 count=1 2>/dev/null | hexdump -v -n 2 -e '1/1 "%02x"'
}
is_ubifs() {
if [ "$( get_magic_word $1 )" = "3118" ]; then
echo "1"
fi
}
ubivol() {
volid=$1
name=$2
image=$3
autoresize=$4
echo "[$name]"
echo "mode=ubi"
echo "vol_id=$volid"
echo "vol_type=dynamic"
echo "vol_name=$name"
if [ "$image" ]; then
echo "image=$image"
else
echo "vol_size=1MiB"
fi
if [ "$autoresize" ]; then
echo "vol_flags=autoresize"
fi
}
ubilayout() {
local vol_id=0
local root_is_ubifs="$( is_ubifs "$2" )"
if [ "$1" = "ubootenv" ]; then
ubivol $vol_id ubootenv
vol_id=$(( $vol_id + 1 ))
ubivol $vol_id ubootenv2
vol_id=$(( $vol_id + 1 ))
fi
if [ "$3" ]; then
ubivol $vol_id kernel "$3"
vol_id=$(( $vol_id + 1 ))
fi
ubivol $vol_id rootfs "$2" $root_is_ubifs
vol_id=$(( $vol_id + 1 ))
[ "$root_is_ubifs" ] || ubivol $vol_id rootfs_data "" 1
}
while [ "$1" ]; do
if [ "$1" = "--uboot-env" ]; then
ubootenv="ubootenv"
shift
continue
fi
if [ "$1" = "--no-kernel" ]; then
nokernel="nokernel"
shift
continue
fi
if [ ! "$kernel" -a ! "$nokernel" ]; then
[ "${1:0:1}" = "-" ] && break
kernel=$1
shift
continue
fi
if [ ! "$rootfs" ]; then
[ "${1:0:1}" = "-" ] && break
rootfs=$1
shift
continue
fi
if [ ! "$outfile" ]; then
[ "${1:0:1}" = "-" ] && break
outfile=$1
shift
continue
fi
ubinize_param="$@"
break
done
if [ ! -r "$rootfs" -o ! -r "$kernel" -a ! "$nokernel" -o ! "$outfile" ]; then
echo "syntax: $0 [--no-kernel] [--uboot-env] rootfs [kernel] out [ubinize opts]"
exit 1
fi
ubinize="$( which ubinize )"
if [ ! -x "$ubinize" ]; then
echo "ubinize tool not found or not usable"
exit 1
fi
ubinizecfg="$( mktemp )"
ubilayout "$ubootenv" "$rootfs" "$kernel" > "$ubinizecfg"
cat "$ubinizecfg"
ubinize -o "$outfile" $ubinize_param "$ubinizecfg"
err="$?"
[ ! -e "$outfile" ] && err=2
rm "$ubinizecfg"
exit $err
|