OPENWRT學習筆記入門篇
OPENWRT簡介
路由器相當於一台小型電腦,部分配置比較好的(記憶體、CPU效能充足)可以手動刷入linux系統(網友製作的dd-wrt和openwrt是兩種流傳較廣的linux系統),並在這個系統裡運行銳捷撥號程式。
OpenWRT是一個高度模組化、高度自動化的嵌入式Linux系統,擁有強大的網路組件和擴充性,常常被用於工控裝置、電話、小型機器人、智能家居、路由器以及VOIP裝置中。 同時,它還提供了100多個已編譯好的軟體,而且數量還在不斷增加,而 OpenWrt SDK 更簡化了開發軟體的工序。
OpenWRT不同於其他許多用於路由器的發行版,它是一個從零開始編寫的、功能齊全的、容易修改的路由器作業系統。實際上,這意味著開發人員能夠使用自己想要的功能而不加進其他的累贅,而支援這些功能工作的linux kernel又遠比絕大多數發行版來得新。
OpenWRT支援各種處理器架構,無論是對ARM,X86,PowerPC或者MIPS都有很好的支援。 其多達3000多種軟體包,囊括從工具鏈(toolchain),到核心(linux kernel),到軟體包(packages),再到根檔案系統(rootfs)整個體系,使得使用者只需簡單的一個make命令即可方便快速地定製一個具有特定功能的嵌入式系統來製作韌體。
一般嵌入式 Linux 的開發過程, 無論是 ARM, PowerPC 或 MIPS 的處理器, 都必需經過以下的開發過程:
1.建立 Linux 交叉編譯環境;
2.建立 Bootloader;
3.移植 Linux 核心;
4.建立 Rootfs (根檔案系統);
5.安裝驅動程式;
6.安裝軟體;
熟悉這些嶔入式 Linux 的基本開發流程後,不再局限於 MIPS 處理器和無線路由器, 可以嘗試在其它處理器, 或者非無線路由器的系統移植嵌入式 Linux, 定製合適自己的應用軟體, 並建立一個完整的嵌入式產品。
OPENWRT刷入路由器
在官網下載最新的OpenWrt韌體,連結如下:http://downloads.openwrt.org/snapshots/trunk/ar71xx/
進入連結地址後,找到對應於TP-LINK WR703N的韌體,會有如下四個:
首先,有兩種不同的格式,即jffs2與squashfs。這兩種不同格式的韌體區別在於,squashfs安裝後,會佔用一定的空間來存放系統的一些必要檔案,這些檔案都只是可讀的,這些檔案的作用是協助恢複系統,當OpenWrt崩潰時,可以基於這些檔案,使用firstboot指令碼重建初始系統,而jffs2則不會儲存這樣的檔案,好處在於節省了空間。一般,我們都使用squashfs格式的韌體,方便恢複系統到初始狀態。其次,每種格式都有兩個檔案,factory與sysupgrade,這兩個檔案的區別是,factory多了一些驗證的東西,用於在原廠韌體的基礎上進行升級,如果已經是OpenWrt,直接使用第二個檔案即可。並且,在原廠韌體的基礎上進行升級時,首先使用factory檔案,然後需要再次使用sysupgrade檔案,選擇不保留原來配置進行升級。
當然也可以通過編譯來定製自己的韌體。方法如下。
第一部分:搭建編譯環境
1、安裝Ubuntu(編譯需要Linux環境)
2、切記不要改動軟體源,同時按住Ctrl + Alt + T,調出終端;
3、逐條輸入下列命令(及時驗證是否安裝成功):
1. sudo apt-get install g++
2. sudo apt-get install libncurses5-dev
3. sudo apt-get install zlib1g-dev
4. sudo apt-get install bison
5. sudo apt-get install flex
6. sudo apt-get install unzip
7. sudo apt-get install autoconf
8. sudo apt-get install gawk
9. sudo apt-get install make
10. sudo apt-get install gettext
11. sudo apt-get install gcc
12. sudo apt-get install binutils
13. sudo apt-get install patch
14. sudo apt-get install bzip2
15. sudo apt-get install libz-dev
16. sudo apt-get install asciidoc
17. sudo apt-get install subversion
18. sudo apt-get install sphinxsearch
19. sudo apt-get install libtool
20. sudo apt-get install sphinx-common
至此編譯環境搭建完成。
第二部分:下載OpenWrt源碼並編譯
OpenWrt源碼分兩種,一種是最新但不是最穩定的Trunk開發版,一種是最穩定的Backfire版,建議下載官方源碼。下載前先在本地建立檔案夾:
1. mkdir openwrt
2. sudo chmod 777 openwrt
3. cd openwrt
選擇你想要的版本然後執行下載命令,下載結束會顯示版本號碼:
Trunk版下載命令:
svn co svn://svn.openwrt.org/openwrt/trunk/
Backfire版下載命令:
svn co svn://svn.openwrt.org/openwrt/branches/backfire/
添加軟體擴充包,將feeds.conf.default修改為feeds.conf:
cp feeds.conf.default feeds.conf
更新擴充,安裝擴充:
1. ./scripts/feeds update -a
2. ./scripts/feeds install -a
註:如果不是剛下載的源碼,為保持代碼為最新狀態,應定期運行svn update命令更新源碼。
測試編譯環境:
make defconfig
到這裡就可以開始編譯自己的韌體了。進入定製介面:
make menuconfig
如果一切正常,會出現一個配置菜單,可以選擇要編譯的韌體平台(晶片類型)、型號,還能選擇韌體中要添加的功能和組件,配置好後儲存並退出菜單即可。
如果你想修改源碼,應該在此步進行,如支援大容量Flash之類的修改,自己上網查到修改什麼檔案什麼地方後,就在ubuntu圖形介面上進去找到檔案,雙擊開啟文字編輯器修改儲存。
開始編譯:
make
或者
make V=99
或者
make -j V=99
make是編譯命令,V=99表示輸出debug資訊,V一定要大寫,如果要讓CPU全速編譯,就加上 -j 參數,第一次編譯最好不帶-j參數。
編譯過程保持連網(會從網上下載一些源碼包),所以斷網可能造成編譯中斷,編譯所需時間與電腦CPU及網路環境有很大關係,第一次編譯時間較久,快則半小時間長度則2、3個小時,之後的編譯所需時間較短。編譯完成後會在源碼檔案目錄出現bin檔案夾(如trunk/bin/XXXX),如果你手裡的路由是原版韌體需要刷OpenWrt需要選用XXX-factory.bin韌體,如果路由已經刷了OpenWrt,選用升級韌體XXXX-sysupgrade.bin升級用的,在升級介面升級即可。進到檔案夾找到你需要的韌體傳出(通過郵箱、網盤、隨身碟等),開始刷機吧。
完成上述工作之後即可將openwrt刷入路由器。