月度归档:2014年04月

MT7620开发板上OpenWRT固件编译

下载源码

首先创建一个名为openwrt的工作目录:

$ mkdir openwrt
$ cd openwrt

然后从OpenWRT的SVN服务器中取出39786这一版本的源码:

$ svn co -r 39786 svn://svn.openwrt.org/openwrt/trunk

再下载相应的patch修正ramips.sh脚本中的一个小错误:

$ cd trunk
$ wget --no-check-certificate http://raw.githubusercontent.com/WRTnode/openwrt-patches/master/R39786/wrtnode_ramips_name.patch
$ patch -p1 < wrtnode_ramips_name.patch

更新feeds

取出源码之后执行下面的命令,对OpenWRT的feeds进行更新和安装:

$ wget --no-check-certificate http://raw.githubusercontent.com/WRTnode/openwrt-patches/master/R39786/feeds.conf
$ ./scripts/feeds clean
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

这些提供的feeds.conf会从OpenWRT网站上下载指定版本的软件包,以便保证与内核和其它软件的兼容性。为了确保每次下载的软件包都是正确的版本,需要执行feeds脚本中的clean命令将之前下载的feeds配置文件删除掉,实验中发现如果多次执行update时会自动更新到最新版本,从而导致随后的编译过程出现错误。

配置源码

OpenWRT源码的编译过程是由源码根目录下的.config文件进行控制的,你可以使用make menuconfig命令来对最终编译出来的固件进行配置。不过刚入手的时候建议先使用这里提供的标准.config文件作为开始:

$ wget --no-check-certificate http://raw.githubusercontent.com/WRTnode/openwrt-patches/master/R39786/wrtnode_standard.config
$ cp wrtnode_standard.config .config
$ make oldconfig

在执行make oldconfig命令时如果出现提示信息,一路回车用默认选项就可以。

编译固件

此时在OpenWRT源码的根目录下执行下面的命令就可以开始固件的编译了,整个编译过程所持续的时间较长,请一定耐心等待。

$ make V=s

如果一切正常,你最终可以在bin/ramips目录下找到板子所需要的固件文件openwrt-ramips-mt7620n-wrtnode-squashfs-sysupgrade.bin。

做个广告:
http://wifizoo.taobao.com|双拨多拨|脱机下载|无线网桥|无线路由|专卖店|

本店的开发板MT7620上OpenWRT固件编译

下载源码

首先创建一个名为openwrt的工作目录:

$ mkdir openwrt
$ cd openwrt

然后从OpenWRT的SVN服务器中取出39786这一版本的源码:

$ svn co -r 39786 svn://svn.openwrt.org/openwrt/trunk

再下载相应的patch修正ramips.sh脚本中的一个小错误:

$ cd trunk
$ wget --no-check-certificate http://raw.githubusercontent.com/WRTnode/openwrt-patches/master/R39786/wrtnode_ramips_name.patch
$ patch -p1 < wrtnode_ramips_name.patch

更新feeds

取出源码之后执行下面的命令,对OpenWRT的feeds进行更新和安装:

$ wget --no-check-certificate http://raw.githubusercontent.com/WRTnode/openwrt-patches/master/R39786/feeds.conf
$ ./scripts/feeds clean
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

这些提供的feeds.conf会从OpenWRT网站上下载指定版本的软件包,以便保证与内核和其它软件的兼容性。为了确保每次下载的软件包都是正确的版本,需要执行feeds脚本中的clean命令将之前下载的feeds配置文件删除掉,实验中发现如果多次执行update时会自动更新到最新版本,从而导致随后的编译过程出现错误。
除了OpenWRT提供的标准feeds,上述feeds.conf文件里也包括了WRTnode所需要的一些额外的软件包,这些都放在WRTnode项目的github服务器上。

配置源码

OpenWRT源码的编译过程是由源码根目录下的.config文件进行控制的,你可以使用make menuconfig命令来对最终编译出来的固件进行配置。不过刚入手的时候建议先使用WRTnode提供的标准.config文件作为开始:

$ wget --no-check-certificate http://raw.githubusercontent.com/WRTnode/openwrt-patches/master/R39786/wrtnode_standard.config
$ cp wrtnode_standard.config .config
$ make oldconfig

在执行make oldconfig命令时如果出现提示信息,一路回车用默认选项就可以。

编译固件

此时在OpenWRT源码的根目录下执行下面的命令就可以开始固件的编译了,整个编译过程所持续的时间较长,请一定耐心等待。

$ make V=s

如果一切正常,你最终可以在bin/ramips目录下找到WRTnode所需要的固件文件openwrt-ramips-mt7620n-wrtnode-squashfs-sysupgrade.bin。

mr11u v2刷MR3040再刷回openwrt

参考 http://forum.openwrt.org/ 

Here !!! can help you i follow this way and success


OpenWrt for TL-MR11U v2

http://uploaded.net/file/2tsiskq1


GUIDE. HOW TO FLASH OEM TL-MR3040 FIRMWARE

Please give me some time to test how it will work, otherwise you are flashing on your own risk

Thanks to Sin for posting firmware file and Lcdx for reupload it to english website.

I have TL_MR11U v2 and was able to flash it to usual TL-MR3040 firmware. Below a short instruction. Files available by link below. 

1. Flash from Chinese firmware to OpenWRT

OpenWrt for TL-MR11U v2

http://uploaded.net/file/2tsiskq1  .

2. Login to your router and change root password to enable SSH.

3. Run webserver on your PC and share TL-MR3040 firmware. (Run HFS from archive, Menu – Add files – and choose TL-MR3040 firmware. Copy http adress from string in program )

4. Run putty. Connect to your router by entering router IP adress – default 192.168.1.1 choose SSH, default port is 22. and press Open

5. Login as root. Enter your password. 

6. Enter commands “cd /tmp”

7. “wget http://YOUR_PC_IP/FIRMWARE_NAME.bin” (from HFS)

8. “mtd -r write /tmp/FIRMWARE_NAME.bin firmware”

9. Wait a little. Router will reboot and you will be on stock MR3040 firmware. PLEASE NOTE. In MR3040 firmware dafault IP adress is 192.168.0.1


http://depositfiles.com/files/m2vl0lhnw

已经刷成3040

到 http://downloads.openwrt.org/snapshots/trunk/ar71xx/ 下载 最新的固件。

web刷入。

刷入没有luci。

刷完openwrt后,openwrt仅开启telnet,此时用telnet连接上路由器,修改root密码后,openwrt自动关闭telnet服务,这时openwrt启动了ssh服务,此时用putty等ssh客户端连接上openwrt路由器,使用root帐号就可以修改系统文件了,putty中用vi编辑你要修改的文件。重启路由器直接输入reboot就可以了。 

openwrt的系统配置文件一般位于/etc/config/目录下,比如修改无线的配置是

vi /etc/config/wireless

再次刷入有luci固件。

mtd -r write /tmp/FIRMWARE_NAME.bin firmware

升级

  1. 用winscp里的打开终端,sysupgrade /tmp/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

    直接开始刷固件。
  2. 若干秒后,刷机完成。

做个广告:
http://wifizoo.taobao.com|双拨多拨|脱机下载|无线网桥|无线路由|专卖店|

回顾OpenWrt十年

如果不是为了写这篇文章,笔者还真没意识到OpenWrt这个项目已经10年了。

一切都始于2002年12月,Linksys发布了定义家用无线路由器产品形态的WRT54G,由于成本的原因,Linksys使用Linux作为固件而不是授权费用很高的vXworks。根据GPL条款,据称是哥伦比亚大学法学院教授Eben Moglen向Linksys提出了开源要求,Linksys随即照办,之后在一堆各种hack WRT54G固件中,2004年生长出来了OpenWrt。2005年到2007年,最初的稳定版叫White Russian,之后的Kamikaze延续到2010年,Backfire到2013年,随后Attitude Adjustment发布,而最新版的Barrier Breaker也已经在持续开发中,据称将很快发布。

从一开始,OpenWrt就是各类路由器hack固件中的领头羊,并成为嵌入式Linux系统的核心贡献者之一,特别是Linux on mips,最近的内核更新代码有很大部分是由OpenWrt社区贡献的。

在各种路由器的hack固件中,OpenWrt为什么能脱颖而出?笔者认为关键原因是OpenWrt社区彻底的开源精神,不要忽视OpenWrt.org上面明晃晃的“Wireless Freedom”几个字。OpenWrt社区的组织者Gregers Petersen第一title是人类学家,专注于自由软件及相关社会学研究。以此为基因,OpenWrt社区聚集了一大批纯正的Linux各个方向的死忠级专家,从而使OpenWrt具备了如下与传统NorFlash嵌入式Linux截然不同的高级特征:

1、SquashFS与JFFS2文件系统的整合形成的overlayfs机制

对用户而言,OpenWrt的整个文件系统是完全动态可读写的,而其中的固件部分是用SquashFS实施的只读压缩文件系统,而用户所有的对文件系统的增删改都是用类似“差值”的形态存储在JFFS2文件系统中的,二者用overlayfs机制黏合,对用户完全透明。因此我们可以在文件系统中肆意发挥、随便折腾,出现任何问题则可像手机一样恢复出厂设置,并提供fail-safe模式帮助用户修复系统。

而在传统的嵌入式Linux里,固件是静态的,对系统做任何一点与可运行程序相关的变动,比如增加一个模块,删除一个应用程序,都要重新编译全部固件,并重新刷写,就好比你一个Android手机要升级微信就要重新刷机。这种反人类的传统文件系统完全阻挡了非专业爱好者进入嵌入式Linux这一领域。

2、UCI(Unified Configuration Interface)

帮助用户在任何平台的OpenWrt上用同样的方法配置系统、网络和应用。在Boardcom的平台上,在Atheros的平台上,甚至x86的平台上,修改系统配置均为同样的命令。而UCI的机制并不是二进制硬件虚拟层实现的,是由Linux shell脚本实现的。这毫无疑问是一种别致的创新,比Android来的轻巧得多。OpenWrt里的Linux shell脚本用得很帅很高端,那种感觉怎么形容呢?就好像精通十八般武艺的高手有一天特别复古地拿起铅笔刀在硬盘上刻出来了系统,就是这种感觉。

3、Opkg包管理系统与丰富的软件源

是一个与桌面级Linux使用的apt-get、yum等同级别的包管理系统,使用形如:opkg install xxxx-app的命令从互联网软件源中安装大约3000余种各种软件。3000款软件,数量没法跟手机的应用市场比,但是要知道,这里头的任何一个软件都来头不小,是经过Linux社区千锤百炼的东西,一个应用折腾一个月都玩不够。类型覆盖网络、音频、视频、编程开发、Linux系统管理等。当然,如果是专业比较偏的东西OpenWrt的软件源里还是不够完善,比如笔者团队用到的OpenCV的东西,源里就没有,就靠自己交叉编译了。

4、Luci WEB界面系统

除CLI命令行终端界面外,不同于桌面级Linux使用屏幕GUI作为交互界面,OpenWrt使用WEB界面交互。而不同于传统路由器web管理界面的是,luci是用户可订制的,安装了支持luci的软件后,WEB界面系统就中出现了新的模块,而opkg本身也web化了。这个特征让用户感觉很像手机的app store。

5、积极、完整的社区

OpenWrt与Arch Linux、Debian、FFmpeg、MinGW、PostgreSQL等开源领域重要的软件一起,是Software in the Public Interest, Inc.资助和保护的项目,OpenWrt社区在美国、欧洲、中国、俄罗斯有大量的追随者,有不计其数的分支和代码贡献者。社区活跃度非常高。

这几个特征加起来,赋予OpenWrt比肩桌面级Linux和现代移动操作系统(Android)的用户体验,完全回避了传统嵌入式Linux的磨叽和枯燥,使一个小小的路由器真正成为完整的、现代的、开放的计算系统,降低了入门门槛,产生了大量非嵌入式专业的爱好者群体。OpenWrt框架的奠定者们和广泛的代码贡献者们,在桌面级和现代操作系统的理念下,也使OpenWrt成为嵌入式Linux领域个性十足而广受追捧的佼佼者。

OpenWrt社区的组织者Gregers Petersen在一次采访中提到,除了传统的路由器用途,在智能家居主控设备、机器人、飞行器、工业控制设备、voIP设备等很多领域,都有爱好者和商业项目在使用OpenWrt,甚至有爱好者已经完整移植了Android系统并且真正打通了电话。而嫁接到OpenWrt上的Arduino Yun,使大家意识到Linux与物理世界交互一种非常简单的可能性,这赋予了OpenWrt更大的想象空间。

在新型智能设备和机器人的热潮中,OpenWrt的价值也越来越得到人们的重视。相比Android系统,OpenWrt被认为是更加适应智能设备和机器人的平台。Android的整体设计构架全部着眼于重度依赖屏幕与人进行交互,导致从硬件到软件的设计上都严重依赖于图形界面的展示,有过多的GPU硬件加速和软件上的图形、3D库,而智能设备和机器人并不强调屏幕,相对更多地依赖于机械、网络与人进行交互,Android上的这些图形图像特征反倒成为影响功耗、系统尺寸、稳定性的负面因素。再加之相对于Android的Java虚拟机对效率的严重损耗,OpenWrt直接的原生二进制代码得到了更高的计算效率。

在这个重新强调人工智能、机器学习,重新重视物理机械交互的新兴智能机器人的时代,我们有理由相信因为其纯正的Linux味道,小型化、亲近物理交互的特征,身为Linux社区与物理交互的最佳桥梁,OpenWrt会迎来新一轮的发展。