最近更新日期:2006/05/31
1. 什么是 Linux
1.1 计算器:计算的辅助工具 1.2 什么是操作系统? 1.3 Linux 之前,Unix 的历史 1.4 关于 GNU 计划 2. Torvalds 的 Linux 发展 2.1 与 Minix 之间 2.2 对 386 硬件的多任务测试 2.3 初次释出 Linux 0.02 2.4 Linux 的发展:虚拟团队的产生 2.5 Linux distributions 3. Linux 的特色 3.1 Linux 的特色 3.2 Linux 的优缺点 3.1 其他 Linux 相关 4. 重点回顾 5. 本章练习 6. 参考数据 7. 针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23871 什么是 Linux ?
Linux 这玩意儿是在计算机上面运作的,所以,当然得要了解一下计算机这玩意儿。首先,到底有哪些种类的计算机呢?
而 Linux 可以在哪些种类的计算机上面运作?且 Linux 源自哪里?这些我们都得来谈一谈先!
计算器:计算的辅助工具
在目前的都市生活中,您应该很难不接触到计算机这个玩意儿吧?
这个计算机当初在开发的时候,是希望可以辅助与简化人们进行大量的运算工作,
后来才发展成为一些特殊用途。无论如何,计算机基本的功能就是:
『接受用户输入指令,经由 CPU 的数学与逻辑单元运算处理后,
以产生或储存成有用的信息』。为了达成这个功能,当然计算机就必须要有:
什么是操作系统
什么是操作系统 (Operation System, OS) 呢?我们先来想一想,
上面介绍的计算器(计算机)是如何工作的?举例来说,您计算机屏幕上面显示的讯息,
是如何显示出来的呢?嗯!是藉由显示适配器与屏幕显像的。那么如果你想要看 VCD 呢?
呵呵,就需要 1.)有影音数据的光盘片、 2.)可读取光盘片的光驱、
3.) 可以转换影音数据输出的中央处理器 (CPU)、 4.)可以显示影像的显示芯片(显示适配器)、
5.) 可以传输声音的音效芯片(声卡)、 6.)可以输出影像的屏幕以及 7.)可以发出声音的喇叭!
也就是说:所有在『工作』的东西都是『硬件』呀!
对啦!就是硬件在工作!
那么问题来了,现在我们知道,计算机所进行的工作都是计算机硬件帮我们达成的,但是, 为什么这些硬件知道如何播放 VCD 呢?这当然是因为有某个东西在正确的控制硬件的工作了, 那个咚咚就是: 操作系统 啦! 操作系统可以管理整部计算机的硬件,他可以控制 CPU 进行正确的运算, 他可以分辨硬盘里头的数据并进行读取,他还必须要能够认识所有的适配卡, 这样,才能够将所有的硬件通通正确的使用上啊! 所以,如果没有这个操作系统,那么您的计算机就等于是一堆废铁而已啊! 虽然操作系统可以完整的掌控所有的硬件资源,但是,对于使用者来说,还是不够的! 因为操作系统虽然可以掌控所有的硬件,但是,如果用户无法与操作系统沟通, 那么这个操作系统就没有什么用处了。简单的来说,以上面的 VCD 为例, 虽然操作系统可以控制硬件播放 VCD ,但是,如果使用者没有办法控制何时要播出 VCD 的话, 那么到底我们要怎么看 VCD 啊?对吧! 所以说,一个比较『完整的操作系统』应该要包含 两个东西,一个是『核心与其提供的接口工具』、 一个是『利用核心提供的接口工具所开发出来的软件』。 我们以大家常使用的 Windows 计算机来做一个简单的说明好了。大家应该都使用过 Windows 计算机里面的『档案总管』吧!当你开启档案总管的时候,他就会显示你硬盘当中的数据, 这个『显示硬盘里面的数据,就是核心帮你做的』,但是, 『你要核心去显示硬盘哪一个目录下的数据,则是由档案总管这个工具帮你达成的』! 这样可以理解吗? 那么核心有没有作不到的事?当然有的,举例来说, 如果您曾经自行安装过比较新的显示适配器在您的个人计算机上面, 那么应该常常会发生 Windows 计算机告知您:『找不到合适的驱动程序来显示』的问题吧? 也就是说,即使您有最新的显示适配器安装在您的个人计算机上面,而且也有播放 VCD 的程序, 但是因为『核心』无法操控这个最新的显示适配器,所以,就无法正常的显示您的 VCD 了。 没错!你的整个硬件是由核心来管理的,而如果核心不认识你的硬件, 那么你将无法使用该硬设备,例如上面提到的最新的显示适配器。
一般来说,Kernel 为了达成使用者所需要的正确运算结果,他必须要管理的事项有:
OK!提到这里那么您知道 Linux 是什么了吗?呵呵!对啦!其实 Linux 就是一个操作系统,这个操作系统里头含有最主要的 kernel 以及 kernel 提供的工具啦!他提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, 这个架构是沿袭 Unix 良好的传统来的,所以相当的稳定而功能强大!此外, 由于这个优良的架构可以在目前的个人计算机( X86 系统 ) 上面跑, 所以很多的软件开发者将他们的工作心血移转到这个架构上面,那就是很多的应用软件啦! 虽然 Linux 仅是其核心与核心提供的工具, 不过,由于核心、核心工具与这些软件开发者提供的软件的整合,使得 Linux 成为一个更完整的、功能强大的操作系统啰!我们可以将 Linux 的系统与用户的相关性看成底下的图示: 图一、用户、用户接口与核心工具、核心、与硬件之相关性 约略了解 Linux 是何物之后,接下来,我们要谈一谈,『为什么说 Linux 是很稳定的操作系统呢?他是如何来的?』
Linux 之前, Unix 的历史
早在 Linux 出现之前的二十年 ( 大约在 1970 年代 ),
就有一个相当稳定而成熟的操作系统存在了!那就是 Linux 的老大哥『 Unix 』是也!
怎么这么说呢?!他们这两个家伙有什么关系呀?这里就给他说一说啰!众所皆知的,
Linux 的核心是由 Linus Torvalds 在 1991 年的时候给他开发出来的,
并且丢到网络上提供大家下载,后来大家觉得这个小东西 ( Linux Kernel )
相当的小而精巧,所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!
但是为什么这的小东西这么棒呢?!然而又为什么大家都可以免费的下载这个东西呢?!
嗯!等鸟哥慢慢的唬xx....喔不!听我慢慢的道来!
在之后,经由操作系统的改良,使得后来可以使用键盘来进行信息的输入/输出。 不过,在一间学校里面,主机毕竟可能只有一部,如果多人等待使用,那怎么办? 好在 1960 年代初期麻省理工学院 (MIT) 发展了所谓的: 『兼容分时系统( Compatible Time-Sharing System, CTSS )』, 它可以让大型主机透过提供数个终端机(terminal)以联机进入主机,来利用主机的资源进行运算工作。 架构有点像这样: 图二、早期主机与终端机的相关性图标 如此一来,无论主机在哪里,只要在终端机前面进行输入输出的作业,就可利用主机提供的功能了。 不过,需要注意的是,此时终端机只具有输入/输出的功能,本身完全不具任何运算或者软件安装的能力。 而且,比较先进的主机大概也只能提供 30 个不到的终端机而已。 为了更加强化大型主机的系统,以让主机的资源可以提供更多使用者来利用,所以在 1965 年前后, 由贝尔实验室 (Bell)、麻省理工学院 (MIT) 及奇异公司 (GE) 共同发起了 Multics 的计划, Multics 目的是想要让大型主机可以达成提供 300 个以上的终端机联机使用的目标。 不过,到了 1969 年前后,计划进度落后,资金也短缺,所以该计划就宣告不治.....喔!是宣告失败~ (注: Multics 有复杂、多数的意思存在。)
这些概念在后来对于 Linux 的发展有相当重要的影响喔!
在这个时候需要特别注意的是,贝尔实验室是隶属于 AT&T 的,只是 AT&T 当时忙于其他商业活动, 所以对于 Unix 是采取比较开放的态度,此外, Unix 在这个时期的发展者都是贝尔实验室的工程师, 这些工程师对于程序当然相当有研究,所以, Unix 在此时当然是不容易被一般人所接受的! 此外,也需要特别强调,由于 Unix 是以较高阶的 C 语言写的,相对于组译语言需要与硬件有密切的配合, 高阶的 C 语言与硬件的相关性就没有这么大了!所以,这个改变也使得 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 业界之间的紧张气氛,并且也引爆了很多的商业纠纷~
这个 Minix 版本比较有趣的地方是,他并不是完全免费的,无法在网络上提供下载! 必须要透过磁盘/磁带购买才行!虽然真的很便宜~不过,毕竟因为没有在网络上流传, 所以 Minix 的传递速度并没有很快速!此外,购买时,随磁盘还会附上 Minix 的原始码! 这意味着使用者可以学习 Minix 的核心程序设计概念喔! (这个特色对于 Linux 的启始开发阶段,可是有很大的关系喔!) 此外,开发者仅有谭宁邦教授,因为学者很忙啊!加上谭宁邦始终认为 Minix 主要用在教育用途上面, 所以对于 Minix 是点到为止!所以, Minix 很受欢迎没错, 不过,使用者的要求/需求的声音可能就比较没有办法上升到比较高的地方了! 这样说,您明白吧??? ^_^
Richard Mathew Stallman (生于 1953 年, 网络上自称的 ID 为 RMS) 从小就很聪明!他在 1971 年的时候,进入黑客圈中相当出名的人工智能实验室(AI Lab.), 这个时候的黑客专指计算机功力很强的人,而非破坏计算机的怪客 (cracker) 喔! 当时的黑客圈对于软件的着眼点几乎都是在『分享』,所以并没有专利方面的困扰! 这个特色对于史托曼的影响很大!不过,后来由于管理阶层的问题,导致实验室的优秀黑客离开该实验室, 并且进入其他商业公司继续发展优秀的软件。但史托曼并不服输,仍然持续在原来的实验室开发新的程序与软件。 后来,他发现到,自己一个人并无法完成所有的工作,于是想要成立一个开放的团体来共同努力! 1983 年以后,因为实验室硬件的更换,使得史托曼无法继续以原有的硬件与操作系统继续自由程序的撰写~ 而且他进一步发现到,过去他所使用的 Lisp 操作系统,是麻省理工学院的专利软件, 是无法共享的,这对于想要成立一个开放团体的史托曼是个阻碍。于是他便放弃了 Lisp 这个系统。 后来,他接触到 Unix 这个系统,并且发现, Unix 在理论与实际上,都可以在不同的机器间进行移植。 于是他开始转而使用 Unix 系统。因为 Lisp 与 Unix 是不同的系统, 所以,他原本已经撰写完毕的软件是无法在 Unix 上面运行的!为此, 他就开始将软件移植到 Unix 上面。并且,为了让软件可以在不同的平台上运作, 因此,史托曼将他发展的软件均撰写成可以移植的型态! 1984 年,史托曼开始 GNU 计划,这个计划的目的是想要: 建立一个自由的开放的 Unix 操作系统。 但是建立一个操作系统谈何容易啊!而且在当时的 GNU 是仅有自己一个人单打独斗的史托曼~ 这实在太麻烦,但又不能不做这个计划,于是史托曼反其道而行~『既然操作系统太复杂, 我就先写可以在 Unix 上面运行的小程序,这总可以了吧?呵呵!』在这个想法上, 史托曼便开始了程序的写作。在写作期间,为了不让自己吃上官司,他绝对不看专利软件的原始码! 为了这个计划,他开始使用原本 Unix 上面跑的软件, 并自行撰写功能与 Unix 原有专利软件相仿的软件。 但不论是什么软件,都得要进行编译成为二进制文件(binary file)后才能够执行, 因此他便开始撰写 C 语言的编译程序,那就是现在相当有名的 GNU C (gcc)! 这个点相当的重要!这是因为 C 语言编译程序版本众多,但都是专利软件, 如果他写的 C 编译程序够棒,效能够佳,那么将会大大的让 GNU 计划出现在众人眼前!
造成后来很多的软件开发者可以藉由这些基础的工具来进行程序开发! 进一步壮大了自由软件团体!这是很重要的!不过,对于 GNU 的最初构想 『建立一个自由的 Unix 操作系统』来说,有这些优秀的程序是仍无法满足, 因为,当下并没有『自由的 Unix 核心』存在.....所以这些软件仍只能在那些有专利的 Unix 平台上工作~~一直到 Linux 的出现......
关于 GNU 计划
1984 年创立 GNU 计划与 FSF 基金会的 Stallman 先生认为,
写程序最大的快乐就是让自己发展的良好的软件让大家来使用了!
而既然程序是想要分享给大家使用的,不过,每个人所使用的计算机软硬件并不相同,
既然如此的话,那么该程序的原始码 (Source code) 就应该要同时释出,
这样才能方便大家修改而适用于每个人的计算机中呢!这个将原始码释出的举动,
就称为 Open Source !此外,史托曼同时认为,如果您将您程序的 Source code
分享出来时,若该程序是很优秀的,那么将会有很多人使用,
而每个人对于该程序都可以查阅 source code ,无形之中,就会有一票人帮您除错啰!
您的这支程序将会越来越壮大!越来越优秀呢!
而为了避免自己的开发出来的 Open source 的自由软件被拿去做成专利软件, 于是 Stallman 同时将 GNU 与 FSF 发展出来的软件,都挂上 GPL 的版权宣告~ 这个 FSF 的核心观念是『版权制度是促进社会进步的手段, 版权本身不是自然权力。』对于 FSF 有兴趣或者对于 GNU 想要更深入的了解时,请参考树德大学的洪朝贵教授的网站 http://saturn.stu.edu.tw/~ckhung/a/c_83.php,或直接到 GNU 去: http://www.gnu.org 里面有更为深入的解说!
"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 版权宣告之后,他自然就成了自由软件! 这个软件就具有底下的特色:
很多人还是有疑问,目前不是有很多 Linux 开发商吗?为何他们可以贩卖 Linux 这个 GPL 授权的软件? 原因很简单,因为他们大多都是贩卖『售后服务!』所以,他们所使用的自由软件, 都可以在他们的网站上面下载!(当然,每个厂商他们自己开发的工具软件就不是 GPL 的授权软件了!) 但是,您可以购买他们的 Linux 光盘,如果您购买了光盘,他们会提供相关的手册说明文件, 同时也会提供您数年不等的咨询、售后服务、软件升级与其他协力工作等等的附加价值! 所以说,目前自由软件工作者,他们所赖以维生的,几乎都是在『服务』这个领域呢! 毕竟自由软件并不是每个人都会撰写,有人有需要您的自由软件时,他就会请求您的协助, 此时,您就可以透过服务来收费了!这样来说, 自由软件确实还是具有商业空间的喔!
不过,就鸟哥的观点来看, GPL 对于程序开发者的优点是相当多的,不过, 对于不熟悉程序的一般人来说, GPL 的优点其实不太容易看出来~ 首先,虽然他是随手可得的自由软件,不过,您也必须要会使用基本的编译程序才行吧! (呵呵!这也是您为何要买这本书/察看鸟哥的网站的原因吧! ^_^) 这对于一般人来说并不容易!当然啦,如果每个人都跟 Stallman 一样神,那商业公司就不用存在啦! 嘿嘿!对于不懂程序的人来说,商业公司是一个很快速的解决之道啊! 而对于我们广大的读者群来说,认识了/学习了 Linux 与自由软件的相关技巧后, 对于未来真的是有很不错的帮助喔! Torvalds 的 Linux 发展
我们前面一节当中,提到了 Linux 是由 Torvalds 这个芬兰人所发明的。
那么为何托瓦兹可以发明 Linux 呢?凭空想象而来的?还是有什么渊源?
这里我们就来谈一谈啰!
与 Minix 之间
Linus Torvalds (托瓦兹, 1969 年出生)的外祖父是赫尔辛基大学的统计学家,
他的外祖父为了让自己的小孙子能够学点东西,
所以从小就将托瓦兹带到身边来管理一些微计算机。在这个时期,托瓦兹接触了汇编语言
(Assembly Language),那是一种直接与芯片对谈的程序语言,也就是所谓的低级语言。
必须要很了解硬件的架构,否则很难以汇编语言撰写程序的。
在 1988 年间,托瓦兹顺利的进入了赫尔辛基大学,并选读了计算机科学系。 在就学期间,因为学业的需要与自己的兴趣,托瓦兹接触到了Unix 这个操作系统。 当时整个赫尔辛基只有一部最新的 Unix 系统,同时仅提供 16 个终端机 (terminal)。 还记得我们上一节刚刚提过的,早期的计算机仅有主机具有运算功能, terminal 仅负责提供 Input/Output 而已。在这种情况下, 实在很难满足托瓦兹的需求,因为.....光是等待使用 Unix 的时间,就很耗时~ 为此,他不禁想到:『我何不自己搞一部 Unix 来玩?』不过, 就如同 Stallman 当初的 GNU 计划一样,要写核心程序,谈何容易~ 不过,幸运之神并未背离托瓦兹,因为不久之后,他就知道有一个类似 Unix 的系统, 并且与 Unix 完全兼容,还可以在 Intel 386 机器上面跑的操作系统, 那就是我们上一节提过的,谭宁邦教授为了教育需要而撰写的 Minix 系统! 他在购买了最新的 Intel 386 的个人计算机后,就立即安装了 Minix 这个操作系统。 另外,由于 Minix 这个操作系统是有附上原始码的~所以,托瓦兹也经由这个原始码 学习到了很多的核心程序设计的设计概念喔! 对 386 硬件的多任务测试
事实上,托瓦兹对于个人计算机的 CPU 其实并不满意,因为他之前碰的计算机都是工作站型的计算机,
这类计算机的 CPU 特色就是可以进行『多任务处理』的能力。什么是多任务呢?
理论上,一个 CPU 在一个时间内仅能进行一项工作,
那如果有两个工作同时出现到系统中呢?举例来说,
您可以在现今的计算机中同时开启两个以上的办公软件,例如电子电子表格与文字处理软件。
这个同时开启的动作代表着这两个工作同时要交给 CPU 来处理~
啊! CPU 一个时间点内仅能处理一个工作,那怎么办?没关系,
这个时候如果具有多任务的 CPU 就会自动在不同的工作间切换~
亦即我先跑 10% 的电子电子表格,再转到字处理器跑 10% ,再回去电子电子表格....
一直到将两个工作结束为止(不一定同时结束!如果某个工作先结束了,
CPU 就会全速去跑剩下的那个工作了!)
前面提到,托瓦兹是玩汇编语言的,汇编语言对于硬件有很密切的关系, 为了彻底发挥 386 的效能,于是托瓦兹花了不少时间在测试 386 机器上! 他的重要测试就是在测试 386 的多功效能上。首先,他写了两个小程序, 一个程序会持续输出 A ,另一个会持续输出 B,他将两个程序同时执行, 结果,他看到屏幕上很顺利的一直出现 ABABABAB...... 他知道,他成功了! ^_^
初次释出 Linux 0.02
探索完了 386 的硬件相关信息,并且也安装了类似 Unix 的 Minix 操作系统,
同时还取得 Minix 的原始码,接下来,托瓦兹干嘛去了??
因为 Minix 的发展控制在谭宁邦教授手上,他希望 Minix 能以教育的立场去发展,
所以对于 Minix 的开发并不是十分的热中,但是一堆人对于 Minix 的功能需求又很强烈,
例如一些接口与周边的驱动程序与新的协议等等。在无法快速的得到解决后,
托瓦兹就想,那我干脆自己写一个更适合我自己用的 Minix 好了!
于是他就开始进行核心程序的撰写了。
对于托瓦兹来说, GNU 真的是一个不可多得的好家伙~ 因为他用来撰写属于自己小核心的工具,就是 GNU 的 bash 操作接口与 gcc 编译程序等等自由软件。 他以 GNU 的软件针对 386 并参考 Minix 的设计理念(注意,仅是程序设计理念, 并没有使用 Minix 的原始码)来写这个小核心。喝!没想到竟然可以写出这个小玩意, 而这个小玩意竟然可以在 386 上面顺利的跑起来~还可以读取 Minix 的文件系统。 真是太好了!不过还不够,他希望这个程序可以获得大家的一些修改建议, 于是他便将这个核心放置在网络上提供大家下载,同时在 BBS 上面贴了一则消息:
同时,为了让自己的 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 便成立的核心网站: http://www.kernel.org ! 而这群素未谋面的虚拟团队们,在 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 都是 http://www.kernel.org 所释出的,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高, 例如 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 是 Torvalds 先生所开发出来的,基于 GPL 的版权宣告之下,
可以在 x86 的架构下运作,也可以被移植到其他的大型主机上面。
由于开发的相关理念与兼容的问题,因此,我们也可以称 Linux 为 Unix Like 操作系统的一种。
Linux 的特色
那么这个系统有什么特异功能呢?简单的说:
这也是造成 Linux 成为最近几年来最受瞩目的操作系统之一,如前所述, 他会受到瞩目的原因主要是因为他是『free』的,就是可以自由取得的操作系统啦! 然后他是开放性的系统,也就是你可以随时的取得程序的原始码,这对于程序开发工程师是很重要的! 而且,虽然他是 Free 的自由软件,不过功能却很强大!另外, Linux 对于硬件的需求是很低的,这一点更造成它流行的主因,因为硬件的汰换率太快了, 所以很多人手边都有一些很少在用的零件,这些零件组一组就可以用来跑 Linux 了,反正做一个工作站又不用使用到屏幕 ( 只要主机就可以啰 ) ,因此 Linux 就越来越流行啰!(插个嘴,也就是因为 Linux 具有 1.硬件需求低、 2.架构开放、 3.系统稳定性及保密性功能够强、 4.完全免费,所以造成一些所谓『反微软联盟』的程序设计高手不断的开发新软件!以与 Microsoft 进行抗衡!) Linux 的优缺点
那干嘛要使用 Linux 做为我们的主机系统呢?这是因为 Linux 有底下这些优点:
其他 Linux 相关
还有一些数据需要提醒大家的呢!
Linux 有个优良的传统,那就是支持比较公认而正式的标准, 例如开发时就使用的 POSIX 规范。此外, 由于 Linux 是一个没有『规格品』样式的新鲜玩意儿, 如果大家都自己玩自己的,那么可想而知的是,未来想要在 Linux 这个操作系统上面发展软件与硬件的厂商一定会无所适从的! 为了让软件开发商、与硬件发展者有一个依循的方向,因此而有 Linux Standard Base (LSB) 及 File system Hierarchy Standard (FHS) 这些个玩意儿的诞生!所以,各个 distribution 也都要遵循 LSB 上面的规范,软硬件发展者也都会依循 LSB ,所以啰,我们才会常常说,各大 distribution 虽然在提供的工具与创意上面有所不同,但是基本上,他们的 Linux 架构都是很类似的!因此,你只要玩一套 Linux distribution 也就够了!其他的 distribution 应该就难不倒你啰! 由于网络的盛行,我们或许常常会听到一些名词ㄋㄟ~所以,底下先来介绍几个简单的网络名词吧! ^_^,来认识一下什么是 服务器 ( Server )、工作站 ( Workstation ) 与终端机 ( Ternianl )?简单的来说,你可以这样认为:
现在市面上有好多的软件,有的是自由软件,有的是专利软件。 有的专利软件免费,有的自由软件要钱~啊!好烦啊!怎么分辨这些东西? 其实,鸟哥并不是律师,对于法律也不十分懂,不过, 还是有几个授权模式可以来谈一谈~
重点回顾
习题练习
( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看)
应包含 Kernel + Kernel Tools + Applications 等等
1GBytes = 1024 MBytes * 1024 KBytes/MBytes = 1048576 KBytes
因为所有的硬件都没有问题,所以,可能出问题的地方在于系统的核心(kernel)
不支持这张网络卡。解决的方法,到网络卡的开发商网站,下载支持您主机操作系统的驱动程序,
安装网卡驱动程序后,就可以使用了。
不行!因为核心不同,针对硬件所写的驱动程序也会不相同,
编译程序也不同,当然,驱动程序也无法在两个操作系统间兼容。
这也是为何开发商在他们的网站上面,都会同时提供许多不同操作系统的驱动程序之故。
当然不行!跟上一题相似的,因为游戏也是一个应用程序 (application),
他必须要使用到核心所提供的工具来开发他的游戏,
所以这个游戏是不可在不同的平台间运作的。除非这个游戏已经进行了移植。
程序是由程序代码(通成为ASCII格式)经过编译程序编译成为 binary file 之后,
才能够在该操作系统上面执行。因此,您可以将您的程序的程序代码修改成可以适应
其他操作系统的环境,并且加以编译,使程序可以在其他平台上运作,
这个修改的动作即为移植。
相同:利用同样的 Linux kernel (http://www.kernel.org),几乎相同的自由软件套件
(例如 GNU 里面的 gcc/glibc/vi/apache/bind/sendmail... ),几乎相同的操作接口
(例如均使用 bash/KDE/GNOME 等等)。
不同:使用的 kernel 与各软件的版本可能会不同;各开发商加入的应用工具不同, 使用的套件管理模式不同(debian 与 RPM)
Unix 是 Ken Thompson 写的,1973 年再由 Dennis Ritchie 以 C 语言改写成功。
至于 GNU 与 FSF 则是 Richard Stallman 发起的。
GNU 是 GNU is Not Unix 的简写,是个无穷循环!
另外,这个计划是由自由软件基金会 (Free Software Foundation, FSF) 所支持的!
两者都是由 Stallman 先生所发起的!
目前各大版本的 Linux distribution 大致上仍然依附在 GPL 这个版权宣告上,
因此在网络上面都可以轻易的下载,若有兴趣的话可以到各发展的厂商主网页去下载。
然而为了带宽的节省起见,建议在台湾以映像站台来下载速度上会快上很多,
特别建议南台湾朋友可以到义守大学的 FTP 站 ( http://ftp.isu.edu.tw/ )下载资料!
1. 任何个人或公司均可释出自由软件 ( free software );
2. 任何释出自由软件的个人或公司,均可由自己的服务来收取适当的费用; 3. 该软件的原始码 ( Source Code ) 需要随软件附上,并且是可公开发表的; 4. 任何人均可透过任何正常管道取得此一自由软件,且均可取得此一授权模式。
Multiuser 指的是 Linux 允许多人同时连上主机之外,
每个使用者皆有其各人的使用环境,并且可以同时使用系统的资源!
Multitask 指的是多任务环境,在 Linux 系统下, CPU 与其他例如网络资源可以同时进行多项工作, Linux 最大的特色之一即在于其多任务时,资源分配较为平均!
1. GPL 的授权之软件,乃为自由软件(Free software),任何人皆可拥有他;
2. 开发 GPL 的团体(或商业企业)可以经由该软件的服务来取得服务的费用;
3. 经过 GPL 授权的软件,其属于 Open source 的情况,所以应该公布其原始码;
4. 任何人皆可修改经由 GPL 授权过的软件,使符合自己的需求;
5. 经过修改过后 Open source 应该回馈给 Linux 社群。
简单的说, Linux 就是一个操作系统,或者说, Linux 是操作系统最底层的核心。
这个核心可以管理整个计算机硬件,让计算机硬件可以完整的运作起来,并等待用户输入指令。
最早 Linux 是由 Torvalds 在 1991 年写出来的,后来由于他承接了 Unix 的良好传统:稳定性高、
多人多任务的环境设计优良、要求配备较低等优点,所以很多软件开发商在这个核心上面开发,
而某些厂商将这些软件与核心整合成为可以完全安装的光盘,而成为目前大家常常听到的 Linux 操作系统了。
POSIX 是一种标准规范,主要针对在 Unix 操作系统上面跑的程序来进行规范。
若您的操作系统符合 POSIX ,则符合 POSIX 的程序就可以在您的操作系统上面运作。
Linux 由于支持 POSIX ,因此很多 Unix 上的程序可以直接在 Linux 上运作,
因此程序的移植相当简易!也让大家容易转换平台,提升 Linux 的使用率。
主要分为奇数的发展中版本(develop),如 2.5 ,及偶数的稳定版本,如 2.6 。
自由软件意指:你可以拥有自由的取得、复制、修改、再发行该软件的权利,
由于具有这些权利,因此自由软件通常是 Open source 的。
开放源码意指:软件释出时,同时释出原始码,但使用者取得原始码后,能否修改该原始码, 则依据该软件的授权而定。 意思就是说,自由软件是 Open source 的,但是 Open source 的软件则不见得是自由软件!
所谓的 Live CD 就是将完整的 Linux distribution 放置到一片光盘 (目前也有 DVD 版本了) 当中,
然后透过重新启动以『光盘开机』,就能够不使用硬盘直接进入 Linux 系统的环境。
1. 藉由 Minix 操作系统开发的 Unix like ,没有版权的纠纷;
2. 藉助于 GNU 计划所提供的各项工具软件, gcc/bash 等; 3. 藉由 Internet 广为流传; 4. 藉由支持 POSIX 标准,让核心能够适合所有软件的开发; 5. 托瓦兹强调务实,虚拟团队的自然形成! 参考数据
2002/06/25:第一次完成 2003/01/26:重新修订,加入一些历史事件、重新编排与加入 FAQ 2003/02/28:加入百资以及 distrowatch 两个网站的推荐! 2005/05/31:旧有的资料放于 此处 2005/06/02:做了大幅度的改版,很多数据参考了网络农夫及 Linux 传奇等书籍,建议大家要多看看网络农夫的大作喔! 2005/06/08:将原本的 binary / compiler / Emacs 的地方再说明一下!比较容易了解那是什么!顺便加入习题 2005/07/21:网络农夫的网站结束了~真伤心~只好提供网络农夫之前发表的文章连结了! 2005/08/03:感谢网友 babab 的来信告知,修订了国家高速网络中心网址:http://www.nchc.org.tw 2005/10/24:经由网友的回报,洪朝贵老师已经调职到树德大学,因此整个连结内容已作修订。 2006/05/31:加入了重点回顾的项目啦! 2006/06/06:感谢网友 "Warren Hsieh" 兄的提醒,由于麦金塔在 2006 年后使用 Intel 的 x86 硬件架构,故 Windows 是可能可以在上面安装的! |
||||||||||||||||||||||||||||||||||
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室