1.3 Linux核心概念知识
1.3.1 自由软件与FSF
1.自由软件
简单地理解,自由软件的核心就是没有商业化软件版权制约,源代码开放,可以无约束地自由传播。
注意:自由软件强调的是权利问题,而非是否免费的问题。大家一定要理解这个概念,自由软件中的自由是“言论自由”中的“自由”,而不是“免费啤酒”中的“免费”。
自由意味着freedom,而免费意味着free,这是完全不同的两个概念。例如,Red Hat Linux自由但不免费,CentOS Linux则是自由且免费的。
自由软件关乎使用者运行、复制、发布、研究、修改和改进该软件的自由。更精确地说,自由软件赋予软件使用者四种自由,具体如下。
❏不论目的为何,有运行该软件的自由。
❏有研究该软件如何运行,以及按需改写该软件的自由。当然,取得该软件源代码为达成此目的之前提。
❏有重新发布拷贝的自由。
❏有改进该软件,以及向公众发布改进版本的自由,这样整个社群都可受惠。同样,取得该软件的源码为达成此目的之前提。
2.自由软件基金会FSF
FSF(Free Software Foundation)的中文意思是自由软件基金会,是Richard Stallman于1984年发起和创办的。FSF的主要项目是GNU项目。它的目标是建立可自由发布和可移植的类Unix操作系统产品。GNU项目本身产生的主要软件包括:Emacs编辑软件、gcc编译软件、bash命令解释程序和编程语言,以及gawk(GNU’s awk)等。
1.3.2 GNU知识
GNU的全称为GNU’s not Unix,意思是“GNU不是Unix”,GNU计划,又称革奴计划,是由Richard Stallman在1984年公开发起的,是FSF的主要项目。前面已经提到过,这个项目的目标是建立一套完全自由的和可移植的类Unix操作系统。
GNU类Unix操作系统是由一系列应用程序、系统库和开发工具构成的软件集合(例如,Emacs编辑软件、gcc编译软件、bash命令解释程序和编程语言,以及gawk等),并加上了用于资源分配和硬件管理的内核。
但是GNU自己的内核Hurd仍在开发中,离实用还有一定的距离。因此,这个GNU系统并没有流行起来。现在的GNU系统通常是使用Linux系统的内核、再加上GNU项目贡献的一些组件,以及其他相关程序组成的,这样的组合被称为GNU/Linux操作系统。
图1-6 GNU相关图片纪念
到1991年Linux内核发布的时候,GNU项目已经完成了除系统内核之外的各种必备软件的开发。在Linus Torvalds和其他开发人员的努力下,GNU项目的部分组件又运行到了Linux内核之上,例如,GNU项目里的Emacs、gcc、bash、gawk等,至今都是Linux系统中很重要的基础软件。GNU项目的相关图片纪念如图1-6所示。
1.3.3 GPL知识
1.GPL
GPL全称为General Public License,中文名为通用公共许可,是一个最著名的开源许可协议,开源社区最著名的Linux内核就是在GPL许可下发布的。GPL许可是由自由软件基金会(Free Software Foundation)创建的。
1984年,Richard Stallman发起开发自由软件的运动后不久,在其他人的协作下,他创立了通用公共许可证(GPL),这对推动自由软件的发展起到了至关重要的作用,那么,这个GPL到底是什么意思呢?
简单的理解,GPL的核心,是保证任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布自由软件源代码的权利,但都必须同时给出具体更改的源代码。
虽然整个Linux内核都是基于GNU通用公共许可的,但是Linux内核并不是GNU计划的一部分,这一点请读者不要混淆。
2.LGPL
LGPL(Lesser General Public License)相对于GPL则较为宽松,其允许不公开全部源代码,这为基于Linux平台开发商业软件提供了更广阔的空间。对于该知识点,本书仅提及一下,有兴趣的读者可到网上查询相关信息。
1.3.4 Linux系统组成
Linux操作系统的核心为Linus Torvalds开发的Kernel,Linux内核之上的组件可分为如下几部分:一部分是GNU组件,如Emacs、gcc、bash、gawk等;另一些重要组成部分则来自加利福尼亚大学Berkeley分校的BSD Unix项目和麻省理工学院的X Windows系统项目,以及在这之后成千上万的程序员开发的应用程序等(见表1-1)。正是基于Linux内核与GNU项目、BSD Unix以及MIT的X11(X Windows)的结合,才使得整个Linux操作系统得以很快形成,并得到了发展,进而组成了今天优秀的Linux系统。
Linux操作系统=Linux内核+GNU软件及系统软件+必要的应用程序
表1-1 Linux系统各组成部分的贡献人员
图1-7为Linux系统的核心组成原理示意图。
图1-7 Linux操作系统组成原理简单示意图