[转]OpenWrt十年

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

一切都始于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会迎来新一轮的发展。

时间: 2024-10-08 08:16:21

[转]OpenWrt十年的相关文章

第十二章 Openwrt 修改串口波特率 以适应普通51不支持 115200高速率

openwrt默认使用的波特率是115200,单片机或arduino的串口波特率可自行设置.当然,一般都会设置9600,也可以设置为115200.假设现在openwrt波特率为115200,单片机的串口波特率为9600.要进行一个通信,该如何设置呢-? 一般51的单片机设置115200是比较麻烦的—而arduino就比较方便,所以还是改OPENWRT的串口波特率较好. 首先我们需要在openwrt上使用coreutils-stty这个软件更改波特率.安装coreutils-stty很简单,opk

智能小车十五《安装openwrt虚拟机》

小车要实现智能,单靠它上面的arduino uno单片机,计算能力实在不能满足要求.比如要放个摄像头或放点音乐,它基本不能实现.我先让它长上"眼镜",给他装个摄像头. 我找了下实现方案,发现现在已经有很多的成熟的无线摄像头了.比如小米的,还是云台的,才199.这个还带了麦克风和喇叭,还能云储存,功能实在强大.于是我决定买一个玩玩,安装到我的小车上.但毕竟这是成品,对技术提高帮助不大. 我在淘宝上见到的另一方案,成本较高,技术要求也高些,长得也比较丑.但扩展方便,比较适合技术研究.这就是

智能小车十八《如何用上级路由器访问openwrt》

其实用上级路由器访问openwrt很简单,如下图: 在我们刚把720n硬改后,是通过有线连接192.168.1.x来操作路由器的.这时可以进入上面的页面,但没有无线连接. 这时可先加个无线连接,连接到家里的路由器,如上图.图里的192.168.1.107是家里的路由器给它分配的路由器.但这时插掉网线后,无法访问720n,两个ip都不行.上文我就是卡在这儿了. 解决办法是把lan这个网的ip由192.168.1.202改成192.168.2.202.这时再用无线访问192.168.1.107就可以

我的openwrt学习笔记(十八):linux便捷开发命令之alias

学习linux命令的是LINUX 的基础,相信很多人N多年前就知道这个命令,学习额时候也用过它,但是久而久之这个命令就淡出了我们的视野!在实际的工作中有时候会遗忘它,终其主要原因是字实际应用中运用的不够多! Linux命令:alias 功能说明:设置指令的别名. 语 法:alias[别名]=[指令名称] 补充说明:用户可利用alias,自定指令的别名.若仅输入alias,则可列出目前所有的别名设置. alias的效力仅及于该次登入的操作.若要每次登入是即自动设好别名,可在~/.bashrc中设定

我的openwrt学习笔记(十九):linux便捷开发命令之strace

学习linux命令的是LINUX 的基础,相信很多人N多年前就知道这个命令,学习额时候也用过它,但是久而久之这个命令就淡出了我们的视野!在实际的工作中有时候会遗忘它,终其主要原因是字实际应用中运用的不够多! 今天介绍个特别有用的命令,strace,可以跟踪程序的执行调用过程,它可以给你提供程序执行错误的相关信息! 1. [email protected]:~$ which strace /usr/bin/strace [email protected]:~$ strace -V strace -

智能小车十六《openwrt虚拟机连接网络》

接着上文,在安装好openwrt虚拟机后,ping外网是ping不通的.收集和测试了一大堆资料后总结的解决方法: 1.  把内存配置成256MB,这是前提.我有教训,配了好几个都不行(内存用的512MB),后来配了下内存,网络奇怪的好了,原因我还不知道哈. 2.修改/etc/config/network 默认安装的配置如图: 修改成如下配置: 就是设置个ipaddr,另外再设置个dns.我的路由器的ip是192.168.1.1,才是上图的配置哈. 3.重启网络 执行命令:/ect/init.d/

我的openwrt学习笔记(二十六):smartconfig一键配置udp原理

1.一种基于WIFI通信的电子设备接入网方法,其特征在于,所述方法包括: 步骤S1:发送端将需传输的原始数据信息加密为十六进制形式的待发送数据: 步骤S2:发送端将待发送数据以及数据索引加入多播IP地址: 步骤S3:发送端将该多播IP地址映射为对应的多播MAC地址: 步骤S4:发送端重复发出包含该多播MAC地址的多播数据包: 步骤S5:接收端根据事先扫描到的WIFI频道,不断循环扫描WIFI频道,以检测上述发送方发送的多播数据包: 步骤S6:接收端在检测到该多播数据包时获取该多播数据包的多播MA

第十四章 openwrt 安装 python

需要安装libffi,python-mini,python.libffi以及python-mini需要安装在python之前???? 如果部分软件包不一样可以在下面的web后台搜索,搜索前先opkg update Opkg installl 下载setuptools http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086 如果

提升wifi速度的十大妙招

手机wifi速度慢真是很让人苦恼,有什么有效的wifi提速方法吗?当然有啦,今天笔者就为大家带来了提升wifi速度的十大方法,能激活wifi表现,提升无线网络哦. 免费方法一:改变无线路由器的位置 你是不是将无线路由器和运营商提供的宽带调制解调器放到了一起呢?其实大可不必,虽然它们都是网络设备,放到一起方便管理,但实际上无线路由器应该摆放在你无线活动的中心地带,来为你的无线应用提供一个最佳的无线覆盖. 因为不论何种品牌的无线路由器,其有效覆盖范围是有限的,从几十米到上百米不等.在这个范围以内,W