1.本文介绍
本篇文章主要介绍如何将路由器刷成开源系统OpenWRT,并且在噶系统上安装openflow工具包使其具有一台openflow交换机的能力。
2.刷机环境
Ubuntu 14.04(64bit)
一台Openwrt支持的路由器
一条网线
3.下载Openwrt源码
首先到官方的https://wiki.openwrt.org/toh/start#supported.hardware.-.router.type查看准备的路由器是否被Openwrt所支持,我刷过的型号有TL-MR3420ver1.1和TL-WR740Nver3以及Netgear-WNDR4300v1。因此用过三个版本的OpenWRT,分别是12.09,14.07以及15.01。
关于OpenWRT的使用可以到以下两个官方地址查看,里面包含了本篇下面大部分内容的解释,包括下载地址,相关依赖,配置时如何选择等等。
https://wiki.openwrt.org/zh-cn/doc/howto/buildroot.exigence
https://wiki.openwrt.org/zh-cn/doc/howto/build
下面以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,并安装。(注意,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
4.下载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/
5.配置编译
到openwrt目录下,运行。
$ make menuconfig
配置中,选中为M的表示编译,但不会被包含到镜像文件中(以后随时可以进行安装),选中*表示编译且刷到镜像文件中,不选中表示不编译。
1. Target System
可以在官方support device找到你的路由器,点进去看系统就行了,可以看到我的路由是Atheros AR7241,因此这项我选择Atheros AR7xxx/AR9xxx。
Target Profile
选择对应的路由型号即可,我选的自然是TL-MR3420。
Luci(中文图形界面,由于我的路由flash内存只有4M,所以我的不装)
collection选择luci,按空格将其选定为”*”。
Modules按空格选中Translations,找到Chinese将其选定为”*”。
Applications选中luci-app-ddns,按空格将其选定为”*”。
其余可根据自己的需要添加。
Kernel modules
选中Native Language Support,找到kmod-nls-utf8,将其选定为”*”。
Network
选中openflow,将其选定为”*”。
接下来保存并退出,执行命令编译等待即可。make即可编译,后面的V=99是为了显示更多的编译信息,该过程需要联网(通过ftp下载,速度其慢,一般我需要1小时左右才能完成,如果想要更快完成,可以加上-j来指定多核运行,详见官网)。
$ sudo make V=99
6.更新固件
编译完成后,会在bin文件夹下生成ar71xx文件夹,在其下生成多个文件,如果没有出错,其中xx-factory.bin文件会是我们需要的固件(如果出错,可能有多种原因,MR3420很可能是你选的选项太多,固件编译出来大于4M则不生成),其下的packages存放着你选择编译的各个软件包ipk,可以传到路由器使用opkg命令安装。
生成的固件命名规则如下,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
7.刷机成功后
刷机成功后默认无线关闭,需要用一条网线连接电脑和路由器lan口,用telnet登录到路由器,修改路由器的密码,之后telnet关闭,需要用ssh登录。
如果想打开路由器的无线功能,修改/etc/config/wireless,将option disable 1改为0重启路由(重启wifi也行,输入wifi等待重启)即可。
现在你的路由就支持openflow1.3协议啦。
————————————————
版权声明:本文为CSDN博主「薛定谔的汤姆猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_20448859/article/details/53742730