kernel编译 openwrt_OpenWRT实践1:开发环境构建

daafcdb4fa8600155ebbdaf19f1d77e7.png

序言

无线路由器目前已经可以做很多的功能了,相应的扩展资源也越来越多。其中大部分都是直接基于OpenWRT平台直接进行开发的。笔者之前一直介绍的都是一些协议的理论知识,目前也更新一些笔者关于SDWN(Software Defined Wireless Networking)的实现中,所总结的一些实战类的笔记。笔者目前是采用WNDR3800作为硬件平台,性价比高。

PS:由于路径问题,一般一个ubuntu系统只能够安装一个OpenWRT,否则会出现路径不匹配的问题。

开发环境构建

第一步:安装一些依赖包

sudo apt-get install libncurses5-dev zlib1g-dev gawk flex patch git-core g++ subversion

第二步:下载OpenWRT源码

git clone git://git.openwrt.org/14.07/openwrt.git

第三步:修改文件夹权限,为了编译方便,一般直接对源码文件夹赋予777的权限

sudo chmod -R 777 openwrt

第四步:修改feeds源,用以安装所需的package以及luci界面

gedit feeds.conf.default

打开文件后,注释掉一些不需要的源,一般使用前三个源即可

87786aadb3231e0706fdf91864d0c78b.png

第五步:更新与安装feeds包

./scripts/feeds update –a
./scripts/feeds install –a

第六步:固件的编译设置,我们要设置如下内容。注意,空格键是选择是否安装模块,如果是“*”的话,那么就是默认安装,如果是“M”的话,那么就是要手动加载。回车键是用来选择是否进入子栏的,在配置完固件之后,需要手动保存后再离开。

1)Target System类型为: Atheros AR7xx/AR9xx

36313454821fec88e400a07b81b3ee9a.png

69b5f69d75c4064a6a74ec3dc68b937f.png

2)Target Profile类型为:NETGEAR WNDR3700/WNDR3800/WNDRMAC,这里根据路由器型号进行选择,我们采用的路由器为WNDR3800。

954b733c3f7721a7ea3972dac0dc8930.png

ca532821f3990d355c2e0575cd31eb55.png

3)Target Images类型为:squashfs,其余的选项不选

b1067585b00c7617887a2acc03d6ca03.png

d868780ac98852ae59311a5eca7932e6.png

4)分别选中 <Advanced configuration options(for developers)>,<Build the OpenWrt SDK>,<Build the OpenWrt based Toolchain>

b2ef2ec4db4aecd630bf147d3ae006e1.png

5)选择<Luci—Collections--(*)luci>,如下图(选择时要注意是选择了M还是*,因为这两种不同的选择方式编译完的固件是有不同的,这里还是强调全部用 *,否则刷机完之后,还需要手动加载Luci界面)

c018b8948b388edf388fafa901a138b7.png

2d94d7635169077db21019f7e07fc6ce.png

1d3a3fbdbfd920f3a427ec64ce8b3312.png

6)保存退出

ace741e6d3fc50974df6e69d075a8f92.png

7)如果需要装OVS的话,那么需要手动取消bridge,即在make menuconfig后手动执行以下指令。

echo '#CONFIG_KERNEL_BRIDGE is not set' >> .config

注意:每次 make menuconfig以后都要执行这条指令。

第七步:在openwrt源码文件中,添加编译时候需要附加的模块。在openwrt编译过程中,会从互联网上自行下载一些模块,不过由于网络以及数据源的问题,有部分数据包直接下载是存在问题的。故本文已经将该版本openwrt所需要的数据包进行整理,并整理如下:

openwrt文件1

openwrt文件2

上述文件解压缩以后,可以获得一个dl.tar.gz的文件,首先将其下载至本地,并传入开发环境中,然后用以下命令解压缩

tar zvxf dl.tar.gz

解压缩之后,可以获得一个名为dl的文件夹。此时需要将该文件夹与openwrt目录下的内容进行合并,比如可以用以下指令(如果在图形界面里面,手动拖拽文件夹也行)

cp ./dl/* openwrt/dl/

在openwrt编译过程中,如果dl目录中已经有下载好的模块,那么编译的时候就不会再行下载资源。

第八步:编译openwrt固件。直接在openwrt根目录下,执行以下指令即可

make V=99

编译完的结果被保存在目录(openwrt/bin/ar71xx/)下,其中ar71xx路径名与固件配置时选择的芯片型号有关。以本文选择WNDR3800路由器为例,最后编译结果为

openwrt-ar71xx-generic-wndr3800-squashfs-sysupgrade.bin

将该文件拷出后,我们可以进行最后一步的刷机操作。

本文为原创文章,如需转载须注明出处和原文链接。

7093fdda06fb28ed07152f1c2591fa8f.png

欢迎大家关注我们的微信公众号:无线技术大讲堂,请搜索公众号(must_wireless)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值