OpenWrt固件編譯刷機完全總結
一.SOM9331闆子資訊

用普通安卓手機USB線連接配接闆子與電腦,通過secureCRT序列槽登入,設定如下:
二.登入openwrt系統
Uboot資訊:
uboot> version
U-Boot 1.1.4 (Jan 3 2014)
*********************************************
* U-Boot 1.1.4 (Jan 3 2014) *
(AR9331) U-Boot for SOM9331
DRAM: 64 MB DDR2 16-bit
FLASH: Winbond W25Q64 (8 MB)
CLOCKS: 400/400/200/33 MHz (CPU/RAM/AHB/SPI)
LED on during eth initialization...
Hit any key to stop autobooting: 0
Booting image at: 0x9F020000
Image name: OpenWrt r36088
Image type: MIPS Linux Kernel Image (lzma compressed)
Data size: 957100 Bytes = 934.7 kB
Load address: 0x80060000
Entry point: 0x80060000
Uncompressing kernel image... OK!
Starting kernel...
回車後:
BusyBox v1.19.4 (2013-03-14 11:28:31 UTC) built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
ATTITUDE ADJUSTMENT (12.09, r36088)
* 1/4 oz Vodka Pour all ingredients into mixing
* 1/4 oz Gin tin with ice, strain into glass.
* 1/4 oz Amaretto
* 1/4 oz Triple sec
* 1/4 oz Peach schnapps
* 1/4 oz Sour mix
* 1 splash Cranberry juice
root@OpenWrt:/#
Linux核心版本資訊:
root@OpenWrt:/# ls
bin etc mnt proc root sys usr www
dev lib overlay rom sbin tmp var
root@OpenWrt:/etc# cat /proc/version
Linux version 3.3.8 (blogic@Debian-60-squeeze-64-minimal) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Sat Mar 23 16:49:30 UTC 2013
三.openwrt固件編譯準備工作
Virtual box虛拟機使用Ubuntu 10.04.4 LTS系統,并與windows共享檔案夾,友善後期兩個平台傳輸資源。
編譯所需安裝工具:
1安裝SVN工具,下載下傳Openwrt源碼,因為源碼是在不斷更新的,SVN管理很友善
apt-get install subversion
2.安裝git工具,如果你知道github的話……
apt-get install git-core
3.安裝一下必要的依賴庫
sudo apt-get install g++
sudo apt-get install libncurses5-dev
sudo apt-get install zlib1g-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install unzip
sudo apt-get install autoconf
sudo apt-get install gawk
sudo apt-get install make
sudo apt-get install gettext
sudo apt-get install gcc
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install libz-dev
sudo apt-get install asciidoc
sudo apt-get install subversion
sudo apt-get install sphinxsearch
sudo apt-get install libtool
sudo apt-get install sphinx-common
以上在非root使用者下下載下傳時需要在前面加上sudo指令:
然後在目前目錄下建立openwrt目錄,下載下傳的源碼包就放在該目錄下:
mkdir openwrt
cd openwrt/
svn co svn://svn.openwrt.org/openwrt/trunk 這裡我們下載下傳的是trunk版本,也可以下載下傳DREAMBOX或者backfire版本的
因為要連接配接國外的伺服器下載下傳源碼,是以一般會很慢,建議可以下載下傳DREAMBOX的,國内維護的,可能會快一點吧
svn co svn://svn.openwrt.org.cn/dreambox/backfire openwrt-dreambox
cd openwrt-dreambox
./scripts/feeds update -a
./scripts/feeds install -a
下載下傳結束後,會出現svn版本号表示下載下傳成功了
下載下傳完openwrt的源碼後,為了使openwrt支援更多的軟體,需要更新和安裝其他源上面的軟體:
cd ./trunk
./scripts/feeds update -a
PS:關于SVN
如果不是剛下載下傳的源碼,為保持代碼為最新狀态,可以運作svn update指令更新源碼。
svn up或者 svn update
SVN更新的時候:
U:表示從伺服器收到檔案更新了
G:表示本地檔案以及伺服器檔案都已更新,而且成功的合并了
A:表示有檔案或者目錄添加到工作目錄
R:表示檔案或者目錄被替換了.
C:表示檔案的本地修改和伺服器修改發生沖突
SVN 檢視曆史資訊 通過svn指令可以根據時間或修訂号去除過去的版本,或者某一版本所做的具體的修改。以下四個指令可以用來檢視svn 的曆史:
svn log 用來展示svn 的版本作者、日期、路徑等等
svn diff 用來顯示特定修改的行級詳細資訊
svn cat 取得在特定版本的某檔案顯示在目前螢幕
svn list 顯示一個目錄或某一版本存在的檔案
四.配置openwrt編譯源碼
測試編譯環境:(先生成一個預設配置檔案)
make defconfig
到這裡就可以開始編譯自己的固件了。進入定制界面:(如果需要前面加上sudo指令)
make menuconfig
稍後自動進入一個圖形化配置界面,根據實際晶片進行配置
(我們用到的是Atheros的AR9331),是以配置如下:
選擇好晶片和模型配置好後,還要配置Luci(openwrt路由的web登入設定頁面),将luci選項打上*,注意不是M(M隻是将其當作子產品來編譯,而*可以将其編譯進核心):
最後儲存為配置檔案SOM9331.config:
執行make V=99開始編譯工作,make V=99 (注意V為大寫,而且編譯過程中為避免權限問題,最好前面加上sudo),這裡有人喜歡在make後加上”-j”選項參數,意思是讓cpu全速編譯,但這裡不推薦,容易出現不可預料的錯誤或者卡頓。
五、編譯過程中可能出現的問題及解決方法
既然編譯了難免會出現一些錯誤而無法進行下去,這裡總結幾個自己遇到的問題及解決方法:
1.*** error: 'OpenWrtunknown' is too long, max firware version length is 13
[edimax_fw_header] *** error: 'OpenWrtunknown' is too long, max firware version length is 13
dd: failed to open'build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/f9k1115v2-rootfs': No such file or directory三
dd: failed to open 'build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/f9k1115v2-uImage': No such file or directory
解決方法:一開始我是用sudo建立了那兩個路徑,結果還是有錯,google了一下找到了方法:
即将trunk/scripts/getver.sh腳本第33行替換成那條語句,重新編譯就OK了。
2.還有個是連結上了無法下載下傳,需要手動下載下傳到指定目錄下,但是重新make時候編譯器又将手動下載下傳的檔案remov了,這是到後來才發現的,于是果斷編譯開始後再将下載下傳好的檔案放到指定目錄下就好了,編譯通過!
3.Openwrt源碼一般不支援root使用者進行編譯,是以一般每條指令都要利用sudo字首,修改一下檔案可以使得利用root編譯。如果你是root使用者名需要在配置上面做點修改。需要修改include/prereq-build.mk,把第十六行的注釋掉。對于Ubuntu系統,貌似并不需要修改。
4.網友提到在執行make defconfig時,出現 checking ‘libssl’… failed,,然後安裝缺少的這個元件libssl-dev,請執行sudo apt-get install libssl-dev
請大家在操作過程中關注每一個遇到的錯誤,他都可能是編譯成功的絆腳石~~~
5.對于連接配接國外源碼伺服器下載下傳速度太慢的問題,可以換成國内的伺服器進行下載下傳
svn://svn.openwrt.org.cn/openwrt/branches/backfire
svn://svn.openwrt.org.cn/openwrt/trunk
svn://svn.openwrt.org.cn/dreambox/backfire openwrt-dreambox
六.燒寫openwrt系統固件到SOM9331開發闆
最後編譯好了,cd到/openwrt/trunk/bin/ar71xx目錄下,會有很多編譯好的bin檔案,
但适合SOM9331開發闆的是openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin,
(注意:openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin是原廠固件,不帶Luci界面,wifi預設不打開,而openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin是基于openwrt的更新,可以通過make menuconfig設定帶Luci界面,當然也可以登入系統設定打開wifi)
這裡采用tftp傳輸方式燒寫固件,需要準備好網線連接配接電腦網孔和SOM9331開發闆的WAN網口(本固件靠近USB的J1為WAN口,另兩個J2,J3為LAN口),
另外軟體方面需要tftpd32來傳輸,結合SecureCRT序列槽顯示openwrt系統uboot菜單指令來燒寫:
1、先把本機的IP位址設定為192.168.1.2,隻要設定的IP位址和SOM9331開發闆的IP在一個段域内即可。
2、給開發闆供電,打開SecureCRT軟體,按下開發闆上的複位按鈕,根據提示在電腦上按下空格鍵,進入Uboot界面,設定目前環境變量(即設定伺服器IP和開發闆本地用戶端IP):
setenv serverip 192.168.1.2
setenv ipaddr 192.168.1.1(若與自己路由器ip沖突可以另外設定)
3、打開tftpd32.exe軟體,設定下燒寫的bin檔案所在目錄,以及目前伺服器IP位址(即PC的本地IP):
4、回到uboot界面,開始輸入tftp指令傳輸bin檔案到給定位址:
tftp 0x80000000 openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin
5、擦出原有的Flash區域:erase 0x9f020000 +0x7c0000,然後将剛燒寫到記憶體的bin檔案再寫到剛才擦除的區域:cp.b 0x80000000 0x9f020000 0x7c0000
然後輸入reset或者按下複位鍵重新開機,或者輸入bootm 0x9f020000重新開機:
此時刷openwrt固件成功!
七、開啟wifi和Luci界面
指令行檢視網絡,輸入ifconfig
發現沒有wlan0,因為預設wifi沒打開,需要手動設定,打開無線開關(配置wireless檔案)鍵入 vi /etc/config/wireless 回車 光标移動到 option disabled 1 這一行,在這一行前面加上#注釋掉,儲存設定并退出,鍵入 /etc/init.d/network restart 回車 重新開機網絡,這時電腦即可搜到“OpenWrt”熱點并連接配接上,後續配置可在網頁上(192.168.1.1)進行。
浏覽器輸入192.168.1.1後出現登入界面需要設定密碼:
進入SecureCRT設定passwd:
輸入設定好的密碼即可成功登入!
本文轉自灬落魄灬 51CTO部落格,原文連結:http://blog.51cto.com/smoke520/1830772,如需轉載請自行聯系原作者