搭建自己的OpenWrt开发环境
1、 安装环境
Linux系统,如果在CentOS上操作,需安装如下依赖包:
yum install binutils bzip2 gawk gcc gcc-c++ gettext makencurses-devel patch unzip wget zlib-devel
yum install subversion screen
2、 下载OpenWRT源码
mkdir /usr/src/test
cd /usr/src/test
svn co svn://svn.openwrt.org/openwrt/trunk (开发版本,不稳定,不建议下载)
wget http://downloads.openwrt.org/bac ... 0.03_source.tar.bz2(目前稳定版本,建议)
3、 检查配置环境
必须使用非root用户进行操作,添加一个普通用户。(注意:如果使用root进行操作的话,会提示检查失败:Checking 'non-root'...failed.)
[root@localhost trunk]# adduser openwrt
[root@localhost trunk]# su openwrt
为了防止文件读写权限造成问题,需要将源码copy到openwet的根目录下进行所有操作。
[openwrt@localhost openwrt]$ cd ~
[openwrt@localhost ~]$ cp -r /usr/src/test/trunk ./
[openwrt@localhost ~]$ cd trunk/
[openwrt@localhost trunk]$ ls
BSDmakefile LICENSE README feeds.conf.default package scripts toolchain
Config.in Makefile docs include rules.mk target tools
4、 下载feeds
Feeds是OpenWrt环境所需要的软件包套件。最重要的feeds有:
‘packages’一些额外的基础路由器特性软件
‘LuCI’OpenWrt默认的GUI
‘Xwrt’另一种可选的GUI界面
需要能够连接互联网。
在下载之前可以通过查看’feeds.conf.default’文件,来检查哪些文件需要包含在环境中。
开始下载,使用:
[openwrt@localhost trunk]$ ./scripts/feeds update -a
安装feeds包,只有安装之后,在后面的makemenuconfig时,才可以对相关配置进行勾选。
[openwrt@localhost trunk]$ ./scripts/feeds install -a
如果更新了feeds的配置文件,需要添加新的软件包用于生成系统。只需进行重复操作:
[openwrt@localhost trunk]$ ./scripts/feeds update -a
[openwrt@localhost trunk]$ ./scripts/feeds install -a
5、 进行配置
编译过程使用的交叉编译,交叉编译生成的SDK以及image等文件的类型取决于开发环境、应用硬件、以及源码版本。所以要对自己的环境进行了解,才能进行正确的配置。我在配置过程中,就遇到了这个问题,我的硬件是brcm47xx,在第一次编译的时候,选择地是Target System(Broadcom BCM947xx/953xx),最后生成的包无法在router上安装,版本不匹配。第二次安装时,选择了Target System (Broadcom BCM947xx/953xx[2.4]),安装成功,我的板子可能只支持linux2.4的内核。(设备型号是Linksys Wrt54gs v3.0) (2011.05.01添加:其实LinksysWrt54gs v3.0是支持Linux 2.6版本的,TargetSystem 选择 Broadcom BCM947xx/953xx,编译后也是可以用的,这周末由于项目需要改某个软件,每次修改代码后,都得重新编译一下固件,经过来回编译了十来次,都可以使用。另外。内核版本升级之后,无线驱动改成了mac802.11,而非以前的wl,以为wl.o这个专门的库只在linux2.4中才用到。)
[openwrt@localhost trunk]$ make defconfig
[openwrt@localhost trunk]$ make prereq
[openwrt@localhost trunk]$ make menuconfig
通过文本对话框进行选项配置,最主要的配置项有:
Target system(目标系统类型)
Package selection(软件包选择)
Build system settings (编译系统设置)
Kernel modules (内核模块)
- 表示:这个包裹选中编译,并安装在firmware中;
[M]表示:这个软件包选中编译,但并不安装在firmware中。
在退出Menuconfig的时,会提示是否保存配置。
在此我只对target system进行了选择;勾选了Advancedconfiguration option和Build the OpenWrt SDK选项。6、 编译
(1)一般情况,使用一个简单的命令:
[openwrt@localhost trunk]$ make
(2)在多核处理器系统上为提高速度,可使用(例如用3核处理器):
[openwrt@localhost trunk]$ make –j 3
(3)在后台进行编译,使用空闲的I/O资源和CPU性能,可使用(例如使用双核处理器)
[openwrt@localhost trunk]$ onice -c 3 nice -n 20 make -j 2
(4)编译一个单独的软件包(例如在cups软件包):
[openwrt@localhost trunk]$ make package/cups/compile V=99
(5)如果特殊原因需要分析编译报错信息:
[openwrt@localhost trunk]$ make V=99 2>&1 |teebuild.log |grep -i error
说明:将编译的所有输出信息保存在build.log中,将error信息打印在屏幕上。
(6)一个复杂指令的应用
[openwrt@localhost trunk]$ ionice -c 3 nice -n 20 make -j 2V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 \|tee build.log |egrep -i'(warn|error)'
说明:将编译的所有输出信息保存在build.log中,将error和warning信息打印在屏幕上。编译过程使用双核CPU,占用后台资源。7、 生成镜像(Image)位置
新生成的镜像会默认放在新建的一个bin目录下。例如:/bin/brcm-2.4/packages
[openwrt@localhost trunk]$ls bin/*
将编译好的镜像做个备份,例如备份到/目录下:
[openwrt@localhost trunk]$cp bin /8、 清理工作
建议现在清理编译产生的文件,以免下次编译时造成冲突,(文件如果存在的话,将不会被替换),执行makeclean
注意:在执行clean命令,确保已经将编译好的image进行了备份。清理工作会清楚bin目录。
[openwrt@localhost trunk]$make clean
除了清除生成的目录,还想清除交叉编译工具(以及工具链目录)
[openwrt@localhost trunk]$make dirclean
清除所有相关的东西,包括下载的软件包,配置文件,feed内容等:(不建议使用)
[openwrt@localhost trunk]$make distclean
对于更新feeds后出现的错误:
ERROR:please fixpackage/feeds/packages/mc/Makefile 等类似的问题,需要执行这条语句进行系统的清理9、 安装OpenWrt
找到对应的固件,进行固件升级。网上方法很多,这里不再赘述。
后续会推出在OpenWrt上的开发文档:)
搭建自己的OpenWrt开发环境的更多相关文章
- 在Ubuntu下搭建ASP.NET 5开发环境
在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...
- 搭建 AngularJS+Ionic+Cordova 开发环境并运行一个demo
目前的手机APP有三类:原生APP,WebAPP,HybridApp:HybridApp结合了前两类APP各自的优点,越来越流行. Cordova就是一个中间件,让我们把WebAPP打包成Hybrid ...
- Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试
Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试一.下载相关安装包 1.下载nginx最新版本(nginx1.3.13版之后才支持websocket协议) 下载地址 ...
- ubuntu上用eclipse搭建java、python开发环境
上一篇文章讲到如何在windwos上用eclipse搭建java.python开发环境,这一讲将关注如何在ubuntu上实现搭建,本人使用虚拟机安装的ubuntu系统,系统版本为:14.04 lts ...
- react-native —— 在Windows下搭建React Native Android开发环境
在Windows下搭建React Native Android开发环境 前段时间在开发者头条收藏了 @天地之灵_邓鋆 分享的<在Windows下搭建React Native Android开发环 ...
- 极其简单的搭建eclipse的android开发环境
这篇博客是关于如何搭建eclipse的android开发环境, 与网上的其他博客不同,我的方法比他们简单的多,所 以推荐给大家. 搭建eclipse的android开发环境步骤: 1.配置JDK(Ja ...
- 转:WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法
转自:http://www.cnblogs.com/shaddock2013/p/3155024.html 最近在试着在Windows 7上搭建Windows Phone 8的开发调试环境,使用的是V ...
- Eclipse搭建Android5.0应用开发环境 “ndk-build”:launchingfailed问题解决
Eclipse搭建Android5.0应用开发环境 "ndk-build":launchingfailed问题解决 详细参考http://blog.csdn.net/loongem ...
- WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法
最近在试着在Windows 7上搭建Windows Phone 8的开发调试环境,使用的是VMware Workstation + Win8 Pro的虚拟环境, 在漫长的WPexpress_full下 ...
随机推荐
- 关于CSS3的代码总结(部分)
1. 构造样式表:selector{ Property:value; Property:value; } Selector是需要更改样式的元素,property为css属性的名称,value应用的哪种 ...
- berkeley db replica机制 - 主从同步
repmgr/repmgr_net.c, __repmgr_send(): 做send_broadcast, 然后根据policy 对DB_REP_PERMANENT的处理 __repmgr_send ...
- 使用PPT制作交叉密文图
曾几何时,一张图火遍大江南北,互相流传. 其中的奥秘早已破解出来,但是仍乐趣无穷. 来回顾这样一张图吧! 最近,在朋友圈中,这样的一种图又流行起来,被改成不同的版本. 可是这样一种图片到底是怎样做出来 ...
- 数据库知识整理<八>
联接: 8.1理解简单的单联接: 基本上联接的结果是每个集合的笛卡尔积.例如:两个集合{a,b,c}和{a,b}的笛卡尔积是如下的成对集合:{(a,a),(a,b),(b,a),(b,b),(c,a) ...
- du -sg 和df -g 所看的文件系统大小不一致
最近碰到一个问题: df -g 查看内存,发现空间已经满了,但是到对应目录查看,发现只用了一半的空间,感觉还有一半不见了. 经咨询其他人,给了两个解释: 1.fsck :使用Fsck命令修复损坏的分区 ...
- [Xamarin] 啟動拍照並且儲存 (转帖)
拍照對手機來說是很常用到的功能,許多App都基於在拍照上面,這篇文章主要大部分是在翻譯官方文件 (http://docs.xamarin.com/recipes/android/other_ux/ca ...
- 为什么在Mac中无法用k web运行ASP.NET 5程序
k web对应的命令如下: "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebLi ...
- C++11 并发指南后续更新
C++11 并发指南的第一篇是 2013 年 8 月 3 号写的,到今天(2013 年 8 月 31 号)差不多一个月了,前前后后共写了 6 章(目前共 8 篇)博客介绍 C++11 的并发编程,但还 ...
- Hash哈希(二)一致性Hash(C++实现)
一致性Hash 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,经常用于分布式.负载均衡等. 原理 一致哈希是 ...
- Msbuild利用cpu多核加速
msbuild /t:Rebuild /p:Configuration=Release /m /m 自动检测cpu数量启动对应数量进程