使用 OpenWrt Image Generator 為 WR703N 路由器定制固件


標題:使用 OpenWrt Image Generator 為 WR703N 路由器定制固件

之前試着自己編譯固件,編譯是成功了,但是在后期安裝官方倉庫的ipk時出現問題,因為自己編譯的固件和官方固件的內核版本號不一樣,導致官方倉庫的ipk不能安裝,即使使用--force-depends參數強制安裝也不能成功。

openwrt的內核版本號后邊帶的一串checksum是根據配置計算出來的,即使使用同官方固件相同版本的源代碼編譯,只要配置不一樣,編譯出來的內核版本也是不一樣的。
后來發現了 Image Generator,用於把前期編譯生成的文件生成刷機用的 bin 文件。編譯時的最后部分就是用的這個工具。

從官方倉庫直接下載Image Generator,只要運行一個命令就可以生成自己的 bin 文件,並且生成的固件內核版本號與官方固件完成相同。

WiKi在這里:http://wiki.openwrt.org/doc/howto/obtain.firmware.generate

安裝操作系統

VMware 10
Ubuntu 14.04.1 x64

配置編譯環境

sudo apt-get update
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc

下載Image Generator for ar71xx

https://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/OpenWrt-ImageBuilder-15.05-ar71xx-generic.Linux-x86_64.tar.bz2

建議使用迅雷下載然后拷進去,節約時間

cd ~
mkdir opimagegen && cd opimagegen
wget https://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/OpenWrt-ImageBuilder-15.05-ar71xx-generic.Linux-x86_64.tar.bz2
tar -xvjf OpenWrt-ImageBuilder-15.05-ar71xx-generic.Linux-x86_64.tar.bz2
cd OpenWrt-ImageBuilder-15.05-ar71xx-generic.Linux-x86_64

配置

根據需要修改repositories.conf

## repositories.conf
## 說明:我把官網的packages文件夾通過代理整個下載到本地目錄,所以文件內容改成下面的樣子
## 這個文件你也可以不改,保持默認,但是在編譯時下載,國內會很慢,還會失敗
## Place your custom repositories here, they must match the architecture and version.
# src/gz chaos_calmer http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages
# src custom file:///usr/src/openwrt/bin/ar71xx/packages

## Remote package repositories
src/gz chaos_calmer_base file:/home/noright/downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/base
src/gz chaos_calmer_luci file:/home/noright/downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/luci
src/gz chaos_calmer_packages file:/home/noright/downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/packages
src/gz chaos_calmer_routing file:/home/noright/downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/routing
src/gz chaos_calmer_telephony file:/home/noright/downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/telephony
src/gz chaos_calmer_management file:/home/noright/downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/management

## This is the local package repository, do not remove!
src imagebuilder file:packages

把需要替換固件中的文件放到files目錄中,官方固件無線默認是關閉的,為了默認打開無線功能,把無線的配置文件放到files中,在生成固件時就會替換掉默認的文件。

方法是這樣的:路由器刷好官方固件,把無線打開,從網頁把配置文件備份出來,把需要的文件按固件中的目錄結構放到files目錄中。

無線配置的文件是wireless,在固件中的路徑是 /etc/config/wireless,所以在編譯環境中把它放到
files/etc/config/wireless

這是我的wireless配置文件,只是打開了無線功能

$ cat files/etc/config/wireless
config wifi-device  radio0
        option type     mac80211
        option channel  11
        option hwmode   11g
        option path     'platform/ar933x_wmac'
        option htmode   HT20
        # REMOVE THIS LINE TO ENABLE WIFI:
        option disabled 0

config wifi-iface
        option device   radio0
        option network  lan
        option mode     ap
        option ssid     OpenWrt-703N
        option encryption none

生成鏡像

用這個命令查看支持的profile

make info

703N對應的配置是TLWR703

編譯

make image PROFILE=TLWR703 PACKAGES="libiwinfo libiwinfo-lua liblua libubus-lua libuci-lua lua luci luci-app-firewall luci-base luci-lib-ip luci-lib-nixio luci-mod-admin-full luci-proto-ipv6 luci-proto-ppp luci-theme-bootstrap rpcd uhttpd uhttpd-mod-ubus luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn" FILES=files/

PROFILE 是從支持列表中找出的路由器型號
PACKAGES 是添加到固件中的包名,如果要從固件中刪除包,可以在包名前加 -
FILES 是指定用files目錄中的文件替換掉固件中的文件

運行make image PROFILE=TLWR703生成的固件,比官方固件少很多包,比如沒有luci,所以我比較了官方固件的包和make image PROFILE=TLWR703生成的固件的包,把缺少的包指定到PACKAGES參數,並且增加了luci-i18n-base-zh-cn和luci-i18n-firewall-zh-cn兩個中文包。

生成的固件在 bin 目錄中

附錄

軟件包

  • 與官方固件比較缺少的包
libiwinfo libiwinfo-lua liblua libubus-lua libuci-lua lua luci luci-app-firewall luci-base luci-lib-ip luci-lib-nixio luci-mod-admin-full luci-proto-ipv6 luci-proto-ppp luci-theme-bootstrap rpcd uhttpd uhttpd-mod-ubus
  • 中文
luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn
  • Qos
luci-app-qos luci-i18n-qos-zh-cn

命令行升級固件

如果路由器沒有luci,則需要通過命令行配置和升級
如果路由器沒設置密碼,要先telnet上去設置密碼
設置好密碼了ssh連接到路由器
用scp把固件上傳到路由器的/tmp
有兩個命令可以升級固件

sysupgrade -n -v /tmp/[specified firmware].bin
mtd -r write /tmp/[specified firmware].bin firmware

我用的是第一個,第二個沒用過
-n 不保存配置
-v 輸出詳細信息

官方固件中安裝的軟件包

root@OpenWrt:/# opkg list-installed
base-files - 157-r46767
busybox - 1.23.2-1
dnsmasq - 2.73-1
dropbear - 2015.67-1
firewall - 2015-07-27
fstools - 2015-05-24-09027fc86babc3986027a0e677aca1b6999a9e14
hostapd-common - 2015-03-25-1
ip6tables - 1.4.21-1
iptables - 1.4.21-1
iw - 3.17-1
jshn - 2015-06-14-d1c66ef1131d14f0ed197b368d03f71b964e45f8
jsonfilter - 2014-06-19-cdc760c58077f44fc40adbbe41e1556a67c1b9a9
kernel - 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66
kmod-ath - 3.18.20+2015-03-09-3
kmod-ath9k - 3.18.20+2015-03-09-3
kmod-ath9k-common - 3.18.20+2015-03-09-3
kmod-cfg80211 - 3.18.20+2015-03-09-3
kmod-crypto-aes - 3.18.20-1
kmod-crypto-arc4 - 3.18.20-1
kmod-crypto-core - 3.18.20-1
kmod-gpio-button-hotplug - 3.18.20-1
kmod-ip6tables - 3.18.20-1
kmod-ipt-conntrack - 3.18.20-1
kmod-ipt-core - 3.18.20-1
kmod-ipt-nat - 3.18.20-1
kmod-ipv6 - 3.18.20-1
kmod-lib-crc-ccitt - 3.18.20-1
kmod-mac80211 - 3.18.20+2015-03-09-3
kmod-nf-conntrack - 3.18.20-1
kmod-nf-conntrack6 - 3.18.20-1
kmod-nf-ipt - 3.18.20-1
kmod-nf-ipt6 - 3.18.20-1
kmod-nf-nat - 3.18.20-1
kmod-nf-nathelper - 3.18.20-1
kmod-nls-base - 3.18.20-1
kmod-ppp - 3.18.20-1
kmod-pppoe - 3.18.20-1
kmod-pppox - 3.18.20-1
kmod-slhc - 3.18.20-1
kmod-usb-core - 3.18.20-1
kmod-usb2 - 3.18.20-1
libblobmsg-json - 2015-06-14-d1c66ef1131d14f0ed197b368d03f71b964e45f8
libc - 0.9.33.2-1
libgcc - 4.8-linaro-1
libip4tc - 1.4.21-1
libip6tc - 1.4.21-1
libiwinfo - 2015-06-01-ade8b1b299cbd5748db1acf80dd3e9f567938371
libiwinfo-lua - 2015-06-01-ade8b1b299cbd5748db1acf80dd3e9f567938371
libjson-c - 0.12-1
libjson-script - 2015-06-14-d1c66ef1131d14f0ed197b368d03f71b964e45f8
liblua - 5.1.5-1
libnl-tiny - 0.1-4
libubox - 2015-06-14-d1c66ef1131d14f0ed197b368d03f71b964e45f8
libubus - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
libubus-lua - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
libuci - 2015-04-09.1-1
libuci-lua - 2015-04-09.1-1
libxtables - 1.4.21-1
lua - 5.1.5-1
luci - git-15.248.30277-3836b45-1
luci-app-firewall - git-15.248.30277-3836b45-1
luci-base - git-15.248.30277-3836b45-1
luci-lib-ip - git-15.248.30277-3836b45-1
luci-lib-nixio - git-15.248.30277-3836b45-1
luci-mod-admin-full - git-15.248.30277-3836b45-1
luci-proto-ipv6 - git-15.248.30277-3836b45-1
luci-proto-ppp - git-15.248.30277-3836b45-1
luci-theme-bootstrap - git-15.248.30277-3836b45-1
mtd - 21
netifd - 2015-06-08-8795f9ef89626cd658f615c78c6a17e990c0dcaa
odhcp6c - 2015-07-13-024525798c5f6aba3af9b2ef7b3af2f3c14f1db8
odhcpd - 2015-05-21-2ebf6c8216287983779c8ec6597d30893b914a7c
opkg - 9c97d5ecd795709c8584e972bfdf3aee3a5b846d-7
ppp - 2.4.7-6
ppp-mod-pppoe - 2.4.7-6
procd - 2015-08-16-0da5bf2ff222d1a499172a6e09507388676b5a08
rpcd - 2015-05-17-3d655417ab44d93aad56a6d4a668daf24b127b84
swconfig - 10
uboot-envtools - 2014.10-2
ubox - 2015-07-14-907d046c8929fb74e5a3502a9498198695e62ad8
ubus - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
ubusd - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
uci - 2015-04-09.1-1
uhttpd - 2015-08-17-f91788b809d9726126e9cf4384fedbbb0c5b8a73
uhttpd-mod-ubus - 2015-08-17-f91788b809d9726126e9cf4384fedbbb0c5b8a73
usign - 2015-05-08-cf8dcdb8a4e874c77f3e9a8e9b643e8c17b19131
wpad-mini - 2015-03-25-1

make image PROFILE=TLWR703 生成的固件中安裝的軟件包

# make image PROFILE=TLWR703
root@OpenWrt:/# opkg list-installed
base-files - 157-r46767
busybox - 1.23.2-1
dnsmasq - 2.73-1
dropbear - 2015.67-1
firewall - 2015-07-27
fstools - 2015-05-24-09027fc86babc3986027a0e677aca1b6999a9e14
hostapd-common - 2015-03-25-1
ip6tables - 1.4.21-1
iptables - 1.4.21-1
iw - 3.17-1
jshn - 2015-06-14-d1c66ef1131d14f0ed197b368d03f71b964e45f8
jsonfilter - 2014-06-19-cdc760c58077f44fc40adbbe41e1556a67c1b9a9
kernel - 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66
kmod-ath - 3.18.20+2015-03-09-3
kmod-ath9k - 3.18.20+2015-03-09-3
kmod-ath9k-common - 3.18.20+2015-03-09-3
kmod-cfg80211 - 3.18.20+2015-03-09-3
kmod-crypto-aes - 3.18.20-1
kmod-crypto-arc4 - 3.18.20-1
kmod-crypto-core - 3.18.20-1
kmod-gpio-button-hotplug - 3.18.20-1
kmod-ip6tables - 3.18.20-1
kmod-ipt-conntrack - 3.18.20-1
kmod-ipt-core - 3.18.20-1
kmod-ipt-nat - 3.18.20-1
kmod-ipv6 - 3.18.20-1
kmod-lib-crc-ccitt - 3.18.20-1
kmod-mac80211 - 3.18.20+2015-03-09-3
kmod-nf-conntrack - 3.18.20-1
kmod-nf-conntrack6 - 3.18.20-1
kmod-nf-ipt - 3.18.20-1
kmod-nf-ipt6 - 3.18.20-1
kmod-nf-nat - 3.18.20-1
kmod-nf-nathelper - 3.18.20-1
kmod-nls-base - 3.18.20-1
kmod-ppp - 3.18.20-1
kmod-pppoe - 3.18.20-1
kmod-pppox - 3.18.20-1
kmod-slhc - 3.18.20-1
kmod-usb-core - 3.18.20-1
kmod-usb2 - 3.18.20-1
libblobmsg-json - 2015-06-14-d1c66ef1131d14f0ed197b368d03f71b964e45f8
libc - 0.9.33.2-1
libgcc - 4.8-linaro-1
libip4tc - 1.4.21-1
libip6tc - 1.4.21-1
libjson-c - 0.12-1
libjson-script - 2015-06-14-d1c66ef1131d14f0ed197b368d03f71b964e45f8
libnl-tiny - 0.1-4
libubox - 2015-06-14-d1c66ef1131d14f0ed197b368d03f71b964e45f8
libubus - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
libuci - 2015-04-09.1-1
libxtables - 1.4.21-1
mtd - 21
netifd - 2015-06-08-8795f9ef89626cd658f615c78c6a17e990c0dcaa
odhcp6c - 2015-07-13-024525798c5f6aba3af9b2ef7b3af2f3c14f1db8
odhcpd - 2015-05-21-2ebf6c8216287983779c8ec6597d30893b914a7c
opkg - 9c97d5ecd795709c8584e972bfdf3aee3a5b846d-7
ppp - 2.4.7-6
ppp-mod-pppoe - 2.4.7-6
procd - 2015-08-16-0da5bf2ff222d1a499172a6e09507388676b5a08
swconfig - 10
uboot-envtools - 2014.10-2
ubox - 2015-07-14-907d046c8929fb74e5a3502a9498198695e62ad8
ubus - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
ubusd - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
uci - 2015-04-09.1-1
usign - 2015-05-08-cf8dcdb8a4e874c77f3e9a8e9b643e8c17b19131
wpad-mini - 2015-03-25-1

下載官方軟件倉庫到本地

wget --mirror --no-parent https://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/

快速架設http服務器

之前下載軟件倉庫到本地,目錄結構是這樣的:

/home/noright/downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/

運行這個命令就可以快速開始一個http服務器

cd ~/downloads.openwrt.org
python -m SimpleHTTPServer 8000

通過網頁修改路由器的軟件包配置,就可以使用本地軟件倉庫了

dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
src/gz chaos_calmer_base http://192.168.1.115:8000/chaos_calmer/15.05/ar71xx/generic/packages/base
src/gz chaos_calmer_luci http://192.168.1.115:8000/chaos_calmer/15.05/ar71xx/generic/packages/luci
src/gz chaos_calmer_packages http://192.168.1.115:8000/chaos_calmer/15.05/ar71xx/generic/packages/packages
src/gz chaos_calmer_routing http://192.168.1.115:8000/chaos_calmer/15.05/ar71xx/generic/packages/routing
src/gz chaos_calmer_telephony http://192.168.1.115:8000/chaos_calmer/15.05/ar71xx/generic/packages/telephony
src/gz chaos_calmer_management http://192.168.1.115:8000/chaos_calmer/15.05/ar71xx/generic/packages/management
option check_signature 1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM