什麼是OpenWRT?

http://www.tomatochina.com/dispbbs.asp?boardID=4&ID=462&page=1

http://www.jiangyanfeng.com/

OpenWrt下ipt_IPID模擬移植成功!

分類:知識庫時間:2007-12-31 19:37:27作者:JYF's Blog
Cisco/Linksys 在2003 年發行的WRT54G這款無線路由器非常“經典”。同年有好事者在 Linux Kernel Mailing List 搜索 WRT54G,發現它的IOS 是基於Linux,然而Linux 基於GPL 發佈許可證,就是 GNU General Public License. 該許可證規定Cisco 應該把WRT54G 的IOS 的源代碼公開。本來Cisco 拒絕公開源代碼,最後,03 年三月份的時候,基於公衆壓力Linksys 公開了WRT54G 的源代碼。具體可以參考:OpenWrt嵌入式Linux開發環境。

自從Linksys把WRT54G無線寬帶路由器的源碼公開後,網上有出現了很多種功能增強的WRT源碼修改版,如DD-WRT,OpenWRT,Tomato等。本文以易於交叉編譯的OpenWRT爲例,講述我將ipt_IPID這個iptables功能模塊移值到嵌入式Linux系統的過程。
OpenWRT有兩個版本,一個是White Russian,目前已經停止開發。另一個就是Kamikaze,目前是7.09版本,本文所作的工作就是基於7.09版本的(Fedora 7)。
一.正常交叉編譯OpenWRT。
1.下載Kamikaze 7.09版本的補丁編譯包,3.4M。http://downloads.openwrt.org/kamikaze/7.09/kamikaze_7.09.tar.bz2
2.解壓縮後按照OpenWRT上的說明進行配置並編譯,這裏就不多說了。
需要說明的是,此編譯過程需要下載源碼包,最好提前把相關源碼包都下載好。

二.準備ipt_IPID。
從http://linux.chinaunix.net/bbs/viewthread.php?tid=909127下載iptables-ipid-2.1.tar.tar。
解壓縮後,將ipt_IPID.h頭文件放在Linux內核源代碼中相應位置,如./kamikaze-7.09/build-mipsel/linux-2.4-brcm/linux-2.4.34/include/linux/netfilter_ipv4/目錄下;同時在iptables目錄下也放一份:./kamikaze-7.09/build-mipsel/linux-2.4-brcm/iptables-1.3.7/include/linux/netfilter_ipv4/

三.處理libipt_IPID.c
修改源碼中的ipt_IPID.c,將inculde "ipt_IPID.h"改爲#include<linux/netfilter_ipv4/ipt_IPID.h>,並將源碼52行中sizoef(new_ipid[i])改爲sizeof(new_ipid[id])。
同時,把libipt_IPID.c放入iptables源碼相應目錄./kamikaze-7.09/build-mipsel/linux-2.4-brcm/iptables-1.3.7/extensions/
修改此目錄下Makefile第8行,在"TTL"後加入" IPID"。注意,用空格隔開。四.處理ipt_IPID.c
將libipt_IPID.c中inculde "ipt_IPID.h"改爲#include <linux/netfilter_ipv4/ipt_IPID.h>
同時,將此文件放入./kamikaze-7.09/build-mipsel/linux-2.4-brcm/linux-2.4.34/net/ipv4/netfilter/目錄
修改此目錄下Makefile,在第151行後,依照151行的樣子,加入IPID配置。
修改此目錄下Config.in,在第183行後,依照183行的樣子,加入IPID配置。

五.在kamikaze目錄下,即kamikaze-7.09下執行make kernel_menuconfig。
此操作的主要目的是建立依賴關係文件 .depend。同時在Networking Options -> Netfilter configuration中將IPID target Support編譯進內核或爲模塊。

剩下的工作就是按正常編譯kamikaze的方法繼續編譯。
編譯成功後,兩個重要的文件就是iptables目錄下的libipt_IPID.so和內核netfilter目錄下的ipt_IPID.o了,接着怎麼做,呵呵,自己Google吧。

http://openwrt.org/

關於 OpenWrt

當Linksys 釋放 WRT54G/GS 的源碼後,網上出現了很多不同版本的 Firmware 去增強原有的功能。大多數的 Firmware 都是99%使用 Linksys的源碼,只有1%是加上去的,每一種 Firmware 都是針對特定的市場而設計,這樣做有2個缺點,第一個是難以集合各版本Firmware的長處,第二個是這版本距離 Linux 正式發行版越來越遠。

OpenWrt 選擇了另一條路,它從零開始,一點一點的把各軟件加入去,使其接近 Linksys 版 Firmware的功能,而OpenWrt 的成功之處是它的文件系統是可寫的,開發者無需在每一次修改後重新編譯,另它更像一個小型的 Linux 電腦系統,也加快了開發速度。

2. 爲什麼使用 OpenWrt
因爲 Linux 爲我們提供了很多免費的軟件,我們可以用一個很低的價錢購買像WRT54G的硬件,做成一個小型的 Linux 系統,現在OpenWrt已經提供了100多個已編譯好的軟件,而且數量還在不斷增加,而 OpenWrt SDK 更簡化了開發軟件的工序

3. OpenWrt 的歷史
OpenWrt 項目由 2004 年 1 月開始, 第一個版本是基於 Linksys 提供的 GPL 源碼及 uclibc 中的 buildroot 項目, 這個版本稱爲 “stable” 版, 在網上至今仍有很多項目使用這個版本, 較爲有名 Freifunk-Firmware 和 Sip@Home.

到了2005年初, 一些新的開發人員加入了這項目, 幾個月後他們釋出了第一個 “experimental” 版本, 這和以前版本不同的是, 這版本差不多完全捨棄了 Linksys 的 GPL 源碼, 使用了 buildroot2 作爲核心技術, 將 OpenWrt 完全模塊化,OpenWrt 使用 Linux 正式發行的核心源碼(2.4.30),加上了一些補丁和網絡驅動,開發隊伍更爲OpenWrt添加了許多免費的工具,你可以直拉把Image寫入Flash (mtd)裏面,設定無線功能和VLAN交換功能,這個版本名爲“White Russian”,而1.0版本大概於2005年底公佈。

4. 爲什麼是OpenWrt?
雖然幾年前已看過一些和嵌入式 Linux 相關的報道, 但由於我的工作和 Linux , 甚至嶔入式 Linux 完全扯不上關係, 所以一直沒有機會接觸嵌入式 Linux。而且在香港, 要找到嶔入式系統的開發工具並不是那麼容易的。

有一次, 我爲了在宿舍內安裝無線網橋, 買了一對Linksys WRT54G, 回來後才知道買錯了(應該買WAP54G纔對), 於是我上網看看有沒有其他辦法, 在這偶然的情況下, 我發現 OpenWRT 可以實現這功能, 便開始了改裝這路由器的研究...

Linksys WRT54G 是一個幾乎在任何電腦商場都可以買到的無線路由器, 只需拿出4-5百元, 你就可以擁有一個配備 200MHz CPU, 4MB Flash, 16MB Ram的嵌入式開發系統, 而且在你完成你的開發後, 你還可以應用在生活上, 一點都不浪費。由於它使用 Linux 作爲操作系統, 並公開源碼及驅動, 在網絡上已有很多爲它而設計的開源項目, 包括HyperWRT, OpenWRT, SIP Phone等等, 實在是學習嵌入式 Linux 的入門級首選。

爲什麼學習OpenWRT?
你不需要對 MIPS 處理器有很深入的瞭解, 也不用懂得如何去設計一個 MIPS 處理器專用的內核, 因爲這些在網上已有人爲你做好, 你只需懂得如何安裝和使用就行了, 不過你也可以去 http://www.linux-mips.org 找到相關的資料。

如果你對 Linux 系統有一定的認識, 並想學習或接觸嵌入式 Linux 的話, OpenWRT很適合你, 你將學會一些無線路由器的基本知識, 以及一般嵌入式 Linux 的開發過程, 你會發現無論是 ARM, PowerPC 或 MIPS 的處理器, 都必需經過以下的開發過程:

1. 創建 Linux 交叉編譯環境
2. 建立 Bootloader

3. 移植 Linux 內核

4. 建立 Rootfs (根文件系統)

5. 安裝驅動程序

6. 安裝軟件

7. 調試

隨着 Linux 的成熟, 大量不同的處理器內核和應用軟件相繼出現, 當你熟悉這些嶔入式 Linux 的基本開發流程後, 你不再侷限於 MIPS 處理器和無線路由器, 你可以嘗試在其它處理器, 或者非無線路由器的系統移植嵌入式 Linux, 定製合適自己的應用軟件, 並建立一個完整的嵌入式產品。
http://blog.liuyi.info/openwrt

openwrt 經驗小結.

Submitted by liuyi on Sun, 2007-04-08 05:24. ::linux

openwrt hack小結.

前一階段對openwrt進行了專題研究. 
我覺得可以學習openwrt的軟件,目錄結構和ipkg包管理方法,用於其他的嵌入式linux的開發.

爲了方便其他人hack.這裏把有用的信息集中一下.

我手上的是wrg54gs version1.
同時我也買了一個Asus的 WL-500g P (還沒有試).

1. 什麼是openwrt
參見下面的Cody Teng的說明
http://hi.baidu.com/fnsoxt/blog/item/c2414f10a6fa33fcc2ce79d7.html

http://www.cppblog.com/Khan/archive/2006/11/23/15573.html

2 關於我的路由.
http://www.seattlewireless.net/LinksysWrt54g

photo
http://wiki.version6.net/WRT54GS

3. 系統恢復.
3.1 failesafe.
http://wiki.openwrt.org/OpenWrtDocs/Troubleshooting

3.2
wrt54gl,可以採用短接flash腳的方式,恢復系統, 
這個是在其他方法都不行的時,又沒有jtag的一種很方便的方法.
我試過,沒有什麼危險.
http://forum.openwrt.org/viewtopic.php?id=7474
On the GL, the flash is in a different spot, but it looks basically the same. If you scroll to the very bottom of the guide, it says:
note:
4M flash chip (WRT54G v1.0, v1.1, v2.0) Use pins 15&16
4M flash chip (WRT54G v2.2)Use pins 16&17
8M flash chip (WRT54GS v1.0, v1.1) Use pins 5&6
15&16 didn't work, but when I moved the screwdriver over to 16&17, it did the trick. I've had to short it multiple times while experimenting with getting 2.6 to work, with no luck. There is a ticket open in the bug tracker (#798), so I'm keeping my eye on that to see if there is any progress.

4.使用tftp安裝.
install with TFTP
http://wiki.openwrt.org/OpenWrtDocs/Installing/TFTP?action=show&redirect=OpenWrtViaTftp
tftp 192.168.1.1
binary
rexmt 1
timeout 60
trace
Packet tracing on.
tftp> put openwrt-xxx-x.x-xxx.bin

5. . TRX vs. BIN
bin格式加入了特定設備的信息. 所以在webif,tftp時使用bin格式. 
而在openwrt升級時使用trx格式. 
http://wiki.openwrt.org/OpenWrtDocs/Installing

backup
dd if=/dev/mtdblock/1 of=/tmp/firmware.trx

upgrade
wget firmware.trx /tmp
cd /tmp
mtd -r write firware.trx linux

6. 一個很好的FAQ
http://forum.openwrt.org/viewtopic.php?id=3474

7. buildbot
對於想開發的人, 可以看一下.buildbot很方便.
http://buildbot.openwrt.org/
http://downloads.openwrt.org/docs/buildroot-documentation.html

8. 關於網絡接口的說明.
我覺得這個說明很經典.
netwworkinterface
http://wiki.openwrt.org/OpenWrtDocs/NetworkInterfaces

9. 增加串口.JTAG.
可以作爲標準開發系統了.
http://wiki.openwrt.org/OpenWrtDocs/Hardware/Linksys/WRT54GS?highlight=%28OpenWrtDocs/Hardware%29
http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/JTAG_Cable

10. LCD
http://www.duff.dk/wrt54gs/pics/reuter_lcd.jpg

11 增加 SD
http://kiel.kool.dk/

12. 增加GPS
http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/GPS

13. 基於wrt54g的wifi玩具小車.
http://yasha.okshtein.net/wrt54g/

11,12, 13都是在GPIO, SD上做了文章.

14. 淘寶上有人買, 銷售信息.wrt54g的電路板.
http://auction1.taobao.com/auction/0/item_detail-0db1-e91dd6d47c8cb80f0633c989516fc0ff.jhtml

10月12日

更改了WRT54G原來的web界面,修改爲cisco風格

使用2種logo,分別是最新的和傳統cisco的logo,可以參看相冊中的圖片
7月24日

定義WRT54G v4的SES按鈕功能

SES按鈕可以通過腳本來定義其功能,它原有的無線加密功能必須要配合Linksys的網卡才能實現,的確是個雞肋,有了OpenWrt,可以通過腳本來定義這個按鈕的功能,我已經在v4版本上嘗試過reboot、WLAN開關、telnet、無線客戶接入顯示功能,WRT54G v3.1以上版本都有這個按鈕,又額外提供了一個可以玩的東西,WRT54G 5xx的價格的確是物超所值!
WRT54G v3.1之前的版本沒有此按鈕,不過我認爲應該可以通過電路上的改造將此按鈕引出,有空的時候再看看有沒有可能。
6月7日

Prison Break

最近看了Prison Break,很精彩,主角Michael Scofield堅定的眼神和氣質,還有那充滿智慧的越獄計劃讓我有了一直看下去的慾望,期待第二季。
5月30日

註冊了一個免費空間

有個這個30M的空間,可以將自己使用OpenWrt開源軟件的心得和大家一起分享了,大家也可以下載定製的firmware,如果對在使用firmware中遇到問題,請及時給我回饋。
4月22日

WRT54G提供GPL Code

       在自由軟件所使用的各種許可證之中,最爲人們注意的也許是通用性公開許可證(General Public License,簡稱GPL)。GPL同其它的自由軟件許可證一樣,許可社會公衆享有:運行、複製軟件的自由,發行傳播軟件的自由,獲得軟件源碼的自由,改進軟件並將自己作出的改進版本向社會發行傳播的自由。

       GPL規定:只要這種修改文本在整體上或者其某個部分來源於遵循的程序,該修改文本的整體就必須按照流通,不僅該修改文本的源碼必須向社會公開,而且對於這種修改文本的流通不准許附加修改者自己作出的限制。因此,一項遵循流通的程序不能同非自由的軟件合併所表達的這種流通規則稱爲“copyleft”,表示與copyright(版權)的概念“相左”。

       Linksys公司最爲暢銷的無限路由器產品WRT54G提供了GPL Code,讓我們可以自由安裝軟件,增加各種功能,而且網絡上資源豐富,給我們學習使用提供了很多便利,是學習嵌入式系統的極佳平臺。

  

GNU  

http://www.gnu.org/copyleft/gpl.html

  

Linksys WRT54G

http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1127782957298&pagename=Linksys%2FCommon%2FVisitorWrapper

1月7日

定製Firmware使用的硬件及編譯環境

Redhat 9.0                           #firmware編譯環境,系統安裝時需要添加開發工具和內核開發組件
SSH Secure Shell                 #SSH和FTP客戶端軟件
Linksys TFTP Clinet              #用於刷新firmware for windows
ATFTP Client                         #用於刷新firmware for Linux
12月22日

定製WRT54G的firmware

我的設備硬件版本是v2.2的,源代碼版本是v4.20.6,Linksys英文站點上已經有v4.20.9SC釋出。
已經完成中文版firmware,文檔正在整理中……
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章