第一章 Linux是什么

xiefei0 2014-01-28

1.  Linux的核心原型是1991年由托瓦兹(Linus Torvalds)写出来的。早期的Linux是针对386来开发的,Torvalds在写出Linux的时候,其实该核心仅能『驱劢386所有的硬件』而已。

2.  在2006年以前,苹果计算机公司是请IBM公司帮忙开发硬件(所谓的Power CPU),在2006年以后,苹果计算机转而请Intel设计其硬件架构,亦即其硬件架构已经转为x86系统, 因此在2006年以后癿苹果计算机若使用x86架构时,其硬件则『可能』可以安装Windows操作系统了。

3.  Unix的历史:1960年代初期麻省理工学院(MIT)发展了所谓的: 『兼容分时系统(Compatible Time-Sharing System, CTSS)』, 它可以让大型主机通过提供数个终端机(terminal)以联机进入主机,来利用主机的资源进行运算工作。为了更加强化大型主机的功能,以让主机的资源可以提供更多使用者来利用,所以在1965年前后, 由贝尔实验室(Bell)、麻省理工学院(MIT)及通用电器公司(GE)共同发起了Multics计划, Multics计划的目的是想要让大型主机可以达成提供300个以上的终端机联机使用。(http://www.multicians.org/)在认为Multics计划不可能成功以后,贝尔研究室就退出该计划。不过,原本参与Multics计划的人员Thompson因为自己的需要(移植一套名为『太空旅游』的游戏),在DEC(Digital Equipment Corporation)公司推出的PDP-7上,以汇编语言(Assembler)写出了一组核心程序(Unics),同时包括一些核心工具程序, 以及一个小小的文件系统。那个系统就是Unix的原型。后来Thompson与Ritchie合作想将Unics改以高级语言来撰写。后来Dennis Ritchie将B语言重新改写成C语言,再以C语言重新改写与编译Unics的核心, 最后正名与发行出Unix的正式版本。

4.  BSD的诞生:柏克利大学的Bill Joy在取得了Unix的核心原代码后,着手修改成适合自己机器的版本, 并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distribution (BSD)。Bill Joy也是『Sun』这家公司的创办者! Sun公司即是以BSD发展的核心进行自己的商业Unix版本的发展的。 (后来可以安装在x86硬件架构上面FreeBSD即是BSD改版而来!)

5.  System V & Minix:1979 年时,AT&T推出 System V 第七版 Unix,这一版最重要的特色是可以支持x86架构的个人计算机系统。不过AT&T由于商业的考虑,特别提到了 『不可对学生提供原代码』的严格限制。于是在大学教授Unix的Andrew Tanenbaum教授在1984年完成了支持x86架构的操作系统核心程序Minix的撰写,Minix与Unix兼容,主要用在教育用递上面。

6.  GNU计划与FSF基金会:Richard Mathew Stallman 发起了GNU计划, 这个计划的目的是:建立一个自由、开放癿Unix操作系统(Free Unix)。但是撰写一个操作系统太复杂,Stallman就决定先写可以在Unix上面运行的小程序。于是Stallman撰写了C语言的编译程序(那就是现在相当有名的GNU C Compiler(gcc))、Emacs编辑器 (具有程序语法检查功能)、更多可以被调用的C函式库(GNU C library),以及可以被使用来操作操作系统的基本接口BASH shell。Stallman 借由Emacs以磁带(tape)出售,赚了一点钱 ,进而开始全力撰写其他软件。并且成立自由软件基金会(FSF, Free Software Foundation),请更多工程师与志愿者撰写软件。(https://www.fsf.org/resources)

7.  GPL:1985年,为了避免GNU所开发的自由软件被其他人所利用而成为专利软件, 所以他与律师草拟了有名的通用公共许可证(General Public License, GPL), 并且称呼他为copyleft(相对于专利软件的copyright!)。(http://www.gnu.org)一个软件挂上了GPL版权宣告之后,他自然就成了自由软件!这个软件就具有以下的特点:

    --  取得软件与原始码:你可以根据自己的需求来执行这个自由软件;

    --  复制:你可以自由地复制该软件;

    --  修改:你可以将取得的原始码进行程序修改工作,使之适合你的需要;

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

    --  回馈:你应将你修改过的程序代码开放出来反馈社区!

    --  严禁:你所修改的任何一个自由软件都不应该也不能这样:

        --  修改授权:你不能将一个GPL授权的自由软件,在你修改后而将他取消GPL授权~

        --  单纯贩卖:你不能单纯地贩卖自由软件。

自由软件是可以贩卖的,不过,不可仅贩卖该软件,应同时搭配售后服务与相关手册。很多Linux开发商都是在贩卖『售后朋务』。所以,他们所使用的自由软件, 都可以在他们的网站上面下载!(当然,每个厂商他们自己开发癿工具软件就不是GPL癿授权软件了!) 但是,如果你购买他们的Linux光盘,他们会提供相关癿手册说明文件, 同时也会提供你数年产等的咨询、售后朋务、软件升级与其他协力工作等等的附加价值。

7.  Linux诞生:到了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息, 宣称他以bash, gcc等工具写了一个小小的核心程序,这个核心程序可以在Intel的386机器上面运作。他是在参考Minix的设计理念与程序原代码,然后仔细研究出386个人计算机的性能优化的基础上, 使用GNU的自由软件将核心程序代码与386紧紧的结合在一起,最终写出他所需要的核心程序Linux的。为了让所有的软件都可以在Linux上执行,托瓦兹参考了标准的POSIX规范。POSIX是可携式操作系统接口(Portable Operating System Interface)的缩写,重点在规范核心与应用程序之间的接口, 这是由美国电器与电子工程师学会(IEEE)所发布的一项标准。

8.  为了因应随时都有程序代码加入癿状态,Linux便逐渐发展成具有模块的功能,亦即是将某些功能独立出于核心外,在需要的时候才加载到核心中。如此一来, 如果有新的硬件驱动程序或者其他协议的程序代码进来时,就可以模块化,不用重新编译与修改核心程序,大大地增加了Linux核心的可维护能力。

9.  Linux的核心版本(http://www.kernel.org)编号规范发生过几次变革(http://en.wikipedia.org/wiki/Linux_kernel#Version_numbering),在1.0 到 2.6.0之间,版本号一般为A.B.C,A为kernel版本,一般只有非常大的代码变动才会变化。B为major版本,偶数为稳定版本,供用户使用,奇数为开发版本,供kernel开发者添加新功能代码。C为minor版本,用于小的feature、bugfix、security patch的发布。但在2.6.0之后,便不再区分稳定版本和开发版本,版本格式为2.6.X.Y,一有feature完成就发布新的minor版本,最后一位作为patch或fix版本。到了linux发布20周年纪念日(2011/05/29),版本变成了3.0(并无大的代码改动)。之后就以3.X.Y的形式命名版本,X为新feautre发布版本,Y为fix或patch版本。

10.  Linux的出现让GNU计划放下了心里的一块大石头,因为GNU一直以来就是缺乏了核心程序, 导致他们的GNU自由软件只能在其他的Unix上面跑。Linux实在很不错,让GNU软件大多以Linux为主要操作系统来进行开发。为了让使用者能够接触到Linux,很多商业公司或非营利团体, 就将Linux Kernel(含tools)与可运行的软件整合起来,加上自己具有创意的工具程序,我们称之为Linux distribution。

11.  Linux distributions主要分为两大系统,一种是使用RPM方式安装软件的系统,包括Red Hat, Fedora, SuSE等都是这类; 一种则是使用Debian的dpkg方式安装软件的系统,包括Debian, Ubuntu, B2D等等。以下列出几个主要的Linux distributions发行者网址:

    --  Red Hat: http://www.redhat.com

    --  Fedora: http://fedoraproject.org/

    --  Mandriva: http://www.mandriva.com

    --  Novell SuSE: http://www.novell.com/linux/

    --  Debian: http://www.debian.org/

    --  Slackware: http://www.slackware.com/

    --  Gentoo: http://www.gentoo.org/

    --  Ubuntu: http://www.ubuntu.com/

    --  CentOS: http://www.centos.org/

    --  OpenSuSE: http://software.opensuse.org/

12.  对于没有额外的硬盘或是没有额外的主机的朋友来说,KNOPPIX这个可以利用光盘开机而进入Linux操作系统的Live CD 是一个不错的选择!你只要下载了KNOPPIX的映象,然后将他刻录成为CD, 放入你主机的光驱,并在BIOS内设定光盘为第一个开机选项,就可以使用Linux系统了。(http://www.knoppix.net/)

13.  软件授权模式:

    --  GNU General Public License: http://www.gnu.org/licenses/licenses.html#GPL 目前有version 2, version 3两种版本。

    --  Berkeley Software Distribution (BSD): http://en.wikipedia.org/wiki/BSD_license 这个授权模式其实与GPL很类似, 而其精神也与Open Source相呼应。

    --  Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 这个软件的发布方式也是使用Open source的。只是在apache的授权中规定, 如果想要重新发布此软件时(如果你有修改过该软件),软件的名称依旧需要定名为Apache才行。

    --  Freeware: http://en.wikipedia.org/wiki/Freeware 不同于Free software,Freeware为『免费软件』而非『自由软件』虽然它是免费的软件,但是不见得要公布其原始码, 就看发布者的意见了。

    --  Shareware: http://en.wikipedia.org/wiki/Shareware 共享软件园与免费软件有点类似的是,Shareware在使用初期,它也是免费的,但是, 到了所谓的『试用期限』之后,你就必须要选择『付费后继续使用』或者『将它移除』。这些共享软件都会自行撰写失效程序,让你在试用期限之后就无法使用该软件。

相关推荐