鳥(niǎo)哥的Linux私房菜2018簡(jiǎn)體化 第一章(2)、Linux是什么與如何學(xué)習(xí)

1.2 Torvalds的Linux發(fā)展

我們前面一節(jié)當(dāng)中,提到了Unix的歷史,也提到了Linux是由Torvalds這個(gè)芬蘭人所發(fā)明的。那么為何托瓦茲可以發(fā)明Linux呢?憑空想像而來(lái)的?還是有什么淵源?這里我們就來(lái)談一談啰!

1.2.1 與Minix之間

Linus Torvalds(托瓦茲, 1969年出生,(注10))的外祖父是赫爾辛基大學(xué)的統(tǒng)計(jì)學(xué)家,他的外祖父為了讓自己的小孫子能夠?qū)W點(diǎn)東西,所以從小就將托瓦茲帶到身邊來(lái)管理一些微計(jì)算機(jī)。在這個(gè)時(shí)期,托瓦茲接觸了匯編語(yǔ)言(AssemblyLanguage),那是一種直接與芯片對(duì)話的程序語(yǔ)言,也就是所謂的低級(jí)語(yǔ)言。必須要很了解硬件的架構(gòu),否則很難以匯編語(yǔ)言撰寫(xiě)程序的。

在1988年間,托瓦茲順利的進(jìn)入了赫爾辛基大學(xué),并選讀了計(jì)算機(jī)科學(xué)系。在就學(xué)期間,因?yàn)閷W(xué)業(yè)的需要與自己的興趣,托瓦茲接觸到了Unix這個(gè)操作系統(tǒng)。當(dāng)時(shí)整個(gè)赫爾辛基只有一部最新的Unix系統(tǒng),同時(shí)僅提供16個(gè)終端機(jī)(terminal)。 還記得我們上一節(jié)剛剛提過(guò)的,早期的計(jì)算機(jī)僅有主機(jī)具有運(yùn)算功能,terminal僅負(fù)責(zé)提供Input/Output而已。在這種情況下,實(shí)在很難滿足托瓦茲的需求,因?yàn)椤馐堑却褂肬nix的時(shí)間,就很耗時(shí)~為此,他不禁想到:“我何不自己搞一部Unix來(lái)玩?”不過(guò),就如同Stallman當(dāng)初的GNU計(jì)劃一樣,要寫(xiě)核心程序,談何容易~

不過(guò),幸運(yùn)之神并未背離托瓦茲,因?yàn)椴痪弥螅椭烙幸粋€(gè)類似Unix的系統(tǒng),并且與Unix完全兼容,還可以在Intel 386機(jī)器上面跑的操作系統(tǒng),那就是我們上一節(jié)提過(guò)的,譚寧邦教授為了教育需要而撰寫(xiě)的Minix系統(tǒng)!他在購(gòu)買(mǎi)了最新的Intel 386的個(gè)人計(jì)算機(jī)后,就立即安裝了Minix這個(gè)操作系統(tǒng)。另外,上個(gè)小節(jié)當(dāng)中也談到,Minix這個(gè)操作系統(tǒng)是有附上源代碼的,所以托瓦茲也經(jīng)由這個(gè)源代碼學(xué)習(xí)到了很多的核心程序設(shè)計(jì)的設(shè)計(jì)概念喔!

1.2.2? 對(duì)386硬件的多任務(wù)測(cè)試

事實(shí)上,托瓦茲對(duì)于個(gè)人計(jì)算機(jī)的CPU其實(shí)并不滿意,因?yàn)樗芭龅挠?jì)算機(jī)都是工作站型的計(jì)算機(jī),這類計(jì)算機(jī)的CPU特色就是可以進(jìn)行“多任務(wù)處理”的能力。什么是多任務(wù)呢?理論上,一個(gè)CPU在一個(gè)時(shí)間內(nèi)僅能進(jìn)行一個(gè)程序,那如果有兩個(gè)以上的程序同時(shí)出現(xiàn)到系統(tǒng)中呢?舉例來(lái)說(shuō),你可以在現(xiàn)今的計(jì)算機(jī)中同時(shí)打開(kāi)兩個(gè)以上的辦公軟件,例如電子試算表與文書(shū)處理軟件。這個(gè)同時(shí)打開(kāi)的動(dòng)作代表著這兩個(gè)程序同時(shí)要交給CPU來(lái)處理~

??!CPU一個(gè)時(shí)間點(diǎn)內(nèi)僅能處理一個(gè)程序,那怎么辦?沒(méi)關(guān)系,這個(gè)時(shí)候如果是具有多任務(wù)能力的CPU就會(huì)在不同的程序間切換~還記得前一章談到的CPU頻率吧?假設(shè)CPU頻率為1GHz的話,那表示CPU一秒鐘可以進(jìn)行109次工作。假設(shè)CPU對(duì)每個(gè)程序都只進(jìn)行1000次運(yùn)行周期,然后就得要切換到下個(gè)程序的話,那么CPU一秒鐘就能夠切換106次呢?。ó?dāng)然啦,切換工作這件事情也會(huì)花去一些CPU時(shí)間,不過(guò)這里暫不討論)。這么快的處理速度下,你會(huì)發(fā)現(xiàn),兩個(gè)程序感覺(jué)上幾乎是同步在進(jìn)行啦!

Tips

為什么有的時(shí)候我同時(shí)開(kāi)兩個(gè)文件(假設(shè)為A, B文件)所花的時(shí)間, 要比開(kāi)完A再去開(kāi)B文件的時(shí)間還要多?現(xiàn)在是否稍微可以理解?因?yàn)槿绻瑫r(shí)打開(kāi)的話,CPU就必須要在兩個(gè)工作之間不停的切換~而切換的動(dòng)作還是會(huì)耗去一些CPU時(shí)間的!所以啰,同時(shí)啟用兩個(gè)以上的工作在一個(gè)CPU上,要比一個(gè)一個(gè)的執(zhí)行還要耗時(shí)一點(diǎn)。這也是為何現(xiàn)在CPU開(kāi)發(fā)商要整合多個(gè)CPU于一個(gè)芯片中!也是為何在運(yùn)行情況比較復(fù)雜的服務(wù)器上,需要比較多的CPU負(fù)責(zé)的原因!

早期Intel x86架構(gòu)計(jì)算機(jī)不是很受重視的原因,就是因?yàn)閤86的芯片對(duì)于多任務(wù)的處理不佳,CPU在不同的工作之間切換不是很順暢。但是這個(gè)情況在386計(jì)算機(jī)推出后,有很大的改善。托瓦茲在得知新的386芯片的相關(guān)信息后,他認(rèn)為,以性能價(jià)格比的觀點(diǎn)來(lái)看,Intel的386相當(dāng)?shù)谋阋耍栽谛阅苌弦簿蜕晕⒖梢詫⒕蛯⒕蚟_^。最終他就貸款去買(mǎi)了一部Intel的386來(lái)玩。

早期的計(jì)算機(jī)性能沒(méi)有現(xiàn)在這么好,所以壓榨計(jì)算機(jī)性能就成了工程師的一項(xiàng)癖好!托瓦茲本人早期是玩匯編語(yǔ)言的,匯編語(yǔ)言對(duì)于硬件有很密切的關(guān)系,托瓦茲自己也說(shuō):“我始終是個(gè)性能癖”^_^。為了徹底發(fā)揮386的性能,于是托瓦茲花了不少時(shí)間在測(cè)試386機(jī)器上!他的重要測(cè)試就是在測(cè)試386的多任務(wù)性能。首先,他寫(xiě)了三個(gè)小程序,一個(gè)程序會(huì)持續(xù)輸出A、一個(gè)會(huì)持續(xù)輸出B, 最后一個(gè)會(huì)將兩個(gè)程序進(jìn)行切換。他將三個(gè)程序同時(shí)執(zhí)行,結(jié)果,他看到屏幕上很順利的一直出現(xiàn)ABABAB……他知道,他成功了!^_^

圖1.2.1、386電腦的多任務(wù)測(cè)試

Tips

要達(dá)到多任務(wù)(multitasking)的環(huán)境,除了硬件(主要是CPU)需要能夠具有多任務(wù)的特性外,操作系統(tǒng)也需要支持這個(gè)功能喔!一些不具有多任務(wù)特性的操作系統(tǒng),想要同時(shí)執(zhí)行兩個(gè)程序是不可能的。除非先被執(zhí)行的程序執(zhí)行完畢,否則,

后面的程序不可能被主動(dòng)執(zhí)行。

至于多任務(wù)的操作系統(tǒng)中,每個(gè)程序被執(zhí)行時(shí),都會(huì)有一個(gè)最大CPU使用時(shí)間,若該工作運(yùn)行的時(shí)間超過(guò)這個(gè)CPU使用時(shí)間時(shí),該工作就會(huì)先被丟出 CPU的運(yùn)行中,而再度的進(jìn)入核心工作調(diào)度中等待下一次被CPU取用來(lái)運(yùn)行。

這有點(diǎn)像在開(kāi)記者會(huì)啦,主持人(CPU)會(huì)問(wèn)“誰(shuí)要發(fā)問(wèn)”?一群記者(工作程序) 就會(huì)舉手(看誰(shuí)的工作重要?。?,先舉手的自然就被允許發(fā)問(wèn),問(wèn)完之后, 主持人又會(huì)問(wèn)一次誰(shuí)要發(fā)問(wèn),當(dāng)然,所有人(包括剛剛那個(gè)記者)都可以舉手!如此一次一次的將工作給他完成?。_^多任務(wù)的環(huán)境對(duì)于復(fù)雜的工作情況,幫助很大喔!

1.2.3? 初次發(fā)布Linux0.02

探索完386的硬件性能之后,終于拿到Minix并且安裝在托瓦茲的386計(jì)算機(jī)上之后,托瓦茲跟BBS上面一堆工程師一樣,他發(fā)現(xiàn)Minix雖然真的很棒,但是譚寧邦教授就是不愿意進(jìn)行功能的加強(qiáng),導(dǎo)致一堆工程師在操作系統(tǒng)功能上面的欲求不滿!這個(gè)時(shí)候年輕的托瓦茲就想:“既然如此,那我何不自己來(lái)改寫(xiě)一個(gè)我想要的操作系統(tǒng)?”于是他就開(kāi)始了核心程序的撰寫(xiě)了。

撰寫(xiě)程序需要什么呢?首先需要的是能夠進(jìn)行工作的環(huán)境,再來(lái)則是可以將源代碼編譯成為可可執(zhí)行文件的編譯器。好在有GNU計(jì)劃提供的bash工作環(huán)境軟件以及gcc編譯器等自由軟件,讓托瓦茲得以順利的撰寫(xiě)核心程序。他參考Minix的設(shè)計(jì)理念與書(shū)上的程序碼,然后仔細(xì)研究出386個(gè)人計(jì)算機(jī)的性能最優(yōu)化,然后使用GNU的自由軟件將核心程序碼與386緊緊的結(jié)合在一起,最終寫(xiě)出他所需要的核心程序。而這個(gè)小玩意竟然真的可以在386上面順利的跑起來(lái)~還可以讀取Minix的文件系統(tǒng)。真是太好了!不過(guò)還不夠,他希望這個(gè)程序可以獲得大家的一些修改建議,于是他便將這個(gè)核心放置在網(wǎng)絡(luò)上提供大家下載,同時(shí)在BBS上面貼 了一則消息:

Hello everybody out there using minix-

I'm doing a (free) operation system? (just a hobby, won't be big and professional? like gnu) for386(486) AT clones.

I've currently ported bash (1.08) and gcc (1.40), and things seem to work. This? implies that i'll get something practical within a few months, and I'd like to know what? features most people want.? Any suggestions are welcome, butI? won't promise I'll implement them :-)

他說(shuō),他完成了一個(gè)小小的操作系統(tǒng),這個(gè)核心是用在386機(jī)器上的,同時(shí),他真的僅是好玩,并不是想要做一個(gè)跟GNU一樣大的計(jì)劃!另外,他希望能夠得到更多人的建議與回饋來(lái)發(fā)展這個(gè)操作系統(tǒng)!這個(gè)概念跟Minix剛好背道而馳呢!這則新聞引起很多人的注意,他們也去托瓦茲提供的網(wǎng)站上下載了這個(gè)核心來(lái)安裝。有趣的是,因?yàn)橥型咂澐胖煤诵牡哪莻€(gè)FTP網(wǎng)站的目錄為:Linux, 從此,大家便稱這個(gè)核心為L(zhǎng)inux了。(請(qǐng)注意,此時(shí)的Linux就是那個(gè)kernel喔!另外,托瓦茲所放到該目錄下的第一個(gè)核心版本為0.02呢?。?/p>

同時(shí),為了讓自己的Linux能夠兼容于Unix系統(tǒng),于是托瓦茲開(kāi)始將一些能夠在Unix上面運(yùn)行的軟件拿來(lái)在Linux上面跑。不過(guò),他發(fā)現(xiàn)到有很多的軟件無(wú)法在Linux這個(gè)核心上運(yùn)行。這個(gè)時(shí)候他有兩種作法,一種是修改軟件,讓該軟件可以在Linux上跑,另一種則是修改Linux,讓Linux符合軟件能夠運(yùn)行的規(guī)范!由于Linux希望能夠相容于Unix,于是托瓦茲選擇了第二個(gè)作法“修改Linux”!為了讓所有的軟件都可以在Linux上執(zhí)行,于是托瓦茲開(kāi)始參考標(biāo)準(zhǔn)的POSIX規(guī)范。

Tips

POSIX是可移動(dòng)式操作系統(tǒng)接口(PortableOperating System Interface)的縮寫(xiě),重點(diǎn)在規(guī)范核心與應(yīng)用程序之間的接口,這是由美國(guó)電器與電子工程師學(xué)會(huì)(IEEE)所發(fā)布的一項(xiàng)標(biāo)準(zhǔn)喔!

這個(gè)正確的決定讓Linux在起步的時(shí)候體質(zhì)就比別人優(yōu)良~因?yàn)镻OSIX標(biāo)準(zhǔn)主要是針對(duì)Unix與一些軟件運(yùn)行時(shí)候的標(biāo)準(zhǔn)規(guī)范,只要依據(jù)這些標(biāo)準(zhǔn)規(guī)范來(lái)設(shè)計(jì)的核心與軟件,理論上,就可以搭配在一起執(zhí)行了。而Linux的發(fā)展就是依據(jù)這個(gè)POSIX的標(biāo)準(zhǔn)規(guī)范,Unix上面的軟件也是遵循這個(gè)規(guī)范來(lái)設(shè)計(jì)的,如此一來(lái),Linux很容易就與Unix兼容共享互有的軟件了!同時(shí),因?yàn)長(zhǎng)inux直接放置在網(wǎng)絡(luò)下,提供大家下載,所以在流通的速度上相當(dāng)?shù)目欤?dǎo)致Linux的使用率大增!這些都是造成Linux大受歡迎的幾個(gè)重要因素呢!

Tips

其實(shí)托瓦茲有意無(wú)意之間常常會(huì)透露他自己是個(gè)只喜歡玩(Just for Fun)的怪人!Linux一開(kāi)始也只是托瓦茲的一個(gè)作業(yè)發(fā)展出來(lái)的玩具而已。他也說(shuō),如果Minix或hurd這兩個(gè)中的任何一個(gè)系統(tǒng)可以提早開(kāi)發(fā)出他想要的功能與環(huán)境,也許他根本不會(huì)想要自己開(kāi)發(fā)一個(gè)Linux哩!哇!人類智慧真是沒(méi)有極限!各位?。?)要先有基礎(chǔ)知識(shí)與技能、2)有了第一點(diǎn)后,要勇于挑戰(zhàn)權(quán)威、3)把你們的玩具發(fā)揚(yáng)光大吧!^_^

1.2.4 Linux的發(fā)展:虛擬團(tuán)隊(duì)的產(chǎn)生

Linux能夠成功除了托瓦茲個(gè)人的理念與力量之外,其實(shí)還有個(gè)最重要的團(tuán)隊(duì)!

個(gè)人維護(hù)階段

Linux雖然是托瓦茲發(fā)明的,而且內(nèi)容還絕不會(huì)涉及專利軟件的版權(quán)問(wèn)題。不過(guò),如果單靠托瓦茲自己一個(gè)人的話,那么Linux要茁壯實(shí)在很困難~因?yàn)橐粋€(gè)人的力量是很有限的。好在托瓦茲選擇Linux的開(kāi)發(fā)方式相當(dāng)?shù)膭?wù)實(shí)!首先,他將釋出的Linux核心放置在FTP上面,并且告知大家新的版本信息,等到使用者下載了這個(gè)核心并且安裝之后,如果發(fā)生問(wèn)題,或者是由于特殊需求亟需某些硬件的驅(qū)動(dòng)程序,那么這些使用者就會(huì)主動(dòng)回報(bào)給托瓦茲。在托瓦茲能夠解決的問(wèn)題范圍內(nèi),他都能很快速的進(jìn)行Linux核心的更新與除錯(cuò)。

廣大黑客志愿者加入階段

不過(guò),托瓦茲總是有些硬件無(wú)法取得的啊,那么他當(dāng)然無(wú)法幫助進(jìn)行驅(qū)動(dòng)程序的撰寫(xiě)與相關(guān)軟件的改良。這個(gè)時(shí)候,就會(huì)有些志愿者跳出來(lái)說(shuō):“這個(gè)硬件我有,我來(lái)幫忙寫(xiě)相關(guān)的驅(qū)動(dòng)程序?!币?yàn)長(zhǎng)inux的核心是Open Source的,黑客志愿者們很容易就能夠跟隨Linux的原本設(shè)計(jì)架構(gòu),并且寫(xiě)出兼容的驅(qū)動(dòng)程序或者軟件。志愿者們寫(xiě)完的驅(qū)動(dòng)程序與軟件托瓦茲是如何看待的呢?首先,他將該驅(qū)動(dòng)程序/軟件帶入核心中,并且加以測(cè)試。只要測(cè)試可以運(yùn)行,并且沒(méi)有什么主要的大問(wèn)題,那么他就會(huì)很樂(lè)意的將志愿者們寫(xiě)的程序碼加入核心中!

總之,托瓦茲是個(gè)很務(wù)實(shí)的人,對(duì)于Linux核心所欠缺的項(xiàng)目,他總是“先求有且能跑,再求進(jìn)一步改良”的心態(tài)!這讓Linux使用者與志愿者得到相當(dāng)大的鼓勵(lì)!因?yàn)長(zhǎng)inux的進(jìn)步太快了!使用者要求虛擬內(nèi)存,結(jié)果不到一個(gè)星期推出的新版Linux就有了!這不得不讓人佩服??!

另外,為了回應(yīng)這種隨時(shí)都有程序碼加入的狀況,于是Linux便逐漸發(fā)展成具有模塊的功能!亦即是將某些功能獨(dú)立出于核心外,在需要的時(shí)候才載入到核心中。如此一來(lái),如果有新的硬件驅(qū)動(dòng)程序或者其他協(xié)議的程序碼進(jìn)來(lái)時(shí),就可以模塊化,大大的增加了Linux核心的可維護(hù)能力!

Tips

核心是一組程序,如果這組程序每次加入新的功能都得要重新編譯與改版的話會(huì)變成如何?想像一下,如果你只是換了顯卡就得要重新安裝新的Windows操作系統(tǒng),會(huì)不會(huì)傻眼?模塊化之后,原本的核心程序不需要更動(dòng),你可以直接將他想成是“驅(qū)動(dòng)程序”即可!^_^

核心功能細(xì)部分工發(fā)展階段

后來(lái),因?yàn)長(zhǎng)inux核心加入了太多的功能,光靠托瓦茲一個(gè)人進(jìn)行核心的實(shí)際測(cè)試并加入核心原始程序?qū)嵲谔M(fèi)力~結(jié)果,就有很多的朋友跳出來(lái)幫忙這個(gè)前置工作!例如考克斯(Alan Cox)、與崔迪(StephenTweedie)等等, 這些重要的副手會(huì)先將來(lái)自志愿者們的修補(bǔ)程序或者新功能的程序代碼進(jìn)行測(cè)試,并且結(jié)果上傳給托瓦茲看,讓托瓦茲作最后核心加入的源代碼的選擇與整合!這個(gè)分層負(fù)責(zé)的結(jié)果,讓Linux的發(fā)展更加的容易!

特別值得注意的是,這些托瓦茲的Linux開(kāi)發(fā)副手,以及自愿?jìng)魉托扪a(bǔ)程序的黑客志愿者,其實(shí)都沒(méi)有見(jiàn)過(guò)面,而且彼此在地球的各個(gè)角落,大家群策群力的共同發(fā)展出現(xiàn)今的Linux, 我們稱這群人為虛擬團(tuán)隊(duì)!而為了虛擬團(tuán)隊(duì)數(shù)據(jù)的傳輸,于是Linux便成立了核心網(wǎng)站:http://www.kernel.org

而這群素未謀面的虛擬團(tuán)隊(duì)們,在1994年終于完成的Linux的核心正式版!version 1.0。 這一版同時(shí)還加入了X WindowSystem的支持呢!且于1996年完成了2.0版、2011年發(fā)布3.0版,更于2015年4月發(fā)布了4.0版哩!發(fā)展相當(dāng)迅速喔!此外,托瓦茲指明了企鵝為L(zhǎng)inux的吉祥物。

Tips

奇怪的是,托瓦茲是因?yàn)樾r(shí)候去動(dòng)物園被企鵝咬了一口念念不忘,

而正式的2.0推出時(shí),大家要他想一個(gè)吉祥物。他在想也想不到什么動(dòng)物的情況下,就將這個(gè)念念不忘的企鵝當(dāng)成了Linux的吉祥物了……

Linux由于托瓦茲是針對(duì)386寫(xiě)的,跟386硬件的相關(guān)性很強(qiáng),所以,早期的Linux確實(shí)是不具有移植性的。不過(guò),大家知道Open source的好處就是,可以修改程序碼去適合工作的環(huán)境。因此,在1994年以后,Linux便被開(kāi)發(fā)到很多的硬件上面去了!目前除了x86之外,IBM、HP等等公司出的硬件也都有被Linux所支持呢!甚至于小型單板計(jì)算機(jī)(樹(shù)莓派/香蕉派等)與手持設(shè)備(智能手機(jī)、平板電腦)的ARM架構(gòu)系統(tǒng),大多也是使用Linux核心喔!

1.2.5? Linux的核心版本

Linux的核心版本編號(hào)有點(diǎn)類似如下的樣子:

3.10.0-123.el7.x86_64

主版本.次版本.釋出版本-修改版本

雖然編號(hào)就是如上的方式來(lái)編的,不過(guò)依據(jù)Linux核心的發(fā)展期程,核心版本的定義有點(diǎn)不太相同喔!

奇數(shù)、偶數(shù)版本分類

在2.6.x版本以前,托瓦茲將核心的發(fā)展趨勢(shì)分為兩股,并根據(jù)這兩股核心的發(fā)展分別給予不同的核心編號(hào),那就是:

主、次版本為奇數(shù):開(kāi)發(fā)版(development)如2.5.xx,這種核心版本主要用在測(cè)試與開(kāi)發(fā)新功能,所以通常這種版本僅有核心開(kāi)發(fā)工程師會(huì)使用。如果有新增的核心程序碼,會(huì)加到這種版本當(dāng)中,等到眾多工程師測(cè)試沒(méi)問(wèn)題后,才加入下一版的穩(wěn)定核心中;

主、次版本為偶數(shù):穩(wěn)定版(stable)如2.6.xx,等到核心功能發(fā)展成熟后會(huì)加到這類的版本中,主要用在一般家用計(jì)算機(jī)以及企業(yè)版本中。重點(diǎn)在于提供使用者一個(gè)相對(duì)穩(wěn)定的Linux工作環(huán)境平臺(tái)。

至于釋出版本則是在主、次版本架構(gòu)不變的情況下,新增的功能累積到一定的程度后所新釋出的核心版本。而由于Linux核心是使用GPL的授權(quán),因此大家都能夠進(jìn)行核心程序碼的修改。因此,如果你有針對(duì)某個(gè)版本的核心修改過(guò)部分的程序碼,那么那個(gè)被修改過(guò)的新的核心版本就可以加上所謂的修改版本了。

主線版本、長(zhǎng)期維護(hù)版本(longterm version)

不過(guò),這種奇數(shù)、偶數(shù)的編號(hào)格式在3.0推出之后就失效了。從3.0版開(kāi)始,核心主要依據(jù)主線版本(MainLine)來(lái)開(kāi)發(fā),開(kāi)發(fā)完畢后會(huì)往下一個(gè)主線版本進(jìn)行。

例如3.10就是在3.9的架構(gòu)下繼續(xù)開(kāi)發(fā)出來(lái)的新的主線版本。通常新一版的主線版本大約在2~3個(gè)月會(huì)被提出喔!之所以會(huì)有新的主線版本,是因?yàn)橛屑尤胄鹿δ苤省,F(xiàn)在(2015/04)最新的主線版本已經(jīng)來(lái)到4.0版了喔!好快!

而舊的版本在新的主線版本出現(xiàn)之后,會(huì)有兩種機(jī)制來(lái)處理,一種機(jī)制為結(jié)束開(kāi)發(fā)(End of Live, EOL),亦即該程序代碼已經(jīng)結(jié)束,不會(huì)有繼續(xù)維護(hù)的狀態(tài)。另外一種機(jī)制為保持該版本的持續(xù)維護(hù),亦即為長(zhǎng)期維護(hù)版本(Longterm)!例如3.10即為一個(gè)長(zhǎng)期維護(hù)版本,這個(gè)版本的程序碼會(huì)被持續(xù)維護(hù),若程序碼有bug或其他問(wèn)題,核心維護(hù)者會(huì)持續(xù)進(jìn)行程序碼的更新維護(hù)喔!

所以啰,如果你想要使用Linux核心來(lái)開(kāi)發(fā)你的系統(tǒng),那么當(dāng)然要選擇長(zhǎng)期支持的版本才行!要判斷你的Linux核心是否為長(zhǎng)期支持的版本,可以使用“uname -r”來(lái)查閱核心版本,然后對(duì)照下列鏈接來(lái)了解其對(duì)應(yīng)值喔!

https://www.kernel.org/releases.html

Linux核心版本與Linux發(fā)布商版本

Linux核心版本與distribution(下個(gè)小節(jié)會(huì)談到)的版本并不相同,很多朋友常常上網(wǎng)問(wèn)到:“我的Linux是7.x版,請(qǐng)問(wèn)…”之類的留言,這是不對(duì)的提問(wèn)方式,因?yàn)樗^的Linux版本指的應(yīng)該是核心版本,而目前最新的核心版本應(yīng)該是4.0.0(2015/04)才對(duì),并不會(huì)有7.x的版本出現(xiàn)的。

你常用的Linux系統(tǒng)則應(yīng)該說(shuō)明為distribution才對(duì)!因此,如果以CentOS這個(gè)distribution來(lái)說(shuō),你應(yīng)該說(shuō):“我用的Linux是CentOS這個(gè)distribution,版本為7.x版,請(qǐng)問(wèn)…”才對(duì)喔!

Tips

當(dāng)你有任何問(wèn)題想要在Linux論壇發(fā)言時(shí),請(qǐng)務(wù)必仔細(xì)的說(shuō)明你的distribution版本,因?yàn)殡m然各家distributions使用的都是Linux核心,不過(guò)每家distribution所選用的軟件以及他們自己發(fā)展的工具并不相同,多少還是有點(diǎn)差異,所以留言時(shí)得要先聲明distribution的版本才行喔!^_^

1.2.6 Linux distributions

好了,經(jīng)過(guò)上面的說(shuō)明,我們知道了Linux其實(shí)就是一個(gè)操作系統(tǒng)最底層的核心及其提供的核心工具。他是GNU GPL授權(quán)模式,所以,任何人均可取得源代碼與可執(zhí)行的核心程序,并且可以修改。此外,因?yàn)長(zhǎng)inux參考POSIX設(shè)計(jì)規(guī)范,于是兼容于 Unix操作系統(tǒng),故亦可稱之為Unix Like的一種。

Tips

鳥(niǎo)哥曾在上課的時(shí)候問(wèn)過(guò)同學(xué):“什么是Unix Like啊”?可愛(ài)的同學(xué)們回答的答案是:“就是很喜歡(like)Unix啦!”囧rz…那個(gè) like是“很像”啦!所以Unix like是“很像Unix的操作系統(tǒng)”哩!

可完整安裝的Linux發(fā)布套件

Linux的出現(xiàn)讓GNU計(jì)劃放下了心里的一塊大石頭,因?yàn)镚NU一直以來(lái)就是缺乏了核心程序,導(dǎo)致他們的GNU自由軟件只能在其他的Unix上面跑。既然目前有Linux出現(xiàn)了,且Linux也用了很多的GNU相關(guān)軟件,所以Stallman認(rèn)為L(zhǎng)inux的全名應(yīng)該稱之為 GNU/Linux呢!不管怎么說(shuō),Linux實(shí)在很不錯(cuò),讓GNU軟件大多以Linux為主要操作系統(tǒng)來(lái)進(jìn)行開(kāi)發(fā),此外,很多其他的自由軟件團(tuán)隊(duì),例如postfix, vsftpd, apache等等也都有以Linux 為開(kāi)發(fā)測(cè)試平臺(tái)的計(jì)劃出現(xiàn)!如此一來(lái),Linux除了主要的核心程序外,可以在 Linux 上面運(yùn)行的軟件也越來(lái)越多,如果有心,就能夠?qū)⒁粋€(gè)完整的Linux操作系統(tǒng)搞定了!

雖然由Torvalds負(fù)責(zé)開(kāi)發(fā)的Linux僅具有Kernel與Kernel提供的工具,不過(guò),如上所述,很多的軟件已經(jīng)可以在Linux上面運(yùn)行了,因此,“Linux + 各種軟件”就可以完成一個(gè)相當(dāng)完整的操作系統(tǒng)了。不過(guò),要完成這樣的操作系統(tǒng)……還真難~ 因?yàn)長(zhǎng)inux早期都是由黑客工程師所開(kāi)發(fā)維護(hù)的,他們并沒(méi)有考慮到一般使用者的能力……

為了讓使用者能夠接觸到Linux,于是很多的商業(yè)公司或非營(yíng)利團(tuán)體, 就將Linux Kernel(含tools)與可運(yùn)行的軟件整合起來(lái),加上自己具有創(chuàng)意的工具程序, 這個(gè)工具程序可以讓使用者以光盤(pán)/DVD或者通過(guò)網(wǎng)絡(luò)直接安裝/管理Linux系統(tǒng)。 這個(gè)“Kernel + Softwares + Tools + 可完整安裝程序”的東西,我們稱之為L(zhǎng)inux distribution,一般中文翻譯成可完整安裝套件,或者Linux發(fā)布商套件等。

圖1.2.2、Linux可完整安裝發(fā)行套件

Tips

由于Linux核心是由黑客工程師寫(xiě)的,要由源代碼安裝到x86計(jì)算機(jī)上面成為可以執(zhí)行的binary文件, 這個(gè)過(guò)程可不是人人都會(huì)的~所以早期確實(shí)只有工程師對(duì)Linux有興趣。一直到一些社區(qū)與商業(yè)公司將Linux核心配合自由軟件,并提供完整的安裝程序,且制成光盤(pán)/DVD后,對(duì)于一般使用者來(lái)說(shuō),Linux才越來(lái)越具有吸引力!因?yàn)橹灰恢薄跋乱徊健本涂梢詫inux安裝完成啊!^_^

由于GNU的GPL授權(quán)并非不能從事商業(yè)行為,于是很多商業(yè)公司便成立來(lái)販?zhǔn)跮inux distribution。而由于Linux的GPL版權(quán)宣告,因此,商業(yè)公司所販?zhǔn)鄣腖inux

distributions通常也都可以從Internet上面來(lái)下載的!此外,如果你想要其他商業(yè)公司的服務(wù),那么直接向該公司購(gòu)買(mǎi)光盤(pán)來(lái)安裝,也是一個(gè)很不錯(cuò)的方式的!

各大Linux Distributions的主要異同:支持標(biāo)準(zhǔn)!

不過(guò),由于發(fā)展Linux distributions的社區(qū)與公司實(shí)在太多了,例如在臺(tái)灣有名的RedHat, SuSE, Ubuntu, Fedora, Debian等等,所以很多人都很擔(dān)心,如此一來(lái)每個(gè)distribution是否都不相同呢?這就不需要擔(dān)心了,因?yàn)槊總€(gè)Linux distribution使用的kernel都是http://www.kernel.org所發(fā)布的,而他們所選擇的軟件,幾乎都是目前很知名的軟件,重復(fù)性相當(dāng)?shù)母撸缇W(wǎng)頁(yè)服務(wù)器的Apache,電子郵件服務(wù)器的Postfix/sendmail,文件服務(wù)器的Samba等等。

此外,為了讓所有的Linux distributions開(kāi)發(fā)不致于差異太大,且讓這些開(kāi)發(fā)商在開(kāi)發(fā)的時(shí)候有所依據(jù),還有LinuxStandard Base(LSB)等標(biāo)準(zhǔn)來(lái)規(guī)范開(kāi)發(fā)者,以及目錄架構(gòu)的Filesystem Hierarchy Standard(FHS)標(biāo)準(zhǔn)規(guī)范!唯一差別的,可能就是該開(kāi)發(fā)者自家所開(kāi)發(fā)出來(lái)的管理工具,以及套件管理的模式吧!所以說(shuō),基本上,每個(gè)Linuxdistribution除了架構(gòu)的嚴(yán)謹(jǐn)度與選擇的套件內(nèi)容外,其實(shí)差異并不太大啦!^_^。大家可以選擇自己喜好的distribution來(lái)安裝即可!

FHS:http://www.pathname.com/fhs/

LSB:http://www.linuxbase.org/

事實(shí)上鳥(niǎo)哥認(rèn)為distributions主要分為兩大系統(tǒng),一種是使用RPM方式安裝軟件的系統(tǒng),包括Red Hat, Fedora, SuSE等都是這類;一種則是使用Debian的dpkg方式安裝軟件的系統(tǒng),包括Debian, Ubuntu, B2D等等。若是加上商業(yè)公司或社區(qū)單位的分類,那么我們可以簡(jiǎn)單的用下表來(lái)做個(gè)解釋喔!

????????????????????RPM軟件管理????????????????????DPKG軟件管理????????????????????????????????其他未分類

商業(yè)公司????RHEL(Red Hat公司)??????Ubuntu(Canonical Ltd.)

? ? ? ? ? ? ? ? ? ?SuSE(Micro Focus)

社區(qū)單位????Fedora????????????????????????????????Debian????????????????????????????????????????????????Gentoo

? ? ? ? ? ? ? ? ? CentOS???????????????????????????????B2D

? ? ? ? ? ? ? ? ? OpenSUSE

下面列出幾個(gè)主要的Linux distributions發(fā)行者網(wǎng)址:

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

SuSE:https://www.suse.com

Fedora:https://getfedora.org/

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

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

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

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

Tips

到底是要買(mǎi)商業(yè)版還是社區(qū)版的Linux distribution呢?如果是要裝在個(gè)人計(jì)算機(jī)上面做為桌面電腦用的,建議使用社區(qū)版,包括 Fedora, Ubuntu,

OpenSuSE等等。如果是用在服務(wù)器上面的,建議使用商業(yè)版本,包括Red Hat, SuSE等。這是因?yàn)樯缛喊嫱ǔi_(kāi)發(fā)者會(huì)加入最新的軟件,這些軟件可能會(huì)有一些bug存在。至于商業(yè)版則是經(jīng)過(guò)一段時(shí)間的磨合后,才將穩(wěn)定的軟件放進(jìn)去。

舉例來(lái)說(shuō),F(xiàn)edora放出來(lái)的軟件套件經(jīng)過(guò)一段時(shí)間的維護(hù)后,等到該軟件穩(wěn)定到不容易發(fā)生錯(cuò)誤后,RedHat才將該軟件放到他們最新的發(fā)行版本中。所以,F(xiàn)edora的軟件比較經(jīng)常改版,RedHat的軟件就比較少改版。

Linux在臺(tái)灣

當(dāng)然發(fā)行套件者不僅于此。但是值得大書(shū)特書(shū)的,是中文Linux的延伸計(jì)劃:CLE這個(gè)套件!早期的Linux因?yàn)槭枪こ處熼_(kāi)發(fā)的,而這些工程師大多以英文語(yǔ)系的國(guó)家為主,所以Linux對(duì)于國(guó)人的學(xué)習(xí)是比較困難一點(diǎn)。后來(lái)由國(guó)人發(fā)起的CLE計(jì)劃,開(kāi)發(fā)很多的中文套件及翻譯了很多的英文文件,使得我們目前得以使用中文的Linux呢!另外,目前正在開(kāi)發(fā)中的還有臺(tái)南縣臥龍小三等老師們發(fā)起的眾多自由軟件計(jì)劃,真是造福很多的朋友??!

自由軟件技術(shù)交流網(wǎng):http://freesf.tw/

B2D:http://b2d-linux.com/

此外,如果只想看看Linux的話,還可以選擇所謂的可光盤(pán)啟動(dòng)進(jìn)入Linux的Live CD版本,亦即是KNOPPIX這個(gè)Linux distribution呢!臺(tái)灣也有阿里巴巴兄維護(hù)的中文LiveCD喔!

http://www.knoppix.net/

洪老師解釋 KNOPPIX:http://people.ofset.org/~ckhung/b/sa/knoppix.php

Tips

對(duì)于沒(méi)有額外的硬盤(pán)或者是沒(méi)有額外的主機(jī)的朋友來(lái)說(shuō),KNOPPIX這個(gè)可以利用光盤(pán)啟動(dòng)而進(jìn)入Linux操作系統(tǒng)的Live CD真的是一個(gè)不錯(cuò)的選擇!你只要下載了KNOPPIX的鏡像文件,然后將它刻錄成為CD,放入你主機(jī)的光驅(qū),并在BIOS內(nèi)設(shè)置光盤(pán)為第一個(gè)啟動(dòng)選項(xiàng),就可以使用Linux系統(tǒng)了呢!

如果你還想要知道更多的Linux distribution的下載與使用信息,可以參考:

http://distrowatch.com/

選擇適合你的Linux distribution

那我到底應(yīng)該要選擇哪一個(gè)distribution?就如同我們上面提到的,其實(shí)每個(gè)distribution差異性并不大!不過(guò),由于套件管理的方式主要分為Debian的dpkg及Red Hat系統(tǒng)的RPM方式,目前鳥(niǎo)哥的建議是,先學(xué)習(xí)以RPM套件管理為主的RHEL/Fedora/SuSE/CentOS等使用者較多的版本,這樣一來(lái),發(fā)生問(wèn)題時(shí),可以提供解決的渠道比較多。如果你已經(jīng)接觸過(guò)Linux了,還想要探討更嚴(yán)謹(jǐn)?shù)腖inux版本,那可以考慮使用Debian,如果你是以性能至上來(lái)考慮,那么或許Gentoo是不錯(cuò)的建議!

總之,版本很多,但是各版本差異其實(shí)不大,建議你一定要先選定一個(gè)版本后,

先徹頭徹尾的了解它,那再繼續(xù)玩其他的版本時(shí),就可以很快的進(jìn)入狀況。鳥(niǎo)哥的網(wǎng)站僅提供一個(gè)版本,不過(guò)是以比較基礎(chǔ)的方式來(lái)介紹的,因此,如果能夠熟練俺這個(gè)網(wǎng)站的話,呵呵!哪一個(gè)distribution對(duì)你來(lái)說(shuō),都不成問(wèn)題啦!

不過(guò),如果依據(jù)計(jì)算機(jī)主機(jī)的用途來(lái)分的話,在臺(tái)灣鳥(niǎo)哥會(huì)這樣建議:

用于企業(yè)環(huán)境:建議使用商業(yè)版本,例如Red Hat的RHEL或者是SuSE都是很不錯(cuò)的選擇!畢竟企業(yè)的環(huán)境強(qiáng)調(diào)的是持久的經(jīng)營(yíng),你可不希望網(wǎng)管人員走了之后整個(gè)機(jī)房的主機(jī)都沒(méi)有人管理吧!由于商業(yè)版本都會(huì)提供客戶服務(wù),所以可以降低企業(yè)的風(fēng)險(xiǎn)喔!

用于個(gè)人或教學(xué)的服務(wù)器環(huán)境:要是你的服務(wù)器所在環(huán)境如果死機(jī)還不會(huì)造成太大的問(wèn)題的話,加上你的環(huán)境是在教學(xué)的場(chǎng)合當(dāng)中時(shí)(就是說(shuō),唔!經(jīng)費(fèi)不足的環(huán)境啦!)那么可以使用“號(hào)稱”完全兼容商業(yè)版RHEL的CentOS。因?yàn)镃entOS是抓RHEL的源代碼來(lái)重新打包起來(lái)的一個(gè)Linux distribution,所以號(hào)稱兼容于RHEL。這一版的軟件完全與RHEL相同,再改版的幅度較小,適合于服務(wù)器系統(tǒng)的環(huán)境;

用于個(gè)人的桌面電腦:想要嘗鮮嗎?建議使用很炫的Fedora/Ubuntu等Desktop(桌面環(huán)境)使用的版本!如果不想要安裝Linux的話,那么Fedora或CentOS也有推出Live CD了!也很容易學(xué)習(xí)喔!


1.3 Linux當(dāng)前應(yīng)用的角色

了解了什么是Linux之后,再來(lái)談?wù)?,那目前Linux用在哪里呢?由于Linux kernel實(shí)在是非常的小巧精致,可以在很多強(qiáng)調(diào)省電以及較低硬件資源的環(huán)境下面執(zhí)行;此外,由于Linuxdistribution整合了非常多很棒的軟件(不論是專利軟件或自由軟件),因此也相當(dāng)適合目前個(gè)人計(jì)算機(jī)的使用呢!傳統(tǒng)上,Linux常見(jiàn)的應(yīng)用可大致分為企業(yè)應(yīng)用與個(gè)人應(yīng)用兩方面,但這幾年很流行的云計(jì)算環(huán)境中,讓Linux似乎又更有著力點(diǎn)啰!


1.3.1 企業(yè)環(huán)境的應(yīng)用

企業(yè)對(duì)于數(shù)碼化的目標(biāo)在于提供消費(fèi)者或員工一些產(chǎn)品方面的信息(例如宣傳網(wǎng)站),以及整合整個(gè)企業(yè)內(nèi)部的數(shù)據(jù)統(tǒng)一性(例如統(tǒng)一的帳號(hào)管理/文件管理系統(tǒng)等)。另外,某些企業(yè)例如金融業(yè)等,則強(qiáng)調(diào)在數(shù)據(jù)庫(kù)、安全強(qiáng)化等重大關(guān)鍵應(yīng)用。學(xué)術(shù)單位則很需要強(qiáng)大的運(yùn)算能力等。所以企業(yè)環(huán)境運(yùn)用Linux作些什么呢?

網(wǎng)絡(luò)服務(wù)器:

這是Linux當(dāng)前最熱門(mén)的應(yīng)用了!承襲了Unix高穩(wěn)定性的良好傳統(tǒng),Linux上面的網(wǎng)絡(luò)功能特別的穩(wěn)定與強(qiáng)大!此外,由于 GNU計(jì)劃與Linux的GPL授權(quán)模式,讓很多優(yōu)秀的軟件都在Linux上面發(fā)展,且這些在Linux上面的服務(wù)器軟件幾乎都是自由軟件!因此,做為一部網(wǎng)絡(luò)服務(wù)器,例如WWW, Mail Server, File

Server等等,Linux絕對(duì)是上上之選!當(dāng)然,這也是Linux的強(qiáng)項(xiàng)!由于 Linux server 的需求強(qiáng)烈,因此許多硬件廠商推出產(chǎn)品時(shí),

還得要特別說(shuō)明有支持的 Linux distributions 呢!方便提供企業(yè)采購(gòu)部門(mén)的規(guī)劃喔!例如下面的鏈接可以瞧瞧:

Dell 公司的Server 對(duì) OS 的支持度:

http://www.dell.com/support/contents/tw/en/twbsd1/article/Product-Support/Self-support-Knowledgebase/enterprise-resource-center/server-operating-system-support

HP 公司的支持:

http://www8.hp.com/us/en/business-services/it-services.html?compURI=1078888#tab=TAB1

IBM 公司的支持:

http://www-03.ibm.com/systems/hardware/browse/linux/

VMWare 的虛擬化支持:

https://www.vmware.com/support/ws55/doc/intro_supguest_ws.html

從上面的幾個(gè)大廠的 Linux 支持情況來(lái)看,目前(2015)支持度比較廣泛的依舊是 Red Hat 以及 SuSU兩個(gè)大廠喔!提供給企業(yè)采購(gòu)的時(shí)候參考參考!

Tips

前一陣子參加一個(gè)座談會(huì),會(huì)上許多企業(yè)界的前輩們?cè)诹?,如果想要選擇某個(gè) Linux distribution 時(shí),哪個(gè) distribution 會(huì)是企業(yè)采購(gòu)時(shí)的最愛(ài)呢?與會(huì)的朋友說(shuō),要采購(gòu)嗎?看看服務(wù)器大廠對(duì)于該 distribution 的支持度就知道了!答案是什么?就是上面許多鏈接的結(jié)果啰!^_^?

關(guān)鍵任務(wù)的應(yīng)用(金融數(shù)據(jù)庫(kù)、大型企業(yè)網(wǎng)管環(huán)境):

由于個(gè)人計(jì)算機(jī)的性能大幅提升且價(jià)格便宜,所以金融業(yè)與大型企業(yè)的環(huán)境為了要精簡(jiǎn)自己機(jī)房的機(jī)器設(shè)備,因此很多企業(yè)漸漸的走向Intel兼容的x86主機(jī)環(huán)境。而這些企業(yè)所使用的軟件大多是Unix操作系統(tǒng)平臺(tái)的軟件,總不能連過(guò)去開(kāi)發(fā)的軟件都一口氣全部換掉吧!所以啰,這個(gè)時(shí)候符合Unix操作系統(tǒng)標(biāo)準(zhǔn)并且可以在x86上運(yùn)行的Linux就漸漸嶄露頭角了!^_^

目前很多金融業(yè)界都已經(jīng)使用Linux做為他們的關(guān)鍵任務(wù)應(yīng)用。所謂的關(guān)鍵任務(wù)就是該企業(yè)最重要的業(yè)務(wù)啦!舉例來(lái)說(shuō),金融業(yè)最重要的就是那些投資者、帳戶的數(shù)據(jù)了,這些數(shù)據(jù)大多使用數(shù)據(jù)庫(kù)系統(tǒng)來(lái)作為存取接口,這些數(shù)據(jù)很重要吧!很多金融業(yè)將這么重要的任務(wù)交給了Linux了!你說(shuō)Linux厲不厲害???

學(xué)術(shù)機(jī)構(gòu)的高性能運(yùn)算任務(wù):

學(xué)術(shù)機(jī)構(gòu)的研究常常需要自行開(kāi)發(fā)軟件,所以對(duì)于可作為開(kāi)發(fā)環(huán)境的操作系統(tǒng)需求非常的迫切!舉例來(lái)說(shuō),非常多技職體系的科技大學(xué)就很需要這方面的環(huán)境,好進(jìn)行一些畢業(yè)項(xiàng)目的制作呢!又例如工程界流體力學(xué)的數(shù)值模式運(yùn)算、娛樂(lè)業(yè)的特效功能處理、軟件開(kāi)發(fā)者的工作平臺(tái)等等。由于Linux的創(chuàng)造者本身就是個(gè)計(jì)算機(jī)性能癖,所以Linux有強(qiáng)大的運(yùn)算能力;并且Linux具有支持度相當(dāng)廣泛的GCC編譯軟件,因此Linux在這方面的優(yōu)勢(shì)可是相當(dāng)明顯的!

舉個(gè)鳥(niǎo)哥自己的案例好了,鳥(niǎo)哥之前待的研究室有跑一套空氣品質(zhì)模式的數(shù)值仿真軟件。這套軟件原本只能在Sun的SPARC機(jī)器上面跑。后來(lái)該軟件轉(zhuǎn)向Linux操作系統(tǒng)平臺(tái)發(fā)展,鳥(niǎo)哥也將自己實(shí)驗(yàn)室的數(shù)值模式程序由Sun的Solaris平臺(tái)移植到Linux上面呢!據(jù)美國(guó)環(huán)保署內(nèi)部人員的測(cè)試,發(fā)現(xiàn)Linux平臺(tái)的整體硬件費(fèi)用不但比較便宜(x86系統(tǒng)嘛!),而且速度還比較快呢!

另外,為了加強(qiáng)整體系統(tǒng)的性能,計(jì)算機(jī)集群系統(tǒng)(Cluster)的并行運(yùn)算能力在近年來(lái)一直被拿出來(lái)討論(注11)。所謂的并行運(yùn)算指的是“將原本的工作分成多份,然后交給多部主機(jī)去運(yùn)算,最終再將結(jié)果收集起來(lái)”的一種方式。由于通過(guò)高速網(wǎng)絡(luò)使用多部主機(jī),將能夠讓原本需要很長(zhǎng)運(yùn)算時(shí)間的工作,大幅的降低等待的時(shí)間!例如中央氣象局的氣象預(yù)報(bào)就很需要這樣的系統(tǒng)來(lái)幫忙!而Linux操作系統(tǒng)則是這種架構(gòu)下相當(dāng)重要的一個(gè)環(huán)境平臺(tái)呢!

Tips

由于服務(wù)器的CPU數(shù)量可以增加許多,而且也能夠達(dá)到比較省電的功能,因此鳥(niǎo)哥最近更換了昆山科大資傳系的模型運(yùn)算服務(wù)器組,通過(guò)20核心40線程的以及12核心24線程的兩部系統(tǒng),搭配10G網(wǎng)卡來(lái)處理模式的運(yùn)行!用的是本書(shū)談到的CentOS Linux,跑的模式是美國(guó)環(huán)保署公布,現(xiàn)行于世界最流行的CMAQ空品模型喔!


1.3.2? 個(gè)人環(huán)境的使用

你知道你平時(shí)接觸的電子用品中,哪些東西里面有Linux系統(tǒng)存在呢?其實(shí)相當(dāng)?shù)亩嗄?!我們就?lái)談一談吧!

臺(tái)式電腦:

所謂的臺(tái)式電腦,其實(shí)就是你我在辦公室使用的計(jì)算機(jī)啦。一般我們稱之為Desktop(桌面)的系統(tǒng)。那么這個(gè)Desktop的系統(tǒng)平時(shí)都在做什么呢?大概都是這些工作吧:

上網(wǎng)瀏覽+實(shí)時(shí)通訊(Skype, FB, Google, Yahoo…);

文字處理;

網(wǎng)絡(luò)辦公平臺(tái);

辦公室軟件(OfficeSoftware)處理數(shù)據(jù);

收發(fā)電子郵件;

想進(jìn)行這些計(jì)算機(jī)工作時(shí),你的Desktop環(huán)境需要什么東西?很簡(jiǎn)單,“就是需要窗口”!因?yàn)樯暇W(wǎng)瀏覽、文字編輯的所見(jiàn)即所得界面,以及電子公文系統(tǒng)等等, 如果沒(méi)有窗口界面的輔助,那么將對(duì)使用者造成很大的困擾。而眾所皆知的,Linux早期都是由工程師所發(fā)展的,對(duì)于窗口界面并沒(méi)有很需要,所以造成Linux不太友好的印象。

好在,為了要強(qiáng)化桌面電腦的使用率,Linux與X Window System結(jié)合了!要注意的是,X Window System僅只是Linux上面的一套軟件,而不是核心喔!所以即使X Window掛了,對(duì)Linux也可能不會(huì)有直接的影響呢!更多關(guān)于X window system的詳細(xì)信息我們留待第二十三章再來(lái)介紹。

近年來(lái)在各大社區(qū)的團(tuán)結(jié)合作之下,Linux的窗口系統(tǒng)上面能夠跑的軟件實(shí)在是多的嚇人!而且也能夠應(yīng)付得了企業(yè)的辦公環(huán)境!例如美觀的KDE與GNOME窗口界面,搭配可兼容微軟Office的OpenOffice/LibreOffice(https://www.openoffice.org/zh- cn/,https://zh-cn.libreoffice.org/)等軟件,這些自由的辦公室軟件包含了文字處理、電子表格、簡(jiǎn)報(bào)軟件等等,功能齊全??!然后配合功能強(qiáng)大速度又快的Firefox瀏覽器,以及可下載信件的雷鳥(niǎo)(ThunderBird)軟件(類似微軟的OutlookExpress),還有可連上多種實(shí)時(shí)通訊的Pidgin!Linux能夠做到企業(yè)所需要的各項(xiàng)功能啦!

Tips

鳥(niǎo)哥真的垂垂老已~前一陣子(2014)上課時(shí),跟學(xué)生說(shuō):“各位??!你們考取的證書(shū)也轉(zhuǎn)一份給老師來(lái)備份嘛!用email寄給鳥(niǎo)哥喔!”結(jié)果有幾個(gè)學(xué)生竟然舉手說(shuō)!“老師!我知道email?。〔贿^(guò),從來(lái)沒(méi)有用過(guò) email寄附件耶!所以才沒(méi)有傳給你?。 蓖郏?!什么:“那你們?cè)趺磦魉臀募??用FTP喔?”鳥(niǎo)哥問(wèn),他說(shuō)“沒(méi)??!就用FB或者是Line啊!或者dropbox!真沒(méi)用過(guò)email耶!”…時(shí)代不同了…

手持系統(tǒng)(PDA、手機(jī)):

自從iphone4在 2010年面世之后,整個(gè)手機(jī)市場(chǎng)開(kāi)始大轉(zhuǎn)向!智能手機(jī)市場(chǎng)將原本商務(wù)用的PDA市場(chǎng)整個(gè)吃掉!然后原本在2010年前后很熱門(mén)的小筆記本也被平板電腦打趴了!在這個(gè)潮流下,Google成立了開(kāi)放手機(jī)聯(lián)盟(Open Handset Alliance),并且推出Android手機(jī)專用操作系統(tǒng)!而Android其實(shí)就是Linux核心的一支,只是專門(mén)用來(lái)針對(duì)手機(jī)/平板這類的ARM機(jī)器所設(shè)計(jì)的(注12)!

2015最新的Android系統(tǒng)5.x使用的就是Linuxkernel 3.4.x版本,另外,調(diào)查中也顯示,從2013年之后,Android系統(tǒng)已經(jīng)是全球最多人使用的手機(jī)系統(tǒng)。也就是說(shuō),現(xiàn)在手機(jī)市場(chǎng)的主流操作系統(tǒng)是Linux分支出來(lái)的Android喔!那怎么能說(shuō)Linux很 少人用呢?哈哈!天天都在用耶各位!

Tips

如果你的手機(jī)是Android系統(tǒng)的話,請(qǐng)拿出來(lái),然后點(diǎn)選“設(shè)置”--> “關(guān)于(手機(jī))” --> “軟件信息”,你就會(huì)看到Android版本,然后再點(diǎn)選“更多”, 這時(shí)你就會(huì)看到類似3.4.10-xxx的代號(hào),那是什么?查一查上頭提到的Linux版本,就知道那是啥鬼東西啰!^_^

嵌入式系統(tǒng):

在第零章當(dāng)中我們談到過(guò)硬件系統(tǒng),而要讓硬件系統(tǒng)順利的運(yùn)行就得要撰寫(xiě)合適的操作系統(tǒng)才行。那硬件系統(tǒng)除了我們??吹降挠?jì)算機(jī)之外,其實(shí)家電產(chǎn)品、PDA、手機(jī)、數(shù)碼相機(jī)以及其他微型的計(jì)算機(jī)配備也是硬件系統(tǒng)啦!這些計(jì)算機(jī)配備也都是需要操作系統(tǒng)來(lái)控制的!而操作系統(tǒng)是直接嵌入于產(chǎn)品當(dāng)中的,理論上你不應(yīng)該會(huì)更動(dòng)到這個(gè)操作系統(tǒng),所以就稱為嵌入式系統(tǒng)啦!

包括路由器、防火墻、手機(jī)、IP分享器、交換器、機(jī)器人控制芯片、家電用品的微計(jì)算機(jī)控制器等等,都可以是Linux操作系統(tǒng)喔!酷學(xué)園內(nèi)的Hoyo大大就曾經(jīng)介紹過(guò)如何在嵌入式設(shè)備上面載入Linux!你桌面上用來(lái)備份的 NAS 說(shuō)不定內(nèi)部也是精簡(jiǎn)化過(guò)的 Linux 系統(tǒng)?。?/p>

雖然嵌入式設(shè)備很多,大家也想要轉(zhuǎn)而使用Linux操作系統(tǒng),不過(guò)在臺(tái)灣,這方面的人才還是太少了!要玩嵌入式系統(tǒng)必須要很熟悉Linux Kernel與驅(qū)動(dòng)程序的結(jié)合才行!這方面的學(xué)習(xí)可就不是那么簡(jiǎn)單喔!^_^


1.3.3? 云端應(yīng)用

自從個(gè)人計(jì)算機(jī)的CPU內(nèi)置的核心數(shù)越來(lái)越多,單一主機(jī)的能力太過(guò)強(qiáng)大,導(dǎo)致硬件資源經(jīng)常閑置,這個(gè)現(xiàn)象讓虛擬化技術(shù)得以快速發(fā)展!而由于硬件資源大量集中化,然后移動(dòng)辦公室之類的需求越來(lái)越多,因此讓辦公數(shù)據(jù)集中于云程序中,讓企業(yè)員工僅須通過(guò)端點(diǎn)設(shè)備連線到云去取用運(yùn)算資源,這樣就變成隨時(shí)隨地都可以辦公啦(其實(shí)很慘…永遠(yuǎn)不得休息??!真可憐~)!

這就是三國(guó)演義里面談到的“天下大勢(shì),分久必合、合久必分”的名言??!從(1)早期的昂貴的大型主機(jī)分配數(shù)個(gè)終端機(jī)的集中運(yùn)算機(jī)制,到(2)2010 年前個(gè)人計(jì)算機(jī)運(yùn)算能力增強(qiáng)后,大部分的運(yùn)算都是在臺(tái)式機(jī)或筆記本上自行完成,再也不需要跑去大型主機(jī)取得運(yùn)算資源了!到現(xiàn)在(3)由于移動(dòng)設(shè)備的發(fā)達(dá),產(chǎn)生的龐大數(shù)據(jù)需要集中處理,因而產(chǎn)生云端系統(tǒng)的需求!讓信息/資源集中管理!這不是分分合合的過(guò)程嗎?^_^

云應(yīng)用

許多公司都有將資源集中管理的打算,之前參與一場(chǎng)座談會(huì),有幸遇到阿里巴巴的架構(gòu)師,鳥(niǎo)哥偷偷問(wèn)他說(shuō),他們機(jī)房里面有多少計(jì)算機(jī)主機(jī)???他說(shuō)不多!差不多才2萬(wàn)部主機(jī)而已…鳥(niǎo)哥正在搞的可提供 200 個(gè)左右的虛擬機(jī)的系統(tǒng),使用大約 7部主機(jī)就覺(jué)得麻煩了,他們家至少有2萬(wàn)部耶!這么多的設(shè)備底層使用的就是 Linux 操作系統(tǒng)來(lái)統(tǒng)一管理。

另外,除了公司自己內(nèi)部的私有云之外,許多大型網(wǎng)際網(wǎng)絡(luò)供應(yīng)商(ISP)也提供了所謂的公有云來(lái)讓企業(yè)用戶或個(gè)人用戶來(lái)使用 ISP 的虛擬化產(chǎn)品。因此,如果公司內(nèi)部缺乏專業(yè)管理維護(hù)人才,很有可能就將自家所需要的關(guān)鍵應(yīng)用如 Web、Mail、系統(tǒng)開(kāi)發(fā)環(huán)境等操作系統(tǒng)交由 ISP 代管,自家公司僅須遠(yuǎn)端登陸該系統(tǒng)進(jìn)行網(wǎng)站內(nèi)容維護(hù)或程序開(kāi)發(fā)而已。那這些虛擬化后的系統(tǒng),也經(jīng)常是 Linux 啊!因?yàn)楦厦嫫髽I(yè)環(huán)境利用提到的功能是相同的!

所以說(shuō)云應(yīng)用的底層就是 Linux ,而云應(yīng)用搭建出來(lái)的虛擬機(jī),內(nèi)容也是 Linux 操作系統(tǒng)哩!用的越來(lái)越多??!

Tips

所謂的“虛擬化”指的是:在一部實(shí)體主機(jī)上面仿真出多個(gè)邏輯上完全獨(dú)立的硬件,這個(gè)假的虛擬出來(lái)的硬件主機(jī),可以用來(lái)安裝一部邏輯上完全獨(dú)立的操作系統(tǒng)! 因此,通過(guò)虛擬化技術(shù),你可以將一部實(shí)體主機(jī)安裝多個(gè)同時(shí)運(yùn)行的操作系統(tǒng) (非多重啟動(dòng)),以達(dá)到將硬件資源完整利用的效果。 很多ISP就是通過(guò)販?zhǔn)圻@個(gè)虛擬機(jī)的使用權(quán)來(lái)賺錢(qián)的喔!

終端設(shè)備

既然運(yùn)算資源都集中在云里面了,那我需要連線到云程序的設(shè)備應(yīng)該可以越來(lái)越輕量吧?當(dāng)然沒(méi)錯(cuò)!所以智能手機(jī)才會(huì)這么熱門(mén)??!很多時(shí)候你只要有智能手機(jī)或者是平板,連線到公司的云里面去,就可以開(kāi)始辦公了哩!

此外,還有更便宜的端點(diǎn)設(shè)備喔!那就是近年來(lái)很熱門(mén)又流行的樹(shù)莓派 (Raspberry Pi)與香蕉派(Banana Pi),這兩個(gè)小東西售價(jià)都不到 50 美元, 有的甚至臺(tái)幣 1000 塊不到!這個(gè)Raspberry Pi其實(shí)就是一部小型的計(jì)算機(jī),只要加上USB鍵盤(pán)、鼠標(biāo)與HDMI的屏幕,立刻就是可以讓小朋友學(xué)習(xí)程序語(yǔ)言的環(huán)境!如果加上通過(guò)網(wǎng)絡(luò)去取得具有更強(qiáng)大運(yùn)算資源的云端虛擬機(jī),不就可以做任何事了嗎?所以,端設(shè)備理論上會(huì)越來(lái)越輕量化的!

Tips

鳥(niǎo)哥近幾年來(lái)做的主要研究,就是通過(guò)一組不是很貴的 server 系統(tǒng)達(dá)到打開(kāi)多個(gè)虛擬機(jī)的環(huán)境,然后讓學(xué)生可以在教室利用類似 banana pi 的設(shè)備來(lái)連線到服務(wù)器,這時(shí)學(xué)生就可以通過(guò)網(wǎng)絡(luò)來(lái)取得一套完整的操作系統(tǒng),可以拿來(lái)上課、回家實(shí)踐練習(xí)、上機(jī)考試等等!相當(dāng)有趣!

鳥(niǎo)哥稱為虛擬計(jì)算機(jī)教室!而 server 與banana pi 的內(nèi)部操作系統(tǒng)當(dāng)然就是 Linux 啊!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容