Linux会比BSD更受到人们的欢迎的原因
2009-10-30 22:11:33 阿炯

Linux是出现约在BSD官司缠身、以及Internet开始风行之际,Linux的开发者及爱好者正好能透过Internet实时得发布新闻、发表新点子、提问讨论、递送程序代码及进行错误回报,这种藉由Internet的分布式合作方式带给Linux惊人的活力和无限的生命力,而经由Internet所带来的这种活力和生命力正是Linux长久以来能和BSD分庭抗礼的主要原因之一。

Linus Torvalds的管理哲学:
也许Linus并不是像BillJoy(BSD的开创者)那样是个天纵英才的程序设计师,但他无疑的是超一流的领导者。要知道,能参与 LinuxKernel开发的往往都不是什么泛泛之辈,Linus如何在这些天资聪颖的计算机怪才之间折冲樽俎是非常耐人寻味的。

硬件支持:
在Linux现身之时,刚好是人们开始买得起个人计算机时。但糟糕的是,当时的BSD对于当时的个人计算机所使用的80386硬件的支持度并不好,而一般人应该不太会为了玩BSD而特地购买高价的服务器设备,因此人们,尤其是穷苦的大学生,若要玩Unix时只有Linux可供选择,相对来说BSD的吸引力当然就大不如Linux了。不过说起硬件支持,其实Linux和BSD也只是难兄难弟,Linux是较佳,但有些太新太特殊及特定制造商的硬件 Linux还是无法支持!

GNU的大力支援:
GNU提供了一个操作系统所需的各式各样必要组件,但最重要的组件-Kernel却迟迟没有着落。原本计划好要成为GNU官方Kernel的HURD的发展一直很不顺利,而Linux的出现就刚好出现填补了GNU这个拼图上最重要的一个大洞。另外,虽然GNU的软件质量是毋庸置疑,但BSD却希望他们的开发团队所维护的核心工具都能以BSDL发行,所以因为授权兼容性的关系,很多GNU软件就被BSD的人们摒除在外了。因此喜爱GNU软件的人们除了 Linux之外就似乎别无选择了。Linux和GNU是分不开的:没有GNU,那么没有任何工具程序的Linux根本无用武之地;而没了Linux,GNU软件就少了一个可以尽情发挥的舞台了。因此个人可以接受人们说Linux的全名应该是GNU/Linux。若我们仔细想想Linux的发展成长过程,个人认为如此称呼并不为过。

而Linus也说过其实他并不是很反对GNU/Linux这个名字,饮水思源,毕竟Linux的确是藉助了GNU太多的核心工具才有今天的成就。若当时没有GNU计划,那么Linux根本不会出现在这个世界上:当初Linux0.0.1发表时,Linus就只完成了以下功能:可用GCC编译,然后它能做的也只有执行BASH这个Shell而已,而这2个工具恰巧都是GNU的作品。我们可以看到,Linux刚开始就和GNU结下不解之缘了。

教堂与市集:
BSD走的是教堂式的学院派路线,而Linux则是代表了市集式的骇客精神。

多样的版本:
Linux的松散结构也反应在Linux的发行版上。因为Linux并没有什么官方发行版,所以任何人只要有兴趣有能力,都可以自行发行Linux,这使得我们能轻易得在Internet上找到超过200种以上的Linux发行版,而实际数字恐怕远不止如此。

Linux与BSD 的不同之处在哪里:

1、许可证

正如我们所知道的,Linux 操作系统是基于 GPL 许可证授权下的,该许可证可防止开源软件被转换为封闭源代码软件及确保源代码的可用性,GPL 许可证的目的就是防止二进制包成为唯一的软件发行源。

而 BSD 许可证的限制则要少得多,它甚至允许二进制包成为唯一的发行源。这就是核心差异,可以这样理解:GPL 许可证让您有权拥有任何你想要使用该软件的方法,但你必须确保提供源代码给下一个使用它的人(包括你对它的改变部分)。而 BSD 许可证并不是要求你必须那么做( 译者注:这里分别维基百科上对 BSD 及 GPL 许可证的解释)。

2、代码控制

BSD 的代码不是被控制在任何一个人手里,而 Linux 的内核基本上被 Linus Torvalds (Linux 创始人) 所控制,BSD 并没有单一的人来说什么可以或什么不可以进入代码。相反,BSD 通过一个核心小组 "Core Team" 来管理该项目,这个核心小组比非核心小组有更多的发言权来指导 BSD 社区的发展方向(译者注:而据我所知,FreeBSDD 核心小组的成员会每两年选举一次。)

3、内核 vs 操作系统

BSD 项目维护的是整个操作系统,而 Linux 则只是主要集中在单一的内核上面。这点确实是需要注意的,虽然这两个系统上都运行着许多相同的软件。

4、UNIX-Like

这里有一个关于 BSD vs Linux 的古老说法:"BSD is what you get when a bunch of UNIX hackers sit down to try to port a UNIX system to the PC. Linux is what you get when a bunch of PC hackers sit down and try to write a UNIX system for the PC.",这里表达了很多。你会发现 BSD 系统更为类似于 UNIX ,而事实上它就是传统UNIX的直接衍生品,而Linux则是一个松散的基于 UNIX 衍生品 (Minix) 而新创建的一个 OS 。

5、基本系统

这是一个关于 BSD 与 Linux 之间差异的至关重要的理念。 Linux 的 "基本系统" 是并不真正存在的,许多人会说,Linux 的基本系统就是内核,但问题是如果没有任何可用的应用程序的话,那么这个内核是完全没有价值的。而另一方面,BSD 则有一个包括众多工具的基本系统,甚至 libc 也是基本系统的一部分。因为这些组件都被作为一个基本系统,所以它们都是被一起开发和打包的,许多事实表明这样更能创建出一个更具凝聚力的整体。

6、更多来自于源代码

由于 BSD 的开发方式(使用 Ports 系统 ) 的关系,所以用户们更多的是从源代码来安装程序,而不是预先编译好的二进制包。这是一个优势还是劣势?这取决于不同的用户。如果你更多的想从友好或易用性方面考虑的话,看到这一点后你也许会有放弃的念头,对于新用户更是如此。但一些新的用户也有想要从源代码编译安装,这可能比较累人。但是,从源码安装也有一定的优势,比如(库版本控制,通过特殊的包来构建系统等等)。

7、升级

由于 BSD 的开发方式的原因,你可以利用一条指令就可以升级你的基本系统到最新版本(Freebsd 下是用 freebsd-update fetch update 命令)。或者你也可以下载整个源代码树,然后通过编译来升级。而在 Linux 中,你也可以通过内置的包管理系统来升级系统。前者 (BSD) 仅更新基本系统,而后者 (Linux) 则会升级整个系统。不过请记住,BSD 中升级到最新的基本系统并不意味着所有的附加软件包也将会被更新,而 Linux 升级的时候,所有的软件包都会被升级。这是否意味着 Linux 处理得更好吗?在我看未必。我经常会看到 Linux 在升级时出现严重错误,从而需要重新安装整个系统,但这个现象基本不太可能发生在 BSD 的升级过程中。

8、前沿技术

基本上你不太可能会看到 BSD 系统运行着任何非常前沿版本的软件。而在 Linux 这一方面,大量的发行版会分发前沿版本的软件包。如果你是一个 "If it isn't broken, don't fix it." 这样观点的持有者的话,你将会是 BSD 的超级粉丝。但如果你很新潮,想要体验一切最新的东西,那么你最好尽快迁移到 Linux 。

9、硬件支持

你会发现,通常情况下 Linux 的硬件支持要比 BSD 更早一些。但这并不是说 BSD 没有像 Linux 那样支持足够多的硬件,它只是意味着在某些情况下 Linux 会在 BSD 之前先支持某些硬件。因此如果你想要最新的、最好的显卡的话,基本上不用考虑 BSD 了。如果你有一个包含了最新无线芯片的新型笔记本的话,建议你选择 Linux,运气好的话也许它会支持。



该文章最后由 阿炯 于 2020-08-24 10:49:09 更新,目前是第 2 版。