1. 程式人生 > >Linux學習:Linux的發展歷史及特點

Linux學習:Linux的發展歷史及特點

引用:《鳥哥的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就會在不同的程式間切換。假設CPU頻率為1GHz的話,那表示CPU一秒鐘可以進行10的9次方次工作。假設CPU對每個程式都只進行1000次執行週期,然後就要切換到下個程式的話,那麼CPU一秒鐘就能夠切換10的6次方次呢! (當然啦,切換工作這件事情也會花去一些CPU時間,不過這裡暫不討論)。這麼快的處理速度下,你會發現,兩個程式感覺上幾乎是同步在進行啦!

Tips:

為什麼有的時候我同時開兩個檔案(假設為A, B檔案)所花的時間,要比開完A再去開B檔案的時間還要多?現在是否稍微可以理解?因為如果同時開啟的話,CPU就必須要在兩個工作之間不停的切換,而切換的動作還是會耗去一些CPU時間的!所以,同時啟用兩個以上的工作在一個CPU上,要比一個一個的執行還要耗時一點。這也是為何現在CPU開發商要整合兩個CPU於一個晶片中!也是為何在執行情況比較複雜的伺服器上,需要比較多的CPU的原因!

早期Intel x86架構計算機不是很受重視的原因,就是因為x86的晶片對於多工的處理不佳, CPU在不同的工作之間切換不是很順暢。但是這個情況在386計算機推出後,有很大的改善。 託瓦茲在得知新的386晶片的相關資訊後,他認為,以效能價格比的觀點來看,Intel的386相當的便宜,所以在效能上也就稍微可以將就將就。最終他就貸款去買了一部Intel的386來玩。

早期的計算機效能沒有現在這麼好,所以壓榨計算機效能就成了工程師的一項癖好!託瓦茲本人早期是玩組合語言的,組合語言對於硬體有很密切的關係,託瓦茲自己也說:『我始終是個效能癖』。為了徹底發揮386的效能,於是託瓦茲花了不少時間在測試386機器上!他的重要測試就是在測試386的多功效能。首先,他寫了三個小程式,一個程式會持續輸出A、一個會持續輸出B,最後一個會將兩個程式進行切換。他將三個程式同時執行,結果,他看到螢幕上很順利的一直出現ABABAB...... 他知道,他成功了!

Tips:

要達到多工(multitasking)的環境,除了硬體(主要是CPU)需要能夠具有多工的特性外,作業系統也需要支援這個功能喔!一些不具有多工特性的作業系統,想要同時執行兩個程式是不可能的。除非先被執行的程式執行完畢,否則,後面的程式不可能被主動執行。

至於多工的作業系統中,每個程式被執行時,都會有一個最大CPU使用時間,若該工作運作的時間超過這個CPU使用時間時,該工作就會先被丟出CPU的執行中,而再度的進入核心工作佇列中等待下一次被CPU取用來執行。

這有點像在開記者會啦,主持人(CPU)會問『誰要發問』?一群記者(工作程式) 就會舉手(看誰的工作重要!),先舉手的自然就被允許發問,問完之後,主持人又會問一次誰要發問,當然,所有人(包括剛剛那個記者)都可以舉手! 如此一次一次的將工作給他完成啊!多工的環境對於複雜的工作情況,幫助很大。

初次釋出Linux 0.02

探索完了386的硬體之後,終於拿到Minix並且安裝在託瓦茲的386計算機上之後,託瓦茲跟BBS上面一堆工程師一樣,他發現Minix雖然真的很棒,但是譚寧邦教授就是不願意進行功能的加強,導致一堆工程師在作業系統功能上面的慾求不滿!這個時候年輕的託瓦茲就想:『既然如此,那我何不自己來改寫一個我想要的作業系統?』於是他就開始了核心程式的編寫了。

編寫程式需要什麼呢?首先需要的是能夠進行工作的環境,再來則是可以將原始碼編譯成為可執行檔案的編譯程式。好在有GNU計劃提供的bash工作環境軟體以及gcc編譯程式等自由軟體,讓託瓦茲得以順利的編寫核心程式。他參考Minix的設計理念與書上的程式程式碼,然後仔細研究出386個人計算機的效能優化,然後使用GNU的自由軟體將核心程式程式碼與386緊緊的結合在一起,最終寫出他所需要的核心程式。而這個小玩意竟然真的可以在386上面順利的跑起來,還可以讀取Minix的檔案系統。真是太好了!不過還不夠,他希望這個程式可以獲得大家的一些修改建議,於是他便將這個核心放置在網路上提供大家下載,同時在BBS上面貼了一則訊息:

他說,他完成了一個小小的作業系統,這個核心是用在386機器上的,同時,他真的僅是好玩,並不是想要做一個跟GNU一樣大的計劃! 另外,他希望能夠得到更多人的建議與回饋來發展這個作業系統!這個概念跟Minix剛好背道而馳呢!這則新聞引起很多人的注意,他們也去託瓦茲提供的網站上下載了這個核心來安裝。有趣的是,因為託瓦茲放置核心的那個FTP網站的目錄為:Linux,從此,大家便稱這個核心為Linux了。(請注意,此時的Linux就是那個kernel。另外,託瓦茲所丟到該目錄下的第一個核心版本為0.02呢!)

同時,為了讓自己的Linux能夠兼容於Unix系統,於是託瓦茲開始將一些能夠在Unix上面運作的軟體拿來在Linux上面跑。不過,他發現到有很多的軟體無法在Linux這個核心上運作。這個時候他有兩種作法,一種是修改軟體,讓該軟體可以在Linux上跑,另一種則是修改Linux,讓Linux符合軟體能夠運作的規範!由於Linux希望能夠兼容於Unix,於是託瓦茲選擇了第二個作法『修改Linux』!為了讓所有的軟體都可以在Linux上執行,於是託瓦茲開始參考標準的POSIX規範。

Tips:

POSIX是可移植作業系統介面(Portable Operating System Interface)的縮寫,重點在規範核心與應用程式之間的介面,這是由美國電器與電子工程師學會(IEEE)所釋出的一項標準。

這個正確的決定讓Linux在起步的時候體質就比別人優良。因為POSIX標準主要是針對Unix與一些軟體執行時候的標準規範,只要依據這些標準規範來設計的核心與軟體,理論上,就可以搭配在一起執行了。而Linux的發展就是依據這個POSIX的標準規範,Unix上面的軟體也是遵循這個規範來設計的,如此一來,讓Linux很容易就與Unix相容共享互有的軟體了!同時,因為Linux直接放置在網路下,提供大家下載,所以在流通的速度上相當的快!導致Linux的使用率大增!這些都是造成Linux大受歡迎的幾個重要因素。

Linux 的發展:虛擬團隊的產生

Linux能夠成功除了託瓦茲個人的理念與力量之外,其實還有個最重要的團隊!

  • 單一個人維護階段

Linux雖然是託瓦茲發明的,而且內容還絕不會涉及專利軟體的版權問題。不過,如果單靠託瓦茲自己一個人的話,那麼Linux要茁壯實在很困難,因為一個人的力量是很有限的。好在託瓦茲選擇Linux的開發方式相當的務實!首先,他將釋出的Linux核心放置在FTP上面,並請告知大家新的版本資訊,等到使用者下載了這個核心並且安裝之後,如果發生問題,或者是由於特殊需求亟需某些硬體的驅動程式,那麼這些使用者就會主動回報給託瓦茲。在託瓦茲能夠解決的問題範圍內,他都能很快速的進行Linux核心的更新與除錯。

  • 廣大黑客志願者加入階段

不過,託瓦茲總是有些硬體無法取得的啊,那麼他當然無法幫助進行驅動程式的編寫與相關軟體的改良。這個時候,就會有些志願者跳出來說:『這個硬體我有,我來幫忙寫相關的驅動程式。』因為Linux的核心是Open Source的,黑客志願者們很容易就能夠跟隨Linux的原本設計架構,並且寫出相容的驅動程式或者軟體。志願者們寫完的驅動程式與軟體託瓦茲是如何看待的呢?首先,他將該驅動程式/軟體帶入核心中,並且加以測試。只要測試可以執行,並且沒有什麼主要的大問題,那麼他就會很樂意的將志願者們寫的程式程式碼加入核心中!

總之,託瓦茲是個很務實的人,對於Linux核心所欠缺的專案,他總是『先求有且能跑,再求進一步改良』的心態!這讓Linux使用者與志願者得到相當大的鼓勵!因為Linux的進步太快了!使用者要求虛擬記憶體,結果不到一個星期推出的新版Linux就有了!這不得不讓人佩服啊!

另外,為因應這種隨時都有程式程式碼加入的狀況,於是Linux便逐漸發展成具有模組的功能!亦即是將某些功能獨立出於核心外,在需要的時候才載入到核心中。如此一來,如果有新的硬體驅動程式或者其他協議的程式程式碼進來時,就可以模組化,大大的增加了Linux核心的可維護能力!

Tips:
核心是一組程式,如果這組程式每次加入新的功能都得要重新編譯與改版的話會變成如何?想象一下,如果你只是換了顯示介面卡就得要重新安裝新的Windows作業系統,會不會傻眼?模組化之後,原本的核心程式不需要更動,你可以直接將他想成是『驅動程式』即可!

  • 核心功能細分工發展階段

後來,因為Linux核心加入了太多的功能,光靠託瓦茲一個人進行核心的實際測試並加入核心原始程式實在太費力。結果,就有很多的朋友跳出來幫忙這個前置作業!例如考克斯(Alan Cox)、與崔迪(Stephen Tweedie)等等, 這些重要的副手會先將來自志願者們的修補程式或者新功能的程式程式碼進行測試,並且結果上傳給託瓦茲看,讓託瓦茲作最後核心加入的原始碼的選擇與整並!這個分層負責的結果,讓Linux的發展更加的容易!

特別值得注意的是,這些託瓦茲的Linux發展副手,以及自願傳送修補程式的黑客志願者,其實都沒有見過面,而且彼此在地球的各個角落,大家群策群力的共同發展出現今的Linux,我們稱這群人為虛擬團隊!而為了虛擬團隊資料的傳輸,於是Linux便成立的核心網站: http://www.kernel.org

而這群素未謀面的虛擬團隊們,在1994年終於完成的Linux的核心正式版!version 1.0。這一版同時還加入了X Window System的支援呢!更於1996年完成了2.0版。此外,託瓦茲指明瞭企鵝為Linux的吉祥物。

Tips:
奇怪的是,託瓦茲是因為小時候去動物園被企鵝咬了一口念念不忘,而正式的2.0推出時,大家要他想一個吉祥物。他在想也想不到什麼動物的情況下,就將這個念念不忘的企鵝當成了Linux的吉祥物了

Linux由於託瓦茲是針對386寫的,跟386硬體的相關性很強,所以,早期的Linux確實是不具有移植性的。不過,大家知道Open source的好處就是,可以修改程式程式碼去適合作業的環境。因此,在1994年以後,Linux便被開發到很多的硬體上面去了!目前除了x86之外,IBM、HP、Sun等等公司出的硬體也都有被Linux所支援呢!

Linux的核心版本

Linux的核心版本編號有點類似如下的樣子:

如前所述,因為對於Linux核心的開發者太多了,以致於造成Linux核心經常性的變動。但對於一般家庭計算機或企業關鍵應用的話,常變動的核心並不適合的。因此託瓦茲便將核心的發展趨勢分為兩股,並根據這兩股核心的發展分別給予不同的核心編號,那就是:

  • 主、次版本為奇數:發展中版本(development)
    如2.5.xx,這種核心版本主要用在測試與發展新功能,所以通常這種版本僅有核心開發工程師會使用。如果有新增的核心程式程式碼,會加到這種版本當中,等到眾多工程師測試沒問題後,才加入下一版的穩定核心中;
  • 主、次版本為偶數:穩定版本(stable)
    如2.6.xx,等到核心功能發展成熟後會加到這類的版本中,主要用在一般家庭計算機以及企業版本中。重點在於提供使用者一個相對穩定的Linux作業環境平臺。

至於釋出版本則是在主、次版本架構不變的情況下,新增的功能累積到一定的程度後所新釋出的核心版本。而由於Linux核心是使用GPL的授權,因此大家都能夠進行核心程式程式碼的修改。因此,如果你有針對某個版本的核心修改過部分的程式程式碼,那麼那個被修改過的新的核心版本就可以加上所謂的修改版本了。

Linux核心版本與distribution的版本並不相同,很多朋友常常上網問到:『我的Linux是9.x版,請問....』之類的留言,這是不對的提問方式,因為所謂的Linux版本指的應該是核心版本,而目前最新的核心版本應該是2.6.30(2009/08) 才對,並不會有9.x的版本出現的。

你常用的Linux系統則應該說明為distribution才對!因此,如果以CentOS這個distribution來說, 妳應該說:『我用的Linux是CentOS這個 distribution,版本為5.x 版,請問....』才對喔!

Tips:
當你有任何問題想要在Linux論壇發言時,請務必仔細的說明你的distribution版本, 因為雖然各家distributions使用的都是Linux核心,不過每家distributions所選用的軟體以及他們自己發展的工具並不相同, 多少還是有點差異,所以留言時得要先宣告distribution的版本才行喔!

Linux distributions

經過上面的說明,我們知道了Linux其實就是一個作業系統最底層的核心及其提供的核心工具。他是GNU GPL授權模式,所以,任何人均可取得原始碼與可執行這個核心程式,並且可以修改。此外,因為Linux參考POSIX設計規範,於是兼容於Unix作業系統,故亦可稱之為Unix Like的一種。

  • 可完全安裝的Linux釋出套件

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)與可執行的軟體整合起來,加上自己具有創意的工具程式,這個工具程式可以讓使用者以光碟/DVD或者通過網路直接安裝/管理Linux系統。 這個『Kernel + Softwares + Tools的可完全安裝』的東西,我們稱之為Linux distribution,一般中文翻譯成可完全安裝套件,或者Linux釋出商套件等。

Tips:
由於Linux核心是由黑客工程師寫的,要由原始碼安裝到x86計算機上面成為可以執行的binary檔案,這個過程可不是人人都會的~所以早期確實只有工程師對Linux有興趣。一直到一些社群與商業公司將Linux核心配合自由軟體,並提供完整的安裝程式, 且製成光碟/DVD後,對於一般使用者來說,Linux才越來越具有吸引力!因為只要一直『下一步』就可以將Linux安裝完成啊。

由於GNU的GPL授權並非不能從事商業行為,於是很多商業公司便成立來販賣Linux distribution。而由於Linux的GPL版權宣告,因此,商業公司所販賣的Linux distributions通常也都可以從Internet上面來下載的! 此外,如果你想要其他商業公司的服務,那麼直接向該公司購買光碟來安裝,也是一個很不錯的方式的!

  • 各大Linux Distributions的主要異同:支援標準!

不過,由於發展Linux distributions的社群與公司實在太多了,例如在臺灣有名的Red Hat, SuSE, Ubuntu, Fedora, Debian等等,所以很多人都很擔心,如此一來每個distribution是否都不相同呢?這就不需要擔心了,因為每個Linux distributions使用的kernel都是http://www.kernel.org所發行的,而他們所選擇的軟體,幾乎都是目前很知名的軟體,重複性相當的高,例如網頁伺服器的Apache,電子郵件伺服器的Postfix/sendmail,檔案伺服器的Samba等等。

此外,為了讓所有的Linux distributions開發不致於差異太大,且讓這些開發商在開發的時候有所依據,還有Linux Standard Base (LSB)等標準來規範開發者,以及目錄架構的File system Hierarchy Standard (FHS)標準規範! 唯一差別的,可能就是該開發者自家所開發出來的管理工具,以及套件管理的模式吧! 所以說,基本上,每個Linux distributions除了架構的嚴謹度與選擇的套件內容外,其實差異並不太大。大家可以選擇自己喜好的distribution來安裝即可!

  • FHS: http://www.pathname.com/fhs/
  • LSB: http://www.linuxbase.org/

Tips:
事實上鳥哥認為distributions主要分為兩大系統,一種是使用RPM方式安裝軟體的系統,包括Red Hat, Fedora, SuSE等都是這類;一種則是使用Debiandpkg方式安裝軟體的系統,包括Debian, Ubuntu, B2D等等。

到底是要買商業版還是社群版的Linux distribution呢?如果是要裝在個人計算機上面做為桌面計算機用的,建議使用社群版,包括Fedora, Ubuntu, OpenSuSE等等。如果是用在伺服器上面的,建議使用商業版本,包括Red Hat, SuSE等。這是因為社群版通常開發者會加入最新的軟體,這些軟體可能會有一些bug存在。至於商業版則是經過一段時間的磨合後,才將穩定的軟體放進去。

舉例來說,Fedora出來的軟體套件經過一段時間的維護後,等到該軟體穩定到不容易發生錯誤後,Red Hat才將該軟體放到他們最新的發行版本中。所以,Fedora的軟體比較經常改版,Red Hat的軟體就較少更版。

  • 選擇適合你的Linux distribution

那我到底應該要選擇哪一個distributions?就如同我們上面提到的,其實每個distributions差異性並不大!不過,由於套件管理的方式主要分為Debian的dpkg及Red Hat系統的RPM方式,目前鳥哥的建議是,先學習以RPM套件管理為主的RHEL/Fedora/SuSE/CentOS等臺灣使用者較多的版本,這樣一來,發生問題時,可以提供解決的管道比較多。如果你已經接觸過Linux了,還想要探討更嚴謹的Linux版本,那可以考慮使用Debian,如果你是以效能至上來考慮,那麼或許Gentoo是不錯的建議!

總之,版本很多,但是各版本差異其實不大,建議你一定要先選定一個版本後, 先徹頭徹尾的瞭解他,那再繼續玩其他的版本時,就可以很快的進入狀況。鳥哥的網站僅提供一個版本,不過是以比較基礎的方式來介紹的,因此,如果能夠熟練俺這個網站的話,哪一個distributions對你來說,都不成問題啦!

不過,如果依據計算機主機的用途來分的話,在鳥哥會這樣建議:

  • 用於企業環境:建議使用商業版本,例如Red Hat的RHEL或者是Novell的SuSE都是很不錯的選擇! 畢竟企業的環境強調的是可持續的經營,你可不希望網管人員走了之後整個機房的主機都沒有人管理吧!由於商業版本都會提供客戶服務,所以可以降低企業的風險喔!
  • 用於個人或教學的伺服器環境:要是你的伺服器所在環境如果當機還不會造成太大的問題的話, 加上你的環境是在教學的場合當中時(就是說,唔!經費不足的環境啦!)那麼可以使用『號稱』完全相容商業版RHEL的CentOS。 因為CentOS是抓RHEL的原始碼來重新打包起來的一個Linux distribution,所以號稱兼容於RHEL。 這一版的軟體完全與RHEL相同,在改版的幅度較小,適合於伺服器系統的環境;
  • 用於個人的桌面計算機:想要嚐鮮嗎?建議使用很炫的Fedora/Ubuntu等Desktop(桌面環境)使用的版本! 如果不想要安裝Linux的話,那麼Fedora或CentOS也有推出Live CD了!也很容易學習喔!

Linux的特色

那麼這個系統有什麼特異功能呢?簡單的說:

  • 自由與開放的使用與學習環境:

由於Linux是基於GPL的授權之下,因此他是自由軟體,也就是任何人都可以自由的使用或者是修改其中的原始碼的意思!這種開放性架構對科學界來說是相當重要的!因為很多的工程師由於特殊的需求,常常需要修改系統的原始碼,使該系統可以符合自己的需求!而這個開放性的架構將可以滿足各不同需求的工程師!因此當然就有可能越來越流行。

  • 配備需求低廉:

Linux可以支援個人計算機的x86架構,系統資源不必像早先的Unix系統那般,僅適合於單一公司所出產的裝置!單就這一點來看,就可以造成很大的流行囉!不過,如果你想要在Linux下執行X Window系統, 那麼硬體的等級就不能太低了!

  • 核心功能強大而穩定:

而且由於Linux功能並不會輸給一些大型的Unix工作站,因此,近年來越來越多的公司或者是團體、個人投入這一個作業系統的開發與整合工作!例如IBM與昇陽公司都有推出x86的Linux伺服器呢!

  • 獨立作業:

另外,由於很多的軟體套件逐漸被這套作業系統拿來使用,而很多套件軟體也都在 Linux這個作業系統上面進行發展與測試,因此,Linux近來已經可以獨力完成幾乎所有的工作站或伺服器的服務了,例如 Web, Mail, Proxy, FTP.....。

目前Linux已經是相當成熟的一套作業系統,而且不耗資源又可以自由取得!可以說造成微軟相當大的壓力呀!此外,由於他的系統硬體要求很低,加上目前很多的人由於『Intel 的陰謀』而造成手邊有相當多的淘汰掉的硬體配備,Linux在這些被淘汰的硬體中就可以執行的相當的順暢與穩定!因此也造成相當多朋友的關注囉!

Linux的優缺點

那幹嘛要使用Linux做為我們的主機系統呢?這是因為Linux有底下這些優點:

  • 穩定的系統:

Linux本來就是基於Unix概念而發展出來的作業系統,因此,Linux具有與Unix系統相似的程式介面跟操作方式,當然也繼承了Unix穩定並且有效率的特點。常聽到安裝Linux的主機連續運做一年以上而不曾當機、 不必關機是稀鬆平常的事;

  • 免費或少許費用:

由於Linux是基於GPL授權下的產物,因此任何人皆可以自由取得Linux, 至於一些『安裝套件』的發行者,他們發行的安裝光碟也僅需要些許費用即可獲得!不同於Unix需要負擔龐大的版權費用,當然也不同於微軟需要一而再、 再而三的更新你的系統,並且繳納大量費用。

  • 安全性、漏洞的快速修補:

如果你常玩網路的話,那麼你最常聽到的應該是『沒有絕對安全的主機』! 沒錯!不過Linux由於支持者日眾,有相當多的熱心團體、個人參與其中的開發,因此可以隨時獲得最新的安全資訊,並給予隨時的更新,亦即是具有相對的較安全!

  • 多工、多使用者:

與Windows系統不同的,Linux主機上可以同時允許多人上線來工作, 並且資源的分配較為公平,比起Windows的單人多工系統要穩定的多囉! 這個多人多工可是Unix-Like上面相當好的一個功能,怎麼說呢?你可以在一部 Linux主機上面規劃出不同等級的使用者,而且每個使用者登入系統時的工作環境都可以不相同,此外,還可以允許不同的使用者在同一個時間登入主機,同時使用主機的資源。

  • 使用者與群組的規劃:

在Linux的機器中,檔案的屬性可以分為『可讀、可寫、可執行』 等引數來定義一個檔案的適用性,此外,這些屬性還可以分為三個種類,分別是『檔案擁有者、檔案所屬群組、其他非擁有者與群組者』。這對於專案計劃或者其他計劃開發者具有相當良好的系統保密性。

  • 相對比較不耗資源的系統:

Linux只要一部P-III以上等級的計算機就可以安裝並且使用愉快囉!還不需要到P-4或AMD K8 等級的計算機呢!不過,如果你要架設的是屬於大型的主機(服務上百人以上的主機系統),那麼就需要比較好一點的機器了。不過,目前市面上任何一款個人計算機均可以達到這一個要求。

  • 適合需要小核心程式的嵌入式系統:

由於Linux只要幾百K不到的程式程式碼就可以完整的驅動整個計算機硬體併成為一個完整的作業系統,因此相當適合於目前家電或者是小電子用品的作業系統呢!那就是當紅炸子雞『嵌入式』系統啦!Linux真的是很適合例如手機、數字相機、PDA、家電用品等等的微計算機作業系統。

  • 整合度佳且多樣的圖形使用者介面(GUI):

自從1994年Linux 1.0後就加入的X Window系統,在眾多黑客的努力之下終於與Linux有高度整合,且主要的繪圖卡公司(Intel, NVidia, ATI等)都有針對Linux推出最新的驅動程式, 因此Linux的GUI已經有長足的進步了!另外,Linux環境下的圖形介面不只有一種呢! 包括大家耳熟能詳的KDE(http://www.kde.org/)以及GNOME(http://www.gnome.org)都是很常見的!

反正Linux好處說不完啦!不過雖然Linux具有這樣多的好處,但是他先天上有一個足以致命的地方,使他的普及率受到很大的限制,就是Linux需要使用『指令列』的終端機模式進行系統的管理!雖然近年來有很多的圖形介面開發使用在Linux上面,但畢竟要熟悉Linux還是以指令列來使用是比較好的,因此要接受Linux的玩家必須比較要能熟悉對計算機下指令的行為,而不是用滑鼠點一點icon就行了!Linux 還可以改進的地方:

  • 沒有特定的支援廠商:

因為在Linux上面的所有套件幾乎都是自由軟體,而每個自由軟體的開發者可能並不是公司團體,而是非營利性質的團體。如此一來,在你Linux主機上面的軟體若發生問題,該如何是好?好在由於目前Linux商業界的整合還不錯,目前在臺灣比較具名的Red Hat與SuSE 均有設立了服務點。你可以經由這個服務點來直接向他們購買/諮詢相關的軟硬體問題呢! 不過,如果你並非選擇有專門商業公司的Linux distributions時?怎麼辦? 沒有專人到府服務,這點倒是還不需要太擔心, 因為拜網路風行之賜,你要問的問題幾乎在網路上都可以找到答案喔!看你有沒有用心去找就是了!

  • 遊戲的支援度不足:

在現代這個時候,敢說你們家的桌面計算機裡面完全沒有遊戲的小朋友應該不多了!遊戲軟體也是個應用程式,所以它與作業系統的關係就相當密切了。可惜的是目前很多遊戲開發商並沒有在Linux平臺上面開發大型遊戲,這間接導致Linux無法進入一般家庭說。

  • 專業軟體的支援度不足:

這是鳥哥到學校教書後才發現的一件事,目前很多專業繪圖軟體公司所推出的專業軟體並不支援Linux作業系統,這讓同學很難在不同的平臺上面操作相同的軟體!唉!很傷腦筋~

  • 教育訓練作的還不夠好:

如果能夠在國小就教導小朋友使用自由軟體,那麼長大自然就會使用自由軟體了!在臺灣目前政策方面還是相當的搖擺不定,希望未來能夠給自由軟體一些機會。

老實說,這些缺點絕大部分都不是Linux本身的問題,倒是一些政策面與商業方面的考慮,才是最大的困擾。不過,Linux與其他的作業系統一樣,就是一個工具而已!希望大家能夠在快樂中學習到Linux的精髓。

關於授權

  • Open Source (開放原始碼)

軟體以Open Source的方式釋出時,表示除了可執行的軟體本身外,一定伴隨著原始碼的釋出喔!通常Open Source的軟體有幾個好處:

  1. 程式設計師通常會等到程式成熟之後才會發行,所以通常程式在雛形的時候,就已經具有相當的優良體質;
  2. Open Source的精神,相信當程式原設計人將程式原始碼釋出之後,其他的程式設計師接受這份原始碼之後,由於需要將程式改成自己所需的樣式,所以會經由本身的所學來加以改良,並從中加以改良與除蟲,所以程式的debug功能會比傳統的close source來的快!
  3. 由於程式是伴隨原始碼的,因此,系統將會不易存在鮮為人知的木馬程式或一些安全漏洞,相對而言,會比較更加的安全!

Open source的代表授權為GNU的GPL授權及BSD等等,底下列出知名的Open Source授權網頁:

  • GNU General Public License:
    http://www.gnu.org/licenses/licenses.html#GPL
    目前有version 2, version 3兩種版本,Linux使用的是version 2這一版。 鳥哥也有收集一份GPL version 2 的中文化條文,您可以參考:http://cn.linux.vbird.org/linux_basic/1010appendix_A.php
  • Berkeley Software Distribution (BSD):
    http://en.wikipedia.org/wiki/BSD_license
    使用BSD source code最常接觸到的就是BSD授權模式了!這個授權模式其實與GPL很類似, 而其精神也與Open Source相呼應呢!
  • Apache License, Version 2.0:
    http://www.apache.org/licenses/LICENSE-2.0
    Apache是一種網頁伺服器軟體,這個軟體的釋出方式也是使用Open source的。只是在apache的授權中規定, 如果想要重新發布此軟體時(如果你有修改過該軟體),軟體的名稱依舊需要定名為Apache才行!
  • Close Source

相對於Open Source的軟體會釋出原始碼,Close source的程式則僅推出可執行的二進位制程式(binary program)而已。 這種軟體的優點是有專人維護,你不需要去變動他;缺點則是靈活度大打折扣,使用者無法變更該程式成為自己想要的樣式! 此外,若有木馬程式或者安全漏洞,將會花上相當長的一段時間來除錯!這也是所謂專利軟體(copyright)常見的軟體出售方式。

雖然專利軟體常常代表就是需要花錢去購買,不過有些專利軟體還是可以免費提供大眾使用的!免費的專利軟體代表的授權模式有:

  • Freeware:
    http://en.wikipedia.org/wiki/Freeware
    不同於Free software,Freeware為『免費軟體』而非『自由軟體!』雖然它是免費的軟體,但是不見得要公佈其原始碼, 要看發行者的意見囉!這個東西與Open Source畢竟是不太相同的東西喔!此外,目前很多標榜免費軟體的程式很多都有小問題!例如假借免費軟體的名義,實施使用者資料竊取的目的!所以『來路不明的軟體請勿安裝!』
  • Shareware:
    http://en.wikipedia.org/wiki/Shareware
    共享件這個名詞就有趣了!與免費軟體有點類似的是,Shareware在使用初期,它也是免費的,但是,到了所謂的『試用期限』之後,你就必須要選擇『付費後繼續使用』或者『將它移除』的宿命。通常,這些共享件都會自行編寫失效程式,讓你在試用期限之後就無法使用該軟體。