《鸟哥的Linux 私房菜 基础学习篇(第三版)》——第1章 Linux是什么 1.1Linux是什么...

本节书摘来自异步社区《鸟哥的Linux 私房菜 基础学习篇(第三版)》一书中的第1章,第1.1节,作者:鸟哥著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第1章 Linux是什么

众所皆知,Linux的内核原型是1991年由托瓦兹(Linus Torvalds)写出来的,但是托瓦兹为何可以写出Linux这个操作系统?为什么他要选择386的计算b机来开发?为什么Linux的开发可以这么迅速?又为什么Linux是免费的?以及目前为何有这么多的Linux版本(distributions)呢?了解这些后,我们才能够知道为何Linux可以免除专利软件之争,并且了解到Linux为何可以同时在个人计算机与大型主机上面大放光彩。所以,在进入Linux的世界之前,就让我们来谈一谈这些有趣的历史故事吧!

1.1 Linux是什么

鸟哥的Linux 私房菜 基础学习篇(第三版)
我们知道Linux是怎么在计算机上面运行的,所以说Linux就是一组软件。问题是这个软件是操作系统还是应用程序?并且Linux可以在哪些种类的计算机上面运行?而Linux源自哪里?为什么Linux还不用钱?这些我们都得来谈一谈先!

1.1.1 Linux是什么
我们在第0章计算机概论里面有提到过整个计算机系统的概念,计算机是由一堆硬件所组成的,为了更有效地控制这些硬件资源,于是乎就有操作系统的产生了。操作系统除了有效地控制这些硬件资源的分配,并提供计算机运行所需要的功能(如网络功能)之外,为了要提供程序员更容易开发软件的环境,所以操作系统也会提供一整组系统调用接口来给软件程序员开发用。

知道为什么要讲这些了吗?因为Linux就是一套操作系统。如图1-1所示,Linux就是内核与系统调用接口那两层。至于应用程序算不算Linux呢?当然不算啦!这点要特别注意。

screenshot

由上图中我们可以看到其实内核与硬件的关系非常紧密。早期的Linux是针对386来开发的,由于Linux只是一套操作系统并不含有其他的应用程序,因此很多工程师在下载了Linux内核并且实际安装之后,就只能看着计算机开始运行了!接下来这些高级工程师为了自己的需求,再在Linux上面安装他们所需要的软件。

Torvalds先生在写出Linux的时候,其实该内核仅能“驱动386所有的硬件”而已,即所谓的“让386计算机开始运行,并且等待用户指令输入”而已,事实上,当时能够在Linux上面跑的软件还很少呢!
由于不同的硬件的功能函数并不相同,例如IBM的Power CPU与Intel的x86架构就是不一样!所以同一套操作系统是无法在不同的硬件平台上面运行。举例来说,如果你想要让x86上面跑的那套操作系统也能够在Power CPU上运行时,就得要将该操作系统进行修改才行。如果能够参考硬件的功能函数并修改你的操作系统程序代码,那经过改版后的操作系统就能够在另一个硬件平台上面运行了。这个操作我们通常就称为“软件移植”了!

例题

请问Windows操作系统能否在苹果公司的麦金塔计算机(MAC)上面安装与运行?

答:由上面的说明中,我们知道硬件是由内核来控制的,而每种操作系统都有它自己的内核。2006年以前的苹果计算机公司是请IBM公司帮忙开发硬件(所谓的Power CPU),而苹果计算机公司则在该硬件架构上开发自家的操作系统(就是俗称的麦金塔,MAC是也)。Windows则是开发在x86架构上的操作系统之一,因此Windows是没有办法安装到MAC计算机硬件上面的。

不过,在2006年以后,苹果计算机专门请Intel设计其硬件架构,也即其硬件架构已经转为x86系统,因此在2006年以后的苹果计算机若使用x86架构时,其硬件则“可能”可以安装Windows操作系统了。不过,你可能需要自己想些方式来处理该硬件的兼容性。

Windows操作系统本来就是针对个人计算机x86架构的硬件去设计的,所以它当然只能在x86的个人计算机上面运作,在不同的平台当然就无法运行了。也就是说,每种操作系统都是在它专门的机器上面运行的。这点得要先了解。不过,Linux由于是Open Source(开放源代码)的操作系统,所以它的程序代码可以被修改成适合在各种机器上面运行的,也就是说,Linux是具有“可移植性”,这可是很重要的一个功能喔!
Linux提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭Unix良好的传统而来的,所以相当稳定并且功能强大。此外,由于这个优良的架构可以在目前的个人计算机(x86系统)上面跑,所以很多的软件开发者渐渐将他们的工作心血移转到这个架构上面,所以Linux操作系统也有很多的应用软件。

虽然Linux仅是其内核与内核提供的工具,不过由于内核、内核工具与这些软件开发者提供的软件的整合,使得Linux成为一个更完整的、功能强大的操作系统。稍微了解了Linux是何物之后,接下来,我们要谈一谈为什么说Linux是很稳定的操作系统,以及它是如何来的。

1.1.2 Linux之前UNIX的历史
早在Linux出现之前的20年(大约在20世纪70年代),就有一个相当稳定而成熟的操作系统存在了。那就是Linux的老大哥“UNIX”。怎么这么说呢?这两个操作系统有什么关系呀?这里就介绍一下。

众所皆知,Linux的内核是由Linus Torvalds在1991年的时候给开发出来的,并且放到网络上提供大家下载,后来大家觉得它(Linux Kernel)相当小而精巧,所以慢慢就有相当多的朋友投入其研究领域里面!但是为什么它这么棒呢?又为什么大家都可以免费下载它呢?下面说明其中的缘由。

◆ 1969年以前:一个伟大的梦想——Bell,MIT与GE的“Multics”系统

● 早期的计算机并不像现在的个人计算机一样普遍,它可不是一般人碰得起的,除非是军事或者是高科技用途,或者是学术院校的学术研究,否则真的很难接触到。非但如此,早期的计算机架构还很难使用,除了指令周期并不快之外,操作接口也很麻烦。因为那个时候的输入设备只有卡片阅读机,输出设备只有打印机,用户也无法与操作系统互动(多道批处理操作系统)。

● 在那个时候,编写程序是件非常麻烦的事情,因为程序员必须将程序相关的信息在读卡纸上面打洞,然后再将读卡纸插入卡片阅读机来将信息读入主机中运算。光是这样就很麻烦了,如果程序有个小地方写错,光是重新打卡就很惨,加上主机少,用户众多,仅等待就耗去很多的时间。

● 在那之后,由于硬件与操作系统的改良,使得后来可以使用键盘来进行信息的输入。不过,在一间学校里面,主机毕竟可能只有一台,如果多人等待使用,那怎么办?大家还是得要等待。好在20世纪60年代初期麻省理工学院(MIT)开发了分时操作系统(Compatible Time-Sharing System, CTSS),它可以让大型主机通过提供多个终端机(Terminal)以连接进入主机,从而利用主机的资源进行运算工作。其架构如图1-2所示。

screenshot

这个兼容分时系统可以说是近代操作系统的鼻祖呢!它可以让多个用户在某一段时间内分别使用CPU的资源,感觉上你会觉得大家是同时使用该主机的资源。事实上,是CPU在每个用户的工作之间进行切换,在当时,这可是个划时代的技术!
● 如此一来,无论主机在哪里,只要在终端机前进行输入输出的作业,就可利用主机提供的功能了。不过,需要注意的是,此时终端机只具有输入/输出的功能,本身完全不具有任何运算或软件安装的能力。而且,比较先进的主机也只能提供30台左右的终端机而已。

● 为了加强大型主机的功能,以便让主机的资源可以提供更多用户来利用,所以在1965年前后,由贝尔实验室(Bell)、麻省理工学院(MIT)及通用电气公司(GE)共同发起了Multics的项目,Multics项目的目的是想要让大型主机可以同时提供300台以上的终端机连接使用的目标。不过,到了1969年前后,项目进度落后,资金也短缺,所以该项目虽然继续在研究,但贝尔实验室还是退出了该项目的研究工作。(注:Multics有复杂、多数的意思。)

。Multics项目虽然后来没有受到很大的重视,但是他培养出来的人才是相当优秀的。
◆ 1969年:Ken Thompson的小型File Server System

● 在认为Multics项目不可能成功之后,贝尔实验室就退出该项目。不过,原本参与Multics项目的人员中,已经从该项目当中获得一些想法,Ken Thompson就是其中一位。

● Thompson因为自己的需要,希望开发一个小的操作系统以提供自己的需求。在开发时,有一部DEC(Digital Equipment Corporation)公司推出的PDP-7刚好没人使用,于是他就准备针对这部主机进行操作系统内核程序的编写。本来Thompson应该是没时间的(有家有小孩的宿命?),凑巧的是,在1969年8月份左右,刚好Thompson的妻儿探亲去了,于是他有了额外的一个月的时间好好待在家将一些构想实现出来!

● 经过4个星期的奋斗,他终于以汇编语言(Assembler)写出了一组内核程序,同时包括一些内核工具程序,以及一个小的文件系统。该系统就是UNIX的原型。当时Thompson将Multics庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为Unics(当时尚未有UNIX的名称)。

● Thompson的这个文件系统有两个重要的概念,分别是。

■ 所有的程序或系统装置都是文件。

■ 不管构建编辑器还是附属文件,所写的程序只有一个目的,就是要有效地完成目标。

● 这些概念在后来对于Linux的开发有相当重要的影响。

套一句常听到的广告词:“科技始终来自于人性”,当初Thompson会写这套UNIX内核程序,却只是想要移植一套名为“太空旅游”的游戏呢!
◆ 1973年:UNIX正式诞生,Ritchie等人以C语言写出第一个正式UNIX内核

● 由于Thompson写的那个操作系统实在太好用了,所以在贝尔实验室内部广为流传,并且多次经过改版。但是因为Unics本来是以汇编语言写成的,而如第0章计算机概论中谈到的,汇编语言具有专一性,加上当时的计算机机器架构都不太相同,所以每次安装到不同的机器都得要重新编写汇编语言,真不方便!

● 后来Thompson与Ritchie合作想将Unics改以更高级的程序语言来编写。当时现成的高级程序语言有B语言。但是由B语言所编译出来的内核性能不是很好。后来Dennis Ritchie将B语言重新改写成C语言,再以C语言重新改写与编译Unics的内核,最后发行出UNIX的正式版本!

这群高级黑客实在很厉害!因为自己的需求来开发出这么多好用的工具!C程序语言开发成功后,甚至一直沿用至今呢!你说厉不厉害?这个故事也告诉我们,不要小看自己的潜能!你想做的,但是现实生活中没有的,就动手自己搞一个来玩吧!
● 由于贝尔实验室是隶属于美国电信大厂AT&T公司的,只是AT&T当时忙于其他商业活动,对于UNIX并不支持也不排斥。此外,UNIX在这个时期的开发者都是贝尔实验室的工程师,这些工程师对于程序相当有研究,所以,UNIX在此时不容易被一般人所接受。不过对于学术界的学者来说,这个UNIX真是学者们进行研究的福音!因为程序代码可改写并且可作为学术研究之用。

● 需要特别强调的是,由于UNIX是以较高级的C语言编写的,相对于汇编语言需要与硬件有密切的配合,高级的C语言与硬件的相关性就没有这么大了!所以,这个改变也使得UNIX很容易被移植到不同的机器上。

◆ 1977年:重要的UNIX分支——BSD诞生

● 虽然贝尔实验室属于AT&T公司,但是AT&T此时对于UNIX是采取较开放的态度,此外,UNIX是以高级的C语言写成的,理论上是具有可移植性,即只要取得UNIX的源码,并且针对大型主机的特性加以修订原有的源码(Source Code),就可能将UNIX移植到另一台不同的主机上。所以在1973年以后,UNIX便得以与学术界合作开发!最重要的接触就是与加州柏克莱(Berkeley)大学的合作了。

● 柏克莱大学的Bill Joy在取得了UNIX的内核源码后,着手修改成适合自己机器的版本,并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distribution (BSD)。这个BSD是UNIX很重要的一个分支,Bill Joy也是Sun这家公司的创办者。Sun公司即是以BSD开发的内核进行自己的商业UNIX版本的开发的。(后来可以安装在x86硬件架构上面FreeBSD即是BSD改版而来!)

◆ 1979年:重要的System V架构与版权声明

● 由于UNIX的高度可移植性与强大的性能,加上当时并没有版权的纠纷,所以让很多商业公司开始了UNIX操作系统的开发,例如AT&T自家的System V、IBM的AIX以及HP与DEC等公司,都有推出自家的主机搭配自己的UNIX操作系统。

● 但是,如同我们前面提到的,操作系统的内核必须要跟硬件配合,以提供及控制硬件的资源进行良好的工作。而在早期每一家生产计算机硬件的公司还没有“协议”的概念,所以每一台计算机公司出产的硬件自然就不相同了。因此他们必须要为自己的计算机硬件开发合适的UNIX系统。例如在学术机构相当有名的Sun、Cray与HP就是这一种情况。他们开发出来的UNIX操作系统以及内含的相关软件并没有办法在其他的硬件架构下工作的。另外,由于没有厂商针对个人计算机设计UNIX系统,因此,在早期并没有支持个人计算机的UNIX操作系统的出现。

如同兼容分时系统的功能一般,UNIX强调的是多用户、多任务的环境。但早期的286个人计算机架构下的CPU是没有能力达到多任务的作业,因此,并没有人对移植UNIX到x86的计算机上有兴趣。
● 每一家公司自己出品的UNIX虽然在架构上大同小异,但是却仅能支持自身的硬件,所以,早先的UNIX只能与服务器(Server)或者是大型工作站(Workstation)划上等号!但到了1979年时,AT&T推出System V第七版UNIX后,这个情况就有点改善了。这一版最重要的特色是可以支持x86架构的个人计算机系统,也就是说System V可以在个人计算机上面安装与运行了。

● 不过因为AT&T由于商业的考虑,以及在当时现实环境下的思考,于是想将UNIX的版权收回去。因此,AT&T在1979年发行的第七版UNIX中,特别提到了“不可对学生提供源码”的严格限制。同时,也造成UNIX业界之间的紧张气氛,并且也引发了很多的商业纠纷。

目前被称为纯种的UNIX指的就是System V以及BSD这两套。
◆ 1984年之一:x86架构的Minix操作系统诞生

● 关于1979年的版权声明中,影响最大的当然就是学校里教导UNIX内核源码相关学问的教授了。想一想,如果没有内核源码,那么如何教导学生认识UNIX呢?这问题对于AndrewTanenbaum(谭宁邦)教授来说,实在是很伤脑筋的。不过,学校的课程还是得继续,那怎么办?

● 既然1979年的UNIX第七版可以在Intel的x86架构上面进行移植,那么是否意味着可以将UNIX改写并移植到x86上面了呢?在这个想法上,谭宁邦教授于是自己动手写了Minix这个UNIX Like的内核程序!在编写的过程中,为了避免版权纠纷,谭宁邦完全不看UNIX内核源码!并且强调他的Minix必须能够与UNIX兼容才行!谭宁邦在1984年开始编写内核程序,到了1986年终于完成,并于次年出版Minix相关书籍,同时与新闻组(BBS及News)相结合。

之所以称为Minix的原因,是因为他是个Mini的UNIX系统。
● 这个Minix版本比较有趣的地方是,它并不是完全免费的,无法在网络上提供下载,必须要通过磁盘/磁带购买才行!虽然真的很便宜,毕竟因为没有在网络上流传,所以Minix的传递速度并没有很快。此外,购买时,随磁盘还会附上Minix的源码!这意味着用户可以学习Minix的内核程序设计概念。(这个特色对于Linux的开始开发阶段,可是有很大的关系!)

● 此外,Minux操作系统的开发者仅有谭宁邦教授,因为学术很忙,加上谭宁邦始终认为Minix主要用在教育上面,所以对于Minix是点到为止。没错,Minix是很受欢迎,不过,用户的要求/需求的可能就比较没有办法上升到比较高的地方了!

◆ 1984年之二:GNU项目与FSF基金会成立

● Richard Mathew Stallman(史托曼)在1984年发起的GNU项目,对于现今的自由软件风潮真有不可磨灭的地位。目前我们所使用的很多自由软件,几乎均直接或间接受益于GNU这个项目,那么史托曼是何许人也?为何他会发起这个GNU项目呢?

■ 一个分享的环境

● Richard Mathew Stallman(生于1953年,网络上自称的ID为RMS)从小就很聪明。他在1971年的时候,进入黑客圈中相当出名的人工智能实验室(AI Lab.),这个时候的黑客专指计算机功力很强的人,而非破坏计算机的怪客(Cracker)。

● 当时的黑客圈对于软件的着眼点几乎都是在“分享”,所以并没有专利方面的困扰。这个特色对于史托曼的影响很大!不过,后来由于管理阶层的问题,导致优秀黑客离开该实验室,并且进入其他商业公司继续开发优秀的软件。但史托曼并不服输,仍然持续在原来的实验室开发新的程序与软件。后来,他发现,自己一个人并无法完成所有的工作,于是想要成立一个开放的团体来共同努力!

■ 使用UNIX开发阶段

● 1983年以后,因为实验室硬件的更换,使得史托曼无法继续以原有的硬件与操作系统继续自由程序的编写,而且他进一步发现,过去他所使用的Lisp操作系统是麻省理工学院的专利软件,是无法共享的,这对于想要成立一个开放团体的史托曼是个阻碍。于是他便放弃了Lisp这个系统。后来,他接触到UNIX这个系统,并且发现,UNIX在理论与实际上,都可以在不同的机器间进行移植。虽然UNIX依旧是专利软件,但至少UNIX架构上还是比较开放的!于是他开始转而使用UNIX系统。

● 因为Lisp与UNIX是不同的系统,所以,他原本已经编写完毕的软件是无法在UNIX上面运行的。为此,他就开始将软件移植到UNIX上面,并且,为了让软件可以在不同的平台上运行,史托曼将他开发的软件均编写成可以移植的类型,也就是他都会将程序的源码公布出来!

■ GNU项目的推展

● 1984年,史托曼开始GNU项目,这个项目的目的是创建一个自由、开放的UNIX操作系统(Free UNIX)。但是创建一个操作系统谈何容易?而且在当时的GNU是仅有史托曼一个人单打独斗的,这实在太麻烦,但又不想放弃这个项目,那可怎么办呢?

● 聪明的史托曼干脆反其道而行之:“既然操作系统太复杂,我就先写可以在UNIX上面运行的小程序,这总可以了吧?”在这个想法上,史托曼开始参考UNIX上面现有的软件,并依据这些软件的作用开发出功能相同的软件,开发期间史托曼绝不看其他软件的源码,以避免吃上官司。后来一堆人知道免费的GNU软件,并且实际使用后发现与原有的专利软件也差不了多少,便转而使用GNU软件,于是GNU项目逐渐打开知名度。

● 虽然GNU项目渐渐打开了知名度,但是能见度还是不够。这时史托曼又想:不论是什么软件,都得要进行编译成为二进制文件(Binary Program)后才能够执行,如果能够写出一个不错的编译程序,那不就是大家都需要的软件了吗?因此他便开始编写C语言的编译程序,那就是现在相当有名的GNU C Compiler(GCC)!这点相当重要。这是因为C语言编译程序版本众多,但都是专利软件,如果他写的C编译程序够棒,性能够佳,那么将会大大地让GNU项目出现在众人眼前。如果你忘记了什么是编译程序,请回到第0章去看编译程序!

● 但开始编写GCC时并不顺利,为此,他先转而将他原先就已经写过的Emacs编辑器写成可以在UNIX上运行的软件,并公布源码。Emacs是一种程序编辑器,它可以在用户编写程序的过程中就进行程序语法的检验,此一功能可以减少程序员排错的时间!因为Emacs太优秀了,因此,很多人便直接向他购买。

● 此时因特网尚未流行,所以,史托曼便借着Emacs以磁带出售,赚了一点钱,从而开始全力编写其他软件,并且成立自由软件基金会(Free Software Foundation,FSF),请更多工程师与志愿者来编写软件。终于还是完成了GCC,这比Emacs还更有帮助!此外,他还编写了更多可以被调用的C函数库(GNU C Library),以及可以被用来操作操作系统的基本接口bash shell。这些都在1990年左右完成。

如果纯粹使用文本编辑器来编辑程序的话,那么程序语法如果写错时,只能利用编译时发生的错误信息来修订了,这样实在很没有效率。Emacs则是一个很棒的编辑器。注意:是编辑器(editor)而非编译器(compiler)!它可以很快显示出你写入的语法可能有错误的地方,这对于程序员来说,实在是一个好到不能再好的工具了。所以才会这么受到欢迎。
◆ GNU的通用公共许可证

● 到了1985年,为了避免GNU所开发的自由软件被其他人所利用而成为专利软件,所以他与律师草拟了有名的通用公共许可证(General Public License, GPL),并且称呼它为CopyLeft(相对于专利软件的CopyRight)。关于GPL的相关内容我们在下一个小节继续谈论,在这里,必须要说明的是,由于有GNU所开发的几个重要软件,如:

■ Emacs

■ GNU C(GCC)

■ GNU C Library(GLIBC)

■ Bash shell

● 造成后来很多的软件开发者可以借由这些基础的工具来进行程序开发,进一步壮大了自由软件团体。不过,对于GNU的最初构想“创建一个自由的UNIX操作系统”来说,这些优秀的程序仍旧无法满足,因为,当下并没有“自由的UNIX内核”存在,所以这些软件仍只能在那些授权的UNIX平台上工作,一直到Linux的出现。

◆ 1988年:图形接口XFree86项目

● 有鉴于图形用户接口(Graphical User Interface, GUI)的需求日益加重,在1984年由MIT与其他第三方首次发表了X Window System,并且在1988年成立了非营利性质的XFree86这个组织。所谓的XFree86其实是X Window System + Free + x86的整合名称。而这个XFree86的GUI界面更在Linux的内核1.0版于1994年释出时集成于Linux操作系统当中!

为什么称图形用户界面为X呢?因为由英文单字来看,Window中的字母W下面接着的就是字母X。意指Window的下一版!需注意的是,X Window并不是X Windows!
◆ 1991年:芬兰大学生Linus Torvalds的一则消息

● 到了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息,宣称他以bash, gcc等工具写了一个小小的内核程序,这个内核程序可以在Intel的386机器上面运行,让很多人很感兴趣,从此开始了Linux不平凡的旅程!

1.1.3 关于GNU项目
GNU项目对于整个自由软件来说是占有非常重要的角色。下面我们就来谈谈吧!

◆ 自由软件的活动

● 1984年创立GNU项目与FSF基金会的史托曼先生认为,编写程序最大的快乐就是让自己开发的好软件可供大家来使用。既然程序是想要分享给大家使用的,不过,每个人所使用的计算机软硬件并不相同,那么该程序的源码(Source code)就应该要同时发布,这样才能方便大家修改而适用于每个人的计算机中。这个将源码连同软件程序释出的举动,就称为自由软件(Free Software)运动!

● 此外,史托曼同时认为,如果你将你程序的Source code分享出来时,若该程序是很优秀的,那么将会有很多人使用,而每个人对于该程序都可以查阅source code,无形之中,就会有很多人帮你排错了!你的这个程序将会越来越壮大,越来越优秀。

◆ 自由软件的版权GNU GPL

● 为了避免自己的开发出来的Open source自由软件被拿去做成商业软件,于是Stallman同时将GNU与FSF开发出来的软件都挂上GPL的版权声明,这个FSF的内核观念是:版权制度是促进社会进步的手段,版权本身不是自然权力。

为什么要称为GNU呢?其实GNU是GNU's Not UNIX的缩写,意思是说,GNU并不是UNIX。那么GNU又是什么呢?就是GNU's Not UNIX。如果你写过程序就会知道,这个GNU = GNU's Not UNIX可是无穷循环。

另外,什么是Open Source呢?所谓的Source是程序开发者编写出的源程序代码,Open Source就是,软件在发布时,同时将作者的源代码一起公布的意思。
◆ 自由(Free)的真谛

● 那么这个GPL(GNU General Public License)是什么呢?为什么要将自由软件挂上GPL的“版权声明”呢?这个版权声明对于作者有何好处?首先,史托曼对GPL一直是强调Free的,这个Free的意思是这样的。

● "Free software" is a matter of liberty, not price. To understand the concept, you should think of "free speech", not "free beer". "Free software" refers to the users' freedom to run, copy, distribute, study, change, and improve the software。

● 大意是说,Free Software(自由软件)是一种自由的权力,并非是“价格”。举例来说,你可以拥有自由呼吸的权力,你拥有自由发表言论的权力,但是,这并不代表你可以到处喝“免费的啤酒!(free beer)”,也就是说,自由软件的重点并不是指“免费”的,而是指具有“自由度”(freedom)的软件,史托曼进一步说明了自由度的意义是:用户可以自由执行、复制、再发行、学习、修改与强化自由软件。

● 这无疑是个好消息!因为如此一来,你所拿到的软件可能原先只能在UNIX上面跑,但是经过源码的修改之后,你将可以拿它在Linux或者是Windows上运行!总之,一个软件挂上了GPL版权声明之后,它自然就成了自由软件!这个软件就具有如下特性。 ■ 取得软件与源码:你可以根据自己的需求来执行这个自由软件。

■ 复制:你可以自由复制该软件。

■ 修改:你可以将取得的源码进行程序修改工作,使之适合自己的工作。

■ 再发行:你可以将你修改过的程序再度自由发行,而不会与原先的编写者冲突。

■ 回馈:你应该将你修改过的程序代码回馈于社会!

● 但请特别留意,你所修改的任何一个自由软件都不应该也不能有下面这样的要求:

■ 修改授权:你不能将一个GPL授权的自由软件在你修改后而将它取消GPL授权。

■ 单纯销售:你不能单纯销售自由软件。

● 也就是说,既然GPL是站在互助互利的角度上去开发的,你自然不应该将大家的成果占为己有,因此你不可以将一个GPL软件的授权取消,即使你已经对该软件进行大幅度的修改。那么自由软件也不能销售吗?当然不是!还记得上一个小节里面,我们提到史托曼通过销售Emacs取得一些经费。自由软件是可以销售的,不过,不可仅销售该软件,应同时搭配售后服务与相关手册一起提供,这些可就需要工本费了呢!

◆ 自由软件与商业行为

● 很多人还是有疑问,目前不是有很多Linux开发商吗?为何他们可以销售Linux这个GPL授权的软件?原因很简单,因为他们大多都是销售“售后服务”,所以,他们所使用的自由软件都可以在他们的网站上面下载(当然,每个厂商他们自己开发的工具软件就不是GPL的授权软件了)。但是,你可以购买他们的Linux光盘,如果你购买了光盘,他们会提供相关的手册说明文件,同时也会提供你数年不等的咨询、售后服务、软件升级与其他协力工作等的附加价值!

● 所以说,目前自由软件工作者,他们所赖以维生的几乎都是在“服务”这个领域。毕竟自由软件并不是每个人都会编写,有人需要你的自由软件时,他就会请求你的协助,此时,你就可以通过服务来收费了。这样来说,自由软件确实还是具有商业空间的!

很多人对于GPL授权一直很疑惑,对于GPL的商业行为更是无法接受!关于这一点,鸟哥在这里还是要再次声明,GPL是可以从事商业行为的。而很多的作者也是借由这些商业行为来得以取得生活所需,更进一步去开发更优秀的自由软件。千万不要听到“商业”就排斥。这对于开发优良软件的朋友来说,是不礼貌的。
● 上面提到的大多是与用户有关的项目,那么GPL对于自由软件的作者有何优点呢?大致的优点有这些:

■ 软件安全性较佳;

■ 软件执行性能较佳;

■ 软件排错时间较短;

■ 贡献的源码永远都存在。

● 这是因为既然是Open Source的自由软件,那么你的程序代码将会有很多人帮你查阅,如此一来,程序的漏洞与程序的优化将会进展得很快。所以,在安全性与性能上,自由软件一点都不输给商业软件。此外,因为GPL授权当中,修改者并不能修改授权,因此,你如果曾经贡献过程序代码,你将名留青史。

● 对于程序开发者来说,GPL实在是一个非常好的授权,因为大家可以互相学习对方的程序编写技巧,而且自己写的程序也有人可以帮忙排错。那你会问的,对于我们这些广大的终端用户,GPL有没有什么好处呢?当然有!虽然终端用户或许不会自己编译程序代码或者是帮人家排错,但是终端用户使用的软件绝大部分就是GPL的软件,全世界有一堆的工程师在帮你维护你的系统,这难道不是一件非常棒的事吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Linux 私房 基础学习 第三版》视频是一部非常实用的学习资源,特别适合想要系统学习 Linux 操作系统基础知识的初学者。 在这个视频中,你可以学习Linux 操作系统基础知识,包括 Linux 的历史背景、Linux 内核的组成、Linux 系统的安装和配置等。此外,视频还介绍了常用的 Linux 命令和操作技巧,例如文件操作、目录操作、文件权限管理、用户管理、进程管理等。 这个视频不仅内容全面,而且讲解详细,易于理解。视频中使用了生动有趣的示例和案例,帮助学习者更好地理解和掌握 Linux 操作系统。此外,视频还提供了一系列习题和实践项目,供学习者巩固和应用所学知识。 通过学习Linux 私房 基础学习 第三版》视频,你将能够全面了解 Linux 操作系统的基本概念和原理,掌握常用的命令和操作技巧,能够独立完成 Linux 系统的安装、配置和管理,为以后的深入学习和应用打下坚实的基础。 总之,如果你希望系统地学习 Linux 操作系统基础知识,那么《Linux 私房 基础学习 第三版》视频是一个非常值得推荐的学习资源。无论是作为初学者入门还是作为进一步提升和应用的基础,这个视频都能够给予你很大的帮助。 ### 回答2: "Linux 私房 基础学习 第三版视频" 是一本深入浅出地介绍 Linux 操作系统学习资料。通过这本视频,初学者可以系统地学习 Linux基础知识,并且能够掌握一些实用的技巧。 第三版的视频相比之前的版本有一些新的内容和更新。它覆盖了Linux 系统的安装、文件管理、用户权限管理、Shell 基础、网络配置等基础知识。视频通过图文并茂、生动形象的讲解,帮助学习者理解和掌握这些知识。 视频的学习过程是循序渐进的,从安装 Linux 开始,通过实际操作和演示,学习者可以逐步建立起对 Linux 操作系统的理解。同时,视频也提供了许多实例和练习,帮助学习者进一步巩固所学知识。 与其他学习资料相比,这本视频更具有互动性和实践性。学习者可以随时在自己的电脑上跟着视频进行实验和练习,真正将理论知识转化为实际操作能力。这种实践性的学习方式对于掌握 Linux 是非常有帮助的。 总体上,"Linux 私房 基础学习 第三版视频" 是一本推荐给想系统学习 Linux 的初学者的学习资料。它通过生动形象的讲解和实践性的学习方式,帮助学习者建立起对 Linux 操作系统的全面理解和实际应用能力。 ### 回答3: 《Linux私房 基础学习 第三版视频》是一个专门面向初学者的Linux教程视频。这套视频教程在教授Linux操作系统基础知识和常用命令的同时,通过实际案例和实操进行讲解,让学习者更好地理解和掌握Linux的使用技巧。 第三版视频相比前两版进行了更新和改进,内容更加全面和详细。视频从Linux的基本命令和文件系统开始介绍,逐步深入到用户和权限管理、文件操作、shell脚本编写、网络配置等方面的知识。通过对各种实际场景和任务的演示,学习者能够快速掌握Linux的使用方法和技巧。 该视频的特点是简洁明了、易于理解,并且针对初学者的需求设置了大量的实例演示,帮助学习者更好地理解和掌握所学知识。视频还提供了练习题和答案,方便学习者巩固知识和自测水平。 通过学习Linux私房 基础学习 第三版视频》,学习者可以获得扎实的Linux基础知识,能够熟练使用常用的Linux命令和工具,具备基本的Linux系统管理和维护能力。掌握这些基础知识,对于日后的系统管理、软件开发和网络运维等工作将会非常有帮助。因此,这套视频对于初学者来说是非常值得学习的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值