Linux 及其将来

作者:Husain Al-Mohssen  译者:Sundayy

 

  因特网近十年来的迅速发展给自由软件的开发带来深远意义的影响.一夜之间,因为是自由软件,许多人能够站在一起合作开发大型的软件项目,而不是限制在一个大公司或是一所大学里.通过邮件列表和FTP站点,人们能够在业余时间编制他们从来不敢想象的大型程序.从根本上说,因特网技术是一门生产技术,一门实现软件产品大规模低成本生产的技术,正如纺织机械的出现带来衣物的革命一般.

  时至今日,自由软件已经由当初仅仅是高质量内核(Linux及其它)以及寥寥几个应用程序发展到完整的系统.事实上,我们不仅仅拥有实现许多商业软件功能的自由软件,在许多场合,我们拥有不止一个功能类似自由软件项目(也就是,它们仅仅是角度不同或是观点不一).这种免费,完全而且质量过硬的系统正引起许多商业公司的关注.不仅仅Linux和其它自由软件有着日益壮大的市场,而且与他们自己的产品发生直接的对抗,甚至在许多方面还稳站上风.这些公司需要销售基于这一平台的软件,更需要摸索出与这一新生软件开发方式相抗衡的道路.

 

未来Linux所必须面对的潜在问题

  Linux及其它自由软件应用范围的不断扩展,促成商业,非商业开发队伍的不断壮大.这就导致了人力物力投入的过增长.在这场巨大变革中,我意识到一系列阻碍Linux及其它自由软件发展的因数.下面我将一一道出:

1. 偏见

  在乐意采用自由软件的人与倾向于使用商业软件的人之间似乎存在某种特定的偏见.这点,根据我的判断,是相当危险的,因为商业软件是软件创新的最佳来源,因为许多商界人士可致力于其发展.软件不会一直放任自流,因为商家必须创造价值,收回成本.同样,有时一些商家变商业软件为自由软件时会损失惨重,比方说,一个驱动程序的研发费用可能高达上百万,而且可以向其竞争对手公布某些硬件上的机密.当商业软件变得不再商业时,专利拥有者不再进行竞争,软件的质量便降低了.如果自由软件和商业软件能够找到一条共同生存的道路,那将意味着我们可以分享两个不同世界中最美妙的部分.一种类似的偏见是对自由软件可以以不同许可的形式出现,这也是要不得的,因为自由软件的最大特征就是可以自由地选择.

2.停滞

  Linux(或者泛指Unix)确实是针对特定的时间特定的用户度身定造,然而用户和应用的需求日新月异,因而也要求其持续变化.在应付这种不断变化的局面上,Linux比其它UNIX系统先进得多,例如,FHS(文件层次标准)就比许多商业UNIX系统更贴切用户的需求.在我看来,这点还存在极大的改善的空间.在这点上很重要一点是,强调改进,标准的建立是为其提供通用的工作平台,而不是成为其绊脚石.

3.故障的过分简单化

  受Linux应用简易化潮流的推动,大量应用程序仿效其它操作系统实现计算机管理的自动化,用户无需知道事实上发生什么而只要观察.这种缺乏系统不同部分间的理解和区别阻止用户以新的富有创造性的途径应用各种程序.事实上,这种灵活性正是Linux的最大优点之一.当然.这并不意味着不需要图形化界面—恰恰相反,我想这是我们不惜一切代价希望获得的—当然这仅仅意味着其应该能获得.我们应该好好反省一下,是不是典型的Linux系统就应该是将所有程序集合,同时留有余地以使不同部件能在以后很好地加进来.

 

Linux可以获得持续成功的因素

  我感觉到太多的因素可使自由软件广受欢迎.这许多因素只是人们已经做了或正在做的事情的延伸.

1. 标准化

  这是通过Internet开发软件获得成功最关键的因素,正因为它使得许多人合作开发的程序才能运行在统一的平台上.自由软件一直有着标准化的传统.比方说,Linux最初是作为POSIX兼容的操作系统出现的.此外还有许多自由的操作,NFS(用于网络互连),X(用于窗口),OpenGL(用于3D图像)以及其它. 依照这一传统,出现像 " 需要RedHat Linux"一类文章是很不应该的 (尽管我认为RedHat是最好的发行版本这一 ). 软件和硬件的开放标准,必须及时的发布和维护. 我建议必须建立一个标准 ("Linux 2000"或许是很好的名字 ),定义确定的是那么给...下定义每件事一种硬件或者软件开发者要需要担保他的规划或者这驾驶员要对任何系统那样是意见起作用。 这个标准化不应该唯一的包括东西喜欢 FHS而且标准插件要是需要。 实现那个燃料分配器和制造者要急着要开启标准化是很重要的,如果他们是不公布被这自由软件社团维护的进行与操作,并且假使那样,这控制意志不是被支配于这社团。

2. 组件化

  组件化旨在以功能独立的组件构造整个系统,这样做的好处在于可以自由地增加/删除组件,而不必理会其是否与其它组件相关联.这可以通过以下途径实现:强调不同的组件如何集成到系统中的标准化工作;将有关应用特性的配置文件与非应用相关数据区分开来,这样类似的应用软件或者服务可以应用相同的信息.组件化的最终目标是构建自由软件的所有主体组件.在谈到自由软件时, Richard Stallman提倡"免费的演说,但不是免费的酒会"思想,作为这一观点的延伸,我提倡将自由软件看作自由空气,它无处不在,人们无所不需.

一个例子

  为了证明上一节中我所表述的观点可以付诸实用,我想举个例子.我打算以上述观点构建我的Linux桌面系统.我尽量使我的系统标准化,但也同时是个不折不扣看似奢侈的完整的桌面系统(其包括Man页面,X窗口,KDE桌面,大量的编程语言以及其它许多东西).

1. 我是如何实现的?

  在我的系统中,我采用超过500MB的分区作为根分区,而另一个50MB分区作为交换分区.它以一个临时的虚拟RAM磁盘启动,然后通过回馈设备(/dev/loop0)安装根文件系统和交换文件系统.这种安装方法的好处之一--在不同的计算机上安装非常容易,因为这样等于是往新机器上拷贝一个目录. 根磁盘是可以自启动的,因为其包含来自/bin,/sbin,以及/lib的某些文件,同时也在/etc下创建了某些目录和文件.至此系统处于启动过程中,我必须编译系统的其它组件.第一步我必须拥有编译器,这我就拷贝了gcc 2.7.7.3,编译并安装了egcs 1.1.1.紧接着许多其它组件就可以依次编译和安装了,先是一些基本的组件(X窗口,一些通用的库文件和工具软件),然后是应用软件(KDE桌面,xv编辑器,GNUStep,Kaffe,等等).

2. 系统描述

  在检验文件系统结构的过程中,你可以清楚地看到我在其中贯彻了上一章中提到的观点.尽管其与FHS2.0几乎完全兼容,大量的特性使其迥然不同.首先,/usr中文件的层次要求分外严格. /usr下只有三种主要类型的文件.第一种是二进制文件,这同样存在任何现代UNIX系统中(例如,head,telnet,ftp,等等).第二种是程序或者库文件,它们或是其它许多程序所必须,或是为其正确安装提供特别的文件存取.这类文件包括/usr/lib,/usr/local/lib下许多库文件,/usr/X11R6下X窗口文件.第三种结构独立,共享的数据文件,正如FHS推荐的那样它们被放置在/usr/share下.我的系统重点在于共享目录,它必须是同一系统中不同应用程序共享数据的一个场所.因此,许多文件将被符号链接为程序所在目录的数据.

  系统另外一大特征是/etc结构的改进.与当前所有文件只有一层目录的习惯不同,新系统中增加了许多路径.这一措施有效减少了文件簇的开销同时使得系统结构更加清晰.例如,/etc/man.conf现在存在于/etc/utils/man/man.conf,而/etc/rc.d存在于/etc/sys/init/rc.d,而符号链接用于保持与旧体制的兼容.正如FHS要求的那样,/opt下程序的配置文件可存在于/etc/opt,但是有一点其下子目录必须符合上述原则.根据我的判断,这些有关/etc层次的细微修改能够很容易地适应Linux注册系统的要求.

  在我的系统中,许多应用程序都存放在/opt路径或其下一个子路径中.譬如,Kafee(免费的Java VM)安装在/opt/languaes/kafee路径下,而KDE安装在/opt/windows/kde路径下.基于这种想法,一个包中的所有文件都存储在/opt下专门为其指定的一个目录中,而许多定义明确的指针将建立该应用程序包与系统其它部分联系在一块,包括/opt/bin,/usr/share的子目录,以及其它许多目录.

  虽然它看起来与 FHS相似,但两者目的迥然不同。 在我的系统中,每个包必须包含一种符号链接置于 /opt/bin中,链接所有公用的二进制代码,以便它以命令行的形式正常工作。 同样地,适当的符号链接必须设置在 /usr/share/man中以使包含帮助页面的包文件正常运作。同样的原则应用在其它许多的其它目录上,包括配置文件/etc/opt以及调用initd服务的包 /etc/sys/init/rc.d/init.d.

  例图形象地展现了不同包之间的接口以及其具体细节.有必要阐述一下不厌其烦地引入这一方式的原因,就是限制不同包之间联系的指针的数量并使其尽量的简单,应用程序和服务都一视同仁,强调系统的中断,是为了更好的定义组件,使其独立,可以自由增减,甚至用其它组件替代.

  最后,系统的一个新特征是系统新增加了/lib/vendor目录.这是存放各种厂商的内核模块以及其它驱动程序.其目的在于提供不同厂商一个存放驱动程序的标准场所,即使其以二进制格式出现.其在硬件性能优势不明显的情况下,鼓励各个厂商发布基于Linux的驱动程序,最终达到抛弃驱动程序源码的目的.纵使程序源码不发布,更新一个现有驱动程序.

 

结论

  过去数年来,Linux及相关软件稳健有序地发展壮大,成为充满活力的系统.这当中,标准化工作扮演了不可缺或的角色.而且随着Linux的日益流行,其标准化过程更加重要.

  我试图阐明维护Linux以及其它自由软件持续成功的绝对必要的几点.最重要一点,尽管Linux已经非常完善,但远不到完美的境界,必须保持持续不断的演化.没有东西可以一成不变,唯一的根本的目标就是速度,朴实,和高雅.

  另外一点我想表明的是Linux的标准应该的商业公司开放,并且尽可能使Linux系统在安装应用软件,添加服务程序,安装驱动程序方面做得尽善尽美,即使它们不是免费的.这样将有助于保护一些独立的小公司,免得它们给垄断系统的大公司吃掉,因为它们可以获得所需组件的替代品或是一些免费版本.在构造我自己的系统过程中,我极力体会如果所有这些想法付诸实施,这个系统会是什么个样子.不管Linux以及Linux的标准是否会演化到与我的系统几分相似,我衷心希望我在本文中提出的能为广大Linux社团考虑和接纳.

 

资源

  关于操作系统控件化的工作与计算机的研究联系非常紧密,Eric Green在 http://www.linux-hw.com/~eric/commodity.html 中对二者有非常绝妙的讨论.

版权所有 © 1999 NJLUG
出版于第47期《Linux公报》1999年12月 中文版第十三期