前几天在读新闻的时候发现了一则有意思的标题“因为违法使用开源资源,他们不仅要道歉还要赔钱! ”,大概内容讲了中国的一家公司(原告公司)因为被告公司抄袭了使用 GPL 授权的软件但是不开源而提起的诉讼。这个新闻能引起我的兴趣是因为早在 2011 年的时候,北京的一家法院就裁定违反 GPL 协议并不会有什么法律后果,而 7 年过去了,同一个地区的法院对违反 GPL 的行为给予了法律上的后果

说起类似的案例,我想起国外 GPL 保护机构,如:gpl-violations.org 等早在 2005 年前后就对 Fortinet、D-Link 等公司进行了针对违反 GPL 的诉讼,并成功在德国等国家的法院上获得支持,从而迫使这些公司对其使用的 GPL 部分软件实施开源。

既然文章的标题是关于 OpenWrt 的,那么不得不提起 Linksys 公司生产的 WRT54G 型号路由器。它发布于 2003 年。而要知道,在 2003 年的时候,网络设备生产厂商的硬件固件都是私有闭源的天下,而在那时候 Linux 对无线网卡的支持也不算太好,而那时候一个可以自己定制软件甚至添加功能的路由器几乎不可想象,即使有也会贵的离谱。毕竟厂商这样就可以生产更多的 $$$$$ (家用网关? 50 刀, 高端路由器? 200 刀,带网址过滤等高级功能的家用网关?你在说防火墙吧?对不起,少于 500 刀没有。)

而多亏了 GPL 协议,Linksys 公司开放了其路由器 WRT54G 型号的内核源代码,从而使早期的 OpenWrt 和其他类似项目的存在成为可能。

在西四时区(UTC -04:00)的 2003 年 6 月 7 日 22 时 41 分 23 秒,一位名叫 Andrew Miklas 的 Linux 用户在内核邮件列表中发表了一篇标题叫“Linksys WRT54G and the GPL”的邮件,内容大致译文如下:

一段时间之前,我提到了 Linksys WRT54G 无线访问点(AP)在其固件中使用了许多 GPL 的项目,但是看起来并没有任何原始码可供下载,或注明了 GPL 软件的使用。4 周之前,我和一个 Linksys 的雇员聊过天,这名雇员确认了 Linux 在其产品中的使用,并且提到了他会和管理层做一些工作使源代码被公开。不幸的是,我在过去 3 周的时间中给此人发的 Email 都没有被答复。 当然了,我也给他们常用的 Email 地址(pr@linksys.com、mailroom@linksys.com)发了邮件,不过也都没有回复。
好吧,对于我来说,我很难去知道这家公司只是进行了 3 周的假期(并且没有设置邮件自动回复),还是他们被要求不回复关于此问题的邮件。另外,我应该说明我并不拥有这款产品,所以我无从知晓是不是源代码和产品被放在了一起(包装盒中)。
不过无论如何,我尝试在 Linksys 网站中搜索了所有可用的信息,但是没有任何关于 GPL 和 Linux 的标注,或者这款产品的固件源代码。同样,固件的二进制(binary)在他们网站上供任何人自由下载,但是并没有下载源代码的链接。最后,或许很奇怪在包装盒中会有源代码,因为我一开始联系 Linksys 他们并不知道 Linux 被在此产品中使用。

以下是我检测出可能的 GPL 违反的测试步骤:
1. 到 URL:http://www.linksys.com/download/firmware.asp?fwid=178 (作者注:已不存在,但是通过网页时光机抓的缓存中可以看到。)

2. 下载“固件升级文件”,ftp://ftp.linksys.com/pub/network/WRT54G_1.02.1_US_code.bin,(MD5SUM: b54475a81bc18462d3754f96c9c7cc0f)

3. 在等待下载的过程中,确认在此网页上没有任何提到关于此二进制包包含 GPL 的内容。

4. 下载完毕后,从 0xC0020 开始将文件提取到另一个文件上(dd if=WRT54G_1.02.1_US_code.bin of=test.dump skip=24577c bs=32c)。

5. 请注意,这会是一个 CramFS 文件系统的镜像。挂载它。

6. 探索这个文件系统中的文件,你会发现它的系统是基于 Linux 2.4.5 的。

7. 这个 Linux 内核(我认为) bin/boot.bin 和其他的一堆东西混杂在一起了。

不过,你或许会想问我为什么对获得这款设备的源代码感兴趣?

很多讨论都说 Linux 缺少对大部分更新的 802.11b 和(几乎?)所有的 802.11g 芯片。哦,顺便说,Linux 对至少一个无线芯片厂商的芯片有非常好的支持,下面的 Broadcom 无线芯片看起来都被 Linux 所支持。(如果 MIPS 架构的 Linksys 的路由器运行着 Linux。)

Broadcom BCM4301 Wireless 802.11b Controller
Broadcom BCM4307 Wireless 802.11b Controller
Broadcom BCM4309 Wireless 802.11a Controller
Broadcom BCM4309 Wireless 802.11b Controller
Broadcom BCM4309 Wireless 802.11 Multiband Controller
Broadcom BCM4310 Wireless 802.11b Controller
Broadcom BCM4306 Wireless 802.11b/g Controller
Broadcom BCM4306 Wireless 802.11a Controller
Broadcom BCM4306 Wireless 802.11 Multiband Controller

上述列表提取于 lib/modules/2.4.5/kernel/drivers/net/wl/wl.o 的字符。

……

在下面的回复中,用户 Dave Jones 提到了

好奇的是,Belkin 的产品同样看起来是基于同样的源代码的。看起来非常像重新包装的固件并禁用了一些功能。

……

用户 Colm MacCárthaigh 提到了

…..

我买了一个 Dell TrueMobile 1184 访问点/路由器,我用 root 用户名和密码 admin 登录了 telnet,发现它在运行 armlinux。

# cat /proc/version

Linux version 2.2.14-v1.9 (root@localhost.localdomain) (gcc version
2.9-vLinux-armtool-0523) #5357 Sat Jan 25 17:39:42 CST 2003

# cat /proc/cpuinfo
Processor : S3C4510/SEC arm7tdmi rev 0
BogoMips : 44.24
Hardware : <NULL>

也有很多其他的 GPL 的软件,如 ipchains, busybox 和其他你能想得到的。

在对 /etc/hosts 文件进行了一下 grep:

# cat /etc/hosts

127.0.0.1 vLinux/Vitals_System_Inc.

然后找到了一个网站:

http://www.vitalsystem.com/

并且

http://www.onsoftwarei.com/

看起来是支持 vLinux 的公司。

…..

然后我联系了 Dell 公司,并被转接到法务部门,我发给了他们一封信:

http://www.redbrick.dcu.ie/~colmmacc/TrueMobile-1184/dell.letter (作者注:已不存在,不过可以看缓存页面。)

6 周后,我免费得到了一个包含源代码的 CD 磁碟和一封很好的信:

hxxp://www.redbrick.dcu.ie/~colmmacc/TrueMobile-1184/dell.jpg (已不存在,但是缓存仍在。)

…..

这个代码是一个有着 2.2.14-rmk4 补丁的 Linux 2.2.14,没什么特殊定制的,不过现在我有了这个配置文件,并可以编译一个支持 IPv6 的内核。

…..

Dell 称他们会审查他们的流程以确保这种问题不再发生,Dell 法务部门称他们的供应商并没有告知他们关于许可证的问题。现在,Dell 会在 TrueMobile 包装中附带源代码 CD 和许可证。Dell 做的真的很好。这是一个如何做正确的事的例子。

……

10 天后,原始作者 Andrew Miklas 再次回复了这个主题

我收到了 Linksys 的反馈,他们正在确定什么东西必须被在 GPL 许可证下开源。我会保持更新。

我在 Linksys 的联络人称此公司有支持 Linux 的传统,在此之前,他们将源代码光碟和产品放在一起。我被告知这次 WRT54G 缺少源代码是一次非故意的孤立的意外事故。

….

时间一转眼过了 3 个月,在 9 月 28 日的时候,作者 Andrew Miklas 在内核邮件列表中发表了主题为“Linksys WRT54G: Part 2”的邮件,大概意思是:

….

Linksys 在其 GPL Center 中释出的源代码是不全的,与源代码释出的内核有静态链接的文件并不存在于源代码之中。

….

很明显,释出的内核并不能被编译,因此,这还是违反了 GPL 协议。

….

此事一出,Linksys 公司的态度被很多人所了解了,也有律师对 Linksys 的法务部门一次又一次发了律师函,但是 Linksys 还是雷打不动。

用户 Rob Landley 的观点是:

Linksys 并没有或者不知道这些固件的源代码。

在我所工作过的公司中,只有少部分工程师知道这些内核的东西,而这些工程师通常在产品研发结束后就离开了,技术支持们可能不会知道这些。而管理层通常很少注意有多少是需要知道的。

继续给他们压力,be nice,给他们一些时间去检查他们的代码库。

固件的开发或许是外包给印度或者台湾来完成的。

….

最后,在各大社区的压力下,Linksys 终于开源了他们的固件代码。

就在开源之后 1 年不到的时间,Gerry Rozema (aka groz) 和 Mike Baker (aka mbm/embeem) 成立了 OpenWrt 项目组。

起初,OpenWrt 仅支持 WRT54G,之后逐渐支持了其他的嵌入式设备。

2016 年 5 月份,OpenWrt 核心开发者们互相出现了歧义,并导致大部分开发者 fork 了成为新的项目 LEDE,在 2018 年 1 月份,OpenWrt 与 LEDE 开发者们达成了协议,并将 LEDE merge 回 OpenWrt。在下一个版本将改回 OpenWrt 的名字。

截至目前,OpenWrt 官方已经支持 1000 多款嵌入式设备了,将自由还给了终端用户。

参考资料:

https://en.wikipedia.org/wiki/OpenWrt

http://www.wi-fiplanet.com/tutorials/article.php/3562391

https://hardware.slashdot.org/story/03/07/06/2121234/linksys-releases-gpled-code-for-wrt54g

4 Comments

Leave a Reply

Your email address will not be published.

*

code