前言

最近偶然原因需要刷机,潜水研究,开始也是搞不清各种固件区别,后来慢慢整理了下整理的资料。

目前路由器折腾刷机,除了采用各品牌的原厂固件外,第三方路由器固件,基本就是:Tomato、DD-WRT、OpenWRT 三种。 当然还有其他一些更加小众的版本, 和很多从这三大固件衍生出来的修改版固件。这篇文章, 可以让大家对这些知识有一个相对比较全面的理解, 使你更容易入门一些。

本文转载自 路由网

开源路由器固件历史

2003 年 Linksys 公司(已被思科收购)推出 WRT-54G,一款基于 MIPS 架构的无线路由器,WRT-54G 操作系统以 Linux 取代 vXworks,是很经典的一款产品,可是这个产品的软件核心是基于 GPL 许可下开发的,而 GPL 许可是遵循开源标准的,种种压力之下,思科最终还是被迫于 2003 年 7 月开放了 Linksys WRT54G 源代码,开源爱好者便清楚了 Linksys 是如何操作这些硬件的,这样 WRT54G 就从黑盒子变为了白盒子,从而产生出后来的各种开源项目。如 OpenWRT,dd-wrt, Tomato,Gargoyle(石像鬼),OPNsense, PFSense 等等还有很多。(Tomato 和 ddwrt 的代码与 OpenWRT 的源代码并无直接的联系,虽然 ddwrt 有在使用 OpenWRT 的 GPL 的内核补丁,但是应用层的软件、启动代码等都有很大的不同。)下面说些国内论坛常见的:

  • OpenWRT(OpenWRT,LEDE,Pandora / 潘多拉)
    • 2004 年 1 月出现所谓的 OpenWRT,第一个版本是基于 Linksys 源码及 uclibc 中的 buildroot 项目,相关的内核驱动的代码都经过了重写,以保证其版权 100% 属于 OpenWRT 的版权所有人。真正基于 OpenWrt 发展的路由器固件项目可以参见这里:https://en.wikipedia.org/wiki/OpenWrt#Derivatives
    • LEDE 是 OpenWRT 的一个分支,可应用于多种处理器平台,国内论坛中应用最多的就是基于 X64/Intel64(X86 扩展为 64 位版本且兼容 X86) 处理器的版本,俗称的软路由系统即指这个。
    • Pandora / 潘多拉即 PandoraBox,是基于 OpenWrt 的,前身是 DreamBox,由 OpenWrt 中国创始人之一的 Lintel 所带领的技术团队维护。 Pandora 是基于 OP 深度定制的路由器系统,系统底层部分采用了原厂原声驱动,而非开源驱动,使其相比 OP 有更好的稳定性。由于 OP 配置及二次开发的方便性,加上 Lintel 根据中国网络环境对 PB 作出的调整及优化,受到不少互联网大咖的关注(听说还有橄榄枝)。 在中国深圳,不少公司厂家推出的“基于 OP 深度定制的系统”,使用的是当时开源的 DreamBox 源码或者泄漏的早期 PB 源码。 现时 PB 已得到 OP 的官方支持,而 PB 的成员也向 OP 贡献代码。
    • 相对原厂固件而言,OpenWRT 不是一个单一、静态的固件,而是提供了一个可添加软件包的可写的文件系统。这使用户可以自由的选择应用程序和配置,而不必受设备提供商的限制,并且可以使用一些适合某方面应用的软件包来定制你的设备。对于开发者来说,OpenWRT 是一个框架,开发者不必麻烦的构建整个固件就能得到想要的应用程序;对于用户来说,这意味着完全定制的能力,与以往不同的方式使用设备,OPKG 包含超过 3500 个软件,其 默认使用 LuCI 作为 web 交互界面。简单来说,由于 OpenWRT 的灵活性高,所以其部属十分复杂。因此 OpenWRT 最适合专家型人群。该固件适合于希望操作方面的限制尽量少、想大胆使用不同寻常的硬件,以及擅长自行推出个性化 Linux 发行版本的用户。
  • 华硕开源(包括华硕原厂系统 Asuswrt,梅林,Padavan / 老毛子)
    • 华硕路由器固件(Asuswrt)是基于 Tomato-RT/Tomato-USB 进行二次开发的版本,需遵守 GPL 开源协议,除了少部分比如 Broadcom/Ralink 驱动以二进制格式闭源提供外,其他大部分模块都以源码格式开源提供。
    • 梅林固件基于华硕固件进行修改和增强,它使用的是华硕官方的闭源驱动,而不是其他人使用的开源驱动,稳定性相比开源驱动要高很多,同时它也是受到官方默许的固件,在华硕的路由器中是可以直接通过网页端手动更新的,想换回来的时候也可以直接在梅林固件的更新页面通过手动上传官方固件就更新回来了,路由器设置什么的都保留着。不过梅林固件官网只支持华硕的路由器,无法支持华硕以外的第三方路由器。而国内有些开发者大神将梅林原版进行适配,支持了更多第三方的路由器。
    • padavan 也是基于华硕固件修改,最初是在华硕 N14U N54U 的固件上经过俄国(老毛子)大神深度开发的华硕固件,就是 padavan / 老毛子固件,运行速度快,界面友好,对硬件要求低。
    • 国内常用的梅林、padavan 修改版本:koolshare 上面是小宝修改版 merlin,Koolshare 改版梅林主要就是多了以软件中心为主的第三方应用功能,譬如 kms 自建服务器,广告过滤等。恩山上常见的是 hiboy 修改版 padavan。
  • DD-WRT
    • DD-WRT 固件由 BrainSlayer 维护,[放在 dd-wrt.com](http:// 放在 dd-wrt.com)。从第一个版本直至 V22 版本都是基于 Sveasoft Inc 公司的 Alchemy 开发出来,而 Alchemy 又是基于以 GPL 发放之 Linksys 固件及许多其它开放源程序。由于后来人们需要向 Sveasoft 支付 $20 才能下载 Alchemy 固件,于是从 V23 开始的 DD-WRT 几乎完全重写,linux 核心部分基于 OpenWrt 核心。 DD-WRT 最接近实用,算是中庸,但是要定制和扩展都比较难。
  • Gargoyle / 石像鬼
    • 基于 GPL,提供完整的全套路由功能,流量监控强悍,带宽管理和 QoS 很是强大,不比 Tomato 逊色,如果不想自己动手编译或设置,但是又想要用版权规范的 OpenWRT,且想一步到位的话,Gargoyle 是最好的选择,很适合追求稳定的普通用户或小微企业用户,默认界面风格传统,但有时尚风格的主题可更换,不支持多国语言,国内不流行,但已有汉化的补丁出现。
  • Tomato
    • Tomato 最封闭,只针对老机器,非常保守而稳定,正在消亡中……

正文

分类

固件分类

第三方路由器固件,基本就是:Tomato、DD-WRT、OpenWRT 三种.

前端和后端

基本上所有第三方路由器固件的架构上可分为前端(Frontend)和后端(Backend),后端一般情况下是一个不带界面的 Linux 系统, 前端一般指图形用户接口,即 GUI,主要体现为 Web 管理界面。 比较流行的 OpenWRT 自身默认编译出来是不带前端的。

OpenWRT 的在国内常见的前端有

LuCI:基于 Apache License,现在主流,是自行编译的 OpenWRT 最佳搭配;

X-WRT:基于 GPL,不太活跃,不太流行,好像没怎么更新了;

Gargoyle:基于 GPL,提供完整的全套路由功能,流量监控强悍,带宽管理和 QoS 很是强大,不比 Tomato 逊色,如果不想自己动 手编译或设置,但是又想要用版权规范的 OpenWRT,且想一步到位的话,Gargoyle 是最好的选择,很适合追求稳定的普通用户或小微企业用户,默认 界面风格传统,但有时尚风格的主题可更换,不支持多国语言,国内不流行,但已有汉化的补丁出现了;

其它两大固件的前端

Tomato 前端部分:私有,非 GPL(有源码供自编译,不能随便修改),版权模糊,有免费版,但也有很多付费增强功能的版本,界面简约,运行稳定,QoS 很强大,机型的支持比较少;

DD-WRT 前端部分:版权模糊,部分私有,非 GPL(有提供源码,不能随便修改),有免费版,也有增强功能的付费版,界面美观,中继能力强大,支持语言众多,对机型的支持最广泛,但免费版 QoS 性能一般;

Tomato DualWAN

Tomato DualWAN 使那些能刷 Tomato 或 DD-WRT 固件的路由器由原来的单 WAN 口变成双 WAN 口,而这一切不需要在路由器上增加任何硬件,只需要刷一下 Tomato DualWAN 固件就可以。刷了 Tomato DualWAN 之后转变出来的第二个 WAN 口可以接有线网络也可以接无线网络,双 WAN 模式支持带宽合并或智能路由。

DualWan 前端部分:私有,非 GPL(有源码供自编译,不能随便修改源码),版权模糊,有免费版,也有增强功能的付费版,基于 Tomato 前端部分的衍生,算是中文 Tomato 的典型代表,多拨功能强大,对机型的支持比较少;

三大固件的介绍和对比

DDWRT

界面美观, 设置简单直观, 易用性比较好, 官方固件自带的功能是三大固件中最为丰富的, 对新路由的支持也十分迅速, 可支持迅速的同时, 由于新代码的加入, 导致 DDWRT 经常出现一些 bug, 一些可能之前已经解决的 bug, 往往又会在之后的某次更新中原地满状态复活 , 着实让人喷血, 最让人呕病的, 是孱弱的 QOS 功能, DDWRT 的 qos 功能只能说聊胜于无吧. 功能的话到时还挺多, PPTP openvpn qos 上网控制 mac 过滤等等功能都很使用, 还能调节官方版本一般不提供的无线信号功率, 当然还有中继, 说中继可能有些人不敏感, 说 CW, 很多人估计会会心一笑。DDWRT 绝对是最适合新手入手的第三方固件, 功能丰富, 大部分机子的 reset 都是有效的, 路由设置变砖后轻抚菊花即可涅磐重生 , 所以可以放心折腾~

Tomato

界面尚可, 设置也算简单, 易用性还行, 流量的统计查看等功能是三个固件中做的最好的. 官版 Tomato 是所有第三方路由固件中最为稳定的, 它的稳定源自于它的保守, 官方版本的 Tomato 好几个版本之前就已经没有再加入什么新功能. 在这里我要补充几句, 泰迪熊 TT 也好, 国内的 DWTT 也好, 这些都不是官方 Tomato, 只是根据官方原版 Tomato 进行修改和功能扩充的 MOD 版本

OpenWRT

Openwrt 是三大固件中扩展性最好的固件, 通过扩展, 可以实现很多超过路由本职工作的事情, 比如脱机下载, 网站, 论坛, qos 功能也十分强大, 不逊 色于 Tomato 的 QOS, 设置得当后网络表现会让人偷着乐~ 而且 openwrt 对新路由的支持也是十分迅速, 个人认为是最有前途的固件, 因为可以在新路由强劲 CPU 的支持下获得很好的性能表现, 比那些老古董和洋垃圾的性能强大太多. 各种功能的软件扩展包比比皆是, 而且还有飞翔的天空开发的 nwan 多 wan 和限速 qos。

总结

如果想玩路由的话,推荐从 DD-WRT 入手最方便;

过后若想用折腾 QoS,就用 Tomato

要多拨用 DualWan;

注重版权意识又想功能丰富的就自编译 OpenWRT 去集成 LuCI 等各种组件——自由自主,功能强大,应有尽有,这或许是很多路由器玩家的最终选择。

OpenWrt的来历

Cisco/Linksys 在 2003 年发行的 WRT54G 这款无线路由器非常“经典”。

同年有好事者在 Linux Kernel Mailing List 搜索 WRT54G,发现它的 IOS 是基于 Linux,然而 Linux 基于 GPL 发布许可证,就是 GNU General Public License. 该许可证规定 Cisco 应该把 WRT54G 的 IOS 的源代码公开。

本来 Cisco 拒绝公开源代码,最后,03 年三月份的时候,基于公众压力 Linksys 公开了 WRT54G 的源代码。

故事本来到这里就结束了,然而相反,结果越闹越大:

有了源代码以后,开发者便清楚知道代码如何控制路由器的硬件,并且掌握了一些通过增加新的代码到原有的 IOS 当中去 —— 使得硬件支持更多的 Feature 的技术。这些开发者组成了一个项目开发团队,不断对原来的 IOS 进行更新,编码,加入新的特性…… 现在他们手上的 WRT54G 无线路由器的能力已经大大超过了原来 Cisco 设计的地摊货的设计思路。

不但如此,随着这两年互联网 Web2.0 技术的发展,不同的开发团队之间找到了更好的协同工作平台,其规模不亚于 TAC. 他们最近建立了一个 DD-WRT 项目的 Wiki 站点将全套文档以及代码公开发布。使用 DD-WRT 项目提供的源代码,重新升级 WRT54G 以后你就能够获得一台相当于 $600 左右的中端无线路由器了。

当 Linksys 释放 WRT54G/GS 的源码后,网上出现了很多不同版本的 Firmware 去增强原有的功能。大多数的 Firmware 都是 99% 使用 Linksys 的源码,只有 1% 是加上去的,每一种 Firmware 都是针对特定的市场而设计,这样做有 2 个缺点,第一个是难以集合各版本 Firmware 的长处,第二个是这版本距离 Linux 正式发行版越来越远。

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

简化总结

  • 从前有个路由器公司,突然有一天想在 Linux 基础上开发固件,结果后来被捅出来了,于是要求他们公开源代码,于是他们就被迫公开了。
  • 于是大家很兴奋,做了很多修改版出来~
  • 有一个团队基于上述开源的代码从零开始加入各种软件, 结果一不小心做成了此行业的狡狡者, 他们给自己的产品起名叫 OpenWrt

OpenWrt 的衍生版本 - PandoraBox

  • PandoraBox 是 OpenWrt 的一条分支,前身是 DreamBox,由 OpenWrt 中国创始人之一的 Lintel 所带领的技术团队维护。
  • PandoraBox 是基于 OpenWrt 深度定制的路由器系统,系统底层部分采用了原厂原生驱动,而非开源驱动,使其相比 OpenWrt 有更好的稳定性。由于 OpenWrt 配置及二次开发的方便性,加上 Lintel 根据中国网络环境对 PandoraBox 作出的调整及优化,受到不少互联网大咖的关注(听说还有橄榄枝)。
  • 在中国深圳,不少公司厂家推出的“基于 OpenWrt 深度定制的系统”,使用的是当时开源的 DreamBox 源码或者泄漏的早期 PandoraBox 源码。

OpenWrt 介绍

OpenWrt 社区聚集了一大批纯正的 Linux 各个方向的死忠级专家, 从而使 OpenWrt 具备了如下与传统 NorFlash 嵌入式 Linux 截然不同的高级特征。

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

对用户而言, OpenWrt 的整个文件系统是完全动态可读写的, 而其中的固件部分是用 SquashFS 实施的只读压缩文件系统, 而用户所有的对文件系统的增删改都是用类似 “差值” 的形态存储在 JFFS2 文件系统中的, 二者用 overlayfs 机制黏合, 对用户完全透明。

因此我们可以在文件系统中肆意发挥、随便折腾, 出现任何问题则可像手机一样恢复出厂设置, 并提供 fail-safe 模式帮助用户修复系统。

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

UCI(Unified Configuration Interface)

帮助用户在任何平台的 OpenWrt 上用同样的方法配置系统、网络和应用。在 Boardcom 的平台上, 在 Atheros 的平台上, 甚至 x86 的平台上, 修改系统配置均为同样的命令。

而 UCI 的机制并不是二进制硬件虚拟层实现的, 是由 Linux shell 脚本实现的。

这毫无疑问是一种别致的创新, 比 Android 来的轻巧得多。OpenWrt 里的 Linux shell 脚本用得很帅很高端, 那种感觉怎么形容呢?就好像精通十八般武艺的高手有一天特别复古地拿起铅笔刀在硬盘上刻出来了系统, 就是这种感觉。

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

是一个与桌面级 Linux 使用的 apt-get、yum 等同级别的包管理系统, 使用形如:opkg install xxxx-app 的命令从互联网软件源中安装大约 3000 余种各种软件。

3000 款软件, 数量没法跟手机的应用市场比, 但是要知道, 这里头的任何一个软件都来头不小, 是经过 Linux 社区千锤百炼的东西, 一个应用折腾一个月都玩不够。

类型覆盖网络、音频、视频、编程开发、Linux 系统管理等。当然, 如果是专业比较偏的东西 OpenWrt 的软件源里还是不够完善, 比如笔者团队用到的 OpenCV 的东西, 源里就没有, 就靠自己交叉编译了。

**Luci WEB 界面系统 **

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


参考连接:

[ 宽带技术网 ]
[ 路由网 ]
[ TP-LINK 服务支持 | 文档中心 ]


to be continued…