我听 Richard Stallman 说 Ubuntu 包含非自由 blob。为什么会有这样的 blob,这些非自由 blob 和系统组件有哪些功能是自由软件无法实现的?Canonical 包含这些是为了保持对 Ubuntu 项目的控制吗?
有哪些发行版默认不包含此类非免费固件?
答案1
Stallman 是正确的。Linux 内核包含几个用于外围设备的非自由固件。这些固件不存储在设备上;每次启动时都必须将其复制到设备上。没有“blob”,设备就无法使用。将固件下载到设备的优点是,只需更新计算机上的固件即可更新设备。
这些“blob”的问题在于它们只是制造商分发的二进制文件。运行设备的知识通常都是专有的。Richard Stallman 和其他自由软件倡导者对此表示反对,因为他们没有获得用于创建二进制文件的源代码。大多数发行版(包括官方 Linux 内核)仍然提供这些 blob,因为它们大大提高了与设备的兼容性(没有公开的替代方案),并且因为它“只是”固件。
(附注:有些人指出,如果你提倡开放固件,那么你距离提倡开放 FPGA HDL 图只有几步之遥,这会损害公司的硬件知识产权。但是,请注意固件仍然可能是恶意的;例如,蜂窝调制解调器固件具有不受限制的网络访问权限,并且对系统也有相当广泛的访问权限。这是“禁止非自由软件”绝对立场的一个理由。)
有许多发行版都创建了“真正自由”的 Linux 发行版。其中最受欢迎的一个叫做三階篇。它们基于 Ubuntu,并有一个彻底的 deblobbing 过程。当 FSF 想要分发 Live CD 时,他们会使用这个发行版。我上次听说 Stallman 使用的那个叫做新感觉;它基于 Ubuntu 和 Debian。 FSF 认可的任何内容将完全没有斑点。
答案2
Canonical 是否包含这些来保持对 Ubuntu 项目的控制?
我认为这显然是不正确的。硬件需要这些 blob,因此用户才是决定购买什么硬件的人,而不是 Canonical。如果用户选择只使用具有免费软件驱动程序的硬件,则不会使用任何 blob。
因此,这与 Canonical “保持控制” 无关,因为用户可以选择使用 Ubuntu 而不使用任何二进制文件。这意味着 Canonical 无论如何都无法在这一领域施加任何特定的控制。
提供这些 blob 只是为了方便已经选择非免费硬件的用户。
(披露:我在 Canonical 工作。这个答案反映了我的个人观点;我不能代表我的雇主就此事发表意见。)
答案3
查看维基百科:
在开源软件的背景下,二进制 blob 是一种闭源二进制驱动程序,没有公开可用的源代码。该术语通常指加载到开源操作系统内核中的闭源内核模块
这些驱动程序能做什么而免费软件做不到呢?理论上什么都做不了。但在实践中,硬件公司不想为他们的硬件发布开源驱动程序,因为这会向竞争对手透露硬件设计。例如,Nvidia 和 AMD 就不会发布开源驱动程序。你可能会说没问题,社区会这样做,我们有 nouveau 和 radeon 开源驱动程序。是的,但我们都知道这些驱动程序存在很多问题,例如电源管理和硬件加速等。为什么?因为只有硬件制造商知道他们硬件的正确设计,社区只能猜测硬件内部是如何工作的。所以问题是,在硬件规范封闭并保密之前,社区无法做出适当的开源替代方案。