1. OpenWrt概述

openwrtlogo

OpenWrt/LEDE是一个为嵌入式设备(通常是无线路由器)开发的高扩展度的GNU/Linux发行版。 与许多其他路由器的发行版不同,OpenWrt是一个完全为嵌入式设备构建的功能全面、 易于修改的由现代Linux内核驱动的操作系统。 在实践中,这意味着您可以得到您需要的所有功能,却仍能避免臃肿。

OpenWrt不是一个单一且不可更改的固件,而是提供了具有软件包管理功能的完全可写的文件系统, 让您通过使用适配任何应用的软件包来定制设备。 对于开发人员来说,OpenWrt是一个无需围绕它构建完整固件就能开发应用程序的框架; 对于普通用户来说,这意味着拥有了完全定制的能力,能以意想不到的方式使用该设备。

OpenWrt官方网站:https://openwrt.org

OpenWrt官方Git仓库:https://github.com/openwrt/openwrt

1.1. 开发背景

当Linksys释放WRT54G/GS的源码后,网上出现了很多不同版本的固件(Firmware)去增强原有的功能。 每一种Firmware都是针对特定的市场而设计,这样做不仅难以集合各版本Firmware的长处, 并且使得版本距离Linux正式发行版越来越远。

OpenWrt选择了另一条路,它从零开始,一点一点的把各软件加入进去, 使其接近Linksys版Firmware的功能,而OpenWrt的成功之处是它的文件系统是可写的, 开发者无需在每一次修改后重新编译,令它更像一个小型的Linux电脑系统。

1.2. 发展历程

OpenWrt项目由2004年1月开始, 第一个版本是基于Linksys提供的GPL源码及uclibc中的buildroot项目, 这个版本称为 “stable” 版。

到了2005年初, 一些新的开发人员加入了这项目, 几个月后他们释出了第一个 “experimental” 版本, 这和以前版本不同的是, 这版本差不多完全舍弃了Linksys的GPL源码, 使用了buildroot2作为核心技术, 将OpenWrt完全模块化,OpenWrt使用Linux正式发行的核心源码(2.4.30), 加上了一些补丁和网络驱动,开发队伍更为OpenWrt添加了许多免费的工具, 可以直接把Image写入Flash (mtd)里面,设定无线功能和VLAN交换功能, 这个版本名为“White Russian”,而1.0版本于2005年底公布。

在2016年,LEDE项目作为OpenWrt项目的副产品而诞生,与OpenWrt共享很多相同的目标。 该项目旨在成为一个嵌入式Linux版本,能让开发者、 系统管理员或其他Linux爱好者轻松的为嵌入式设备特别是无线路由器构建或定制软件。 LEDE这一名称代表Linux Embedded Development Environment。

2018年1月,OpenWrt和以前的LEDE项目同意以OpenWrt这一名称进行合并。 新的、统一的OpenWrt项目将按照 由前LEDE项目建立的章程 进行管理。 以前的LEDE和OpenWrt项目的积极成员将继续在统一的OpenWrt上工作。

1.3. 系统特点

OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统, 拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、 智能家居、路由器以及VOIP设备中。 同时,它还提供了100多个已编译好的软件, 而且数量还在不断增加,而OpenWrt SDK 更简化了开发软件的工序。 OpenWRT不同于其他许多用于路由器的发行版,它是一个从零开始编写的、 功能齐全的、容易修改的路由器操作系统。实际上,这意味着您能够使用您想要的功能而不加进其他的累赘, 而支持这些功能工作的linux kernel又远比绝大多数发行版来得新。

1.4. 优势

如果对Linux系统有一定的认识, 并想学习或接触嵌入式Linux的话, OpenWRT很适合。 而且OpenWRT支持各种处理器架构,无论是对ARM,X86,PowerPC或者MIPS都有很好的支持。 其多达3000多种软件包,囊括从工具链(toolchain),到内核(linux kernel),到软件包(packages), 再到根文件系统(rootfs)整个体系,使得用户只需简单的一个make命令即可方便快速地定制一个具有特定功能的嵌入式系统来制作固件。

一般嵌入式 Linux 的开发过程, 无论是 ARM, PowerPC 或 MIPS 的处理器, 都必需经过以下的开发过程:

1、创建 Linux 交叉编译环境;

2、建立 Bootloader;

3、移植 Linux 内核;

4、建立 Rootfs (根文件系统);

5、安装驱动程序;

6、安装软件;

熟悉这些嵌入式 Linux 的基本开发流程后,不再局限于 MIPS 处理器和无线路由器, 可以尝试在其它处理器, 或者非无线路由器的系统移植嵌入式 Linux, 定制合适自己的应用软件, 并建立一个完整的嵌入式产品。

1.5. 劣势

由于CPU内核体系不同,造成很多应用程序移植到OpenWrt上的时候经常崩溃。

由于ADSL硬件模块的驱动程序没有开放源代码,造成很多ADSL一体无线路由的ADSL模块不能工作而造成功能缺失(RG100A和DB120除外)。

由于OpenWRT并不是官方发布的路由器固件,所以要使用(刷入该固件)有困难,而且其基于Linux,导致OpenWRT的入门门槛较高。