linksyswrt54操作手冊范本_第1頁
linksyswrt54操作手冊范本_第2頁
linksyswrt54操作手冊范本_第3頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、技術(shù)文檔Li nksys WRT54G 使用指南vO.01blckst on e2009-7-111基本運(yùn)行環(huán)境i.i硬件平臺1.1.1 Linksys WRT54G V4CPU 200MHz Broadcom BCM5352 chip rev0SDRAM: 16MFlash: 4M具體說明:.broadcom./products/Wireless-LAN/802.11-Wireless-LAN-Solutio ns/BCM5352ELThe BCM5352ELintegratesa high-performaneeMIPS32 processor, IEEE 802.11 b/g MAC/P

2、HY,SDRAMio ntroller,and a con figurable five-port Fast Ether net (FE) switch. The BCM5352ELprovides wireless LAN conn ectivity support ing data rates of up to 125 Mbps that is backward-compatible with sta ndard 802.11 b/g.The BCM5352EL supports a WAN conn ecti on via its con figurable media in terfa

3、ces. Theper-port programmable four-level priority queues enable QoS(IEEE 802.1p) for guaranteed bandwidth applications, DiffServ/TOS, and L2/L3 IGMP snooping. The IEEE 802.1Q VLAN allows flexible impleme ntati on of VLAN group ing and WAN port segregati on.特征200-MHz MIPS32 ? CPU core with 16-KB inst

4、ruction cache, 8-KB data cache, and 256-B prefetch cache and a Memory Man ageme nt Un it (MMU) for high-level Real-Time Operat ing System (RTOS) supportIn terfaces to BCM2050, a 2.4-GHz direct co nversio n radioThe BCM5352ELis a low-cost, high performanee system-on-chip(SoC) for residentialand small

5、 office, home office (SOHO) markets.Time-to-market is significantly reduced through stable Linux? and VxWorks ? kernels,board support packages (BSPs), drivers, and toolcha ins.1.2軟件平臺1.2.1 DD-WRT版本號:DD-WRT V24 (05/24/08) std - build 9526登錄時默認(rèn)的用戶名密碼:root/admin.dd-wrt./dd-wrtv3/dd-wrt/about.htmlDD-WRT

6、 is a Linux based alter native Open Source firmware suitable for a great varietyof WLAN routers and embedded systems. The main emphasis lies on providi ng the easiest possible handling while at the same time supporting a great number of functionalities within the framework of the respective hardware

7、 platform used.The graphical user in terface is logically structured, and it is operated via a sta ndard Webbrowser, so eve n non-tech ni cia ns can con figure the system in only a few simple steps.Apart from the simple handling, speed and stability are also in the focus of our developme nt work. Co

8、mpared to the software prei nstalled on many WLAN routers, DD-WRT allows a reliable operati on with a clearly largerfun ctio nality that also fulfills thedema nds of professi onal deployme nt.The huge user commu nity gives support to DD-WRT developers and the users themselves in various ways. Thanks

9、 to this, potential flaws in the system can be detected very quickly and can thus be corrected without delay. DD-WRTusers can find help and suggestionsfromother users in the user forums, and the Wiki containing further in formati on and how-to guides is being expa nded and maintained by the DD-WRT c

10、ommu nity as well.For devices mainly used for private purposes, DD-WRTs freely available. Platforms used for commercial purposes require a paid license. Compared to the freely available version, the professi onal vers ion also allows for con figurati on of the WLAN parameters, thusope ning up the op

11、portu nityof creati ng e.g. reliable and powerful n etworkinf rastructures. Special dema nds can be fulfilled by specifically tailored vers ions of DD-WRT.Mai n characteristics:supports more tha n 200 differe nt devicescomprehe nsive fun cti on alitysupports all curre nt WLAN sta ndards (802.11a/b/g

12、/n*)supports outdoor deployme nt*supports enhan ced freque ncies *VPN in tegrationsupports various Hotspot systemsban dwidth man ageme ntmultil in gual user in terface*appropriate WLAN hardware requiredDD-WRT is:Sebastia n Gottschall (Bra in Slayer, foun der, main developer)Christian Scheele (Chris,

13、 CEO)Peter Steinh ? user (CEO)An kush Malhotra (Maksat)Ales Majdic (Eko, Developer)Sylva in Bothorel (Botho, router webdesig n)Felix Fietkau (n bd/ope nwrt, madwifi)Elke Scheele (Online Shop)Markus Quin t (support). and alot of supporters arou nd the world交叉編譯: 編譯器和所用頭文件和庫文件對此,我寫好了一個 makefile專門用來進(jìn)行交

14、叉編譯。但是目前只能進(jìn)行靜態(tài)編譯,即將所有 的庫文件成一個可執(zhí)行文件,而不能使用動態(tài)! 原因可能是因為目標(biāo)機(jī)器上的運(yùn)行的系統(tǒng)中所包含的動態(tài)庫與交叉編譯環(huán)境中的動態(tài)庫版本不 同,應(yīng)該考慮將版本換成同樣的動態(tài)庫后,再次進(jìn)行編譯!此外為了方便調(diào)試, 可以讓目標(biāo)機(jī)器掛載編譯環(huán)境中的samba服務(wù)提供的共享文件, 從而方便目標(biāo)機(jī)器與交叉編譯機(jī)器之間共享文件!在目標(biāo)機(jī)器上,編譯的核使用的版本是2435 , gcc版本是346, openwrt-2.0目標(biāo)機(jī)器類型是:mipsel架構(gòu)(LIL_ENDIAN)假設(shè)交叉編譯環(huán)境安裝在/opt/ope nwrt/目錄下CC=/opt/ope nwrt/bi n/m

15、ipsel-li nux-gccCFLAGS=-I /opt/ope nwrt/i ncludeLDFLAGS=-L /opt/ope nwrt/lib-Host=mipsel-li nux-prefix=/opt/ope nwrt1.2.2 OpenWrtOpenWrt是用于嵌入式設(shè)備的 Linux發(fā)行版。比起試圖創(chuàng)建單一的、靜態(tài)固件,OpenWrt則是提供一個包含有包管理功能的全套可寫的文件系統(tǒng)。這就可以使用用戶從產(chǎn)品選擇和配置中解放岀來,使得用戶自己可以定制其所需的軟件。對于開發(fā)人員來說, Ope nWrt是一種編譯程序的框架,其不需要有完整的固件。對用戶來說,這 就意味著完全的可定制,

16、其可按照自己的想法來隨意使用設(shè)備。1.3配置路由器通過web界面管理路由器路由器默認(rèn)的網(wǎng)絡(luò)參數(shù)如下:web管理入口:用戶名密碼:root/adm in通過web界面可進(jìn)行常規(guī)的參數(shù)配置。建議所以配置均通過 web界面進(jìn)行,因為其可以自動保存有關(guān)參數(shù)。132通過tel net管理路由器可通過如下命令登錄到路由器的teln et服務(wù):用戶名密碼與 web管理界面相同。通過telnet登錄到路由器后,就獲得了一個shell,通過該shell就可以像使用普通linux系統(tǒng)一樣操作該路由器了。1.4特色功能列舉掛載samba共享目錄要以通過web管理界面或telnetl 界面,設(shè)定路由器掛載網(wǎng)絡(luò)中的共享

17、文件目錄。從而在路由器中就可以像使用本地目錄一樣使用遠(yuǎn)程目錄。2編譯運(yùn)行新程序2.1尋找OpenWrt-2.0編譯環(huán)境2.1.1 為什么要找 OpenWrt-2.0通過登錄到路由器查看核的版本號發(fā)現(xiàn):cat /proc/vers ion發(fā)現(xiàn)當(dāng)前路由器所使用的固件的編譯器版本是,對應(yīng)openwrt-2.0 。為了使新編譯的程序可以使用路由器上的動態(tài)庫。我們需要使用ope nwrt-2.0 這樣的編譯環(huán)境。2.1.2 Vhiterussian系列發(fā)現(xiàn)均是 OpenWrt-1.02.1.3 Kamikaze 系列找到 ,即 OpenWrt-2.02.2搭建交叉編譯環(huán)境221搭建可用主機(jī)環(huán)境安裝好可以

18、編譯的主機(jī)環(huán)境,并在上面安裝好相應(yīng)的Apache2服務(wù)、samba服務(wù)等,方便后繼的與路由器的數(shù)據(jù)交換!獲取交叉編譯工具鏈從.ope 獲取較新交叉編譯工具環(huán)境。對于本路由器的一可用的較新版本是:ope nwrt2.0下載地址為dow nl oads.ope /kamikaze/7.09/brcm-2.4/Ope nWrt-SDK-brcm-2.4-for-Li nux-i686.tar.bz2解壓后即可獲得所需要交流編譯工具集。一般可形成如下目錄結(jié)構(gòu):Opt/ope nwrt2/b inOpt/ope nwrt2/i ncludeOpt/ope nwrt2/li

19、bOpt/ope nwrt2/etc等等。其中ope nwrt2目錄中包含的就是對應(yīng)交叉編譯工具鏈(編譯工具、標(biāo)準(zhǔn)庫等)。交叉編譯的標(biāo)準(zhǔn)的Makefile對于將要進(jìn)行交叉編譯的源代碼來說,可將對應(yīng)源代友目錄復(fù)制到opt目錄中,然后修改其Makefile 。#指明opt目錄的相對位置:ROOT=.#指明最后要生成的目標(biāo):TARGET= target#指明生成最終目標(biāo)所需的中間文件:OBJS= file1.o file2.o file3.o#指定用的交叉編譯工具鏈:CC=$(ROOT)/ope nwrt2/b in/mipsel-i nux-gccLD=$(ROOT)/ope nwrt2/bi n

20、/mipsel-li nux-gccCFLAGS = -I $(ROOT)/ope nwrt2/i ncludeLDFLAGS = -L $(ROOT)/ope nwrt2/lib指定編譯:.c.o:$(CC) $(CFLAGS) - c - o $ $A$(TARGET):$(OBJS)$(LD) $(LDFLAGS) - o $ $a#指定常用的依賴:.ph on ey: all clea n in stallAll: $(TARGET)Clea n:Rm - rf $(TARGET) $(OBJS)In stall: $(TARGET)Sudo cp $(TARGET) /var/Sud

21、o chmod 644 /var/$(TARGET)編譯安裝運(yùn)行在目標(biāo)路由器上可以使用:#wget hostname/target將編譯好的目標(biāo)下載到路由器上,從而可以在路由器本地上執(zhí)行!除使用HTTP服務(wù)來傳遞數(shù)據(jù)外,還可以在主機(jī)系統(tǒng)上建立Samba服務(wù),而在路由器上掛載該samba服務(wù)的方式來實現(xiàn)數(shù)據(jù)共享!2.3對認(rèn)證程序進(jìn)行交叉編譯獲取認(rèn)證程序使用我自己寫的 HustSupplica nt認(rèn)證程序。該認(rèn)證程序的認(rèn)證邏輯非常清晰,主要認(rèn)證機(jī)制全部分析清楚透徹。因此對于將來的維護(hù)、修改、擴(kuò)充等非常有利。另外,本HustSupplicant不依賴其它特定的包,一般是只使用標(biāo)準(zhǔn)C函數(shù)。這可以降低

22、程序移植的難度和工作量。232交叉編譯如前一節(jié)所提到的,對其Makefile進(jìn)行交叉編譯的改造。233運(yùn)行測試問題一:發(fā)送了認(rèn)證主播包,但是無任何響應(yīng)。在檢查網(wǎng)線、代碼基本無問題之后,我大概判斷原因是來自于認(rèn)證交換機(jī)所使用的組播模式為非標(biāo)準(zhǔn)的802.1X組播模式。我將認(rèn)證模式由標(biāo)準(zhǔn)模式更換為Shida私有組播模式后,即可岀交換機(jī)對認(rèn)證的響應(yīng)包。這個問題似乎并沒有得到解決!因為我在實驗室里可以認(rèn)證成功,而回到寢室里就又岀現(xiàn)同樣的情況。我把認(rèn)證模式進(jìn)行更改也沒有作用!這到底是何原因?昨天我回寢室,使用wireshark來監(jiān)測數(shù)據(jù)包的發(fā)送。發(fā)現(xiàn)只要使用的組播地址是標(biāo)準(zhǔn)的802.1x組播地址,則該組播

23、幀似乎就被交換機(jī)給屏蔽了。這可能就是原因吧。但新的問題是交換機(jī)是如何屏蔽的?怎么關(guān)閉此屏蔽?.right.c n/forum/archiver/tid-19379.html你要真想上802.1X 認(rèn)證的話,不是所有的機(jī)器都支持的。我手上用的是 Li nksys WRT54GS v1.0手上的另外兩個 Buffalo WHR-G125 和Buffalo WHR-HP-G54 都不行說來話長,Broadcom的交換機(jī)驅(qū)動里面有一個BUG,導(dǎo)致802.1x 網(wǎng)絡(luò)包無法發(fā)送。只有使用ADM6996交換芯片的機(jī)器才能支持802.1X 認(rèn)證,否則會失敗。據(jù)我所知目前使用這個芯片的機(jī)器只有Linksys W

24、RT54G/GS 系列的前兩個版本,還有Moto WR850G v2 ,DellTrueMobile 2300的某一個版本,其它的都不行了。包括BCM5325獨(dú)立交換芯片或者是像BCM5354這樣集成交換芯片的,都不行。問題二:認(rèn)證的回饋信息中有中文亂碼學(xué)校的網(wǎng)絡(luò)中心對認(rèn)證請求的反饋中,若含有信息,則一般都是中文的,而且其編碼似乎是GB2312。若我們想正確顯示這些信息,則可以使用putty來登錄目標(biāo)路由器的 Tel net服務(wù),并將putty的選項windows中的translation的字符集輸入為 CP936。然后再次登錄到路由器進(jìn)行認(rèn)證,此時可以得到正確的反饋信息。問題三:認(rèn)證客戶端版

25、本過低在寢室里一般不會有這相問題,使用較低的2.39版論證程序即可。但是在光電國家實驗室這邊的網(wǎng)絡(luò)中,似乎交換機(jī)較新,因此其對認(rèn)證程序的版本就有一定要求。經(jīng)過測試,發(fā)現(xiàn)在實驗室里認(rèn)證的版本至少為3.05可以通過修改hs.co nf配置文件,來修改 HustSupplica nt 所模擬的認(rèn)證版本。問題四:無法從主機(jī)系統(tǒng)上下載目標(biāo)二進(jìn)制文件有幾點(diǎn)需要注意:主機(jī)系統(tǒng)的web服務(wù)文件中需要檢測目標(biāo)文件的權(quán)限,特別是對于其它用戶需要有讀權(quán)限。若某個文件的其它人讀權(quán)限沒有打開,則顯然通過web是訪問不了的。建議文件命名都使用小寫文件名稱不宜過長。234待改進(jìn)的地方部分算法是采用計算的方式而不是查表的方式

26、,這對于路由器的 CPU來說可能是負(fù)擔(dān)。因此在這方面應(yīng)該進(jìn)行減負(fù)!認(rèn)證程序不能在路由器上永遠(yuǎn)保存,一掉電或重啟則認(rèn)證程序就丟掉了。要想再次使用就必須重新從主機(jī)系統(tǒng)中下載。另外認(rèn)證程序還不能自動獲得當(dāng)前運(yùn)行環(huán)境中的指定網(wǎng)卡的IP信息和掩碼信息。3編譯配置新固件3.1 介紹 OpenWrt Buildroot3.1.1 關(guān)于 OpenWrt BuildrootOpenWrt Buildroot 是一組Makefiles 和補(bǔ)丁文件,這些文件可以使用用戶很容易的生成交叉編譯toolchain 以及用于 Wireless Router的根文件系統(tǒng)。交叉編譯工具鏈?zhǔn)褂玫囊环N小型的C標(biāo)準(zhǔn)庫: uClibc

27、 , .編譯工具鏈?zhǔn)且唤M工具集,這些工具集可以使你為你的系統(tǒng)編譯代碼。其一般包括如下幾個部分:編譯器,如gcc二進(jìn)制工具,如匯編器、器C 標(biāo)準(zhǔn)庫,如 GNU Libc, uClibc, dietlibc安裝在你自己的開發(fā)環(huán)境中的系統(tǒng),本身已經(jīng)帶了一組編譯工具鏈,可以編譯生成能在你自己的機(jī)器架構(gòu)上運(yùn)行的二進(jìn)制文件。如果你使用的是pc,則你的編譯工具鏈?zhǔn)沁\(yùn)行在X86處理器,其生成的代碼也是基于X86處理器的。在大多數(shù)的Linux系統(tǒng)中,編譯工具鏈?zhǔn)褂玫腃標(biāo)準(zhǔn)庫是GNU libc。這樣的編譯工具鏈系統(tǒng)稱為"host compilation toolchain”。編譯工具

28、鏈所運(yùn)行的系統(tǒng),就被稱之為"host system ”。這樣主機(jī)編譯工具鏈?zhǔn)怯赡愕陌l(fā)行版提供的,openwrt不會對其做任何事情。就像上面說的,運(yùn)行在你自己系統(tǒng)上的編譯工具鏈生成的二進(jìn)制可執(zhí)行文件是運(yùn)行在你自己主機(jī) 系統(tǒng)上處理器上的。而對于具有不同處理器結(jié)構(gòu)的嵌入式系統(tǒng),你就需要交叉編譯工具鏈:運(yùn)行在你主機(jī)系統(tǒng)上的編譯工具鏈,但是其生成的代碼是用于目標(biāo)系統(tǒng)(目標(biāo)處理器)。比如,如果你的主機(jī)系統(tǒng)使用的是 X86,而你的目標(biāo)系統(tǒng)是 MIPS,則通常的運(yùn)行在你主機(jī)上的X86編譯工具鏈編譯生成的代碼是用于X86,而運(yùn)行于X86的交叉編譯工具鏈則生成用MIPS的代碼。在你可以手運(yùn)編譯岀gcc,

29、b in utils, uClibc及其它一些具時,你或許會問為什么會需要這樣的工具鏈?當(dāng)然,這樣是可行的,不過,處理這樣的編譯過程和配置過程是非常消耗時間及枯燥的。Ope nWrt Buildroot可以使用 Makefiles 及各種版本的 gcc及bin utils的補(bǔ)丁文件來自動處理這個過程,使生成的交叉編譯工具鏈可以在Wireless Router 的MIPS架構(gòu)上正常工作。3.1.2 獲取 OpenWrt Buildroot通過svn可以獲取相應(yīng)的 OpenWrt:對于各種OpenWrt開發(fā),可以使用如下命令獲取最新的版本:$sv n co n.ope /ope n

30、wrt/tru nk/如果你只需要創(chuàng)建自定義的固件映像及包,我們推薦你使用穩(wěn)定版本:$ svn co n. ope /ope nwrt/bra nches/whiterussia n/3.1.3 使用 OpenWrt BuildrootOpenWrt的配置界面和 Linux核配置(. )及busybox (. )的配置界面類 似。特別提醒是編譯配置 OpenWrt只需要是通常用戶就可以了,不需獲取root權(quán)限。編譯的過程如下:配置$make menuconfig在配置選項中的每一項,你都可以獲得相關(guān)的幫助來了解對應(yīng)條目的作用。當(dāng)配置完成

31、,將自動生成.config 文件,以保存配置參數(shù)。隨后Makefile將會使用到.config 中的配置參數(shù)。編譯$make該命令將會下載、配置及編譯選擇的所用的工具,最終生成目標(biāo)固件以及一些額外的工具包。生成的所有目標(biāo)文件都可以在bin/子目錄中找到。你編譯的固件映像可以包含兩種不同的文件系統(tǒng)類型。Jffs2。Jffs2 包含一個可寫的根文件系統(tǒng),它可以擴(kuò)展你的flash映像的大小。注意:如果你使用通過的固件映像,你需要為你的flash的大小挑選正確的映像,因為其不同的eraseblock 大小。Squashfs。Squashfs包含一個只讀的文件系統(tǒng),其為對使用了LZMA壓縮的squash

32、fs 文件系統(tǒng)的修改版本。當(dāng)引導(dǎo)時,你可以創(chuàng)建可寫的二級文件系統(tǒng),它可以保存你對根文件系 統(tǒng)的修改,包括你所安裝的軟件包。定制目標(biāo)文件系統(tǒng)當(dāng)前有兩種方式可以定制最終的目標(biāo)文件系統(tǒng):直接定制目標(biāo)文件系統(tǒng),然后重編譯映像。目標(biāo)文件系統(tǒng)所在目錄是build_ARCH/root/ ,這里ARCH是選定的目標(biāo)板的體系結(jié)構(gòu),通常是mipsel。你可以在這里做些簡單的修改,之后使用maketargetnstall來重新構(gòu)建目標(biāo)文件系統(tǒng)。該方法可以目標(biāo)文件系統(tǒng)做任何事情,不過如果你決定重構(gòu)我的工具鏈、工具或包,則這些修改會丟掉。定制目標(biāo)文件系統(tǒng)的綱要,通過package/base-files/default/

33、.。你可以在這里定制配置文件及其它事情。不過整個文件系統(tǒng)的層次結(jié)構(gòu)還不存在,因為其是在編譯過程中生成的。因此你不能對這個目標(biāo)文件系統(tǒng)綱要進(jìn)行任意修改,不過若你做了修改,則這些修改在重新編譯時不會丟掉。定制Busybox配置Busybox是可定制的,你可以根據(jù)自己的需要對其進(jìn)行定制。其配置界面已經(jīng)集成到了系統(tǒng)的主配置界面中。你可以在"Ope nWrt Package Selecti on” 中的"Busybox Con figuration ” 找到。定制uClibc配置就像BusyBox 一樣,uClibc也提供了許多的配置選項。你可以根據(jù)自己的需要及條件限制,來 選擇各種

34、各樣的功能。修改uClibc最簡單的方式如下:(1)在沒有對uClibc進(jìn)行任何配置的情況下進(jìn)行一次buildroot 編譯改變當(dāng)前目錄到 toolchain_build_ARCH/uClibc/目錄,然后運(yùn)行 make menuconfig.可以根據(jù)配置界面進(jìn)行配置。將 .config文 件 復(fù)制至 Utoolchai n/uClibc/uClibc.c onf或者toolchai n/uClibc/uClibc.c on f-locale。當(dāng)你在busybox的配置選項中未選擇locale時使用前者,若選擇了則使用后者。重新運(yùn)行編譯當(dāng)然,你也可 以直接修改toolchai n/uClibc

35、/uClibc.c onf或toolcha in/uClibc/uClibc.c on fig-locale,而不需要運(yùn)行配置助理。是如何工作的前面提到,Ope nWrt基本上是一組 Makefiles,其可下載、配置以及使用正確的選項進(jìn)行編譯。 它同樣包含了一些軟件的補(bǔ)丁,主要是用于交叉編譯工具鏈的補(bǔ)丁。每一個軟件都有一個Makefile,般被命名為“ Makefile ”。每個 Makefile 有三個小節(jié):Package小節(jié)(在package/目錄):包含用于編譯用戶空間工具的文件及Makefile,這些工具可以被加入到目標(biāo)文件系統(tǒng)中。每個子目錄代表一種工具。target小節(jié)(在targ

36、et目錄):包含與目標(biāo)文件系統(tǒng)的映像和Linux核生成相關(guān)的軟件和Makefiles 。支持兩種文件系統(tǒng):jffs2 和squashfs.在每一個目錄中,至少包含兩個文件:Makefile :下載、配置、編譯及安裝軟件的Makefiles.Con fig.in :配置工具描述文件的一部分。它描述了與當(dāng)前軟件相關(guān)的選項。主Makefile按序做如下工作(當(dāng)配置完成以后):(1)創(chuàng)建下載目錄(默認(rèn)為dl/ )。該目錄是壓縮包所下載的目錄,可以通過將其保存起來以避免再次下載。 創(chuàng)建build目錄(默認(rèn)為 build_ARCH/,ARC雇目標(biāo)端的架構(gòu))。該目錄用于編譯用戶空間 的工具。(3)創(chuàng)建too

37、lchain 編譯目錄(默認(rèn)為toolchain_build_ARCH/)。該目錄用于編譯交叉工具鏈。 配置staging目錄(默認(rèn)為 staging_dir_ARCH/ )。交叉編譯工具鏈將要安裝在該目錄。如 果你需要使用同樣的交叉編譯工具來編譯第三方軟件,那么你可以將stagi ng_dir_ARCH/添加到你的PATH環(huán)境變量中,然后就可以通過arch-li nux-gcc來編譯程序了。為了正確的配置該stagi ng 目錄,該目錄會首先被刪除,然后再創(chuàng)建里面的子目錄和文件、符號文 件等。(5)創(chuàng)建target目錄(默認(rèn)為build_ARCH/root/)以及目標(biāo)文件系統(tǒng)的綱要結(jié)構(gòu)。該目

38、錄將會包含最終的目標(biāo)根文件系統(tǒng)。為了建立該目錄,其會首先被刪除,將后將 target/default/target_skelet on位置的綱要復(fù)制過去,最后刪除無用的SVN/目錄。(6)調(diào)用 toolcha in, package, target等子目錄中的 prepare, compile, in stall等 make 目標(biāo)使用uClibc工具鏈你可能需要交叉編譯自己的程序,這時你可使用 Buildroot 生成的交叉編譯工具鏈。 該工具位于stag in g_dir_ARCH/目錄。使用其最簡單的方式是將路徑stagi ng_dir_ARCH 加入到PATH環(huán)境變量中,然后使用 arc

39、h-l in ux-gcc, arch-l in ux-objdump, arch-l in ux-ld等等即可。比如,你可以將如下語句添加到你的.bashrc 文件中(假設(shè)用于MIPS架構(gòu)的 Buildroot 位于/openwrt/ ):export PATH=$PATH:/ope nwrt/stag in g_dir_mipsel/b in/之后就可以簡單的使用如下命令進(jìn)行交叉編譯:$ mipsel-li nux-uclibc-gcc -o foo foo.c在其它地方使用uClibc工具鏈默認(rèn)情況下交叉編譯工具鏈?zhǔn)巧稍谀夸泂taging_dir_ARCH/目錄中。如果你需要將其轉(zhuǎn)換到

40、其它目錄,則不可以直接復(fù)制,應(yīng)該通過對Buildroot 進(jìn)行配置,即在"Build opti ons”選項中的"Toolchain and header file location”中指定其位置。3.1.10 下載的軟件包的位置默認(rèn)情況下下載的軟件都位于/dl目錄中。3.1.11 擴(kuò)展OpenWrt使用更多的軟件本小節(jié)主要是考慮你想加入更多的用戶空間的軟件,以加入軟件包foo為例:(1) 創(chuàng)建foo目錄在package/目錄中創(chuàng)建你的軟件包所對應(yīng)的目錄。創(chuàng)建foo/c on fig. in文件創(chuàng)建config.in文件。該文件將包含對foo軟件的配置選項,而這些選項將會顯

41、示在配置工具中。其容應(yīng)該基本包含:config BR2_PACKAGE_FOOtristate "foo - some nice tool"default m if CONFIG_DEVELhelpThis is a comme nt that expla ins what foo is.如果該foo軟件還依賴于 Buildroot中的其它軟件或庫,則在config.in中自動選擇好這些軟件將會非常重要。例如,fool依賴于bar庫,則:config BR2_PACKAGE_FOOtristate "foo - some nice tool"defaul

42、t m if CONFIG_DEVELselect BR2_PACKAGE_LIBBARhelpThis is a comme nt that expla ins what foo is.當(dāng)前用戶也可以加入其它一些配置參數(shù)。(3)修改 package/config.in為了使你的軟件包能加入到配置工具中,你還需要修改package/c on fig.i n文件:comme nt "Networki ng"source "package/foo/C on fig.i n" 修改 package/Makefile要將你的軟件包 foo添加到編譯的過程中,需要

43、對package/Makefile進(jìn)行修改:package-$(BR2_PACKAGE_FOO) += foo除了默認(rèn)的依賴關(guān)系外,若你的軟件包還依賴于其它軟件,則添加:foo-compile: bar-compile(5) ipkg控制文件此外還需要創(chuàng)建一個控制文件用以包含你的軟件包的信息,這些信息將被ipkg工具使用。該文件應(yīng)該以這樣的形式:package/foo/ipkg/foo.c ontrol文件的容如下:1 Package: foo2 Priority: opti onal3 Secti on: net4 Maintainer: Foo Software vfoofoosoftwa

44、re.5 Source: foosoftware.6 Depe nds: libbar7 Descripti on: Package Descripti on你可 以忽略通常的Version 和 Architecture 域,因為它們的容將會由Makefile 調(diào)用 make-ipkg-dir.sh 腳本自動創(chuàng)建。其中Depends域非常重要,這樣ipkg工具將會在目標(biāo)系統(tǒng)上自動獲取所有依賴軟件。(6) Makefile 實例最后是最難的部分,創(chuàng)建Makefile。它包含了 Makefile的規(guī)則,負(fù)責(zé)處理下載、配置、編譯、安裝軟件,下面是一個例子:1 # $Id: buildroot-doc

45、umentation.html 2860 2006-01-08 02:17:18Z wbx $22 in clude $(TOPDIR)/rules.mk43 PKG_NAME:=foo4 PKG_VERSION:=1.07891011121314151617181920212223242526272829303132333435PKG_RELEASE:=1PKG_MD5SUM:=4584f226523776a3cdd2fb6f8212ba8dPKG_SOURCE_URL:=./dow nloadsPKG_SOURCE:=$(PKG_NAME)-$(PKG_VER

46、SION).tar.gzPKG_CAT:=zcatPKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-i nstallin clude $(T OPDIR)/package/rules.mk$(eval $(call PKG_template,FOO,foo,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)$(PKG_BUILD_DIR)/.c on figured: $(PKG_BUILD_DIR)/.prepared(cd $(PK

47、G_BUILD_DIR); $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS)" ./c on figure -target=$(GNU_TARGET_NAME) -host=$(GNU_TARGET_NAME) -build=$(GNU_HOST_NAME) -prefix=/usr -sysc on fdir=/etc -with-bar="$(STAGING_DIR)/usr" );touch $(PKG BUILD DIR)/.built:36rm -rf $(PKG_INSTALL_DIR)37

48、mkdir -p $(PKG_INSTALL_DIR)38 $(MAKE) -C $(PKG_BUILD_DIR) 39 $(TARGET_CONFIGURE_OPTS) 40 in stall_prefix="$(PKGN STALL_DIR)" 41 all in stall42 touch $4343 $(IPKG_FOO):46 in stall -d -m0755 $(IDIR_FOO)/usr/sb in47 cp -fpR $(PKGN STALL_DIR)/usr/sbi n/foo $(IDIR_FOO)/usr/sb in49 $(RSTRIP) $(I

49、DIR_FOO)50 $(IPKG_BUILD) $(IDIR_FOO) $(PACKAGE_DIR)5151 mostlyclea n:52 make -C $(PKG_BUILD_DIR) clea n53 rm $(PKG_BUILD_DIR)/.built這個Makefile是用于單個二進(jìn)制軟件的相關(guān)工作。對于其它的軟件如庫或復(fù)雜軟件系統(tǒng),則應(yīng) 該參照其它軟件包的Makefile 進(jìn)行修改。從515行,定義了一組非常有用的變量:PKG_NAME軟件包的名字PKG_VERSION應(yīng)該下載的軟件包的版本號PKG_RELEASEt 行號PKG_MD5SUM:md較驗值PKG_SOURCE_U

50、F下:載的地址完全路徑,可以使用HTTP或FTP。PKG_SOURC下載的軟件包的全名PKG_CAT提取軟件包所需要的工具PKG_BUILD_DIR軟件將會編譯和配置的目錄PKGN STALL_DIR軟件將要安裝的目錄。packageIn Line 3 and 17 we in clude com mon variables and routi nes to simplify the process ofipkg creation. It includes routines to download, verify and extract the software archives.Li ne

51、19 contains the magic line which automatically creates the ipkg for us.Lines 21-33 defi nes a target and associated rules that con figures the software. It depe nds on the previous target (the hidde n .prepared file) so that we are sure the software has bee n un compressed. In order to con figure it

52、, it basicallyruns thewell-k nown ./c on figurescript. As we may be doing cross-compilati on, target, host and build arguments are given. The prefix is also set to /usr, not because the software will be in stalledin /usr on your host system, but in the target filesystem.Fin allyit createsa .con figu

53、red file to mark the software as con figured.Lines 35-42 defi nes a target and a rule that compiles the software. This target will create the bi nary file in the compilati on directory, and depe nds on the software being already con figured (he nee the refere nee to the .con figured file). Afterward

54、s it in stalls the result ing bi nary into the PKG_INSTALL_DIR. It basically runs make in stall in side the source directory.Lines 44-50 defines a target and associated rules that create theipkg package, whichcan opti on allybe embedded into theresult ing firmware image.It man ually in stalls allfil

55、es you want to integrate in your resulting ipkg. RSTRIP will recursevily strip all bin aries and libraries. Fin ally IPKG_BUILD is called to create the package.3.1.12 Ope nWrt核模塊創(chuàng)建本小節(jié)將主要介紹如何進(jìn)行OpenWrt的核模塊的創(chuàng)建,使其成為安裝成為ipkg。(1) 啟用核選項可以通過修改 build_mipsel/li nux/.co nfig來啟用相應(yīng)核選項,或者通過如下命令:$ cd build_mipsel/

56、li nux$ make menuconfig之后可以將.config文件進(jìn)行備份,這樣配置的參數(shù)就不會在make dirclean后丟失。(2) 創(chuàng)建一個buildroot 的選項可以通過悠 taget/li nux/c on fig.i n來創(chuàng)建一個 buildroot 選項:config BR2 PACKAGE KMOD USB KEYBOARDtristate "Support for USB keyboards"default mdepe nds BR2_PACKAGE_KMOD_USB_CONTROLLER(3) 定義核模塊的二進(jìn)制文件通過修改target/linux/linux-2.4/Makefile來定義二進(jìn)制文件:$(eval

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論