什么是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使用的硬件及编译环境

Linksys WRT54G v2.2
WRT54G v4.20.6 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,文档正在整理中……

你可能感兴趣的:(什么是OpenWRT?)