-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxiaomi_ax6s_build
executable file
·208 lines (195 loc) · 8.04 KB
/
xiaomi_ax6s_build
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#!/bin/bash
# Script help
if [ "$1" == "-h" ] || [ "$1" == "--h" ] || [ "$1" == "-help" ] || [ "$1" == "--help" ] || [ "$1" == "/?" ]
then
echo "Usage: $0 [version] [ipv6/ipv4] [lan0/lan1] [bss/nobss] or simple press Enter"
exit 0
fi
clear
# Check installed Debian like distro for run OpenWrt imagebuilder
for arg in build-essential libncurses-dev zlib1g-dev gawk git gettext libssl-dev xsltproc rsync wget unzip python3 python3-distutils curl wget
do
if [[ -z `dpkg -l | grep $arg` ]]
then
echo $arg" not installed! Try install this package and run script again."
exit 1
fi
done
# Imagebuilder download function
function imagebuilder_download {
echo "Try download Imagebuilder"
wget -q -O sha256sums https://downloads.openwrt.org/releases/$version_id/targets/mediatek/mt7622/sha256sums
wget -q -O openwrt-imagebuilder-$version_id-mediatek-mt7622.Linux-x86_64.tar.xz https://downloads.openwrt.org/releases/$version_id/targets/mediatek/mt7622/openwrt-imagebuilder-$version_id-mediatek-mt7622.Linux-x86_64.tar.xz
if [[ -n `sha256sum -c sha256sums 2>&1 | grep OK` ]]
then
echo "Imagebuilder for OpenWrt "$version_id" download completed and checked"
rm -rf sha256sums
else
echo "Imagebuilder checksum or downloads not completed"
echo "Try run script again!"
rm -rf sha256sums openwrt-imagebuilder-$version_id-mediatek-mt7622.Linux-x86_64.tar.xz
exit 1
fi
}
# Get current OpenWrt releases
releases_id=$(curl -s https://openwrt.org/ | grep 'Current stable release' | sed -r -e :a -e 's/<[^>]*>//g;/</N;//ba; /[()&]/d' | awk -F ' ' '{printf $6}')
# Initial input data for compile
version_id="$1"
ip_id="$2"
lan_id="$3"
bss_id="$4"
files_id=""
service_id=""
profile_id="xiaomi_redmi-router-ax6s"
# Read packages_id from packages_custom.conf
index=0
while read line; do
packages_id[$index]="$line"
index=$(($index+1))
done < packages_custom.conf
# Current last version display
echo -e "Current latest release version: "$(echo $releases_id | awk '{print $1}')
# Check version_id correct
if [ -z "$1" ]
then
while [[ -z `echo $releases_id | sed 's/ /\n/g' | grep -x "$version_id"` ]]; do
echo "Version openwrt blank or not correct"
read -p "Please enter correct OpenWrt version: " version_id
clear
done
else
while [[ -z `echo $releases_id | sed 's/ /\n/g' | grep -x "$version_id"` ]]; do
echo "Version openwrt blank or not correct"
read -p "Please enter correct OpenWrt version: " version_id
clear
done
fi
# Check old version Imagebuilder exist or not
if [ -f repositories.conf ]; then
echo "Imagebuilder maybe already exist"
echo "Check Imagebuilder version"
if [[ -n `cat repositories.conf | grep $version_id` ]]
then
echo "Imagebuilder maybe already have OpenWrt version "$version_id
read -r -p "Do you need reinstall this version? [Y/n]" response
response=${response,,}
if [[ $response =~ ^(y| ) ]] || [[ -z $response ]]; then
imagebuilder_download
echo "Try reinstall Imagebuilder version "$version_id
rm -rf bin dl staging_dir build_dir key-build key-build.pub key-build.ucert key-build.ucert.revoke keys include packages/Packages packages/Packages.gz packages/Packages.sig packages/README.md scripts target .config .packageinfo .targetinfo Makefile repositories.conf rules.mk .profiles.mk tmp
tar -xf openwrt-imagebuilder-$version_id-mediatek-mt7622.Linux-x86_64.tar.xz --strip-components 1
rm -rf openwrt-imagebuilder-$version_id-mediatek-mt7622.Linux-x86_64.tar.xz
fi
# exit 1
else
echo "Imagebuilder maybe already have different OpenWrt version"
read -r -p "Do you need remove different version and install new? [Y/n]" response
response=${response,,}
if [[ $response =~ ^(y| ) ]] || [[ -z $response ]]; then
imagebuilder_download
echo "Try remove old version Imagebuilder and install version "$version_id
rm -rf bin dl staging_dir build_dir key-build key-build.pub key-build.ucert key-build.ucert.revoke keys include packages/Packages packages/Packages.gz packages/Packages.sig packages/README.md scripts target .config .packageinfo .targetinfo Makefile repositories.conf .profiles.mk rules.mk tmp
tar -xf openwrt-imagebuilder-$version_id-mediatek-mt7622.Linux-x86_64.tar.xz --strip-components 1
rm -rf openwrt-imagebuilder-$version_id-mediatek-mt7622.Linux-x86_64.tar.xz
fi
exit 1
fi
else
imagebuilder_download
echo "Try install Imagebuilder version "$version_id
tar -xf openwrt-imagebuilder-$version_id-mediatek-mt7622.Linux-x86_64.tar.xz --strip-components 1
rm -rf openwrt-imagebuilder-$version_id-mediatek-mt7622.Linux-x86_64.tar.xz
fi
# Check ip_id correct
if [ -z "$2" ]
then
while [[ "$ip_id" != "ipv4" && "$ip_id" != "ipv6" ]]; do
echo "Ip version is blank or not correct"
read -p "Please enter correct ip version ipv6 or ipv4: " ip_id
clear
done
else
while [[ "$ip_id" != "ipv4" && "$ip_id" != "ipv6" ]]; do
echo "Ip version is blank or not correct"
read -p "Please enter correct ip version ipv6 or ipv4: " ip_id
clear
done
fi
# Check lan_id correct
if [ -z "$3" ]
then
while [[ "$lan_id" != "lan0" && "$lan_id" != "lan1" ]]; do
echo "Lan version is blank or not correct"
read -p "Please enter correct lan version lan0 or lan1: " lan_id
clear
done
else
while [[ "$lan_id" != "lan0" && "$lan_id" != "lan1" ]]; do
echo "Lan version is blank or not correct"
read -p "Please enter correct lan version lan0 or lan1: " lan_id
clear
done
fi
# Check bss_id correct
if [ -z "$4" ]
then
while [[ "$bss_id" != "bss" && "$bss_id" != "nobss" ]]; do
echo "Bss version is blank or not correct"
read -p "Please enter correct need bss or nobss: " bss_id
clear
done
else
while [[ "$bss_id" != "bss" && "$bss_id" != "nobss" ]]; do
echo "Lan version is blank or not correct"
read -p "Please enter correct need bss or nobss: " bss_id
clear
done
fi
if [ "$ip_id" == "ipv4" ]
then
if [ "$lan_id" == "lan0" ]
then
if [ "$bss_id" == "bss" ]
then
files_id="files/ipv4/lan0/bss"
service_id="odhcpd igmpproxy"
else
files_id="files/ipv4/lan0/nobss"
service_id="odhcpd usteer bsskick igmpproxy"
fi
else
if [ "$bss_id" == "bss" ]
then
files_id="files/ipv4/lan1/bss"
service_id="odhcpd igmpproxy"
else
files_id="files/ipv4/lan1/nobss"
service_id="odhcpd usteer bsskick igmpproxy"
fi
fi
else
if [ "$lan_id" == "lan0" ]
then
if [ "$bss_id" == "bss" ]
then
files_id="files/ipv6/lan0/bss"
service_id="noipv6 igmpproxy"
else
files_id="files/ipv6/lan0/nobss"
service_id="noipv6 usteer bsskick igmpproxy"
fi
else
if [ "$bss_id" == "bss" ]
then
files_id="files/ipv6/lan1/bss"
service_id="noipv6 igmpproxy"
else
files_id="files/ipv6/lan1/nobss"
service_id="noipv6 usteer bsskick igmpproxy"
fi
fi
fi
clear
echo "Start to compile "$profile_id" firmware"
sleep 2
make image PROFILE="$profile_id" PACKAGES="${packages_id[*]}" FILES="$files_id" DISABLED_SERVICES="$service_id"