分类: LINUX
2007-12-04 16:50:08
计算机基本的功能就是: 『接受使用者输入指令,经由 CPU 的数学与逻辑单元运算处理后, 以产生或储存成有用的信息』。为了达成这个功能,当然计算机就必须要有:
主要是用于需要有高速计算的计划中。例如:国防军事、气象预测、太空科技, 用在模拟的领域较多。详情也可以参考:国家高速网络与计算中心 的介绍! 至于全世界的 500 大超级计算机,则请参考:
一个比较『完整的操作系统』应该要包含 两个东西,一个是『核心与其提供的接口工具』、 一个是『利用核心提供的接口工具所开发出来的软件』。
核心就是『Kernel』, 他是一个操作系统的最底层的东西,由他来掌管整个硬件资源的工作状态。
一般来说,Kernel 为了达成使用者所需要的正确运算结果,他必须要管理的事项有:
OS 和架构有一定关联,Linux具有可移植性。
2006年以前的苹果计算机公司是请 IBM 公司帮忙开发硬件 (所谓的 power CPU), 而苹果计算机公司则在该硬件架构上发展自家的操作系统(就是俗称的麦金塔, MAC 是也)。 Windows 则是开发在 x86 架构上的操作系统之一。
那么 Windows 是否可以在苹果计算机的硬件上面跑?答案是『不行』的!不过,在 2006 年以后, 苹果计算机转而请 Intel 设计其硬件架构,亦即其硬件架构已经转为 x86 系统,因此在 2006 年以后的苹果计算机若使用 x86 架构时,其硬件则『可能』可以安装 Windows 操作系统了。
不过,您可能需要自己想些方式来处理该硬件的兼容性啰!
每种操作系统都是在他专门的机器上面运行的喔!这点得要先了解。 不过,
Linux 由于是 Open Source 的操作系统,所以他的程序代码可以被修改成适合在各种机器上面运行的, 也就是说, Linux 是具有『可移植性』,这可是很重要的一个功能喔! ^_^
· 1969 年以前:一个没有完成的梦想: Bell, MIT 与 GE 的『 Multics』系统
早期的计算机主要用于军事或者是高科技用途,或者是学术单位的学术研究,否则,真的很难接触到。运算速度并不快之外,操作接口也很困扰的!
在那个时候,写程序是件很可怜的事情,因为,程序设计者,必须要将程序相关的信息在读卡纸上面打洞, 然后再将读卡纸插入卡片阅读机来将信息读入主机中运算。光是这样就很麻烦了,如果程序有个小地方写错,
哈哈!光是重新打卡就很惨,加上主机少,使用者众多,光是等待,就耗去很多的时间了!
在之后,经由操作系统的改良,使得后来可以使用键盘来进行信息的输入/输出。
不过,在一间学校里面,主机毕竟可能只有一部,如果多人等待使用,那怎么办? 好在 1960 年代初期麻省理工学院 (MIT) 发展了所谓的:
『兼容分时系统( Compatible Time-Sharing System, CTSS )』,
它可以让大型主机透过提供数个终端机(terminal)以联机进入主机,来利用主机的资源进行运算工作。
架构有点像这样:
图二、早期主机与终端机的相关性图标
如此一来,无论主机在哪里,只要在终端机前面进行输入输出的作业,就可利用主机提供的功能了。 不过,需要注意的是,此时终端机只具有输入/输出的功能,本身完全不具任何运算或者软件安装的能力。 而且,比较先进的主机大概也只能提供 30 个不到的终端机而已。
为了更加强化大型主机的系统,以让主机的资源可以提供更多使用者来利用,所以在 1965 年前后,
由贝尔实验室 (Bell)、麻省理工学院 (MIT) 及奇异公司 (GE) 共同发起了 Multics 的计划, Multics 目的是想要让大型主机可以达成提供 300 个以上的终端机联机使用的目标。 不过,到了 1969 年前后,计划进度落后,资金也短缺,所以该计划就宣告不治.....喔!是宣告失败~ (注: Multics 有复杂、多数的意思存在。)
· 1969 年: Ken Thompson 的小型 file server system
在认为 Multics 计划不可能成功之后, 就退出该计划。不过,原本参与 Multics 计划的人员中,已经从该计划当中获得一些点子, 就是其中一位!Thompson 因为自己的需要,希望开发一个小小的操作系统, 以提供自己的需求。在开发时,有一部 DEC (Digital Equipment Corporation) 的 PDP-7 没人使用, 于是他就准备针对这部主机进行操作系统核心程序的撰写。本来 Thompson 是没时间的, 有趣的是,在 1969 年八月份左右,刚好 Thompson 的妻儿去了美西探亲, 于是他有了额外的一个月的时间好好的待在家将一些构想实现出来! 经过四个星期的奋斗,他终于以组译语言 (Assembler) 写出了一个核心程序,同时包括一些核心工具程序, 以及一个小小的档案系统。那个系统就是 Unix 的原型! 当时 Thompson 将 Multics 庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为: Unics 。 Thompson 的这个档案系统有两个重要的概念,分别是:
这些概念在后来对于 Linux 的发展有相当重要的影响喔!
· 1973 年: Unix 的正式诞生,Ritchie 等人以 C 语言写出第一个正式 Unix 核心
由于 Thompson 写的那个操作系统实在太好用了,所以在贝尔实验室内部广为流传,并且数度经过改版。
但是,比较重要的改版则发生在 1973 年。Unix 本来是以组译语言写成的,后来因为系统移植与效能的需求, 该系统被 B 语言所改写。不过,效能依旧不是很好。后来,
将 B 语言重新改写成 C 语言,C 语言算是比较高阶的程序语言,可以在不同的机器上面运作,
而 Ritchie 等人也同时将原本 Thompson 的那个操作系统重新以 C 语言改写,
最后发行出 Unix 的正式版本!
在这个时候需要特别注意的是,贝尔实验室是隶属于 AT&T 的,只是 AT&T 当时忙于其它商业活动, 所以对于 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 也是 Unix 业者『 Sun 』这家公司的创办者! Sun 公司即是以 BSD 发展的核心进行自己的商业 Unix 版本的发展的。 (后来可以安装在 x86 硬件架构上面 FreeBSD 即是 BSD 改版而来!)
· 1979 年: 一个措手不及的版权宣告!
由于 Unix 的高度可移植性与强大的效能,加上当时并没有版权的纠纷, 所以让很多商业公司开始了 Unix 操作系统的发展,例如 AT&T 自家的 System V、IBM 的 AIX 以及 HP 与 DEC 等公司,都有推出自家的主机搭配自己的 Unix 操作系统。
但是,如同我们前面提到的,操作系统的核心 ( Kernel ) 必须要跟硬件配合, 以提供及控制硬件的资源进行良好的工作!
而在早期每一家生产计算机硬件的公司还没有所谓的『协议』的概念, 所以每一个计算机公司出产的硬件自然就不相同啰!因此他们必须要为自己的计算机硬件开发合适的 Unix 系统。 例如在学术机构相当有名的 Sun 、 Cray 与 HP 就是这一种情况。
他们开发出来的 Unix 操作系统以及内含的相关软件并没有办法在其它的硬件架构下工作的!
且由于没有厂商针对个人计算机设计 Unix 系统,因此,在早期并没有支持个人计算机的 Unix 操作系统的出现 ( 由于 Unix 强调的是多人多任务的环境,但早期的 x86 个人计算机架构下的 CPU 是没有能力达到多任务的作业,因此,并没有人对移植
Unix 到 x86 的计算机上有兴趣 )。 每一家公司自己出的 Unix 虽然在架构上面大同小异,但是却真的仅能支持自身的硬件,
所以啰,早先的 Unix 只能与服务器 ( Server ) 或者是大型工作站 ( Workstation ) 划上等号!
但是这个高度开放的 Unix 系统在 1979 年有了重大的转折~ 因为 AT&T 由于商业的考虑,以及在当时现实环境下的思考,于是将想 Unix 的版权收回去, 因此,在 AT&T 在 1979 年发行的第七版 Unix 中,特别提到了 『不可对学生提供原始码』的严格限制! 同时,也造成 Unix 业界之间的紧张气氛,并且也引爆了很多的商业纠纷~
· 1984 年之一: x86 架构的 Minix 诞生
关于 1979 年的版权声明中,影响最大的当然就是学校教 Unix 相关学问的教授了!
想一想,如果没有核心原始码,那么如何教导学生认识 Unix 呢?
这问题对于 Andrew Tanenbaum (谭宁邦)教授来说,实在是很伤脑筋的! 不过,学校的课程还是得继续啊!那怎么办??
既然 1979 年的 Unix 第七版可以在 Intel 的 x86 架构上面进行移植, 那么是否意味着可以将 Unix 改写并移植到 x86 上面了呢?在这个想法上,
这个 Minix 版本比较有趣的地方是,他并不是完全免费的,无法在网络上提供下载!
必须要透过磁盘/磁带购买才行!虽然真的很便宜~不过,毕竟因为没有在网络上流传,
所以 Minix 的传递速度并没有很快速!此外,购买时,随磁盘还会附上 Minix 的原始码! 这意味着使用者可以学习 Minix 的核心程序设计概念喔! (这个特色对于 Linux 的启始开发阶段,可是有很大的关系喔!)
此外,开发者仅有
1984 年之二: GNU 与 FSF 计划的成立
Richard Mathew
Stallman (史托曼) 在 1984 年发起的 GNU 计划,对于现今的自由软件风潮,
真有不可磨灭的地位!目前我们所使用得很多自由软件,几乎均直接或间接帮助于 GNU 这个计划呢!
那么史托曼是何许人也?为何他会发起这个 GNU 计划呢?
(生于 1953 年, 网络上自称的 ID 为 RMS) 从小就很聪明!他在 1971 年的时候,进入黑客圈中相当出名的人工智能实验室(AI Lab.), 这个时候的黑客专指计算机功力很强的人,而非破坏计算机的怪客 (cracker) 喔! 当时的黑客圈对于软件的着眼点几乎都是在『分享』,所以并没有专利方面的困扰!
这个特色对于史托曼的影响很大!不过,后来由于管理阶层的问题,导致实验室的优秀黑客离开该实验室, 并且进入其它商业公司继续发展优秀的软件。但史托曼并不服输,仍然持续在原来的实验室开发新的程序与软件。
后来,他发现到,自己一个人并无法完成所有的工作,于是想要成立一个开放的团体来共同努力!
1983 年以后,因为实验室硬件的更换,使得史托曼无法继续以原有的硬件与操作系统继续自由程序的撰写~ 而且他进一步发现到,过去他所使用的 Lisp 操作系统,是麻省理工学院的专利软件, 是无法共享的,这对于想要成立一个开放团体的史托曼是个阻碍。于是他便放弃了 Lisp 这个系统。 后来,他接触到 Unix 这个系统,并且发现, Unix 在理论与实际上,都可以在不同的机器间进行移植。
于是他开始转而使用 Unix 系统。因为 Lisp 与 Unix 是不同的系统,
所以,他原本已经撰写完毕的软件是无法在 Unix 上面运行的!为此,
他就开始将软件移植到 Unix 上面。并且,为了让软件可以在不同的平台上运作,
因此,史托曼将他发展的软件均撰写成可以移植的型态!
1984 年,史托曼开始 计划,这个计划的目的是想要: 建立一个自由的开放的 Unix 操作系统。
但是建立一个操作系统谈何容易啊!而且在当时的 GNU 是仅有自己一个人单打独斗的史托曼~
这实在太麻烦,但又不能不做这个计划,于是史托曼反其道而行~『既然操作系统太复杂, 我就先写可以在 Unix 上面运行的小程序,这总可以了吧?呵呵!』在这个想法上, 史托曼便开始了程序的写作。在写作期间,为了不让自己吃上官司,他绝对不看专利软件的原始码!
为了这个计划,他开始使用原本 Unix 上面跑的软件,
并自行撰写功能与 Unix 原有专利软件相仿的软件。
但不论是什么软件,都得要进行编译成为二进制档案(binary file)后才能够执行,
因此他便开始撰写 C 语言的编译器,那就是现在相当有名的 GNU C (gcc)! 这个点相当的重要!这是因为 C 语言编译器版本众多,但都是专利软件, 如果他写的 C 编译器够棒,效能够佳,那么将会大大的让 GNU 计划出现在众人眼前!
但开始时并不顺利,为此,他先转而将 Emacs 编辑器写成可以在 Unix 上面跑得软件, 并公开公布原始码,因为 Emacs 太优秀了,因此,很多人便直接向他购买。此时 Internet 尚未流行, 所以,史托曼便借着 Emacs 以磁带(tape)出售,赚了一点钱 ,进而开始全力撰写其它软件。并且成立 自由软件基金会 (FSF, Free Software Foundation),请更多工程师与志工撰写软件。 终于还是完成了 GCC,这比 Emacs 还更有帮助! 此外,他还撰写了更多可以被呼叫的 C 函式库(GNU C library), 以及可以被使用来操作操作系统的基本接口 BASH shell ! 这些都在 1990 年左右完成了!
如果纯粹使用文字编辑器来编辑程序的话,那么程序语法如果写错时, 只能利用编译时发生的错误讯息来修订了,这样实在很没有效率。 Emacs 则是一个很棒的编辑器!注意!是编辑(editor)而非编译(compiler)! 他可以很快的立刻显示出您写入的语法可能有错误的地方,这对于程序设计师来说, 实在是一个好到不能再好的工具了!所以才会这么的受到欢迎啊!
到了 1985 年,为了避免 GNU 所开发的自由软件被其它人所利用而成为专利软件, 所以他与律师草拟了有名的通用公共许可证 (General Public License, GPL), 并且称呼他为 copyleft (相对于专利软件的 copyright!)。 关于 GPL 的相关内容我们在下一个小节继续谈论,在这里,必须要说明的是, 由于有 GNU 所开发的几个重要软件,如:
造成后来很多的软件开发者可以藉由这些基础的工具来进行程序开发! 进一步壮大了自由软件团体!这是很重要的!不过,对于 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 不平凡的路程!
关于 GNU 计划
1984 年创立 GNU 计划与 FSF 基金会的 Stallman 先生认为, 写程序最大的快乐就是让自己发展的良好的软件让大家来使用了!
而既然程序是想要分享给大家使用的,不过,每个人所使用的计算机软硬件并不相同, 既然如此的话,那么该程序的原始码 (Source code) 就应该要同时释出, 这样才能方便大家修改而适用于每个人的计算机中呢!这个将原始码释出的举动,
就称为 Open Source !此外,史托曼同时认为,如果您将您程序的 Source code 分享出来时,若该程序是很优秀的,那么将会有很多人使用, 而每个人对于该程序都可以查阅 source code ,无形之中,就会有一票人帮您除错啰! 您的这支程序将会越来越壮大!越来越优秀呢!
而为了避免自己的开发出来的 Open source 的自由软件被拿去做成专利软件,
于是 Stallman 同时将 GNU 与 FSF 发展出来的软件,都挂上 GPL 的版权宣告~ 这个 FSF 的核心观念是『版权制度是促进社会进步的手段, 版权本身不是自然权力。』对于 FSF 有兴趣或者对于 GNU 想要更深入的了解时,请参考的网站
,或直接到 GNU 去: 里面有更为深入的解说!
为什么要称为 GNU 呢?其实 GNU 是 GNU's Not Unix 的缩写,
意思是说, GNU 并不是
Unix 啊!那么 GNU 又是什么呢? 就是 GNU's Not Unix 嘛!.....如果您写过程序,
就会知道,这个 GNU = GNU's Not Unix 可是无穷循环啊!忙碌~
另外,什么是 Open Source 呢?所谓的 source 是程序发展者写出的原始程序代码, Open Source 就是,软件在发布时,同时将作者的原始码一起公布的意思!
"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 软件的授权取消, 即使您已经对该软件进行大幅度的修改!那么自由软件也不能贩卖吗?当然不是!还记得上一个小节里面,
我们提到史托曼藉由贩卖 Emacs 取得一些经费,让自己生活不至于匮乏吧??是的!
自由软件是可以贩卖的,不过,不可仅贩卖该软件,应同时搭配售后服务与相关手册~ 这些可就需要工本费了呢!
很多人还是有疑问,目前不是有很多 Linux 开发商吗?为何他们可以贩卖 Linux 这个 GPL 授权的软件?
原因很简单,因为他们大多都是贩卖『售后服务!』所以,他们所使用的自由软件, 都可以在他们的网站上面下载!(当然,每个厂商他们自己开发的工具软件就不是 GPL 的授权软件了!) 但是,您可以购买他们的 Linux 光盘,如果您购买了光盘,他们会提供相关的手册说明文件,
同时也会提供您数年不等的咨询、售后服务、软件升级与其它协力工作等等的附加价值! 所以说,目前自由软件工作者,他们所赖以维生的,几乎都是在『服务』这个领域呢!
毕竟自由软件并不是每个人都会撰写,有人有需要您的自由软件时,他就会请求您的协助, 此时,您就可以透过服务来收费了!这样来说,
自由软件确实还是具有商业空间的喔!
那么 GPL 对于自由软件的作者有何优点呢? 大致的优点有这些:
与 Minix 之间
Linus Torvalds (托瓦兹, 1969 年出生)的外祖父是赫尔辛基大学的统计学家,
他的外祖父为了让自己的小孙子能够学点东西, 所以从小就将托瓦兹带到身边来管理一些微计算机。在这个时期,托瓦兹接触了汇编语言 (Assembly Language),那是一种直接与芯片对谈的程序语言,也就是所谓的低级语言。 必须要很了解硬件的架构,否则很难以汇编语言撰写程序的。
在 1988 年间,托瓦兹顺利的进入了赫尔辛基大学,并选读了计算机科学系。
在就学期间,因为学业的需要与自己的兴趣,托瓦兹接触到了Unix 这个操作系统。
当时整个赫尔辛基只有一部最新的 Unix 系统,同时仅提供 16 个终端机 (terminal)。
还记得我们上一节刚刚提过的,早期的计算机仅有主机具有运算功能, terminal 仅负责提供 Input/Output 而已。在这种情况下, 实在很难满足托瓦兹的需求,因为.....光是等待使用 Unix 的时间,就很耗时~
为此,他不禁想到:『我何不自己搞一部 Unix 来玩?』不过,
就如同 Stallman 当初的 GNU 计划一样,要写核心程序,谈何容易~
不过,幸运之神并未背离托瓦兹,因为不久之后,他就知道有一个类似 Unix 的系统,
并且与 Unix 完全兼容,还可以在 Intel 386 机器上面跑的操作系统, 那就是我们上一节提过的,
对 386 硬件的多任务测试
早期 Intel 的 x86 架构计算机不是很受重视的原因,就是因为 x86 的芯片对于多任务的处理不佳, CPU 在不同的工作之间切换不是很顺畅。但是这个情况在 386 计算机推出后, 有很大的改善。托瓦兹在得知新的 386 芯片的相关信息后,他认为, 以价格性能比的观点来看, Intel 的 386 便宜而且性能上也就稍微可以将就将就 ^_^。 所以他就贷款去买了一部 Intel 的 386 来玩。
前面提到,托瓦兹是玩汇编语言的,汇编语言对于硬件有很密切的关系, 为了彻底发挥 386 的效能,于是托瓦兹花了不少时间在测试 386 机器上!
他的重要测试就是在测试 386 的多功效能上。首先,他写了两个小程序,
一个程序会持续输出 A ,另一个会持续输出 B,他将两个程序同时执行, 结果,他看到屏幕上很顺利的一直出现 ABABABAB...... 他知道,他成功了! ^_^
初次释出 Linux 0.02
探索完了 386 的硬件相关信息,并且也安装了类似 Unix 的 Minix 操作系统,
同时还取得 Minix 的原始码,接下来,托瓦兹干嘛去了??
因为 Minix 的发展控制在
对于托瓦兹来说, GNU 真的是一个不可多得的好家伙~
因为他用来撰写属于自己小核心的工具,就是 GNU 的 bash 操作接口与 gcc 编译器等等自由软件。
他以 GNU 的软件针对 386 并参考 Minix 的设计理念(注意,仅是程序设计理念, 并没有使用 Minix 的原始码)来写这个小核心。喝!没想到竟然可以写出这个小玩意,
而这个小玩意竟然可以在 386 上面顺利的跑起来~还可以读取 Minix 的档案系统。 真是太好了!不过还不够,他希望这个程序可以获得大家的一些修改建议,
于是他便将这个核心放置在网络上提供大家下载,同时在 BBS 上面贴了一则消息:
他说,他完成了一个好玩的小核心操作系统,这个核心是用在 386 机器上的, 同时,他真的仅是好玩,并不是想要做一个跟 GNU 一样大的计划!这则新闻引起很多人的注意, 他们也去托瓦兹提供的网站上下载了这个核心来安装。
有趣的是,因为托瓦兹放置核心的那个 FTP 网站的目录为: Linux , 从此,大家便称这个核心为 Linux 了。(请注意,此时的 Linux 就是那个 kernel 喔!
另外,托瓦兹所丢到该目录下的第一个核心版本为 0.02 呢!)
同时,为了让自己的 Linux 能够兼容于 Unix 系统,于是托瓦兹开始将一些能够在 Unix 上面运作的软件拿来在 Linux 上面跑。不过,他发现到,是有很多的软件无法在 Linux 这个核心上运作。 这个时候他有两种作法,一种是修改软件,让该软件可以在 Linux 上跑, 另一种则是修改 Linux ,让 Linux 符合软件能够运作的规范! 由于 Linux 希望能够兼容于 Unix ,于是托瓦兹选择了第二个作法『修改 Linux 』! 为了让所有的软件都可以在 Linux 上执行,于是托瓦兹开始参考标准的
POSIX 规范。
这个正确的决定让 Linux 在起步的时候体质就比别人优良~
因为 POSIX 标准主要是针对 Unix 与一些软件运行时候的标准规范, 只要依据这些标准规范来设计的核心与软件,理论上,就可以搭配在一起执行了。
而 Linux 的发展就是依据这个 POSIX 的标准规范, Unix 上面的软件也是遵循这个规范来设计的,
如此一来,让 Linux 很容易就与 Unix 兼容共享互有的软件了! 同时,因为 Linux 直接放置在网络下,提供大家下载, 所以在流通的速度上相当的快!导致 Linux 的使用率大增! 这些都是造成 Linux 大受欢迎的几个重要因素呢!
Linux 的发展:虚拟团队的产生
Linux 虽然是托瓦兹发明的,而且内容还绝不会涉及专利软件的版权问题。
不过,如果单靠托瓦兹自己一个人的话,那么 Linux 要茁壮实在很困难~
因为一个人的力量是很有限的。好在托瓦兹选择 Linux 的开发方式相当的务实!
首先,他将释出的 Linux 核心放置在 FTP 上面,并请告知大家新的版本信息, 等到使用者下载了这个核心并且安装之后,如果发生问题,
或者是由于特殊需求亟需某些硬件的驱动程序,那么这些使用者就会主动回报给托瓦兹。 在托瓦兹能够解决的问题范围内,他都能很快速的进行 Linux 核心的更新与除错。
不过,托瓦兹总是有些硬件无法取得的啊,那么他当然无法帮助进行驱动程序的撰写与相关软件的改良。 这个时候,就会有些志工跳出来说:『这个硬件我有,我来帮忙写相关的驱动程序。』
因为 Linux 的核心是 Open Source 的,黑客志工们很容易就能够跟随
Linux 的原本设计架构, 并且写出兼容的驱动程序或者软件。志工们写完的驱动程序与软件托瓦兹是如何看待的呢?
首先,他将该驱动程序/软件带入核心中,并且加以测试。
只要测试可以运行,并且没有什么主要的大问题,那么他就会很乐意的将志工们写的程序代码加入核心中! 总之,托瓦兹是个很务实的人,对于 Linux 核心所欠缺的项目,他总是『先求有且能跑, 再求进一步改良』的心态!这让 Linux 使用者与志工得到相当大的鼓励! 因为 Linux 的进步太快了!使用者要求虚拟内存,结果不到一个星期推出的新版 Linux 就有了! 这不得不让人佩服啊!
另外,为因应这种程序代码的加入,于是 Linux 便逐渐发展成具有模块的功能!
亦即是将某些功能独立出于核心外,在需要的时候才加载到核心中。如此一来, 如果有新的硬件驱动程序或者其它协议的程序代码进来时,就可以模块化,
大大的增加了 Linux 核心的可维护能力!
后来,因为 Linux 核心加入了太多的功能, 光靠托瓦兹一个人进行核心的实际测试并加入核心原始程序实在太费力~
结果,就有很多的朋友跳出来帮忙这个前置作业! 例如考克斯(Alan Cox)、与崔迪(Stephen Tweedie)等等, 这些重要的副手会先将来自志工们的修补程序或者新功能的程序代码进行测试,
并且结果上传给托瓦兹看,让托瓦兹作最后核心加入的原始码的选择与整并! 这个分层负责的结果,让 Linux 的发展更加的容易!
特别值得注意的是,这些托瓦兹的 Linux 发展副手,以及自愿传送修补程序的黑客志工,
其实都没有见过面,而且彼此在地球的各个角落,大家群策群力的共同发展出现今的 Linux ,
我们称这群人为虚拟团队!而为了虚拟团队数据的传输,于是 Linux 便成立的核心网站:
! 而这群素未谋面的虚拟团队们,在 1994 年终于完成的 Linux 的核心正式版! version 1.0 。
这一版同时还加入了 X Window System 的支持呢!更于 1996 年完成了 2.0 版,
同时因应商业版本的需求, 于是开始将核心版本以测试版及稳定版同时开发, 次版本偶数为稳定版,奇数为开发中的测试版。 例如 2.6 与 2.5 版为相同的版本,不过, 2.6 为稳定版, 2.5 则为测试版。
测试版含有较多的功能,不过,稳定性可不敢说~ 并且托瓦兹指明了企鹅为 Linux 的吉祥物。
Linux 由于托瓦兹是针对 386 写的,跟 386 硬件的相关性很强,所以, 早期的 Linux 确实是不具有移植性的。不过,大家知道 Open source 的好处就是, 可以修改程序代码去适合作业的环境。因此,在 1994 年以后, Linux 便被开发到很多的硬件上面去了! 目前除了 x86 之外, IBM、HP、Sun 等等公司出的硬件也都有被 Linux 所支持呢!
Linux distributions
好了,经过上面的说明,我们知道了 Linux 其实就是一个操作系统最底层的核心及其提供的核心工具。
他是 GNU 授权模式,所以,任何人均可取得原始码与可执行这个核心程序,并且可以修改。
此外,因为 Linux 参考 POSIX 设计规范,于是兼容于 Unix 操作系统,
故亦可称之为 Unix Like 的一种。
Linux 的出现让 GNU 计划放下了心里的一块大石头,因为 GNU 一直以来就是缺乏了核心程序, 导致他们的 GNU 自由软件只能在其它的 Unix 上面跑。既然目前有 Linux 出现了,且 Linux 也用了很多的 GNU 相关软件,所以 Stallman 认为 Linux 的全名应该称之为 GNU/Linux 呢!
不管怎么说,Linux 实在很不错,让 GNU 软件大多以 Linux 为主要操作系统来进行开发,
此外,很多其它的自由软件团队,例如 sendmail, wu-ftp, apache 等等也都有以 Linux 为开发测试平台的计划出现!如此一来,
Linux 除了主要的核心程序外,可以在 Linux 上面运行的软件也越来越多,如果有心,就能够将一个完整的 Linux 操作系统搞定了!
虽然由 Torvalds 负责开发的 Linux 仅具有 Kernel 与 Kernel 提供的工具, 不过,如上所述,很多的软件已经可以在 Linux 上面运作了,因此, Linux + 各家软件就可以完成一个相当完整的操作系统了。
不过,要完成这样的操作系统......还真难~
因为 Linux 早期都是由黑客工程师所开发维护的,他们并没有考虑到一般使用者的能力...... 为了让使用者能够接触到 Linux ,于是很多的商业公司或非营利团体,
就将 Linux Kernel (含 tools ) 与可运行的软件整合起来,加上自己具有创意的工具程序, 这个工具程序可以让使用者以光盘或者透过网络直接安装/管理 Linux 系统。 这个 Kernel + Softwares + Tools 的可完整安装的咚咚,我们称之为 Linux distribution , 一般中文翻译成
可完整安装套件,或者安装套件等等。
不过,由于发展 Linux distributions 的公司实在太多了,例如有名的 Red
Hat, Mandriva, Debian, SuSE 等等,所以很多人都很担心,如此一来每个 distribution 是否都不相同呢?这就不需要担心了,因为每个 Linux distributions 使用的 kernel 都是
所释出的,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高, 例如 WWW 服务器的 Apache , Mail 服务器的 Postfix/sendmail ,File 服务器的 Samba 等等。
此外,为了让所有的 Linux distributions 开发不致于差异太大,还有
Linux Standard Base (LSB) 来规范开发者,以及目录架构的 File system Hierarchy Standard (FHS) 规范!
唯一差别的,可能就是该开发者自家所开发出来的管理工具,以及套件管理的模式吧! 所以说,基本上,每个 Linux distributions 除了架构的严谨度与选择的套件内容外, 其实差异并不太大啦! ^_^ 。大家可以选择自己喜好的 distribution 来安装即可!
底下列出几个主要的 Linux distributions 发行者网址:
·
·
·
·
·
·
·
·
·
·
当然发行套件者不仅于此,您可以查阅其它的 Linux 新闻来发现喔! 但是值得大书特书的,是中文 Linux 的延伸计划: CLE 这个套件! 早期的 Linux 因为是工程师发展的,而这些工程师大多以英文语系的国家为主, 所以, Linux 对于国人的学习是比较困扰一点。后来由国人发起的 CLE 计划: 开发很多的中文套件级翻译了很多的英文文件,使得我们目前得以使用中文的 Linux 呢! 另外,目前正在开发中的还有台南县卧龙小三等老师们发起的众多自由软件计划, 真是造福很多的朋友啊!
·
·
此外,如果只想看看 Linux 的话,还可以选择所谓的可光盘开机进入 Linux 的 Live CD 版本, 亦即是 KNOPPIX 这个 Linux distributions 呢!台湾也有阿里巴巴兄维护的中文 Live CD 喔!
·
·
对于没有额外的硬盘或者是没有额外的主机的朋友来说, KNOPPIX 这个可以利用光盘开机而进入 Linux 操作系统的 Live CD 真的是一个不错的选择!您只要下载了 KNOPPIX 的映象档,然后将他烧录成为 CD, 放入您主机的光驱,并设定光盘为第一个开机选项, 就可以使用 Linux 系统了呢!
如果您还想要知道更多的 Linux distributions 的下载与使用信息,可以参考:
·
·
那我到底应该要选择哪一个 distributions ?就如同我们上面提到的,其实每个 distributions 差异性并不大! 不过,由于套件管理的方式主要分为 Debian 的 pkg 及 Red Hat 系统的 RPM 方式, 目前鸟哥的建议是,先学习以 RPM 套件管理为主的 Fedora/SuSE/Mandriva 等台湾使用者较多的版本, 这样一来,发生问题时,可以提供解决的管道比较多。如果您已经接触过 Linux 了, 还想要更严谨的 Linux 版本,那可以考虑使用 Debian ,如果您是以效能至上来考虑, 那么或许 Gentoo 是不错的建议! 总之,版本很多,但是各版本差异其实不大,建议您一定要先选定一个版本后, 先彻头彻尾的了解他,那再继续玩其它的版本时,就可以很快的进入状况。 鸟哥的书/网站仅提供一个版本,不过是以比较基础的方式来介绍的, 因此,如果能够熟练这本书/网站的话,呵呵!哪一个 distributions 对您来说,都不成问题啦!
稳定的系统
免费或少许费用
安全性、漏洞的快速修补
多任务、多使用者
使用者与群组的规划
相对比较不耗资源的系统
适合需要小核心程序的嵌入式系统
Linux 还可以改进的地方:
没有特定的支持厂商
图形接口作的还不够好:即使目前已有 及 等优秀的窗口管理程序, 不过,毕竟整合度还是需要加强。
· 依循标准:
Linux Standard Base (LSB) 及 File system Hierarchy Standard (FHS) 这些个玩意儿的诞生!
Open source 的代表授权为 GNU 的 GPL 及 BSD 等等:
更多的 GPL 可参考的中文化条文!
此外,近期以来还有 Apache 的授权、 Sun 的授权,好多好多~
如果您仅想要了解 Linux ,并且利用 Linux 来作为您的桌上型计算机的话,那么,您只需要购买一本介绍 Linux 桌面设定,例如 中文输入法、打印机设定、因特网设定等等概念的的书籍即可, 不需要特别针对 Linux 来进行什么特殊的学习的!反正利用 Linux 的 X Window System 的图形接口就可以达到您的需求了!您可以选择专为桌上型计算机发行的 Linux distributions 例如:
但是仍须注意的是,SuSE 与 Mandriva 都有出多种版本,请挑选属于 Desktop 的那种喔! 另外,您还可以参考一些网站的数据:
在一些基础知识上,可能的话,当然得去书店找书来读啊! 如果您想要由网络上面阅读的话,那么这里推荐一下由 Netman 大哥主笔的 Study-Area 里面的基础文章,相当的实用!
您既然看到这里了,应该是已经取得了 了吧! ^_^ 。 希望这本书可以帮助您缩短基础学习的历程,也希望能够带给您一个有效的学习观念! 而在这本书看完之后,或许还可以参考一下 Netman 推荐的相关网络书籍:
实作再实作
要增加自己的体力,就是只有运动;要增加自己的知识,就只有读书;当然,要增加自己对于 Linux 的认识,大概就只有实作经验了!所以,赶快找一部计算机,赶快安装一个 Linux 套件,然后快点进入 Linux 的世界里面晃一晃!相信对于你自己的 Linux 能力必然大有斩获!除了自己的实作经验之外,也可以参考网络上一些善心人士整理的实作经验分享喔! 例如最有名的 Study-Area ( )等网站。
上面比较有趣的是那个 LDP (Linux
Documentation Project), 他几乎列出了所有 Linux 上面可以看到的文献数据,各种
How-To 的作法等等,虽然是英文的, 不过,很有参考价值!
· 讨论区的提问:
万一真的经过了自己的查询,却找不到相关的信息,那么就发问吧! 不过,在发问之前建议您最好先看一下『 』 这一篇讨论!然后,你可以到底下几个讨论区发问看看:
Netman 兄提供的一些学习的基本方针,提供给大家参考: