BusyBox


BusyBox是可在单一的可执行文件中提供了精简的Unix工具集,可运行于多个POSIX环境的操作系统,例如Linux(包括Android)、Hurd、FreeBSD等等;由 Bruce Perens 于 1995 年发起,旨在为内存受限的系统提供完整的 Linux 用户空间。由于BusyBox可执行文件的文件比较小,使得它非常适合使用于嵌入式系统。被称为“嵌入式Linux的瑞士军刀”。它既有简单的工具,例如 ls、cat 和 echo 等等,也包含许多更大、更复杂的工具如 grep、find、mount 以及 telnet。简单来说 BusyBox 就是一个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的 shell。采用GPL协议授权。

最初是由布鲁斯·斐伦斯在1996年为Debian GNU/Linux的软盘安装编写的,其原始构想是希望在一张软盘上能放入一个引导系统,以作为急救盘和安装盘。后来它变成了嵌入式Linux设备和系统和Linux发行版安装程序的实质标准,因为每个Linux可执行文件需要数KB的空间,而集成两百多个程序的BusyBox可以节省大量空间。例如:Debian GNU/Linux的安装光盘以BusyBox作为Shell程序。
Enrique Zanardi负责维护BusyBox并专注在Debian启动软盘安装系统的需求直到1998年,再由负责Linux路由器计划的Dave Cinege 接手。Cinege做了一些增加:创建了一个模块化的Build环境、转移BusyBox的目标到一般高端的嵌入式系统。当1999年LRP开发进度趋缓时,Lineo, Inc.的Erik Andersen在1999年开始正式地接手这个项目继续维护它到2006年三月。在这段期间,Linux的嵌入式系统的市场明显地成长,连带使BusyBox转趋成熟,同时扩展二者的使用群和功能。
它被自定义化以提供一个超过两百种功能的子集。它可以提供多数详列在单一UNIX规范里的功能,以及许多用户会想在Linux系统上看到的功能。BusyBox使用ash。在其网站上可以找到所有功能的列表。典型的计算机程序对每个应用程序都有个别的二进制(可执行文件)文件。BusyBox 是一单一二进制程序,这是许多应用程序的集合,在适当参数的特定方法下,每个都可透过以不同的名称(每个不同的名字借由符号链接或硬链接支持)调用单一 BusyBox 二进制程序来访问。受惠于单一可执行档策略,如此一来省去了每个可执行文件必需有的标头(特别是ELF的可执行档),这也让Busybox不需要库便可达成代码共享。这个技巧与FreeBSD中的crunchgen指令相似。与使用crunchgen创建的合并工具程序不同在于,Busybox只提供每个工具程序的简化版(例如:ls指令不提供排序功能)。共享通用的代码,并以程序大小优化为目标,使以BusyBox建构的系统所需要的空间远小于使用对应的完整工具所需要的空间。研究比较了GNU、Busybox、asmutils及Perl实现的标准Unix指令发现特定状况下,BusyBox的执行速度会优于其他实现,但并非总是如此。
它将常用的 UNIX 工具程序整合成一个单独的可执行文件,从而提供了一个高效、节省空间的解决方案。常见的工具如 ls、cp、cat、echo、mount、ps 等都可以通过 BusyBox 提供。由于它的高度集成和紧凑性,BusyBox 被广泛应用于嵌入式设备、路由器、智能手机、Docker 容器等场景。它不仅包括常见的命令行工具,还提供了如文件系统操作、网络配置、系统管理等功能。由于它的设计理念是轻量级且易于定制,因此在许多需要低资源占用的环境中成为首选工具。在过去的几年里,随着 Docker 等容器技术的崛起,BusyBox 又一次迎来了新的发展契机。它成为了许多轻量级容器镜像的基础,帮助开发者快速构建、部署容器化应用程序。
其最大特点之一是它的轻量级设计。由于其将多个常见的工具整合成一个可执行文件,使用的内存和存储空间极小。对于嵌入式系统,特别是资源受限的设备来说,这种设计极大地减少了系统占用的空间,使得开发者能够在非常有限的资源下,依然能够运行一整套 UNIX 工具。例如,一个典型的 Linux 系统中,可能需要安装上百个不同的二进制程序,而 BusyBox 只需一个二进制文件就可以实现同样的功能。这种设计不仅有效节省了存储空间,还减少了内存的使用。其所包含的程序只需要简单的将名称附加在第一个参数即可执行:
/bin/busybox ls
更常见的作法是,这些指令会以链接(使用硬链接或者符号链接)至BusyBox可执行文件,BusyBox会侦测其被链接时的名称并执行对应的指令。举例来说,只要将/bin/ls链接到/bin/busybox,即可执行
/bin/ls
实际的命令列表按编译时的设置决定,在有Busybox的系统上执行busybox --list即可看到一个列表。
ash - 符合POSIX的一个简单的shell
awk - 将文件解析为记录及字段后,按模式匹配操作其内容
cat - 将多个文件首尾相连显示于标准输出
chmod - 更改文件的权限设置
cp - 拷贝文件或目录
date - 打印/设置日期时间
dd
df - 印出文件系统的使用统计
dmesg - 查看内核信息
echo - 打印指定内容
egrep - 接受扩展正则表达式的grep
fgrep - 接受固定字符串模式的grep
grep - 列出文件或标准输入中符合模式的行
gzip
kill - 关闭一个程序
ln - 创建链接
login - 以某个用户身份登录
ls - 列出目录或文件
mdu
mkdir - 创建一个目录
more
mount 挂载存储设备
mv - 移动文件
netstat - 查看 TCP/IP 连接信息
ntpc
ntpsync
nvram
pidof
ping
ps - 印出程序状态
pwd - 印出工作目录
rm - 删除文件
rmdir - 移除目录
rstats
sed
sh
sleep
sync - 将缓存写入到硬盘中
tar
touch
umount 移除挂载的存储设备
uname - 查看系统信息
usleep
vi - 一个带有简单的模式提示的精简版仿vi编辑器
watch
wget - HTTP或FTP下载工具
zcat
丰富的功能集
尽管 BusyBox 仅由一个可执行文件构成,但它提供的功能非常丰富,包括但不限于:
• 文件操作工具:如 cp、mv、rm、ln、cat 等。
• 系统管理工具:如 ps、top、kill、shutdown 等。
• 网络工具:如 ping、ifconfig、netstat、wget 等。
• 进程管理:如 ps、kill、nice、renice 等。
• 文本处理工具:如 grep、sed、awk、cut 等。
这些工具大多数都被精简到了最基本的功能,可以满足大多数嵌入式系统和轻量级 Linux 系统的需求。其并不仅仅局限于某个特定的架构或操作系统。它支持多种平台,包括 x86、ARM、MIPS、PowerPC 等多种处理器架构。这使得 BusyBox 可以在各种硬件平台上运行,从桌面计算机到嵌入式设备,从路由器到智能手机,几乎无处不在。
易于定制与扩展
由于 BusyBox 采用模块化设计,用户可以根据需要定制自己想要的功能。通过编译配置选项,开发者可以选择只包含需要的工具,从而进一步减小二进制文件的大小。甚至可以将不常用的功能去除,只保留最常用的部分。此外,它还允许开发者通过扩展模块来增加新功能,确保其在不同应用场景下都能发挥最大效用。
应用场景
嵌入式系统
BusyBox 最初是为嵌入式系统设计的,因此它在嵌入式开发中有着广泛的应用。嵌入式设备通常有较小的存储空间和有限的计算资源,BusyBox 提供的轻量级工具集能够帮助开发者在这些设备上实现完整的 Linux 用户空间功能。常见的嵌入式设备如路由器、智能电视、家电、工业控制设备等,都有可能使用 BusyBox。
Linux 环境下的工具集合
在许多简化的 Linux 环境中,尤其是那些资源受限的虚拟机和容器环境中,BusyBox 提供了一种非常有效的工具集合。它将大部分常见的 UNIX 命令和工具都集成到了一个程序中,极大地简化了系统的部署和管理。在不需要图形化界面的环境中,BusyBox 提供的命令行工具是管理系统的关键。
Docker 容器
在 Docker 容器中,使用 BusyBox 是一个常见的做法。由于 Docker 容器通常要求镜像的体积尽可能小,其作为一个基础镜像,能够为容器提供基本的命令行工具,并且不会占用太多的存储空间。许多 Docker 镜像都以它为基础,并根据需要增加其他功能。
# 进入容器
docker run -it busybox:latest sh
# 直接运行命令
docker run -it busybox:latest busybox ls
在大多数 Linux 发行版中,安装 BusyBox 是一个简单的过程。可以使用系统的包管理器来安装它。例如在 Ubuntu 或 Debian 系统中可以通过以下命令安装:
sudo apt-get update
sudo apt-get install busybox
对于其他 Linux 发行版,如 CentOS 或 Fedora,使用 yum 或 dnf 安装:
sudo yum install busybox
如果需要在特定平台上编译安装 BusyBox,可以从官方网站下载源代码并自行编译。
使用 BusyBox 命令
安装 BusyBox 后可以通过执行 busybox 命令来查看它支持的所有工具和命令。例如:
busybox
这个命令会列出 BusyBox 所包含的所有命令工具。如果想使用某个特定的工具,只需要像使用普通的命令行工具一样调用它。例如,使用 ls 命令列出目录内容:
busybox ls
编译 BusyBox
如果希望从源代码自行编译 BusyBox,首先需要下载源代码:
wget https://busybox.net/downloads/busybox-<version>.tar.bz2
tar -xvjf busybox-<version>.tar.bz2
cd busybox-<version>
然后配置 BusyBox 编译选项:
make menuconfig
在菜单中可以选择要启用的功能和工具。配置完成后,编译 BusyBox:
make
make install
与其他轻量级工具的对比
与其他轻量级工具(如 toybox、dash 等)相比,其拥有更为丰富的功能和更广泛的兼容性。虽然 toybox 在某些方面也具备类似的轻量级特性,但 BusyBox 的工具集更为全面,并且得到了广泛的社区支持;另一方面,dash 是一个非常轻量级的 shell,适合嵌入式系统使用,但其功能远不如 BusyBox 丰富。
最新版本:1.36
2023年1月上旬发布,为内核随机数生成器 (RNG) 种子文件的 SeedRNG 程序将_seedrng_添加到 BusyBox。SeedRNG 是一个使用种子文件为 Linux 内核随机数生成器提供种子的简易程序。
添加了一个 _tsort_ 实现,用于对其输入执行拓扑排序
添加用于在树结构中列出目录和文件的 tree 命令
BusyBox 现在优先使用 -Oz 优化级别而不是 -Os 进行编译。因为 -Oz 能够更积极地优化大小而不是速度
为现有 BusyBox 命令添加的各种选项,例如 -h 用于排序、-o 用于 xargs、-s 用于 ed 等
用于 SHA1 和 SHA256 的可选 x86 硬件加速哈希
支持在 crontab 文件中设置 PATH
对其 vi 实现的多项修复
BusyBox 的 fdisk 现在可以识别 Embedded Base Root Requirements (EBBR) 分区
Bruce Perens 二三事:强者的剽悍人生
IT 行业的一大特色,就是祖师爷大多都还活着。开源届的 Ricard M. Stallman、 Linus Torvalds、Eric S. Raymond 等大佬还都在,而且还有精力 “为之一战”。这些大佬中,就包括了 Bruce Perens。
他是谁?我们只需要看到 “OSD(Open Source Definition)撰写者”、“OSI (Open Source Initiative )联合创始人”、“开源运动发起人之一” 这些标签就知道他绝对来头不小。
但你如果要再走近看看,就会又发现 Bruce Perens 的人生要比想象中更丰富、更立体,他的轨迹横跨多个领域,他对开源永远有话要说,年过花甲他依旧活跃(但似乎已经无人在听)......
接下来就通过 Bruce Perens 的一些事迹来了解和观察他。运气够好的话,或许还能从中嗅到一条开源从诞生到现在的变化轨迹。
1、对科技感兴趣的脑瘫患儿,照样出人头地
1958 年出生纽约长岛的 Bruce Perens, 一生下来就患有脑瘫,这导致他小时候说话含糊不清,这毛病直到他四十多岁已经成为开源定义撰写者的时候,也没扭转过来。
也是因为这个,早期他还被学校误诊为发育障碍,迟迟没教他阅读。但他从小就对科技有兴趣,尤其是无线电领域。
2、无线电圈子里的顶级发烧友
当时,那些通过海上轮船越境来绕过政府控制的无线电台,被称为 “海盗电台”。Bruce Perens 就经营过一家 “海盗电台”。
此外,作为狂热的业余无线电爱好者(呼号: K6BP),他维护着相关网站 technocrat.net,该网站在 2008 年底关闭了,因为太亏钱支撑不住了。
3、在 IMDb 上拥有姓名的程序员
1981 至 1986 年间,Bruce Perens 是纽约理工学院计算机图形实验室(New York Institute of Technology Computer Graphics Lab)的一名 Unix 内核程序员。
纽约理工学院计算机图形实验室生产了世界上第一部完全由计算机生成的 CGI 电影,其最初团队已经成为现在 CG 动画的精英力量,它生产的开创性软件使得 3D 电影成为可能。
1986 年,该实验室核心成员与刚从被苹果 “扫地出门” 的乔布斯一起成立了 “皮克斯动画”。因此,Bruce Perens 从 1987 年开始为皮克斯工作了 12 年,期间他参与了 3D 动画制作,与乔布斯互动频繁,是《虫虫危机》(1998)和《玩具总动员 2》(1999)的高级系统工程师,并在许多其他电影的制作中担任过技术角色。
4、写了个挺火的自由软件包,结果成为美国首例涉及违反 GPL 诉讼案件的主角
1995 年,Bruce Perens 创建了一个基于 Linux 和 FreeBSD 的开源实用程序包 BusyBox。尽管他在 1996 年就停止开发 BusyBox 了,但十多年后他依旧被该软件的诉讼所烦扰。
2007 ~ 2008 年间,软件自由法律中心 (SFLC) 和一些后来管理 BusyBox 的开发人员提起了一系列版权侵权诉讼,声称多家商业公司违反了 GPLv2,使用了 BusyBox 代码却未开源,这被认为是美国第一例 GPL 侵权案件。
但实际上,Bruce Perens 对此并不知情。2009 年,他发表了一份声明,表示 BusyBox 的所有权有他的一份,但原告并没有与他取得联系,原告侵犯到了他和其他 BusyBox 开发人员的相应权利。不过,他支持强制执行 Busybox 上使用的 GPL 许可证。
就因为这件恼火的事,Bruce Perens 不断被找来为这些案件中的被告出庭。于是他干脆建立了一项咨询业务(Legal Engineering 公司),以协助被告遵守 GPL 并与软件自由法律中心达成和解。
或许,就是从这会开始,Bruce Perens 又开始成为了法律通才,来连接律师和工程师。
5、被 Debian 创始人相中,成为下任掌门,却遭 “弹劾”
在皮克斯工作的同时,Bruce Perens 与 Debian 创始人 Ian Murdock 走得很近,还被后者选中成为 Debian 项目的下任负责人。1996 年 4 月到 1997 年 12 月仅一年任期内, Debian 在 Bruce Perens 的影响下变化很大(详情可查看:《开源长老 Debian 就是这么硬气!》)
1)当时开源社区普遍处于起步阶段,Debian 对于什么是自由软件没有明确的理念,在 Bruce 的牵头下,Debian 拿出了 Debian 社会契约草案,这一草案也成为了 OSD (Open Source Definition)的前身和雏形。
2)为了让 Debian 摆脱 FSF(Free Software Foundation)等外部力量的影响,Bruce Perens 创立了 SPI (Software in the Public Interest),这是一个非营利组织,旨在作为一个伞式组织来帮助开源软件和硬件项目。PostgreSQL、FFmpeg、Arch Linux、Jenkins 等优秀项目都是由 SPI 所支持的。
3)在 Bruce Perens 的影响,Debian 的发行版本称号都采用自《玩具总动员》中的角色名称。这一习惯被沿袭至今,2022 年 3 月,Debian 12 被取名为 “Bookworm”(书虫),是《玩具总动员 3》中的人物。
1997 年 12 月,Bruce Perens 卸任。这一年他也惹来不少争议,一些开发者认为他独裁,几乎掌管着所有事情,也控制着所有事情。他走后,Debian 开始撰写 Debian 章程(Debian Constitution),避免集中于一人身上。
6、OSI(Open Source Initiative)筹备前的那个会议,Bruce Perens 没去
其实,不仅是 Bruce Perens 没去,自由软件之父 Richard M. Stallman 也没去。但是,后者是他们故意不邀请的。
1998 年 2 月 3 日,《大教堂与集市》作者 Eric S. Raymond 攒了一个局,参会的关键人物包括 Linux 内核创始人 Linus Torvalds、Apache 主要开发者 Brian Behlendorf、 Sendmail 创始人 Eric Allman、Perl 语言创始人 Larry Wall、Python 语言创始人 Guido Rossum 等人,目的是要发起一个全新的术语和运动,来替换 Richard M. Stallman 所提出的 “自由软件” 概念,因为他们认为 “Free” 一词会阻碍商业人士接纳开源。
最后,Foresight Institute 的 Christine Petersen 提出了 “开源”(Open Source)一词。

那场著名会议后的合影
7、改了一下 Debian 自由软件指南,Bruce Perens 写出了 OSD(Open Source Definition)
我们现在一直沿用的开源定义,就是 Bruce Perens 在 Debian 社会契约基础上改出来的,大致内容基本差不多,都是十条定义。
1997 年 2 月,他(Eric S. Raymond)与我联系,提出了开源的想法。 Raymond 担心保守的商界人士会被 Stallman 的自由理念吓倒。他觉得这扼杀了 Linux 在商业世界中的发展。
—— Bruce Perens
“开源” 会议的第二天(1998 年 2 月 4 日),Eric S. Raymond 就找到了 Bruce Perens。二人在那次会议的讨论基础上建立 OSI ,发起了轰轰烈烈的开源运动。

在纪录片《操作系统革命》中的 Bruce Perens 还显年轻
8、因为在法律上的跨界,Bruce Perens 虽然不是律师,但是他在美国许多州都有教授法律教育课程。
9、OSI 成立的同年,他还创立了 No-Code International,在业余无线电领域名声大噪。
大佬到底能同时做多少件事情?那年他参合开源运动之外,还在皮克斯工作着,还可以分时间出来搞自己的爱好 —— 无线电。
为了取消业余无线电执照考试中的摩尔斯电码测试,Bruce Perens 成立了 No-Code International(无代码国际)。他不断在互联网上、在美国的业余无线电活动中以及在访问其他国家期间进行了大量游说。
最终, No-Code International 成功说服了国际电信联盟、FCC 和许多国家的电信监管机构放弃对业余无线电许可的摩尔斯电码要求(PS:除了俄罗斯,所有国家现在都放弃了这一要求。)
10、深度参与开源运动之后,Bruce Perens 开始不上班了,却并没有财富自由
1999 年,Bruce Perens 从皮克斯辞职,准备专心搞开源相关事业。有消息称,Bruce Perens 是看到 Debian 被选中为航天飞机任务服务时,决定离开皮克斯去全职从事 Linux 工作的。
一开始,他去了 Linux Capital Group 当总裁,这是一家专注于 Linux 相关业务的风投公司。这个公司的主要投资都给了 Progeny Linux Systems,而这是一家由 Debian 创始人 Ian Murdock 领导的公司。
2000 年,互联网泡沫破裂,经济不景气,Linux Capital Group 倒闭了。
11、后来去惠普打工,又因为反微软言论被 “炒鱿鱼” 了
大佬也需要混口饭吃,公司倒闭后,他上了普惠这条船。2000 年 12 月,Bruce Perens 以 Linux 和开源的高级全球战略官的身份在惠普做着内部布道的工作。据当时的采访,他的部分工作被告知是 “挑战惠普管理层”。
2000~2002 年,正是开源与微软关系最为紧张的那两年。当时的微软总裁 Steve Ballmer 的著名反开源言论 “Linux 是毒瘤” 正是在这一时期发表的。Bruce Perens 作为开源运动发起人之一,自然身先士卒,冲在阻击微软第一线。
万万想到的是,2002 年惠普收购了基于 Microsoft Windows 的 PC 主要制造商康柏。此后,惠普在业务上变得更加依赖微软,但 Bruce Perens 却依旧我行我素。2002 年 9 月,在经过漫长的警告后,Bruce Perens 终于因为自己坚持的开源态度,把惠普这张船票给弄丢了。
总的来说,我在惠普的两年是一段美好的时光。我唯一的遗憾是不能再继续下去了。他们给了我相当不错的薪水,而且让我做我想做的事。现在更难了,我必须出去用服务赚点钱(他出去后又开了一家开源咨询公司)。
—— Bruce Perens
12、开源运动刚跑出来的那两年,Bruce Perens 没少受攻击。
2001 年,有人拿 Eninem 的歌改词来调侃和攻击他。这首 diss 改编节选如下,大家有兴趣可以戳来看看,请配合原曲食用,风味更佳:
nothing you idiots, Mr Cray's dead
he's locked in my bassment
microsoft women love Sig '11
chicka chicka chicka bruce perens,
"I'm sick of him, lookit him
walkin around, grabbin his GNU know what
flippin' to GNU know who"

拿来讽刺 Bruce 的那首歌正是 Eninem 2000 年的神专《The Marshall Mathers LP》里的《The Real Slim Shady》,值得一听
13、Bruce Perens 本打算打造一款全新的 Linux 发行版,最后却输给了 Ubuntu 的 “钞能力”
2003 年,Bruce Perens 创建了 UserLinux,这是一个基于 Debian 的发行版。他认为红帽等企业版 Linux 会剥夺了自由软件的大部分自由。在他的构想中,UserLinux 将填补不受支持的发行版与 Red Hat 和 Novell 提供的昂贵、限制性软件包之间的空白。
之后的一段时间,UserLinux 也的确运作得不错,受到了广泛的关注。但是,2004 年,另一个 Debian 分支 Ubuntu 杀了出来,二者具有同样的目标。结果大家也都知道了,UserLinux 在 2006 年变得无人维护,而 Ubuntu 势不可挡。
当时有人分析,Ubuntu 的优势在于,它不需要等待稳定的 Debian 版本发布,而且拥有几千万美金的 “小优势”。要知道,Ubuntu 的发起人 Mark Shuttleworth Ricer 还有个身份是南非首富。Bruce Perens 之后说的话,有点酸酸的:我认为该项目(Ubuntu)的确具有价值,但它更像是 “富人的爱好项目”,免费为 Mark Shuttleworth Ricer 工作并不是很明智的选择。当然,也有人怼他,说他是 “穷人的愚蠢”。
14、西装笔挺地,代表开源参加联合国信息社会世界峰会
2005 年,联合国搞了个信息社会世界峰会,其中 Bruce Perens 代表开源出席。当 500 名演讲厅的其他人都穿着短裤、军服和旧会议 T 恤时,他穿着西装,希望通过这种装束正式介绍自己和开源:Linux 需要更加面向外部。

15、UserLinux 以后,Bruce Perens 低调多了,和 Linus Torvalds 有分歧也只是小声逼逼
UserLinux 之后,Bruce Perens 再也没什么大动作,他偶尔在演讲中露个面,过着小日子。2006~2007 年,FSF 计划推出 GPLv3,但却遭到了 Linux 创始人 Linus 的不友好反应。
简单来说,Linus 并不喜欢 GPLv3,拒绝将 Linux 内核从 GPLv2 迁移到 GPLv3。那时 Bruce Perens 其实是持不同意见的。但他也只是在 2008 年的开源十周年演讲中,提了一嘴而已。
16、“开源和自由之间存在冲突,这是一个我们犯下的错误!”
在 2008 年的开源十周年演讲中,Bruce Perens 表达了对自由软件阵营友好的立场,而这一立场与 Linus Torvalds、Eric S. Raymond 等人不一致。
在构建我们的开源活动时,我们是站在一个巨人的肩膀上。从 1980 年代初开始,Richard M. Stallman 以他的自由软件哲学和 GNU 系统为开源开辟了道路。而当它与 Linux 内核结合,则永远改变了软件的工作方式。
有一段时间,开源和自由软件布道之间存在冲突,这是我们的一个错误。我的意图是:让开源成为谈论自由软件的另一种方式,为商务人士量身定做,并最终让他们更加理解 Richard M. Stallman 的论点。
17、三进三出 OSI,作为创始人居然还曾被拒绝入会
尽管一直为了开源事业奔走,Bruce Perens 与 OSI 却一直保持着游离的关系。
1999 年 2 月,建立 OSI 之后仅一年,Bruce Perens 就离开过 OSI。在给 Debian 开发者邮件列表的一封电子邮件中,他解释了自己的决定:尽管大多数黑客都知道自由软件和开源只是同一事物的两个词,但 “开源” 作为一个成功的营销术语已经不再强调自由软件所涉及的自由的重要性。而且,OSI 联合创始人 Eric S. Raymond 似乎已经不再关注自由软件了。
因为这个分歧,Bruce Perens 有很长一段时间没有参与过 OSI。直到 2005 年 8 月,Bruce Perens 希望解决开源许可证扩散问题而竞选 OSI 委员会的成员资格。结果,他居然被新的委员会班子拒绝了!
2008 年 3 月,Bruce Perens 重新竞选 OSI 董事会,这次他的立场是减少供应商过度代表、支持开发者领导。同时,他依旧提及许可证泛滥的问题。
但 Bruce Perens 始终没有留在 OSI。2020 年 1 月,他再次从 OSI 辞职,因为他已经认定 OSI 不尊重自由。2019 年,律师 Van Lindberg 代表分布式开发平台 HoloChain 起草了一个名为 “密码自治许可证(Cryptographic Autonomy License,CAL)” 的软件许可证,并将其提交给开源促进会 OSI 审批。
当时,关于是否批准 CAL 许可证引起了 OSI 内部的争论。据说,起草 CAL 的律师 Van 游说了 OSI 董事私下批准 CAL,而这违反了应该在公共场所进行批准程序的规则。Bruce Perens 觉得 OSI 似乎已经决定接受该许可证,于是他提出了再次辞职:
在我看来,该组织正在头也不回地走向自由的反面。

Bruce Perens 近照,如今他已经苍老了很多
18、遭遇 “道德开源” 力量的挑战,Bruce Perens 态度温和,甚至还自娱自乐
看过《你见过要求用户打疫苗的软件许可证》一文的读者应该知道,近两年美国开源圈被一股 “文化力量” 席卷了。
对于这种现象,Eric S. Raymond 很生气、反应颇大,而 Bruce Perens 则态度温和得多,在好言分析这事为什么行不通后,他还自娱自乐地写了一个 Ethical License。
最搞笑的是,他还在自己的文章中点评了一番,认为这一系列许可证自己的 “疫苗许可证” 最专业,且对标的是 OSI 认证程序。但他也承认,这些个许可证似乎都不太可能在执行中获得法院的同意。
19、2020 年再度辞职 OSI 后,Bruce Perens 也想过另起炉灶,但是没什么波浪
一直烦于日益增多且五花八门的开源许可证,Bruce Perens 就想干脆不如推出一个 Cohent Open Source 的运动。他认为,实际上只需要三个开源许可证就行了:AGPLv3、LGPL3 和 Apache 2.0。
因此,他在 DebConf 2020(Debian 开发者大会)上发表了相关演讲。那年,Bruce Perens 已经 62 岁,他做了 80 多页满是字的 PPT,讲了足足近一个小时。
“后开源” 时代已来:许可证失效、无法为普罗大众服务
开源运动发起人之一 Bruce Perens 在2024年1月上旬接受《The Register》采访,他提出了 “后开源运动 (Post-Open Source movement)” 概念,并表示已为此做好了准备。他解释道:“自由软件发展至今已有 50 年历史,首次宣布 “开源” 一词是在 30 年前。现在是时候认真审视我们一直在做的事情,看是否可以做得更好。与此同时,我们需要保护开源,因为开源将继续存在,并提供相同的规则和范式,而在开源之后出现的东西应该叫别的名字,并且永远不要试图冒充开源 —— 我称之为后开源 (Post-Open)。”
Bruce Perens 是 “OSD(Open Source Definition)撰写者”、“OSI (Open Source Initiative )联合创始人”、“前 Debian 计划领导者”。
他谈到了开源社区当下亟需解决的问题,比如开源许可证目前事实上已失效 (not work),因为企业发现了许可证的漏洞 —— 他指出三分之一的付费 Linux 系统在销售时都规避了 GPL,导致 GPL 不再按照最初设计的意图那样运作。
他用红帽的 RHEL 举例,红帽在2022年6月宣布停止按照 GPL 要求公开 RHEL 源代码。在 IBM 的控制下,RHEL 已成为专有产品,并停止分发免费的 Red Hat 分支 CentOS。此外,IBM 还禁止红帽客户共享红帽安全补丁的源代码。它也不允许员工按照 GPL 的要求向上游开源项目提供补丁。对此 Bruce Perens 说道:" 所以我觉得,IBM 已经从开源开发者社区得到了它想要的一切,而我们却看到了他们竖的中指。"
除了许可证,Bruce Perens 认为压垮开源骆驼的另一根稻草是 “开源完全无法为普罗大众服务”。在大多数情况下,普通用户是通过私有软件公司的系统如苹果 iOS 或 Google Android 使用开源软件,两者均基于开源基础设施构建,但应用程序大多是私有的。普罗大众不了解开源,也不知道开源运动所倡导的软件自由有益于他们,然而今天的开源软件却被用于监视甚至压迫用户。
官方主页:https://busybox.net/

最初是由布鲁斯·斐伦斯在1996年为Debian GNU/Linux的软盘安装编写的,其原始构想是希望在一张软盘上能放入一个引导系统,以作为急救盘和安装盘。后来它变成了嵌入式Linux设备和系统和Linux发行版安装程序的实质标准,因为每个Linux可执行文件需要数KB的空间,而集成两百多个程序的BusyBox可以节省大量空间。例如:Debian GNU/Linux的安装光盘以BusyBox作为Shell程序。
Enrique Zanardi负责维护BusyBox并专注在Debian启动软盘安装系统的需求直到1998年,再由负责Linux路由器计划的Dave Cinege 接手。Cinege做了一些增加:创建了一个模块化的Build环境、转移BusyBox的目标到一般高端的嵌入式系统。当1999年LRP开发进度趋缓时,Lineo, Inc.的Erik Andersen在1999年开始正式地接手这个项目继续维护它到2006年三月。在这段期间,Linux的嵌入式系统的市场明显地成长,连带使BusyBox转趋成熟,同时扩展二者的使用群和功能。
它被自定义化以提供一个超过两百种功能的子集。它可以提供多数详列在单一UNIX规范里的功能,以及许多用户会想在Linux系统上看到的功能。BusyBox使用ash。在其网站上可以找到所有功能的列表。典型的计算机程序对每个应用程序都有个别的二进制(可执行文件)文件。BusyBox 是一单一二进制程序,这是许多应用程序的集合,在适当参数的特定方法下,每个都可透过以不同的名称(每个不同的名字借由符号链接或硬链接支持)调用单一 BusyBox 二进制程序来访问。受惠于单一可执行档策略,如此一来省去了每个可执行文件必需有的标头(特别是ELF的可执行档),这也让Busybox不需要库便可达成代码共享。这个技巧与FreeBSD中的crunchgen指令相似。与使用crunchgen创建的合并工具程序不同在于,Busybox只提供每个工具程序的简化版(例如:ls指令不提供排序功能)。共享通用的代码,并以程序大小优化为目标,使以BusyBox建构的系统所需要的空间远小于使用对应的完整工具所需要的空间。研究比较了GNU、Busybox、asmutils及Perl实现的标准Unix指令发现特定状况下,BusyBox的执行速度会优于其他实现,但并非总是如此。
它将常用的 UNIX 工具程序整合成一个单独的可执行文件,从而提供了一个高效、节省空间的解决方案。常见的工具如 ls、cp、cat、echo、mount、ps 等都可以通过 BusyBox 提供。由于它的高度集成和紧凑性,BusyBox 被广泛应用于嵌入式设备、路由器、智能手机、Docker 容器等场景。它不仅包括常见的命令行工具,还提供了如文件系统操作、网络配置、系统管理等功能。由于它的设计理念是轻量级且易于定制,因此在许多需要低资源占用的环境中成为首选工具。在过去的几年里,随着 Docker 等容器技术的崛起,BusyBox 又一次迎来了新的发展契机。它成为了许多轻量级容器镜像的基础,帮助开发者快速构建、部署容器化应用程序。
其最大特点之一是它的轻量级设计。由于其将多个常见的工具整合成一个可执行文件,使用的内存和存储空间极小。对于嵌入式系统,特别是资源受限的设备来说,这种设计极大地减少了系统占用的空间,使得开发者能够在非常有限的资源下,依然能够运行一整套 UNIX 工具。例如,一个典型的 Linux 系统中,可能需要安装上百个不同的二进制程序,而 BusyBox 只需一个二进制文件就可以实现同样的功能。这种设计不仅有效节省了存储空间,还减少了内存的使用。其所包含的程序只需要简单的将名称附加在第一个参数即可执行:
/bin/busybox ls
更常见的作法是,这些指令会以链接(使用硬链接或者符号链接)至BusyBox可执行文件,BusyBox会侦测其被链接时的名称并执行对应的指令。举例来说,只要将/bin/ls链接到/bin/busybox,即可执行
/bin/ls
实际的命令列表按编译时的设置决定,在有Busybox的系统上执行busybox --list即可看到一个列表。
ash - 符合POSIX的一个简单的shell
awk - 将文件解析为记录及字段后,按模式匹配操作其内容
cat - 将多个文件首尾相连显示于标准输出
chmod - 更改文件的权限设置
cp - 拷贝文件或目录
date - 打印/设置日期时间
dd
df - 印出文件系统的使用统计
dmesg - 查看内核信息
echo - 打印指定内容
egrep - 接受扩展正则表达式的grep
fgrep - 接受固定字符串模式的grep
grep - 列出文件或标准输入中符合模式的行
gzip
kill - 关闭一个程序
ln - 创建链接
login - 以某个用户身份登录
ls - 列出目录或文件
mdu
mkdir - 创建一个目录
more
mount 挂载存储设备
mv - 移动文件
netstat - 查看 TCP/IP 连接信息
ntpc
ntpsync
nvram
pidof
ping
ps - 印出程序状态
pwd - 印出工作目录
rm - 删除文件
rmdir - 移除目录
rstats
sed
sh
sleep
sync - 将缓存写入到硬盘中
tar
touch
umount 移除挂载的存储设备
uname - 查看系统信息
usleep
vi - 一个带有简单的模式提示的精简版仿vi编辑器
watch
wget - HTTP或FTP下载工具
zcat
丰富的功能集
尽管 BusyBox 仅由一个可执行文件构成,但它提供的功能非常丰富,包括但不限于:
• 文件操作工具:如 cp、mv、rm、ln、cat 等。
• 系统管理工具:如 ps、top、kill、shutdown 等。
• 网络工具:如 ping、ifconfig、netstat、wget 等。
• 进程管理:如 ps、kill、nice、renice 等。
• 文本处理工具:如 grep、sed、awk、cut 等。
这些工具大多数都被精简到了最基本的功能,可以满足大多数嵌入式系统和轻量级 Linux 系统的需求。其并不仅仅局限于某个特定的架构或操作系统。它支持多种平台,包括 x86、ARM、MIPS、PowerPC 等多种处理器架构。这使得 BusyBox 可以在各种硬件平台上运行,从桌面计算机到嵌入式设备,从路由器到智能手机,几乎无处不在。
易于定制与扩展
由于 BusyBox 采用模块化设计,用户可以根据需要定制自己想要的功能。通过编译配置选项,开发者可以选择只包含需要的工具,从而进一步减小二进制文件的大小。甚至可以将不常用的功能去除,只保留最常用的部分。此外,它还允许开发者通过扩展模块来增加新功能,确保其在不同应用场景下都能发挥最大效用。
应用场景
嵌入式系统
BusyBox 最初是为嵌入式系统设计的,因此它在嵌入式开发中有着广泛的应用。嵌入式设备通常有较小的存储空间和有限的计算资源,BusyBox 提供的轻量级工具集能够帮助开发者在这些设备上实现完整的 Linux 用户空间功能。常见的嵌入式设备如路由器、智能电视、家电、工业控制设备等,都有可能使用 BusyBox。
Linux 环境下的工具集合
在许多简化的 Linux 环境中,尤其是那些资源受限的虚拟机和容器环境中,BusyBox 提供了一种非常有效的工具集合。它将大部分常见的 UNIX 命令和工具都集成到了一个程序中,极大地简化了系统的部署和管理。在不需要图形化界面的环境中,BusyBox 提供的命令行工具是管理系统的关键。
Docker 容器
在 Docker 容器中,使用 BusyBox 是一个常见的做法。由于 Docker 容器通常要求镜像的体积尽可能小,其作为一个基础镜像,能够为容器提供基本的命令行工具,并且不会占用太多的存储空间。许多 Docker 镜像都以它为基础,并根据需要增加其他功能。
# 进入容器
docker run -it busybox:latest sh
# 直接运行命令
docker run -it busybox:latest busybox ls
在大多数 Linux 发行版中,安装 BusyBox 是一个简单的过程。可以使用系统的包管理器来安装它。例如在 Ubuntu 或 Debian 系统中可以通过以下命令安装:
sudo apt-get update
sudo apt-get install busybox
对于其他 Linux 发行版,如 CentOS 或 Fedora,使用 yum 或 dnf 安装:
sudo yum install busybox
如果需要在特定平台上编译安装 BusyBox,可以从官方网站下载源代码并自行编译。
使用 BusyBox 命令
安装 BusyBox 后可以通过执行 busybox 命令来查看它支持的所有工具和命令。例如:
busybox
这个命令会列出 BusyBox 所包含的所有命令工具。如果想使用某个特定的工具,只需要像使用普通的命令行工具一样调用它。例如,使用 ls 命令列出目录内容:
busybox ls
编译 BusyBox
如果希望从源代码自行编译 BusyBox,首先需要下载源代码:
wget https://busybox.net/downloads/busybox-<version>.tar.bz2
tar -xvjf busybox-<version>.tar.bz2
cd busybox-<version>
然后配置 BusyBox 编译选项:
make menuconfig
在菜单中可以选择要启用的功能和工具。配置完成后,编译 BusyBox:
make
make install
与其他轻量级工具的对比
与其他轻量级工具(如 toybox、dash 等)相比,其拥有更为丰富的功能和更广泛的兼容性。虽然 toybox 在某些方面也具备类似的轻量级特性,但 BusyBox 的工具集更为全面,并且得到了广泛的社区支持;另一方面,dash 是一个非常轻量级的 shell,适合嵌入式系统使用,但其功能远不如 BusyBox 丰富。
最新版本:1.36
2023年1月上旬发布,为内核随机数生成器 (RNG) 种子文件的 SeedRNG 程序将_seedrng_添加到 BusyBox。SeedRNG 是一个使用种子文件为 Linux 内核随机数生成器提供种子的简易程序。
添加了一个 _tsort_ 实现,用于对其输入执行拓扑排序
添加用于在树结构中列出目录和文件的 tree 命令
BusyBox 现在优先使用 -Oz 优化级别而不是 -Os 进行编译。因为 -Oz 能够更积极地优化大小而不是速度
为现有 BusyBox 命令添加的各种选项,例如 -h 用于排序、-o 用于 xargs、-s 用于 ed 等
用于 SHA1 和 SHA256 的可选 x86 硬件加速哈希
支持在 crontab 文件中设置 PATH
对其 vi 实现的多项修复
BusyBox 的 fdisk 现在可以识别 Embedded Base Root Requirements (EBBR) 分区
Bruce Perens 二三事:强者的剽悍人生
IT 行业的一大特色,就是祖师爷大多都还活着。开源届的 Ricard M. Stallman、 Linus Torvalds、Eric S. Raymond 等大佬还都在,而且还有精力 “为之一战”。这些大佬中,就包括了 Bruce Perens。
他是谁?我们只需要看到 “OSD(Open Source Definition)撰写者”、“OSI (Open Source Initiative )联合创始人”、“开源运动发起人之一” 这些标签就知道他绝对来头不小。
但你如果要再走近看看,就会又发现 Bruce Perens 的人生要比想象中更丰富、更立体,他的轨迹横跨多个领域,他对开源永远有话要说,年过花甲他依旧活跃(但似乎已经无人在听)......
接下来就通过 Bruce Perens 的一些事迹来了解和观察他。运气够好的话,或许还能从中嗅到一条开源从诞生到现在的变化轨迹。
1、对科技感兴趣的脑瘫患儿,照样出人头地
1958 年出生纽约长岛的 Bruce Perens, 一生下来就患有脑瘫,这导致他小时候说话含糊不清,这毛病直到他四十多岁已经成为开源定义撰写者的时候,也没扭转过来。
也是因为这个,早期他还被学校误诊为发育障碍,迟迟没教他阅读。但他从小就对科技有兴趣,尤其是无线电领域。
2、无线电圈子里的顶级发烧友
当时,那些通过海上轮船越境来绕过政府控制的无线电台,被称为 “海盗电台”。Bruce Perens 就经营过一家 “海盗电台”。
此外,作为狂热的业余无线电爱好者(呼号: K6BP),他维护着相关网站 technocrat.net,该网站在 2008 年底关闭了,因为太亏钱支撑不住了。
3、在 IMDb 上拥有姓名的程序员
1981 至 1986 年间,Bruce Perens 是纽约理工学院计算机图形实验室(New York Institute of Technology Computer Graphics Lab)的一名 Unix 内核程序员。
纽约理工学院计算机图形实验室生产了世界上第一部完全由计算机生成的 CGI 电影,其最初团队已经成为现在 CG 动画的精英力量,它生产的开创性软件使得 3D 电影成为可能。
1986 年,该实验室核心成员与刚从被苹果 “扫地出门” 的乔布斯一起成立了 “皮克斯动画”。因此,Bruce Perens 从 1987 年开始为皮克斯工作了 12 年,期间他参与了 3D 动画制作,与乔布斯互动频繁,是《虫虫危机》(1998)和《玩具总动员 2》(1999)的高级系统工程师,并在许多其他电影的制作中担任过技术角色。
4、写了个挺火的自由软件包,结果成为美国首例涉及违反 GPL 诉讼案件的主角
1995 年,Bruce Perens 创建了一个基于 Linux 和 FreeBSD 的开源实用程序包 BusyBox。尽管他在 1996 年就停止开发 BusyBox 了,但十多年后他依旧被该软件的诉讼所烦扰。
2007 ~ 2008 年间,软件自由法律中心 (SFLC) 和一些后来管理 BusyBox 的开发人员提起了一系列版权侵权诉讼,声称多家商业公司违反了 GPLv2,使用了 BusyBox 代码却未开源,这被认为是美国第一例 GPL 侵权案件。
但实际上,Bruce Perens 对此并不知情。2009 年,他发表了一份声明,表示 BusyBox 的所有权有他的一份,但原告并没有与他取得联系,原告侵犯到了他和其他 BusyBox 开发人员的相应权利。不过,他支持强制执行 Busybox 上使用的 GPL 许可证。
就因为这件恼火的事,Bruce Perens 不断被找来为这些案件中的被告出庭。于是他干脆建立了一项咨询业务(Legal Engineering 公司),以协助被告遵守 GPL 并与软件自由法律中心达成和解。
或许,就是从这会开始,Bruce Perens 又开始成为了法律通才,来连接律师和工程师。
5、被 Debian 创始人相中,成为下任掌门,却遭 “弹劾”
在皮克斯工作的同时,Bruce Perens 与 Debian 创始人 Ian Murdock 走得很近,还被后者选中成为 Debian 项目的下任负责人。1996 年 4 月到 1997 年 12 月仅一年任期内, Debian 在 Bruce Perens 的影响下变化很大(详情可查看:《开源长老 Debian 就是这么硬气!》)
1)当时开源社区普遍处于起步阶段,Debian 对于什么是自由软件没有明确的理念,在 Bruce 的牵头下,Debian 拿出了 Debian 社会契约草案,这一草案也成为了 OSD (Open Source Definition)的前身和雏形。
2)为了让 Debian 摆脱 FSF(Free Software Foundation)等外部力量的影响,Bruce Perens 创立了 SPI (Software in the Public Interest),这是一个非营利组织,旨在作为一个伞式组织来帮助开源软件和硬件项目。PostgreSQL、FFmpeg、Arch Linux、Jenkins 等优秀项目都是由 SPI 所支持的。
3)在 Bruce Perens 的影响,Debian 的发行版本称号都采用自《玩具总动员》中的角色名称。这一习惯被沿袭至今,2022 年 3 月,Debian 12 被取名为 “Bookworm”(书虫),是《玩具总动员 3》中的人物。
1997 年 12 月,Bruce Perens 卸任。这一年他也惹来不少争议,一些开发者认为他独裁,几乎掌管着所有事情,也控制着所有事情。他走后,Debian 开始撰写 Debian 章程(Debian Constitution),避免集中于一人身上。
6、OSI(Open Source Initiative)筹备前的那个会议,Bruce Perens 没去
其实,不仅是 Bruce Perens 没去,自由软件之父 Richard M. Stallman 也没去。但是,后者是他们故意不邀请的。
1998 年 2 月 3 日,《大教堂与集市》作者 Eric S. Raymond 攒了一个局,参会的关键人物包括 Linux 内核创始人 Linus Torvalds、Apache 主要开发者 Brian Behlendorf、 Sendmail 创始人 Eric Allman、Perl 语言创始人 Larry Wall、Python 语言创始人 Guido Rossum 等人,目的是要发起一个全新的术语和运动,来替换 Richard M. Stallman 所提出的 “自由软件” 概念,因为他们认为 “Free” 一词会阻碍商业人士接纳开源。
最后,Foresight Institute 的 Christine Petersen 提出了 “开源”(Open Source)一词。

那场著名会议后的合影
7、改了一下 Debian 自由软件指南,Bruce Perens 写出了 OSD(Open Source Definition)
我们现在一直沿用的开源定义,就是 Bruce Perens 在 Debian 社会契约基础上改出来的,大致内容基本差不多,都是十条定义。
1997 年 2 月,他(Eric S. Raymond)与我联系,提出了开源的想法。 Raymond 担心保守的商界人士会被 Stallman 的自由理念吓倒。他觉得这扼杀了 Linux 在商业世界中的发展。
—— Bruce Perens
“开源” 会议的第二天(1998 年 2 月 4 日),Eric S. Raymond 就找到了 Bruce Perens。二人在那次会议的讨论基础上建立 OSI ,发起了轰轰烈烈的开源运动。

在纪录片《操作系统革命》中的 Bruce Perens 还显年轻
8、因为在法律上的跨界,Bruce Perens 虽然不是律师,但是他在美国许多州都有教授法律教育课程。
9、OSI 成立的同年,他还创立了 No-Code International,在业余无线电领域名声大噪。
大佬到底能同时做多少件事情?那年他参合开源运动之外,还在皮克斯工作着,还可以分时间出来搞自己的爱好 —— 无线电。
为了取消业余无线电执照考试中的摩尔斯电码测试,Bruce Perens 成立了 No-Code International(无代码国际)。他不断在互联网上、在美国的业余无线电活动中以及在访问其他国家期间进行了大量游说。
最终, No-Code International 成功说服了国际电信联盟、FCC 和许多国家的电信监管机构放弃对业余无线电许可的摩尔斯电码要求(PS:除了俄罗斯,所有国家现在都放弃了这一要求。)
10、深度参与开源运动之后,Bruce Perens 开始不上班了,却并没有财富自由
1999 年,Bruce Perens 从皮克斯辞职,准备专心搞开源相关事业。有消息称,Bruce Perens 是看到 Debian 被选中为航天飞机任务服务时,决定离开皮克斯去全职从事 Linux 工作的。
一开始,他去了 Linux Capital Group 当总裁,这是一家专注于 Linux 相关业务的风投公司。这个公司的主要投资都给了 Progeny Linux Systems,而这是一家由 Debian 创始人 Ian Murdock 领导的公司。
2000 年,互联网泡沫破裂,经济不景气,Linux Capital Group 倒闭了。
11、后来去惠普打工,又因为反微软言论被 “炒鱿鱼” 了
大佬也需要混口饭吃,公司倒闭后,他上了普惠这条船。2000 年 12 月,Bruce Perens 以 Linux 和开源的高级全球战略官的身份在惠普做着内部布道的工作。据当时的采访,他的部分工作被告知是 “挑战惠普管理层”。
2000~2002 年,正是开源与微软关系最为紧张的那两年。当时的微软总裁 Steve Ballmer 的著名反开源言论 “Linux 是毒瘤” 正是在这一时期发表的。Bruce Perens 作为开源运动发起人之一,自然身先士卒,冲在阻击微软第一线。
万万想到的是,2002 年惠普收购了基于 Microsoft Windows 的 PC 主要制造商康柏。此后,惠普在业务上变得更加依赖微软,但 Bruce Perens 却依旧我行我素。2002 年 9 月,在经过漫长的警告后,Bruce Perens 终于因为自己坚持的开源态度,把惠普这张船票给弄丢了。
总的来说,我在惠普的两年是一段美好的时光。我唯一的遗憾是不能再继续下去了。他们给了我相当不错的薪水,而且让我做我想做的事。现在更难了,我必须出去用服务赚点钱(他出去后又开了一家开源咨询公司)。
—— Bruce Perens
12、开源运动刚跑出来的那两年,Bruce Perens 没少受攻击。
2001 年,有人拿 Eninem 的歌改词来调侃和攻击他。这首 diss 改编节选如下,大家有兴趣可以戳来看看,请配合原曲食用,风味更佳:
nothing you idiots, Mr Cray's dead
he's locked in my bassment
microsoft women love Sig '11
chicka chicka chicka bruce perens,
"I'm sick of him, lookit him
walkin around, grabbin his GNU know what
flippin' to GNU know who"

拿来讽刺 Bruce 的那首歌正是 Eninem 2000 年的神专《The Marshall Mathers LP》里的《The Real Slim Shady》,值得一听
13、Bruce Perens 本打算打造一款全新的 Linux 发行版,最后却输给了 Ubuntu 的 “钞能力”
2003 年,Bruce Perens 创建了 UserLinux,这是一个基于 Debian 的发行版。他认为红帽等企业版 Linux 会剥夺了自由软件的大部分自由。在他的构想中,UserLinux 将填补不受支持的发行版与 Red Hat 和 Novell 提供的昂贵、限制性软件包之间的空白。
之后的一段时间,UserLinux 也的确运作得不错,受到了广泛的关注。但是,2004 年,另一个 Debian 分支 Ubuntu 杀了出来,二者具有同样的目标。结果大家也都知道了,UserLinux 在 2006 年变得无人维护,而 Ubuntu 势不可挡。
当时有人分析,Ubuntu 的优势在于,它不需要等待稳定的 Debian 版本发布,而且拥有几千万美金的 “小优势”。要知道,Ubuntu 的发起人 Mark Shuttleworth Ricer 还有个身份是南非首富。Bruce Perens 之后说的话,有点酸酸的:我认为该项目(Ubuntu)的确具有价值,但它更像是 “富人的爱好项目”,免费为 Mark Shuttleworth Ricer 工作并不是很明智的选择。当然,也有人怼他,说他是 “穷人的愚蠢”。
14、西装笔挺地,代表开源参加联合国信息社会世界峰会
2005 年,联合国搞了个信息社会世界峰会,其中 Bruce Perens 代表开源出席。当 500 名演讲厅的其他人都穿着短裤、军服和旧会议 T 恤时,他穿着西装,希望通过这种装束正式介绍自己和开源:Linux 需要更加面向外部。

15、UserLinux 以后,Bruce Perens 低调多了,和 Linus Torvalds 有分歧也只是小声逼逼
UserLinux 之后,Bruce Perens 再也没什么大动作,他偶尔在演讲中露个面,过着小日子。2006~2007 年,FSF 计划推出 GPLv3,但却遭到了 Linux 创始人 Linus 的不友好反应。
简单来说,Linus 并不喜欢 GPLv3,拒绝将 Linux 内核从 GPLv2 迁移到 GPLv3。那时 Bruce Perens 其实是持不同意见的。但他也只是在 2008 年的开源十周年演讲中,提了一嘴而已。
16、“开源和自由之间存在冲突,这是一个我们犯下的错误!”
在 2008 年的开源十周年演讲中,Bruce Perens 表达了对自由软件阵营友好的立场,而这一立场与 Linus Torvalds、Eric S. Raymond 等人不一致。
在构建我们的开源活动时,我们是站在一个巨人的肩膀上。从 1980 年代初开始,Richard M. Stallman 以他的自由软件哲学和 GNU 系统为开源开辟了道路。而当它与 Linux 内核结合,则永远改变了软件的工作方式。
有一段时间,开源和自由软件布道之间存在冲突,这是我们的一个错误。我的意图是:让开源成为谈论自由软件的另一种方式,为商务人士量身定做,并最终让他们更加理解 Richard M. Stallman 的论点。
17、三进三出 OSI,作为创始人居然还曾被拒绝入会
尽管一直为了开源事业奔走,Bruce Perens 与 OSI 却一直保持着游离的关系。
1999 年 2 月,建立 OSI 之后仅一年,Bruce Perens 就离开过 OSI。在给 Debian 开发者邮件列表的一封电子邮件中,他解释了自己的决定:尽管大多数黑客都知道自由软件和开源只是同一事物的两个词,但 “开源” 作为一个成功的营销术语已经不再强调自由软件所涉及的自由的重要性。而且,OSI 联合创始人 Eric S. Raymond 似乎已经不再关注自由软件了。
因为这个分歧,Bruce Perens 有很长一段时间没有参与过 OSI。直到 2005 年 8 月,Bruce Perens 希望解决开源许可证扩散问题而竞选 OSI 委员会的成员资格。结果,他居然被新的委员会班子拒绝了!
2008 年 3 月,Bruce Perens 重新竞选 OSI 董事会,这次他的立场是减少供应商过度代表、支持开发者领导。同时,他依旧提及许可证泛滥的问题。
但 Bruce Perens 始终没有留在 OSI。2020 年 1 月,他再次从 OSI 辞职,因为他已经认定 OSI 不尊重自由。2019 年,律师 Van Lindberg 代表分布式开发平台 HoloChain 起草了一个名为 “密码自治许可证(Cryptographic Autonomy License,CAL)” 的软件许可证,并将其提交给开源促进会 OSI 审批。
当时,关于是否批准 CAL 许可证引起了 OSI 内部的争论。据说,起草 CAL 的律师 Van 游说了 OSI 董事私下批准 CAL,而这违反了应该在公共场所进行批准程序的规则。Bruce Perens 觉得 OSI 似乎已经决定接受该许可证,于是他提出了再次辞职:
在我看来,该组织正在头也不回地走向自由的反面。

Bruce Perens 近照,如今他已经苍老了很多
18、遭遇 “道德开源” 力量的挑战,Bruce Perens 态度温和,甚至还自娱自乐
看过《你见过要求用户打疫苗的软件许可证》一文的读者应该知道,近两年美国开源圈被一股 “文化力量” 席卷了。
对于这种现象,Eric S. Raymond 很生气、反应颇大,而 Bruce Perens 则态度温和得多,在好言分析这事为什么行不通后,他还自娱自乐地写了一个 Ethical License。
最搞笑的是,他还在自己的文章中点评了一番,认为这一系列许可证自己的 “疫苗许可证” 最专业,且对标的是 OSI 认证程序。但他也承认,这些个许可证似乎都不太可能在执行中获得法院的同意。
19、2020 年再度辞职 OSI 后,Bruce Perens 也想过另起炉灶,但是没什么波浪
一直烦于日益增多且五花八门的开源许可证,Bruce Perens 就想干脆不如推出一个 Cohent Open Source 的运动。他认为,实际上只需要三个开源许可证就行了:AGPLv3、LGPL3 和 Apache 2.0。
因此,他在 DebConf 2020(Debian 开发者大会)上发表了相关演讲。那年,Bruce Perens 已经 62 岁,他做了 80 多页满是字的 PPT,讲了足足近一个小时。
“后开源” 时代已来:许可证失效、无法为普罗大众服务
开源运动发起人之一 Bruce Perens 在2024年1月上旬接受《The Register》采访,他提出了 “后开源运动 (Post-Open Source movement)” 概念,并表示已为此做好了准备。他解释道:“自由软件发展至今已有 50 年历史,首次宣布 “开源” 一词是在 30 年前。现在是时候认真审视我们一直在做的事情,看是否可以做得更好。与此同时,我们需要保护开源,因为开源将继续存在,并提供相同的规则和范式,而在开源之后出现的东西应该叫别的名字,并且永远不要试图冒充开源 —— 我称之为后开源 (Post-Open)。”
Bruce Perens 是 “OSD(Open Source Definition)撰写者”、“OSI (Open Source Initiative )联合创始人”、“前 Debian 计划领导者”。
他谈到了开源社区当下亟需解决的问题,比如开源许可证目前事实上已失效 (not work),因为企业发现了许可证的漏洞 —— 他指出三分之一的付费 Linux 系统在销售时都规避了 GPL,导致 GPL 不再按照最初设计的意图那样运作。
他用红帽的 RHEL 举例,红帽在2022年6月宣布停止按照 GPL 要求公开 RHEL 源代码。在 IBM 的控制下,RHEL 已成为专有产品,并停止分发免费的 Red Hat 分支 CentOS。此外,IBM 还禁止红帽客户共享红帽安全补丁的源代码。它也不允许员工按照 GPL 的要求向上游开源项目提供补丁。对此 Bruce Perens 说道:" 所以我觉得,IBM 已经从开源开发者社区得到了它想要的一切,而我们却看到了他们竖的中指。"
除了许可证,Bruce Perens 认为压垮开源骆驼的另一根稻草是 “开源完全无法为普罗大众服务”。在大多数情况下,普通用户是通过私有软件公司的系统如苹果 iOS 或 Google Android 使用开源软件,两者均基于开源基础设施构建,但应用程序大多是私有的。普罗大众不了解开源,也不知道开源运动所倡导的软件自由有益于他们,然而今天的开源软件却被用于监视甚至压迫用户。
官方主页:https://busybox.net/