前言

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

目前路由器折腾刷机,除了采用各品牌的原厂固件外,第三方路由器固件,基本就是: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。从第一个版本直至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…