红联Linux门户
Linux帮助

利用Openwrt在路由器上刷openflow1.3协议

发布时间:2017-01-09 10:48:45来源:linux网站作者:qq_20448859
1.刷机环境
Ubuntu 14.04(64bit)
一台Openwrt支持的设备
一条网线
 
2.下载Openwrt源码
首先到https://wiki.openwrt.org/toh/start#supported.hardware.-.router.type查看准备的路由器是否被Openwrt所支持,我刷过的型号有TL-MR3420ver1.1和TL-WR740Nver3,分别对应着15.05-chaos_calmer和12.09Attitude Adjustment。关于各版本下载地址以及注意事项可看https://wiki.openwrt.org/doc/howto/buildroot.exigence#downloading_sources。
下面以TL-MR3420ver1.1为例,官方可下载的固件(bin文件)都不带Openflow,所以需要我们自己编译,先拷贝Openwrt15.05源码到本地。
$ git clone -b chaos_calmer git://github.com/openwrt/openwrt.git
安装相关依赖。
$ sudo apt-get install build-essential binutils flex \
bison autoconf gettext texinfo sharutils subversion \
libncurses5-dev ncurses-term zlib1g-dev gawk git-core unzip
切换到openwrt下,然后将feeds.conf.default命名为feeds.conf。
$ cd openwrt
$ mv feeds.conf.default feeds.conf
下载并安装所有可用的feeds,并安装Luci。(注意,https://wiki.openwrt.org/doc/howto/buildroot.exigence#downloading_sources说明了12.09版本的feeds.conf文件里面的地址不正确,因为下载地址从svn上搬到了git,正确的下载地址应改为git上的地址,详见官网说明)。
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ ./scripts/feeds install -a luci
 
3.下载openflow1.3源码
克隆源码到本地。
$ git clone https://github.com/CPqD/openflow-openwrt.git
建立软链接,注意目录请更改为你机子上正确的目录。
$ cd /openwrt/15.05/package
$ ln -s ../openflow-openwrt/openflow-1.3/
$ cd ..
$ ln -s openflow-openwrt/openflow-1.3/files/
 
4.配置编译
到openwrt目录下,运行。
$ make menuconfig
1]Target System
可以在官方support device找到你的路由器,点进去看系统就行了,可以看到我的路由是Atheros AR7241,因此这项我选择Atheros AR7xxx/AR9xxx。
利用Openwrt在路由器上刷openflow1.3协议
2]Target Profile
选择对应的路由型号即可,我选的自然是TL-MR3420。
3]Luci(中文图形界面,由于我的路由flash内存只有4M,所以我的不装)
collection选择luci,按空格将其选定为”*”。
Modules按空格选中Translations,找到Chinese将其选定为”*”。
Applications选中luci-app-ddns,按空格将其选定为”*”。
其余可根据自己的需要添加。
4]Kernel modules
选中Native Language Support,找到kmod-nls-utf8,将其选定为”*”。
5]Network
选中openflow,将其选定为”*”。
接下来保存并退出,执行命令编译等待即可。make即可编译,后面的V=99是为了显示更多的编译信息,该过程需要联网(通过ftp下载,速度其慢,一般我需要1小时左右才能完成)。
$ sudo make V=99
 
5.更新固件
编译完成后,会在bin文件夹下生成ar71xx文件夹,在其下生成多个文件,如果没有出错,其中xx-factory.bin文件会是我们需要的固件(如果出错,可能有多种原因,MR3420很可能是你选的选项太多,固件编译出来大于4M则不生成)。
生成的固件命名规则如下,openwrt-系统版本-硬件平台-具体分支-设备型号-硬件版本-分区类型-固件类型.bin。
如果原先刷过openwrt系统,可以用sysupgrade.bin文件,所有情况要可用factory.bin文件。找到对应版本的factory.bin文件,将其名字改的简短点(有些文件名过长不能刷)。注意!刷机过程中不要断电,否则路由器会变砖,要用TTL线解救。
接下来,如果原先路由系统带有图形界面,可以登录192.168.1.1(也可能是192.168.0.1,具体要看你的lan地址),找到软件升级选项,按提示上传更新即可。
如果原先装的OpenWRT系统没有图形界面,那么可以将其拷贝到路由的tmp目录下,再用ssh命令登录到路由进行升级。
$ scp xxxx.bin root@192.168.1.1:/tmp
$ ssh root@192.168.1.1
$ cd ..
$ mtd -r write xxxx firmware
 
6.刷机成功后
刷机成功后默认无线关闭,需要用一条网线连接电脑和路由器lan口,用telnet登录到路由器,修改路由器的密码,之后telnet关闭,需要用ssh登录。
如果想打开路由器的无线功能,修改/etc/config/wireless,将option disable 1改为0重启路由(重启wifi也行,输入wifi等待重启)即可。
现在你的路由就支持openflow1.3协议啦。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/27645.html