[Openwrt 项目开发笔记]:Openwrt平台搭建(一)补遗

昨晚上熬夜写了[Openwrt项目开发笔记]:Openwrt平台搭建(一),虽然洋洋洒洒地写了不少东西,但我还是感觉忽略的一些东西。在本文中,我试着将我能想到的一些点列出来:

一、关于Openwrt版本的选择

  Openwrt官方wiki:http://wiki.openwrt.org/about/history 列出了Openwrt的版本演变历史。

  (1)可以看到我所选择的Attitude_adjustment为目前最新的稳定版本。

  (2)由于我还有一台Netgear Wndr3700路由器,所以我也尝试过编译backfire10.03。

  (3)主干版本trunk,是持续变化的一个版本,对于开发者来说,是一个既爱又恨的版本。一则,trunk版本往往对新出的硬件是最早提供支持的,开发者可以针对新出的硬件做开发;二则,trunk版本变化较大,往往在上一个版本支持的路由产品,在下一个版本中可能由于Bug较多而被舍弃,对开发者造成困扰。

  (4)需要特别的指出的是,在国内也有一个团队在做基于Openwrt的开源项目,其内部开发版本为Openwrt-DreamBox,大家如果有兴趣可以参与一下https://dev.openwrt.org.cn/wiki/WikiStart

  官方给出的Openwrt的版本路线图如下,有兴趣的朋友可以关注一下:

  

  (图片转自Openwrt官方wiki http://wiki.openwrt.org/about/history )

二、关于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吧。。。

 

三、关于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~2分钟),之后路由器会重启。之后进行1中步骤(4)操作。

 

从下一篇开始,就进入Openwrt软件设置,开始一步一步搭建物联网网关!

[2015-01-15 更新] 添加 QCA9533 v2 支持 (暂无固件支持) 添加 TP-LINK TL-WR2041N v2 (QCA9558 + AR8236) 支持 修复在 32M Flash 上打开 TP-LINK 设置页面卡死的 BUG 修复使用新版 Flash 驱动后无法在 32M Flash 上启动固件的 BUG [2014-11-23 更新] AR2317 增加内存大小自适应的功能 AR7161 WNDR3700V2/WNDR3800/WNDRMAC 专用版修复 USB 灯常亮的问题 [2014-11-18 更新] 刷入编程器固件时如果不选择保留 U-Boot,不再检测固件是否合法,以便刷入其它闪存布局的固件。 [2014-11-16 更新] AR7240 再次修复刷原厂固件丢无线的 BUG (手抖造成的) 底层小更新 (所有芯片) [2014-10-26 更新] AR724x 添加 UBNT 编程器固件自动识别功能 [2014-10-7 更新] AR2317 修复无法刷入部分固件的 BUG 修复刷入编程器固件取消选择保留 U-Boot 却仍然保留 U-Boot 的 BUG 增加更多 Flash 支持 [2014-9-24 更新] WNDR3800 修复 OpenWrt 可能无法保存设置的 BUG WNDR3800 增加 CH 机型支持 增加品胜云座易充 (WMM003N) 及品胜无线音乐路由 (WPR001N) 支持 (先开机,再按复位键,否则无法开机,硬件问题) [2014-9-21 更新] 360 安全路由 C301 专用版完善恢复出厂设置的功能,支持 360 官方固件恢复出厂设置 修复小 BUG [2014-9-20 更新] 360 安全路由 C301 专用版增加刷写/备份第二 Flash 功能 360 安全路由 C301 专用版增加从第二 Flash 启动的功能 (目前无固件支持) 360 安全路由 C301 专用版增加刷写官方加密固件的功能 [2014-9-4 更新] 添加 DHCP 服务功能,连接到路由的设备可自动获取 IP 地址 增强网页稳定性,解决页面多次刷新后失去响应的问题 修复 AR9341/AR9344 内存初始化 BUG,增强稳定性,解决部分 MW300R v3/v4 FW300R v3/v4 无法启动的问题 [2014-8-31 更新] 360 安全路由 C301 专用版增加 NVRAM 修改功能,可修改 MAC 地址等设置 [2014-8-30 更新] 增加 360 安全路由 C301 专用版 [2014-8-28 更新] 修复 AR9344 通电有时无法开机 (灯全亮) 的问题 增加 AR9344 + AR8035 (上海贝尔 MSA2K-3513NA 专用版) 支持 U-Boot 选择说明 ** 请根据以下列出的硬件配置选择合适的 U-Boot 文件进行刷机 ** 选择 Flash 时,请在下方的列表中检查是否支持。 ** 在已列出的生产商中,绝大多数未列出的 Flash 型号是因为其 JEDEC ID 与已列出的 Flash 相同,因此可以直接使用 ** 凡在 U-Boot 控制台 [系统信息] 页中看到已识别出 Flash 型号,则表明使用此 Flash 没有问题 U-Boot 适用的硬件配置、机型、及原厂固件如下: [u-boot-ar2317.bin] 硬件配置: AR2317 + 88E6060 AR2317 + AR8236 AR2317 + ADM6996 内存: SDRAM / DDR 16-bit 大小自适应 机型: 山寨 UBNT: TP-LINK TL-WR541G+ v1/v2/v3 TP-LINK TL-WR340G+ v1/v2/v3/v4 Netgear WGR614v7 原厂固件: UBNT XS2 系列原厂升级固件 其他固件: OpenWrt atheros 平台的 sysupgrade 固件 DD-WRT 固件 说明: u-boot-ar2317-32m.bin 可用在 32M 及 64M 内存的路由上,但只能使用 32M 内存 u-boot-ar2317-64m.bin 只能用在 64M 内存的路由上,在 32M 内存路由上不能开机 此 U-Boot 支持最大 16M Flash;支持在大容量 Flash 上刷写小容量固件,如在 8M Flash 上刷写 4M 固件,则 4M 固件会被自动扩展成 8M [u-boot-ar7161-wndr3800.bin] 硬件配置: AR7161 + RTL8366SR 内存: SDRAM 16-bit 大小自适应 机型: Netgear WNDR3700 v2 Netgear WNDR3800 Netgear WNDRMAC 原厂固件: 同机型支持的固件 其他固件: OpenWrt / DD-WRT 固件 [u-boot-ar7240_ar7241.bin] 硬件配置: AR7240 / AR7241 内存: DDR / DDR2 16-bit 大小自适应 机型: AR7240: TP-LINK TL-WR740N v1/v2/v3 TP-LINK TL-WR740N v4 (中国版) TP-LINK TL-WR741N v1/v2/v3 TP-LINK TL-WR841N v5 TP-LINK TL-WR940N v1 TP-LINK TL-WR941N v4 TP-LINK TL-WR941N v5 AR7241: TP-LINK TL-WA801N v1 TP-LINK TL-MR3220 v1 TP-LINK TL-MR3420 v1 TP-LINK TL-WR840N v1 TP-LINK TL-WR841N v7 TP-LINK TL-WR842N v1 以及水星、迅捷马甲路由 原厂固件: 同机型支持的固件 UBNT XM 原厂升级固件 [u-boot-ar913x-88e6060.bin] 硬件配置: AR9132 / AR9130 + 88E6060 内存: DDR 16-bit 大小自适应 机型: TP-LINK TL-WR941N v1/v2/v3 TP-LINK TL-WR841N v3 原厂固件: 同机型支持的固件 [u-boot-ar9331.bin] [u-boot-ar9331-pisen.bin] 硬件配置: AR9331 内存: SDRAM / DDR / DDR2 16-bit 大小自适应 机型: TP-LINK TL-MR3020 v1 TP-LINK TL-MR3040 v1/v2 TP-LINK TL-MR3220 v2 TP-LINK TL-WR340G+ v7 TP-LINK TL-WR700N TP-LINK TL-WR702N TP-LINK TL-WR703N TP-LINK TL-WR740N v4 (国际版) TP-LINK TL-WR740N v5/v6/v7 TP-LINK TL-WR741N v4 TP-LINK TL-WR742N v5/v6 TP-LINK TL-WR743N v2 TP-LINK TL-WR745N v2 品胜云座易充 (WMM003N) 品胜单网口无线音乐路由 (WPR001N) 以及水星、迅捷马甲路由 原厂固件: TP-LINK TL-MR3020 v1 (国际版) TP-LINK TL-MR3040 v1/v2 (国际版) TP-LINK TL-MR3220 v2 (国际版) TP-LINK TL-WR703N 品胜云座易充 (WMM003N) 品胜单网口无线音乐路由 (WPR001N) 说明: u-boot-ar9331-pisen.bin 专用于品胜无线路由以解决其复位按钮无法使用的问题 u-boot-ar9331-pisen.bin 品胜路由进入 U-Boot 控制台,请先开机再按复位键,否则无法开机,这是硬件设计造成的。可以超频,但限制到 500MHz 不能用于 TP-LINK TL-WR720N v3 和 TP-LINK TL-WR710N,否则无法开机。 [u-boot-ar9331-wr720nv3_wr710n.bin] 硬件配置: AR9331 内存: DDR 16-bit 大小自适应 机型: TP-LINK TL-WR710N TP-LINK TL-WR720 v3 原厂固件: 同 u-boot-ar9331.bin 适用的原厂固件 说明: 针对 TP-LINK TL-WR720 v3 和 TP-LINK TL-WR710N 定制的,以解决其内存类型识别的 BUG。 [u-boot-ar9341.bin] 硬件配置: AR9341 内存: SDRAM / DDR / DDR2 16-bit 大小自适应 机型: TP-LINK TL-MR3420 v2 TP-LINK TL-WR841N v8 TP-LINK TL-WR842N v2 TP-LINK TL-WR843N TP-LINK TL-WR847N v3 TP-LINK TL-WR940N v2 以及水星、迅捷马甲路由 原厂固件: TP-LINK TL-MR3420 v2 (国际版) TP-LINK TL-WR841N v8 (国际版) TP-LINK TL-WR842N v2 (国际版) TP-LINK TL-WR843N (国际版) TP-LINK TL-WR940N v2 (国际版) [u-boot-ar9342-ar8327.bin] 硬件配置: AR9342 + AR8327 内存: SDRAM / DDR / DDR2 16-bit 大小自适应 机型: TP-LINK TL-WR1041N v2 原厂固件: TP-LINK TL-WR1041N v2 [u-boot-ar9344.bin] [u-boot-ar9344-wr941nv6.bin] [u-boot-ar9344-wdr3320v2.bin] [u-boot-ar9344-mw4530r.bin] [u-boot-ar9344-msa2k-3513na.bin] [u-boot-ar9344-qihoo-c301.bin] 硬件配置: AR9344 AR9344 + AR8327N AR9344 + AR8035 内存: SDRAM / DDR / DDR2 16-bit 大小自适应 机型: 百兆有线: TP-LINK TL-WR941N v6 TP-LINK TL-WR2041N v1 TP-LINK TL-WDR3310 TP-LINK TL-WDR3320 v2 TP-LINK TL-WDR3500 TP-LINK TL-WDR3600 TP-LINK TL-WDR5300 TP-LINK TL-WDR6300 v2 水星 MAC1200R 360 安全路由 C301 千兆有线: D-LINK DIR-825 C1 TP-LINK TL-WDR4300/TL-WDR4310/TL-WDR4320 水星 MW4530R 单口千兆: 上海贝尔 MSA2K-3513NA 原厂固件: 同机型支持的固件 说明: 所有 AR9344 的 U-Boot 都自动检测有线网络类型,为百兆千兆自适应的 凡未提到使用专用版的,全部使用通用版 u-boot-ar9344.bin ! u-boot-ar9344-wr941nv6.bin 专用于 TP-LINK TL-WR941N v6 以解决其复位按钮无法使用的问题 u-boot-ar9344-wdr3320v2.bin 专用于 TP-LINK TL-WDR3320 v2 以解决其 LED 不正常和 PCI-E 初始化的问题 u-boot-ar9344-mw4530r.bin 用于 水星 MW4530R 和 D-LINK DIR-825 C1,以便能够使用 WPS/QSS 和 RESET 按钮 u-boot-ar9344-msa2k-3513na.bin 专用于 上海贝尔 MSA2K-3513NA,以便 LED 和 RESET 按钮能正常使用;现在只能刷写原厂编程器固件 u-boot-ar9344-qihoo-c301.bin 专用于 360 安全路由 C301,支持刷写官方固件或 OpenWrt 固件 [u-boot-qca953x.bin] 硬件配置: QCA9531 / QCA9533 内存: SDRAM / DDR / DDR2 16-bit 大小自适应 机型: TP-LINK TL-WR802N v1 TP-LINK TL-WR841N v9/v10/v11 TP-LINK TL-WR842N v4 水星 MW305R v3 水星 MW316R v1 迅捷 FR300R v9 原厂固件: TP-LINK TL-WR802N v1 TP-LINK TL-WR841N v9 (国际版) [u-boot-qca9558-ar8236.bin] 硬件配置: QCA9558 + AR8236 内存: SDRAM / DDR / DDR2 16-bit 大小自适应 机型: TP-LINK TL-WR941N v7 TP-LINK TL-WR881N v1 TP-LINK TL-WR2041N v2 迅捷 FW450R v1 水星 MW450R v1 原厂固件: 同机型支持的固件 [u-boot-qca9558-ar8327n.bin] 硬件配置: QCA9558 + AR8327N 内存: SDRAM / DDR / DDR2 16-bit 大小自适应 机型: TP-LINK Archer C5 TP-LINK Archer C7 v1/v2 TP-LINK TL-WDR4900 TP-LINK TL-WDR7500 v2 TP-LINK TL-WDR7500 v3 TP-LINK TL-WR1043N v2 原厂固件: 同机型支持的固件 [u-boot-tp9343.bin] 硬件配置: TP9343 内存: SDRAM / DDR / DDR2 16-bit 大小自适应 机型: TP-LINK TL-WR880N v3 TP-LINK TL-WR882N v1 TP-LINK TL-WR885N v1 TP-LINK TL-WR941N v8 TP-LINK TL-WR2041N v3 迅捷 FW450R V2 原厂固件: 无 U-Boot 支持的 Flash 列表及说明: 制造商 4M 8M 16M 32M Atmel AT25DF321 AT25DF321A AT25DF641 EN25Q128 EN25QH256 EON (cFeon) EN25F32 EN25P64 EN25QH128 EN25P32 EN25Q64 EN25Q32 EN25QH64 EN25QH32 ESMT F25L32PA F25L64QA F25L32QA GigaDevice GD25Q32 GD25Q64 GD25Q128 Macronix MX25L3205D MX25L6405D MX25L12805D MX25L3235E MX25L6435E MX25L12835E MX25L25635E MX25L3255E MX25L6455E MX25L12855E MX25L25655E Micron M25P32 M25P64 M25P128 N25Q256A M25PX32 M25PX64 N25Q128A13 N25Q032A N25Q064A N25Q128A11 PMC PM25LQ032 SST SST25VF032B SST25VF064C SST26VF032 SST26VF064B SST26VF032B Spansion S25FL032A S25FL064A S25SL128P1 S25FL256S1 S25FL132K S25FL164K S25SL128S1 S25SL032K * S25SL064K ** S25SL128K *** Winbond W25X32 W25X64 W25Q128 W25Q256 W25Q32 W25Q64 * S25SL032K 被识别为 W25Q32 ** S25SL064K 被识别为 W25Q64 *** S25SL128K 被识别为 W25Q128
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值