[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.htmlhtml
正文:web
昨晚上熬夜写了[Openwrt项目开发笔记]:Openwrt平台搭建(一),虽然洋洋洒洒地写了很多东西,但我仍是感受忽略的一些东西。在本文中,我试着将我能想到的一些点列出来:浏览器
1、关于Openwrt版本的选择服务器
Openwrt官方wiki:http://wiki.openwrt.org/about/history 列出了Openwrt的版本演变历史。ide
(1)能够看到我所选择的Attitude_adjustment为目前最新的稳定版本。svn
(2)因为我还有一台Netgear Wndr3700路由器,因此我也尝试过编译backfire10.03。ui
(3)主干版本trunk,是持续变化的一个版本,对于开发者来讲,是一个既爱又恨的版本。一则,trunk版本每每对新出的硬件是最先提供支持的,开发者能够针对新出的硬件作开发;二则,trunk版本变化较大,每每在上一个版本支持的路由产品,在下一个版本中可能因为Bug较多而被舍弃,对开发者形成困扰。url
(4)须要特别的指出的是,在国内也有一个团队在作基于Openwrt的开源项目,其内部开发版本为Openwrt-DreamBox,你们若是有兴趣能够参与一下https://dev.openwrt.org.cn/wiki/WikiStart。spa
官方给出的Openwrt的版本路线图以下,有兴趣的朋友能够关注一下:rest
(图片转自Openwrt官方wiki http://wiki.openwrt.org/about/history )
2、关于Openwrt的编译
1. feeds机制
传统的Linux系统在安装或者编译某一个软件的时候,会检查其依赖库是否安装,若是没有安装,则会报错,安装或编译退出。
这种机制使得开发者在安装一个软件以前,不得不查找该软件所需的依赖库,并手动去安装这些软件,有时候碰到比较娇贵的软件时,嵌套式的安装依赖文件,会使得开发者头昏脑涨。
好在Openwrt经过引入feeds机制,较好的解决了这个问题。下文是Openwrt的官方wiki对于feeds的表述:
"In OpenWrt, a "feed" is a collection of packages which share a common location. Feeds may reside on a remote server, in a version control system, on the local filesystem, orin any other location addressable by a single name (path/URL) over a protocol with a supported feed method." Feeds are additional predefined package build recipes for OpenWrt Buildroot.
我我的的理解是: 在Openwrt系统中,“feed”是一系列的软件包,这些软件包须要经过一个统一的接口地址进行访问。“feed”软件包中的软件包可能分布在远程服务器上、在svn上、在本地文件系统中或者其余的地方,用户能够经过一种支持feed机制的协议,经过同一个地址进行访问。(有些绕,简单来讲,就是系统将一系列的软件包进行了地址映射,只能经过同一个接口进行访问)。
这样作有什么好处呢?咱们下载的Openwrt源码是较为纯净的系统,feeds提供了咱们在编译固件时所需的的许多额外扩展软件。
当咱们下载了Openwrt对应源码以后,进行以下操做:
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
上述操做,就是从feeds提供的接口地址将Openwrt所需的一些扩展软件先行下载。
2. Openwrt在编译的过程当中,系统会根据Makefile自动的去判断和下载软件的依赖库。
在Makefile文件中,设置了自动查找软件依赖。若是某个依赖文件在本地文件系统中不存在,那么系统就会根据feeds所示下载路径去下载对应的依赖文件。在首次编译的过程当中,之因此耗时比后续编译时间长,其中一个缘由就是系统须要下载不少的依赖文件。特别地,在TC编译Openwrt的时候,会出现有些依赖文件所在的url没法访问,从而报错。那么,没有别的办法了,要么在网上查找对应的替代源,要么就FQ吧。。。
3、关于Openwrt的固件烧写
这个部分呢,没有统一的标准,针对不一样的路由硬件环境,其烧写的方式不一样。
有些设备能够经过web的方式进行升级,有些则没有提供相应的接口。
有些设备能够经过tftp的方式进行升级,而有些不能。
此处,我就不细讲了,仅把我所使用的Netgear Wndr3700v1固件烧写的方式列一下,若是有对应Wndr3700 v2,v3以及Wndr3800设备的朋友能够参考一下:
1. 原装官方系统刷Openwrt
这个过程极为简单
(1)下载对应路由型号的Openwrt映像文件,个人设备Wndr3700 v1,所以固件为 “openwrt-ar71xx-wndr3700-squashfs-factory.img”
(2) 将PC用无线链接到路由器;
(3) 经过浏览器输入“192.168.1.1”进入路由器的管理界面。
进入“高级”》》“管理”》》“路由器升级”,点击“浏览”,从本地文件夹中找到Openwrt固件,点击上传。以后就是大概4~5分钟的等待,当电源变成绿灯,而且再也不闪烁时,路由已经成功启动了。
(p.s. 此过程设备不能断电,不然可能发生未知的状况)
(4)若成功刷入Openwrt,将PC与路由器经过网线直连的方式(将网线与路由器链接一端插入4个LAN口中任意一个便可)链接。
将PC的本地网卡IP设置为“192.168.1.X” X能够为2~254 任意一个数字。
在浏览器中输入“192.168.1.1”,若是能进入Openwrt欢迎界面,则成功输入Openwrt。
2.经过TFTP的方式刷回原版官方固件
对于Netgear Wndr3700来讲,该设备背面有一个红色圆孔“Restore Factory Settings”,咱们须要经过该按钮进行回刷操做。
进入restore factory settings的步骤是这样的: 1. 关闭路由器 2. 按住Reset键,打开路由器(reset键即为红色圆孔,使用较细的笔尖或者牙签,伸进该圆孔,进行按压,在下一步完成前请勿松手)
该步骤的功能是擦除Flash,为后续TFTP传入数据作准备。 3. 直到power灯开始闪绿色,松开reset键(大约45秒)
首先在netgear的官网上下载对应固件版本,我以“WNDR3700-V1.0.16.98.img”为例。
而后将改固件放入C:或者D:的根目录下,打开cmd,进入对应的盘符分区:(WNDR3700-v1.0.16.98.img放在D盘根目录下)
输入以下命令:
具体命令的内容以下: (1)使用 win+R组合键,输入cmd进入Windows Shell。 (2)进入固件存放位置,我将固件放在D盘根目录下,所以输入下面的命令,跳转到D盘下面: C:\Users\Administrater>D: (3)输入tftp命令上传固件: tftp -i 192.168.1.1 put XXXX.bin ; 其中XXXX.bin 为固件的名称
以后呢,就是默默的等待了(大概1~2分钟),以后路由器会重启。以后进行1中步骤(4)操做。
从下一篇开始,就进入Openwrt软件设置,开始一步一步搭建物联网网关!
转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!