第1章 Linux与开源软件<br> 1.1 自由软件和开源运动<br> 内容提要<br> 1.了解自由软件和开源软件。<br> 2.了解GNU和GNU项目。<br> 1.1.1 自由软件简介<br> 自由软件的鼻祖<br> Richard M. Stallman,自由软件的创始人,也是GNU Project和FSF的创始人。<br> Richard M. Stallman是GNU C编译器的首要作者,该编译器是一种可移植的优化编译器,它目前已经可以支持超过30种的体系结构和7种程序语言。除此之外,Stallman还编写过GDB、GNU Emacs等GNU应用程序。1991年,Stallman因为在20世纪70年代开发了第一个Emacs编辑器而获得了由计算机协会颁发的Grace Hopper奖。1990年,被授予麦克阿瑟基金奖,1996年获得瑞典皇家科学院名誉博士头衔。1998年,他与Linux的创始人Linus Torvalds一起获得了EFF授予的先锋奖。<br> 自由软件赋予使用者四种自由<br> 1.不论目的为何,有使用该软件的自由(自由之零)。<br> 2.有研究该软件如何运作的自由,并且可以改写该软件来符合使用者自身的需求(自由之一)。取得该软件之源码为达成此目的之前提。<br> 3.有重新散布该软件的自由,所以每个人都可以借由散布自由软件来敦亲睦邻(自由之二)。<br> 4.改善再利用该软件的自由,并且可以发表改写版供公众使用,如此一来,整个社群都可以受惠。如前项,取得该软件之源码为达成此目的之前提(自由之三)。<br> 1.1.2 FSF、GNU和GNU Project<br> 自由软件基金会<br> 自由软件基金会(Free Software Foundation,FSF)是倡导自由软件和开源软件的国际性非盈利组织,对于国际开源社区的形成和发展起到了重要的推动作用。自由软件基金会的网址为http://www.fsf.org/。<br> FSF是一个免税的为自由软件发展的慈善团体,它接受捐款,但是其大部分收入常常来自销售自由软件的拷贝和其他相关的服务。如今,FSF出售源码的CD-ROM、二进制代码的CD-ROM、精细打印的手册(均有再散布和修改的自由),以及豪华发行(为用户选择的平台制作完整的软件收藏)。<br> GNU<br> GNU是由“GNUs Not Unix”所递归定义出的首字母缩写语。GNU的首要目标是作为自由软件。即便GNU不比UNIX有技术优势,它却有一个允许用户合作的社会优点,以及一个与道德有关的优点,也就是尊重用户的自由。<br> GNU项目<br> GNU项目是FSF支持的最著名的开源软件项目,其“角马”形象和“Free as in Freedom”的哲学理念早已在国际开源社区中广为流传。<br> GNU项目(GNU Project)开始于1984年,旨在发展一个类似UNIX,且为自由软件的完整操作系统。GNU操作系统也包括非GNU软件程序,这些程序是由其他人或工程为了他们自己的目的而开发的。之所以能用它们是因为它们是自由软件。<br> GNU项目由很多独立的自由/开源软件项目组成。如今,这些GNU中的软件项目已经和Linux内核一起成为 GNU/Linux的组成部分。这体现了GNU项目对于整个开源软件和Linux操作系统的重要贡献。<br> GNU项目的官方站点为http://www.gnu.org/。<br> 1.1.3 自由软件协议<br> Copyleft<br> 在GNU工程中,通常使用Copyleft授权。Copyleft授权是使一个程序成为自由软件的通用方法,同时也使得这个程序的修改和扩展版本成为自由软件。<br> 私有软件开发者用版权(Copyright)剥夺了用户自由使用知识产品的权力,Copyleft是相对Copyright而言的,它保证了用户自由使用知识产品的权力。Copyleft是对Copyright的一种颠覆和扬弃。Copyleft克服了那种将知识产品完全看作私人物品的狭隘思维,它不仅契合知识本身要求创新和传播的本性,而且契合于人类追求自由的本性。<br> Copyleft是一个广义的概念,可以采用许多形式将其细化。在GNU工程中,具体的发布条款包含在GNU通用公共许可证、GNU宽通用公共许可证和GNU自由文档许可证里。<br> 关于Copyleft的官方解释见:http://www.gnu.org/copyleft/copyleft.html。<br> 关于自由软件与非自由软件的种类解释见:http://www.gnu.org/philosophy/ categories.html。<br> 关于更多的许可证解释见:http://www.gnu.org/licenses/license-list.html。<br> GPL<br> 最知名的自由软件协议是GPL(GNU General Public License,GNU通用公共许可证),它是自由软件基金会(FSF)制定的,详细内容参见http://www.gnu.org/licenses/gpl.html。<br> GPL的核心内容是:软件的源程序可以自由流通,软件公司不应该把源程序据为己有,或借发行编译过的软件赢利,软件公司要赚取的应该是系统集成和服务的费用。<br> 1.1.4 自由软件及其商业价值<br> 不要误解自由软件中的“自由”<br> 使用者可以付费取得GNU的软件,或者,使用者也可以免费取得这些软件。但是,不管使用者是如何取得这些软件的,他们必须永远有权复制或是改写这些软件,甚至贩售这些软件。<br> 自由软件哲学抵制一种特定的分布广泛的商业实践,但是它不是反商业的。自由软件并不是“非商业软件”。自由软件必须适用于商业用途。<br> 自由软件的商业开发模式已很常见,这样的自由商业软件相当重要。<br> Copyleft所主张的自由软件不是指免费软件,而是指给使用者自由运行、拷贝、学习、修改和改进软件的权利。具体地说就是:学习该程序是如何工作的、修改使之适合你的需要;散布此软件,使你和你的邻居、朋友共享它;改进程序,使你的改进公之于众,使整个社会受益等权利。Copyleft是消费者主权,它还有消费者权益保护、隐私权保护、知识共享、消费资本化等理念。这表现在软件质量与安全保护、消费者信息保护、用户选择权保护等等方面。<br> 在GNU工程中,通常使用Copyleft这类许可方式来保护每个使用者都享有这些软件自由,但是非Copyleft的自由软件也同时存在。<br> OSS完整的商业价值链<br> 开源软件发起公司:启动开源软件项目,他们为项目提供最初的资助,通常提供最基础的代码和开发人员。发起公司可凭借其领导地位的企业形象,更容易得到优质的客户,进而省去市场、销售等的巨大投入。同时他们可以为其他的软件服务公司提供技术服务。<br> 开源软件非营利核心开发团队:负责组织协调开源软件的开发,建设软件社区。他们通常由资深的软件专家组成。他们接受发起公司、捐赠人的资助。<br> 开源软件社区:由开源软件的开发人员、用户、志愿者在Internet上共同交流形成的社区。<br> 开源软件服务公司:利用开源软件,为最终用户提供服务。同时他们为软件进行测试,代表用户提出软件改进意见或者特性请求。他们是开源软件和最终用户之间的桥梁。任何公司都可以利用开源软件提供服务。<br> 开源软件最终用户:最终用户得到丰厚的回报。他们无需支付昂贵的License费用;他们选择服务有更大的自由度,而不必和某个软件供应商锁死;同时他们可以提出软件改进的新特性。<br> 志愿者:志愿者可从自由软件中学习到众多技能,同时他们参与软件的测试、捐献自己的代码。广大的志愿者是开源软件长久发展的重要基石。<br> 1.1.5 开源软件及其相关组织<br> 开源软件及其特点<br> 开放源化码软件(Open Source Software, OSS)简称开源软件,是指一种公开源代码的软件。用户可以修改、使用、复制、分发软件的源代码。<br> 开源软件的特点:<br> 开源软件一般是免费发布的,你可以在Internet上自由下载,用户无需缴纳License费用。<br> 开源软件由一个核心组织领导,通常由一个很大的社区在Internet上协作开发完成。这种“集市”式的开发模式使其通常有着比封闭源代码软件更高的质量。<br> 用户可以得到软件的源代码,更容易根据自己的特殊要求进行定制。<br> 开源软件的生命周期不依附于某个公司,因此有更强的生命力。<br> OSI、FSG和OSDL<br> 开放源代码促进会(Open Source Initiative,OSI)是发起、认证和保护开源软件的非营利性组织。开源代码的官方网站是:http://www.opensource.org/。<br> 自由标准组(Free Standards Group,FSG)是致力于制定开源软件工业标准的非盈利的国际开源组织。其下设立了多个标准工作组,每个工作组负责特定标准的制定。最著名的是LSB(Linux Standard Base)。FSG的官方站点是http://www.freestandards.org/。<br> 开源发展实验室(Open Source Development Labs,OSDL)是由大型IT企业支持创建的国际非盈利组织。OSDL一直致力于推广开源软件在行业中的典型应用。OSDL的官方站点是http://www.osdl.org/。<br> 1.1.6 自由软件v.s开放源码<br> Richard Stallman这样论述Free Software(自由软件)与Open Source(开放源码)的区别:<br> 自由软件和开放源码是基于两种不同哲学理念而发起的运动,自由软件的目的在于自由的“分享”与“协作”。我认为non-free(非自由)软件是反社会的,因为它们的理念践踏了用户的自由,所以我提倡发展自由软件从而摆脱那些束缚。<br> 开放源码运动通常旨在提高技术等级,是一种技术等级发展模式,其所带来的价值跟微软所提倡的一样,都是狭窄的实际价值(narrowly practical values)。<br> 自由软件与开放源码目前都是软件许可的标准,虽然许可效果都差不多,但两个标准的注解区别却非常大,这之间最大的区别是哲学理念上的区别。<br> 为什么哲学理念会产生影响?因为人们不重视他们的自由必将失去自由,如果你给人们自由而不告诉他们重视自由,他们所拥有的自由必定不长久。所以仅仅传播自由软件远不足够,还要教导人们去渴求自由,这样或许才能让我们解决现今看来无法解决的问题。<br> 1.2 Linux操作系统简介<br> 内容提要<br> 1.了解Linux的历史和现状。<br> 2.掌握Linux系统的特点。<br> 3.掌握Linux系统的组成。<br> 4.理解Linux的内核版本和发行版本。<br> 5.了解Linux的网络应用。<br> 1.2.1 Linux操作系统及其历史<br> 什么是Linux<br> Linux是一个功能强大的操作系统,同时它是一个自由软件,是免费的、开放源代码的,编制它的目的是建立不受任何商品化软件版权制约的、全世界都能自由使用的UNIX兼容产品。<br> 各种使用Linux作为内核的GNU操作系统正被广泛地使用着。虽然这些系统通常被称作为“Linux”,但是它们应该更精确地被称为GNU/Linux系统。<br> Linux的历史<br> Linux最初是由芬兰赫尔辛基大学计算机系大学生Linus Torvalds在从1990年底到1991年的几个月中为了他自己的操作系统课程和后来的上网用途而陆续编写的,在他自己买的Intel 386 PC机上,利用Tanenbaum教授自行设计的微型UNIX操作系统Minix作为开发平台。Linus说,刚开始的时候他根本没有想到要编写一个操作系统的内核,更是绝对没有想到这一举动会在计算机界产生如此重大的影响。最开始是一个进程切换器,然后是为他自己上网需要而自行编写的终端仿真程序,再后来是为他从网上下载文件的需要而自行编写的硬盘驱动程序和文件系统,这时他发现他已经实现了一个几乎完整的操作系统内核。
展开