
OpenWrt是一个高度模块化、高度自动化的轻量级嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器及VOIP设备中。当前市场上很多智能路由器固件就是基于OpenWrt及其衍生版本的,OpenWrt系统有很多的衍生版本,这些衍生版本又可以产生很多分支版本。同时,它还提供了100多个已编译好的软件,而且数量还在不断增加。OpenWrt不同于其他许多用于路由器的发行版,它是一个功能齐全的、容易修改的路由器操作系统。
利用OpenWrt可以实现智能应用,比如单号多拨、绑定域名远程控制、挂载大容量硬盘、搭建BT下载机、搭建网络摄像头、Samba/DLNA家庭NAS共享、私有云同步、FTP服务、个人网站/服务器等。
OpenWrt支持各种处理器架构,无论是对ARM、X86、PowerPC或者MIPS都有很好的支持。其多达3000多种软件包,囊括从工具链到内核和软件包,再到根文件系统整个体系,使用户只需简单的一个make命令即可方便快速地定制一个具有特定功能的嵌入式系统固件。
一般嵌入式Linux的开发过程,无论是ARM、PowerPC或MIPS的处理器,都必需经过以下开发过程:
(1)创建Linux交叉编译环境。
(2)建立Bootloader。
(3)移植Linux内核。
(4)建立Rootfs(根文件系统)。
(5)安装驱动程序。
(6)安装软件。
熟悉这些嵌入式Linux的基本开发流程后,可以不再局限于MIPS处理器和无线路由器,从而尝试在其他处理器或者非无线路由器的系统上移植嵌入式Linux,定制适合自己的应用软件,并建立一个完整的嵌入式产品。
在智能路由器开发过程中,由于OpenWrt并不是官方发布的路由器固件,所以要使用的话有些困难,而且其基于Linux,导致OpenWrt的入门门槛较高。主流路由器固件有dd-wrt、tomato和OpenWrt三类。

基于Windows+虚拟机+Ubuntu开发OpenWrt的开发环境示意图
OpenWrt成功的秘诀在于:统一编译框架、统一配置接口(UnifiedConfiguration Interface, UCI)、开放的软件包管理系统及其读写分区系统、系统总线ubus和进程管理模块procd。
● 统一编译框架使得数千个软件以相同的方式进行编译,并且可以在几十个平台编译。每个软件模块按照相同的步骤进行代码下载、解压缩、打补丁、配置、编译及生成安装包。
● 统一配置接口使得数千个软件在几十个平台上以相同的方式来存取配置数据,配置以统一格式的文本文件进行管理。
● 开放的软件包管理系统和读写分区系统使得软件管理非常方便,并且能够方便地处理软件包的依赖关系。读写分区系统可以自由地安装软件,而不像大多数专有系统那样,需要全部重新编译才能安装新的软件。
● 系统总线ubus:每个进程均可以注册到系统总线上进行消息传递,并且提供命令行工具来访问系统总线。
● 进程管理模块procd:每一个进程交给procd来启动,并在意外退出之后再次调用。
以上这些功能并不是一次性设计出来的,而是随着时间的推进,根据用户和开发进展逐步发展起来的,每一种技术都有其独特的价值。


