关于Linux的一些常识


转自:鸟哥的Linux私房菜馆 http://linux.vbird.org
 
看到网路上有许多新手,在使用 Linux 的过程中遇到很多问题,当然也有不少热心的老手很愿意照顾这些新手们,只是看看新手们 po 出来的问题,有的内容很笼统,有的则是不知所云,这样会增加许多老手在回答问题方面的困难度,因为反覆看了半天也找不出问题的核心究竟在那裡。
 
当然,能够自己去找出问题的答案是很好的,只是对於非资讯科学系出身的人来说,网路上一大堆专业文件也很难看得懂,了解 Linux 的人会觉得它比 Windows 好,不了解的人也许连开机都成问题。
 
在这裡有一个很重要很重要的观念必须要强调:Linux 的核心架构完完全全不同於 Windows,因此千万不要抱著使用 Windows 的心态来研究 Linux,否则会遭遇到很严重的挫折。
 
Linux 是一个 32 位元的多人多工的大型企业用伺服器作业系统。Windows只有 NT 的系列產品才可以勉强算是 32 位元的產品,然而一直到了 XP 的时代,NT 系列的核心架构才算是追上了 Linux 的水準。
 
Linux 最大的缺点就是桌面环境的整合度不像 Windows 那麼好,然而伺服器若採用 XP 產品,其稳定性还可以,但是效率上却不如 Linux。
 
在以下的文章裡面,有三个重点要详加讨论一下:
第一,什麼是伺服器?
第二,什麼是多人多工作业系统?
第三,Linux 的核心架构究竟跟 Windows 有什麼不同的地方?
 
以上三个重点谈完了,最后就以各发行版的比较及常见问题做结束。
 
首先来谈谈伺服器。在一般人的观念裡,伺服器很可能只是拿来架网路的,但事实上,古早的伺服器是一种“性能和价格都比一般终端机更可怕的电脑”,而且这样的概念一直到今天也还是一样。
 
伺服器的特点就是多个 CPU 同时进行资料处理以及运算的工作,而且体积庞大,发出的热量也高,因此一套大型企业用伺服器必须要花上不少成本去运作,去维护。也正因为大型的企业用伺服器价格昂贵,所以古早时期的企业,有一套这样的机房设备就很了不起了。像这样的设备当然是要给全公司的人使用的,因此企业内部的区域网路概念就这样成形了。
 
想使用这套大型伺服系统的人,只要在自己的办公室裡,透过“终端机”这样的设备,就可以使用伺服器的储存设备,以及处理器的运算资源。终端机的原始概念并不是一台电脑,只是一个萤幕,它的目的是要让使用者透过网路接收来自伺服器的讯息。也许它有中央处理器,但是功能也很简单,只是单纯地处理 I/O 等资料输出入的工作而已。而且重点是,它很便宜。
 
自从终端机有了中央处理器,也就是 CPU 之后,终端机才摇身一变而成为个人电脑,也就是 PC (Personal Computer)。当时个人电脑的代名词就是 Apple,也就是现今的 Mac。
 
当年的 Apple 刚推出的时候,只有单色萤幕,而且价格昂贵。所使用的储存设备是磁带机,而不是磁碟机。伺服器系统所使用的储存设备也是磁带机,Linux 有一个指令:tar,就是将资料打包之后,存进磁带机用的指令。
 
当时的大型企业用伺服器,所使用的作业系统,是由 AT&T 的贝尔实验室所研发的 UNIX,是一套售价极为昂贵的作业系统。后来为了教学用途,AT&T提供了 UNIX 的“部份”原始码给柏克莱大学,也就是 BSD (Berkley Software Distribution),现今所谓的 Free BSD,绝对不是免费的意思!而是指“开放原始码”的意思。
 
UNIX 当年是一套需要收费的大型伺服器作业系统,Sun Microsystem 的创办人裡面,有一位 Bill Joy 就是柏克莱大学的研究生。微软的掘起是在个人电脑的领域方面,当时的个人电脑尚无法运作 UNIX 这样的大型电脑作业系统,因为当时的个人电脑只有 8 位元。而微软的 DOS 產品,严格来说也不算是作业系统,而是一套“磁碟操作系统”,因此 DOS 的主要功能是在於资料的 I/O 上头,这也是为什麼採用 DOS 作业系统的个人电脑大多被拿来用作文书处理的缘故。
 
令人讶异的是,个人电脑在很短的时间内急速发展,功能也有著突飞猛进的发展,使得微软作业系统横扫全世界的个人电脑市场,甚至威胁到了Sun Microsystem 的伺服器市场,这也是为什麼 Sun 一直视微软为最大竞争对手的缘故。
 
既然当年的 UNIX 是要钱的,那麼免费的 Linux 是怎麼来的?原来柏克莱大学的教授将学术研究用的部份 UNIX 原始码以自由的形式公开,这使得拥有版权的 AT&T 很不高兴,控告了柏克莱大学,但因为 AT&T 后来因为独佔的罪名被法院拆解成七家子公司,最后卖给了 Novell,因此这场官司最后也就不了了之。
 
UNIX 的原始码后来被一名麻省理工学院的人工智慧实验室教授ichard M. Stallman 所发展的 GNU 计画给散播到了全世界。这位教授希望让全世界的人都来使用这有史以来最棒的作业系统,所谓的 GNU 就是一套全新的大眾化 UNIX 作业系统,跟原先的 UNIX 已经不一样了,因此由他所创办的自由软体基金会有一个很有名的宣言: GNU is Not Unix。
 
原本的 UNIX 核心 (kernel),并不适合一般的个人电脑使用,它是一个像恐龙一样庞大而又笨重的傢伙,因此有了微核心的概念,接著又有了 Minix,这是 Andrew Tanenbaum 教授为教学目的撰写的作业系统。在教育界可算是一套学习 UNIX 基础的好范本。
 
然而採用微核心的 UNIX,其实只是功能严重缩水的 UNIX,不但没有原本UNIX 的特点,甚至还更糟糕。当年已经是 386 个人电脑的时代,正是微软DOS 作业系统横行无阻的年代, UNIX 可以说是几乎快要被淘汰了。然而,这时却有一位芬兰赫尔辛基大学资讯系二年级的学生 Linus Benedict Torvalds ,因为疯狂爱上 UNIX 这套作业系统,但是却不满意自己的 386 执行 Minix 有许多差劲的地方,因此他兴起了一个念头:重做一个核心吧!
 
他花了很多时间做出了一个核心,并且发表在网路上,当时他贴出了一份如下的公告:
Hello everybody out there using minix:
I'm doing a (free) operation system.....(以下的内容省略)
他所发展出来的核心,初期并没有引起很大的轰动,直到人们发觉它是一套可以在 386 个人电脑上运作的 UNIX,并且可以轻易地将个人电脑变成伺服器,很快地 Linux 就席捲了整个自由软体的世界。后来并且有了 X 视窗操作介面,以及 Gnome 、 KDE 等桌面操作环境,以及 XFree 这样的设备驱动函式库,Linux 才得以拥有漂亮的图形操作介面。
 
当读者有了大型伺服器的概念之后,讨论第二个重点:什麼是多人多工,才是比较有意义的事情。
多人多工并不是在一个桌面上开啟多个视窗,就叫做多工。
 
微软的 Windows 在这方面的技术还比不上 Linux。所谓的多人多工,真正的意义是:让不同的使用者,在同一时间内,使用同一部伺服器的资源。比方说,有一个使用者想连上这伺服器听 mp3,另外一个使用者也想连上伺服器玩 game,作业系统可以分配资源给连接到伺服器的电脑,同时进行两种完全不同的工作,这就是资源共享。想要顺利达成这样的工作,伺服器又不能出现错误,而且也不能有安全上的漏洞,可想而知这技术有多麼难以达成。
 
那麼有人会觉得说,我的电脑又不用来当做伺服器,为什麼要用 Linux?当然以 Linux 做为工作站,也可以享有稳定多工的环境,但最垂要的是,现今的宽频愈来愈普及,个人电脑的运算能力也愈来愈强,未来的网际网路就不再是伺服器对工作站的架构 ( server-client ),而是伺服器对伺服器了。

(server-server)
最后一点,Linux 的核心架核究竟跟微软的 Windows 有什麼不一样的地方?首先来看看它的档案系统,为了符合大型电脑的需求,Linux 将所有的储存装置都视为一个目录,这是达成无限的扩充需求。例如说,可以将多个硬碟合成一个目录,就像是 RAID 架构,也可以一个磁碟掛载成不同的目录,每个目录都有各自的功能。
 
因此“掛载”是 Linux 一个非常重要的概念。理论上,Linux 可以将任何储存媒体,不论是什麼样的档案系统,掛载成目录的形式来使用。
 
目录在 Linux 的概念上并不是资料夹,这是 Windows 裡的概念。有一个地方可以用来说明这个不同点。对Windows 来说,根目录就是安装Windows 的磁区,比方说 C:。但是 Linux的根目录就不一定是一个主磁区,很可能是大量储存媒体的集合体。
 
也可以说,一部大型电脑伺服器,若有需要加装更多的记忆体,更多的硬碟,更多的 CPU,Linux 都可以轻易接受。甚至 Linux 的核心或是开机档案都可以放在不同的目录、不同的储存装置,不同的磁区,照样能够运作正常。
 
但是 Windows 就不行,甚至硬碟的分割都必须合乎微软的标準。这是相当白痴的做法,只要一个档案不见了,Windows 就无法开机,甚至造成严重损毁。
企业可能会因为一次当机造成无可弥补的损失。
 
微软的 Windows 只适合个人电脑的单 CPU、单硬碟。Windows 没办法从“任意一个磁区”来啟动,硬碟的分割,也只能符合主开机区加上延伸磁区的概念,甚至主开机磁区也有磁柱、数量的限制。
不仅如此,Linux 的核心能够接受套件来加强功能。有一个概念必须要弄清楚,套件其实并不完全是应用程式。凡是跟核心有关的套件一但安装了,它就跟Linux 的核心融为一体,功能变得更加强大,但是微软的 Windows 核心是“钉死的”,它没有办法增加功能,因此每年都要换新一次微软的產品。微软每年都要将他们的作业系统大幅度地改版一次,因此投下了大量的研发经费,然而 Linux 只要安装更新套件就行了。
 
这种概念就像是做了一个机器人,你可以任意加强它的功能,装上手臂就可以举重物,装了双脚它就可以走路,装上翅膀甚至可以飞上天!
 
究竟 Linux 跟 Windows 的核心那裡不一样?简单地说就是:
Linux 的核心具有无限扩充的可能性,Windows 却是钉死的。
 
在可预见的未来,微软每年投下的作业系统研发经费会呈现等比级数的成长,并且推出的產品限制会愈来愈多。也许微软会加进很多新功能,但也就是这麼多而已,使用者也许可以藉由应用程式来增加功能,但是旧有的应用程式并无法用在微软的新作业系统上面。
 
从很多方面来分析,Linux 不但功能强大,而且拥有无限的发展潜力。但是它并没有办法以“商业利益”来推动它的发展。事实上,Linux 的发展主要是靠著“虚拟团队”,也就是网际网路上的高手来发展,这也是为什麼,Linux 一直到了网际网路发达的今天,才有突破性发展的缘故。
 
然而“无限”是一个很笼统的概念,因此 Linux 才会冒出一大堆不同的发行版。以现今市场占有率最大的 Red Hat 以及 Mandrake 来说,Mandrake 的硬体相容性比较好,安装时比较不会遇到困难,然而在函式库方面,Mandrake时常出现连结错误的现象,因此比较不稳定,也较容易当机。新推出的 9.0版本在稳定性方面提昇不少,值得嘉奖。
 
Red Hat 就比较专业,这也是长期耕耘专业伺服器的成果,用来开发程式很不错。然而在安装方面较为不易,除非将整个硬体环境配置成为接近伺服器的环境。最近推出的 8.0 版本已经将 Mandrake 的亲和力以及硬体相容性放进去,未来鹿死谁手还很难说。
 
软的產品,最大的优势在两个方面:一是因为封闭原始码带来的巨额商业利益,一是利用广大的市场佔有率制定各种不同的标準。尤其是后者,因为版权的问题,Linux 无法使用微软的 DirectX 函式库,因此硬体的相容性比较差。
 
早年微软制定出 DirectX 的时候,并不是一个绘图函式库,而是一个 API,也就是应用程式介面。当一个程式设计师所设计出来的应用程式,呼叫DirectX 函式库,只要电脑的硬体设备符合 DirectX 标準,那麼这个应用程式就可以运作正常。
 
早在 DOS 时代,没有 DirectX 函式库,程式设计师必须要亲自撰写装置的驱动程式。然而有了 DirectX,装置的驱动交由它来负责就行了,程式设计师只要负责核心程式码的部份就好了,大大减少开发程式的困难度。
 
然而这却无法弥补微软 Windows 本身的缺陷,因此当应用程式出错的时候,程式设计师要花更多的时间去找出错误,有许多作业系统本身的错误并无法被程式设计师修正,因此也只能期待微软推出修补程式。然而微软每修补一个漏洞,就產生更多的漏洞,直到最后不得不重新推出一个作业系统。
 
目前硬体部份是由 XFree 团队来负责的。所谓 XFree 的意思是,让所有的硬体都能在 X Window 环境下顺利运作,而且不需要使用者亲自撰写驱动程式。因此使用者在购买硬体时,最好能够考虑 XFree 的相容性。在 Red Hat 或是Mandrake 的官方网站都可以看到完整的硬体相容性列表。

  1. No comments yet.
(will not be published)
*