《Linux 探索》的目的是幫助您認識Linux 這個博大精深的操作系統產品,如果您帶著想成為專家或者頂尖Linux 人物來看本文的話,您肯定要失望了。因為我自己也還是Linux 的初學者,怎麼能夠寫出讓您成為高手的文章?(笑)不過願望總是好的,大家一起努力吧!加油! ok,現在請您看看您是屬於下面哪種類型的人: 1 :根本不知道什麼是Linux,但是知道Windows; 2 :可以拼寫出Linux 這個單詞,知道是一種和Windows 操作系統相關的產品但僅此而已; 3 :知道Linux 是干什麼的,有什麼用處,而且也准備學習Linux 了; 4 :您是一位准備考取RHCE證書的學生或者工作者,以便提高您的競爭力; 5 :您對於技術總是有一種向往,喜歡研究新的技術,接觸新的領域; 如果您是屬於上面五種中的任何一種,那麼本系列文章適合您的閱讀,您能從中得到許多樂趣。我不能保證您看完本系列文章之後,能夠成為一個合格的RHCE (RHCE:Red Hat Certified Engineer.RedHat Linux 應用的一種水平認證,關於RHCE認證將有章節詳細描述),但是能夠保證您不會被別人對於Linux 的描述而被搞的頭昏,呵呵。(一些高手希望唬人,總是喜歡拿技術術語來炫耀,我曾經也是,嘻) 寫作風格:這個要首先說明的,我,方圓不是一個專業的技術寫作人,寫這篇系列文章的目的也是完全出自自己的愛好和興趣,同時也是為了幫助更多喜愛 Linux 這個產品的朋友熟悉Linux ,本系列文章將不會是純技術內容文章,裡面也會伴雜著作者自己的一些心得體會和對軟件產品以及當前軟件產業的一些個人看法,希望這樣的內容和行文風格廣大的朋友們能夠喜歡!謝謝。 文章內容:嗯,上段已經說過了,這篇系列文章將不會是純技術的內容,但是仍將是以Linux 技術為主,這裡我要強調的是本文講述的Linux 操作將以RedHatLinux 這個產品為標准,我為什麼要選擇Red Hat 的產品呢?下面會講到。 還有,作者不保證本系列文章會最終完成(誰能保證Linux 不會發布新版本?或者微軟中止其前進的步伐?呵呵)。作者盡量保證本系列文章不會是寫到哪裡算哪裡,這個請讀者不要擔心(其實這是作者我最擔心的事情)。 Linux 包含著太多要講的內容,其實Windows 也是一樣,在下面的文章中讀者將看到Windows 系統的復雜性。本系列文章的切入點假設讀者具備一定的DOS知識(觸類旁通學Linux 的命令),並且也是一名Windows 用戶,這點作者不擔心,因為作者敢肯定大部分讀者都是在用Windows ! 好了,作者的廢話到此為止,讀者朋友肯定已經等的不耐煩了吧?ok,下面大幕拉開,開始我們神奇的Linux 探索吧。 第 1 場 值得回憶的事情和人 電影《泰塔尼克號》的導演卡梅隆在奧斯卡獎的頒獎大會上接過最佳導演獎時相當狂妄地對著全場觀眾重復了男主角的一句台詞:“我是世界之王”。狂妄嗎?耗資兩億多美元,一舉奪得11項奧斯卡大獎,贏得全球最高票房,難怪它的導演這般狂妄。但是卡梅隆其實心中非常清楚能夠讓他狂妄依賴的是銀幕後面最先進的計算機技術!銀幕後面才是真正的大主角,就是上百台圖形工作站上所使用的那一套操作系統。它是誰?UNIX?還是Windows ?No,no,這個主角的名字遠遠沒有UNIX或者Windows 來到那麼響亮,但它卻是創造了世界軟件史上的一個傳奇!它就是Linux ! Linux ?對!作者接觸了很多Linux 的愛好者,聆聽他們的學習經驗,分享他們的學習的成果,一起和他們歡樂和開心。但是作者也發現一個有趣的現象:很多朋友把Linux 的發音讀成“Lih-nUCks ”,而有些朋友卻又讀成“Lee-nus ”,而更多的朋友卻又讀成“Lie-nucks ”,呵呵。是不是有點開始糊塗了呢?或許 您還沒有發覺吧,我們喜愛的Linux 竟然還有這麼的讀音。那麼究竟哪個是正確的發音呢?其實都對,第一個是大多數英語國家的朋友念的發音,第二個是LinusTorvalds(關於這位仁兄,我將在下面詳細說說他的故事,現在請暫且記住他的名字吧)的芬蘭式發音。而第三個則是亞洲地區人群喜歡的念法,不管他,反正隨便您喜歡哪一個都可以,只要你不把Linux 念成“李奧納多”或者“基努李維”就可以了。 讓我們把時光切換到1991年吧。這一年是我們偉大又可愛的比爾。蓋茨先生最得意的一年呢!說蓋茨先生可愛是因為他把圖形界面操作方式演繹的如此“卡娃以”,說他偉大當然是指他在60歲以後要把那麼多的財產全部捐獻給社會!絕非嘲諷,而是發自內心真誠的佩服和感動。就是這一刻的感動導致作者將在本系列文章中公平客觀的描述Windows 和Linux 的區別,並且也借Windows 來帶領讀者走進Linux 的世界,很神奇,不是嗎? 如果讀者朋友中有考過當初上海舉辦的計算機中級考試的話,不知道你們還能否回憶起Windows 3.1 呢?對!1990年5 月推出的Windows 3.0 操作系統取得了非常可觀的成績,單是1990年就有400 萬份拷貝售出,或許這個數字放在現在可能吸引不了多少眼球,但是在那時的確是一個非常可怖的數字!所以在1991年,Windows 的銷售勝利繼續持續著,並且,微軟的Visual Basic又即將在5 月份推出。更讓蓋茨先生的得意的事是Windows 3.1 也快要面世了!另外,1991年微軟的“視窗新技術”,也就是微軟想靠這個技術來打敗UNIX的Windows NT也即將完工!眾所周知,微軟設計開發NT的目的就是要創造一個企業級的操作系統!(題外話:時間過去了十來年了,微軟離這個夢想似乎不是越來越近,而是越來越遠了,這到底是什麼原因造成的呢?) 1991年絕對是世界軟件產業上值得留下記憶的一年!歐洲粒子物理研究所的一位英國物理家蒂姆。伯納斯。李(Tim John Berners Lee)開發了第一個真正意義上的web server——httpd ,第一個客戶端浏覽器——World Wide Web,並且也開通了第一個WWW 網站 http://info.cern.ch. 隨便說一句:這個家伙也曾開發過一個多任務的操作系統呢。 另外還有SUN 公司(太陽微系統公司)正在研究一種新編程語言Java. 關於Java的故事作者我就不多講了,只要看看現在的情況就可以知道Java有多少火熱。 以上這些事情當然逃不過微軟的監視,因為這些都是有可能對微軟造成直接經濟損失的競爭對手!若干年過去了,事情的發展真是這樣的。不過不管微軟的觸角有多少長,可以肯定的是,在這一年,微軟無論如何也不可能懷疑到遠在芬蘭首都赫爾辛基(Helsinki)一個計算機專業二年級學生的臥室裡,也有一項關鍵技術在逐漸成型!而且這項技術對於微軟來說,構成的挑戰絕對要勝過微軟的其他戰役! 赫爾辛基的季節差異及其顯著,冬天黑暗寒冷,只有幾個小時的日照時間。夏天則日長的厲害,因為這是由赫爾辛基的地理位置所造成的。靠近極北地區都是這樣。這裡再隨便聊一下歷史,芬蘭曾經是瑞典的一個省,並且存在了幾個世紀。芬蘭只到1971年才獨立的。並且芬蘭還有一個雅稱:千湖之國。水力資源豐富,有激流和瀑布1962處。海岸線曲折,全長1100公裡,近海多島嶼。哦,我知道我該打住了,這不是歷史書,更不是地理書。 許多朋友都認為Linus Torvalds是Linux 之父,是的。全世界的人們都是這樣認為的。這也是無可爭議的事實。但是作者仍然認為還有一個人要比Linus 更加來的偉大,因為如果沒有這個人的倡議,恐怕我們可愛的小企鵝將胎死腹中呢。他就是理查德。斯托曼(Richard.M.Stallman)就是這個人在1975年成立了自由軟件基金會(Free Software Foundation),建立了GNU 項目,這最終導致了Linux操作系統的誕生!理查德。斯托曼同時也是Emacs editor(UNIX系統下的編輯器),gcc multi-lingual compiler(UNIX系統下的C 語言編譯器)和gbd debugger(程序調試器)的作者。天才的程序員!自由軟件的斗士!大家都知道,自由對於我們來說顯得要比金錢更加重要,不是嗎?以此類推,軟件當然也需要自由!不過請原諒作者我的冒昧,理查德。斯托曼那種堅定不移的追求崇高理想的精神對於大多數後來者來說顯得太過於理想化而讓太多的人畏難而退。不過作者我還是非常贊賞理查德。斯托曼的這種為軟件自由奮斗一生的精神! 第 2 場 追憶似水年華 Linus 接觸的第一台計算機是Commodore Vic-20. 這種型號的計算機在當時屬於很先進的一種型號。中央處理器的速度是1 兆赫(MHz )。Linux 大概使用了五年,而Linus 自己也說過不喜歡Z80 芯片的構架,所以當Linus 准備升級自己機器的時候,他選擇了一款特別古怪的芯片:Sinclair QL.這款芯片雖然有著明顯的缺點,在很多方面看上去更像是一款玩具,但卻是Linus 所喜歡的。因為這款芯片具有一個強大的功能:可以同時運行幾個程序。這對Linus 來說,影響深遠,使得Linus 從編寫簡單的程序開始,最終形成了Linux。 筆者不打算在這裡詳細闡述Linus 創造Linux 的過程,因為那些內容足可以寫成一本大部頭的書籍,而且筆者也相信恐怕沒有多少人會對Linux 的歷史感興趣。嗯?您說你有興趣?那好吧,歡迎您給筆者來信,我們共同探討。 既然筆者上面已經說了,不想詳細的闡述那段歷史,那麼就意味著筆者將要簡單的介紹一下:一開始,Linus 使用的是Minix 系統(安德魯.塔尼鮑默所設計,寫Minix 的原因就是因為當時不滿於UNIX源碼不向學生開放),然而當Linus 熟悉了Minix 的一切構架後,開始漸漸不滿於Minix 的錯誤的地方,比如:Minix 的優化做的不夠好,浮點堆棧經常溢出之類的錯誤。另外,那個時候,Linus 也開始使用C 語言編程,這也讓Linus 產生了想要開發一個“比Minix 更好的Minix ”的狂妄想法。 接下去,Linux 真的開始自己動手干了。一星期7 天,每天10個小時的編程。Linus 就這樣連續了干了將近5 個月,終於編寫出一個非常幼小的Linux 系統。然後就是眾所周知的事件,Linus 在comp.os.minix 新聞組發了那篇著名的帖子。關於這篇帖子實在是非常出名,甚至已經被RedHat寫進他們所提供的官方教材中了(如果你得到過RedHat的官方教材的話,一定看過這篇帖子,不是嗎?)所以筆者根本不想再在這裡重復一遍,只不過請允許筆者帶領大家再一次回憶這篇帖子的標題吧:“您希望Minix中擁有什麼功能?”對,沒錯,就是這個標題,發帖子的時間是1991年的8 月25日,是個星期天。至於當時天氣怎麼樣,恐怕連Linus 本人也回憶不起來了吧。呵呵。從那個時刻開始,Linux 注定要成為一只展翅翱翔的雄鷹,因為Linux 的背後有全世界無數的天才黑客的支持!(饒恕筆者吧,前面那句其實是一句謊言,起碼也是不准確的話,因為這裡的全世界裡面恐怕沒有中國人,有嗎?但願是筆者孤陋寡聞!) 另外,還有一個小小的細節,Linus 當初發布Linux 的時候,其版本號是0.02,這並不是說Linux 沒有0.01的版本,真實的情況是這樣的:0.01版其實也是存在的,並且也進行過發布,只是Linus 並沒有把這個0.01版本放到網絡上,而只是把它放置於校園的FTP 上面供大家下載。而且也僅僅發布了源代碼,以及附帶著大約1800個來字的說明文件,發布的目的也是很“黑客”般的單純,純粹只是為了讓大家讀一下代碼而已。看看編寫的代碼的可讀性是否良好。很可惜的是筆者再也無法找到這份源代碼了,據說這份源代碼的可讀性非常好,並且還附帶著詳盡的注釋,而且有許多注釋還非常俏皮。 這裡隨便插一句,Linus 本人曾經說過,他非常討厭撰寫程序手冊,也就是我們認為的Readme文件。這倒讓筆者想起“網絡螞蟻”的作者在剛開始提供的版本中也沒有很好的軟件說明手冊。呵呵,也許技術型家伙總是討厭文字表達方式,而更喜歡用代碼來說明一切。或許更是這些天才的技術型選手沒有筆者這樣有閒情逸致來撰寫大量文字符號吧 ^_^唉,筆者倒是很喜歡撰寫程序手冊,只是沒有軟件可供筆者撰寫,呵呵,看來筆者是注定成不了技術型選手了。 塵封的往事雖然已經離我們很遙遠了,但是筆者不希望中國的Linux 用戶把這段往事變成傳說中故事。所以筆者在這裡寫下這段Linux 的發展簡史的初衷就是希望廣大的中國Linux 用戶能夠知道這段精彩的歷史,盡管夾帶著少許傳奇的色彩。 下一篇帶給大家將是Linux Vs Minix和Linux 的“父親”Linus 抗擊Minix的“父親”塔尼鮑默的精彩故事。同時也是《Linux 探索》第一幕“傳奇的開始“之落幕篇。在這裡,筆者想多那些翹首以待准備學習Linux 實際操作技術的朋友道聲抱歉了,您所希望的篇章恐怕還要等上那麼幾天。但請相信我,那一天會來的。好了,我們下次再見吧! 第 3 場 傳奇的故事仍將繼續 大家有否知道理查德。斯托曼一句標志性的告別語是什麼嗎?這句告別語實在太有名了,連Linus 也在其Linux 內核0.01版本發布說明的結尾簽名處引用了一下,那就是“黑客快樂”。而Linus 自己快樂的黑客工作很快就促成了Linux的0.02版本。這一次,Linus 沒有像發布0.01版那樣只放置在校園網絡內,而是毫不遲疑的向全世界宣布了Linux 的到來! 1991年10月5 日星期六,一個值得回憶的日子。Linus 在comp.os.minix 新聞組上發言宣布了Linux 的真正誕生! 當然,那時的Linux 還很粗糙,但是它可以運行,這正意味著他可以繼續進步!更重要的,Linus 和塔尼鮑默截然不同,Linus 正在向大家尋求改進程序的想法,並且歡迎大家朝著這個方向努力! 隨著Linux 的0.12版本在1992年1 月5 日問世,幾乎已經意味著讓Linus 處於某個偉大時刻來臨的邊緣了。因為在0.12版之前發布的版本基本上都是屬於給黑客使用的,沒有詳細的安裝手冊,也沒有太多的程序指南之類的文檔手冊,但是隨著0.12版本的發布,其面臨的用戶組群漸漸的在擴大。讓我們看一下最古老的Linux 安裝說明文件裡面的一段吧:重新啟動Linux ,使用fdisk 來檢查是否已經有了新的分區,使用mkfs在fdisk 報告的一個分區上建立一個文件系統。輸入“mkfs -c /dev/hdX nnn”,其中X 代表Linux 的fdisk 報告的設備號,nnn表示fdisk 報告的大小;nnn 的單位是blocks,即千字節。這時,你就可以根據這個大小信息來確定哪一個設備名表示那一個分區了。 筆者想來每一個Linux 的用戶都應該使用過mkfs這個程序吧?也或多或少從各個渠道得知這條命令的用法,但是上面這段卻是最原汁原味的使用說明。讀者您的心情筆者我無法揣測,但是當筆者看到上面這段話的時候,心中還是湧起一股回憶的念頭,筆者遙想起當筆者初次使用這條命令的場景,那是在一個教室裡面,外面陽光燦爛,真讓人懷念啊…… 這裡也隨便插一句:當時比Linux 更有名的Windows 3.1 操作系統也在隨後的1992年3 月18日發布了,也讓我們看一下這個操作系統的特色吧:這個系統既包含了對用戶界面的重要改善也包含了對80286 和80386 對內存管理技術的改進。為命令行式操作系統編寫的MS-DOS下的程序可以在窗口中運行,使得程序可以在多任務基礎上可以使用使用,雖然這個版本只是為家庭用戶設計的,很多游戲和娛樂程序仍然要求DOS 存取。 如果您使用計算機時間夠長,一定也使用過這個操作系統吧?的確,從DOS到Windows ,微軟的確經歷了一次飛躍!讓我們產生了“桌面”這樣的概念,大家可以對比一下,當時的Linux 和Windows 比起來,是多麼的渺小和微不足道,但是十來個年頭過去了,Windows 的確是越來越來完善,使用Windows 的用戶也是鋪天蓋地,但是比起Linux 前進的步伐,是不是顯得稍微緩慢點了呢?只是Linux發展雖然迅猛,但是似乎沒有一個統一的標准,雖然百花齊放,春色滿園,但是讓我們用戶卻又難以抉擇,畢竟這個市場要受需求和利益所支配的。微軟之所以能夠築就目前的軟件霸業地位,正是其很早就知道制定標准的好處,Linux 的發展到了如今似乎也到了一個瓶頸的階段,SuSE被人收買了,RedHat也沾惹上了銅臭味道,Mandrake歸根到底還只是個人用戶的一個玩具, Debian太單純了……哦,筆者我好像又把思路散了出去,還是讓我們把思路拉回來吧^_^ 0.12版本的發布可能是Linux 發展的一個轉折點。在此之前,Linux 只是一個“有點意思,但是即不特別有用,又沒有明顯的重要性”的玩意兒。而對於0.12版,越來越多的人開始重視了。尤其是comp.os.minix 新聞組上的變化,幾乎有一半以上的文章都是在討論Linux ,而以前全部是討論Minix. Linux的如此熱鬧,當然也引起了部分Minix 用戶的不滿,有人這樣寫道:我實在不願意發火,但是當這個新聞組上50% 的文章都和Linux 相關時,我真的忍受不了了。 而最終讓Linus 徹底甩掉Minix 獨立發展的念頭並不是這樣的一篇帖子,而是另外一件事情:Linus 本來是想和學校的計算機聯網的,沒有想到陰錯陽差的讓他的終端仿真器向硬盤撥號了。這時為什麼呢?大家可曾還能記得學習linux最初的時候,一定有人(我保證)向您灌輸過對於UNIX來說任何東西都是文件。對於Linux 來說也是一樣,那麼這件事情就好理解了。往一台調制解調器送數據和往一塊硬盤送數據並沒有什麼本質上的區別。 ----就是因為這次小差錯,讓Linus下了拋開Minix這根拐棍獨自行走的決心,Minix曾經為Linux的開發起到了不可或缺的腳手架的作用,而現在Linux終於要獨立去尋找新的出路!也許生命總會找到新的出路的寓意也就在於此吧。 與此同時,Linux 和Minix 終於決裂,兩大陣營也爆發了一場筆斗! 現是Minix 的創造者塔尼鮑默在copm.os.minix 上發表了一篇文章,也許這可能算是Usenet歷史上最著名的文章之一了。其文章標題極具挑戰色彩:Linux已經過時! 文章裡面對於Linux 百般挑剔,塔尼鮑默畢竟是專家學者,其經驗,學識,技術都勝於當時還是初出茅廬的Linus.他精煉的語言和雄辯的口吻展示了他深厚的學術功底!塔尼鮑默集中討論了兩個地方:一是微內核與單片式內核之爭,二是可移植性。 Linux 當然不會漠視塔尼鮑默的評論,何況Linus 的自尊心很強,在過去的9 個月裡,Linus 已經把自己大部分時間和精力都投入到Linux 中,而快速增長的Linux 用戶和編程人員群體無疑也讓Linus 有理由為Linux 而感到自豪和驕傲。但是,現在卻有一個老學究跑過來把Linux 說的一文不值。諸位可以想象一下Linus的感受吧? 雖然現在的Linus 已經被稱呼於“最優雅的黑客”或者“黑客王子”,但是那個時候卻不是。Linus 當然進行了反擊!而且還是狠狠地。反擊是快速的,在塔尼鮑默那篇帖子發表僅僅過去了11個小時(讓筆者想起了著名的《驚魂11小時》這個游戲,筆者可是不靠攻略就通關的哦),Linus 就開始了其滔滔不絕的反擊宣言!開篇就是:“好了,對於這樣的文章,我恐怕不得不回復……認真的反擊,現在是時候了”。這篇反擊的文章,把Minix 批駁的體無完膚,而且還捎帶著對塔尼鮑默進行人身上的攻擊。稱塔尼鮑默是“造成腦損傷的”。 赫赫,看來不管是中國人還是外國人,在年輕的時候總是顯得非常魯莽和沖動,要知道,Linus 攻擊的對象塔尼鮑默可是一位在操作系統領域倍受尊重的教授,並且還是《操作系統:設計與實現》一書的作者。這本書,Linus 可不要忘記也曾仔細拜讀過呢。 當然,在第二天,Linus 就已經感到了後悔,馬上又發布了一篇帖子,很誠懇的向塔尼鮑默道歉。並且說到“我第一次,但願也是最後一次發火”。呵呵,Linus 以後是不是還發過這樣的火,筆者並不知道。筆者只知道Linus 後來和塔尼鮑默進行技術上的討論的時候,語氣顯得緩和了許多。當然,他們這一次爭論,雖然Linux 和Minix 兩陣營的用戶都各自洋洋灑灑的發表了很多互相批駁的文章,但是畢竟還是有一些中肯的用戶發表他們中肯客觀的看法,下面就是一封中肯而簡潔的評述: 如果按照最新的設計標准來衡量,我們使用的許多(如果不是大多數)軟件可能都已經過時。大多數用戶可能並不那麼關心他們使用的操作系統是否過時。他們當然對軟件的性能和用戶級別的功能更感興趣。 總的來說,我支持微內核是未來發展潮流的說法。但是,我也覺得實現一個單片式內核的難度要小一些。當然,單片式內核很容易因為修修改改而弄的一團糟。 祝好! 簽名是“肯”。肯就是肯.湯姆森(Ken Thompson),UNIX的創始人。 在那篇“Linux 已經過時”的帖子之後,Linus 幾乎很少再在comp.os.minix這個新聞組上發帖子了。這倒不是因為塔尼鮑默得罪了他,主要是因為Linus 已經擁有了自己的新聞組:alt.os.linux. 就像所有的年輕雄獅一樣,和老獅子發生反叛沖突之後,linus 離開了去尋找自己的歸宿。 當然,Linus 仍然對Minix 和comp.os.minix 保持著一種親切感,直到1999年,Linus 還在comp.os.minix 上回答了一個問題,要知道,他回答的這個問題是在1991年就已經存在的帖子了。看來,Linus 仍然無法抵御這來自過去的帶有魔力的召喚!我們也能領略Linus 對於往事的懷舊之情:那時的一個莽撞青年,單槍匹馬,白手起家,一點一點地建造了那用自己的名字命名的操作系統。那時他播下了一粒種子,如今已經成長為千萬用戶使用的一個完整的操作系統的內核,並且同時掀起了一場綿延不絕的運動! 時至今日,大家也看到了Linux 精彩傳奇的故事仍然再轟轟烈烈的進行下去,同時也大有要把微軟拉下馬的態勢,並且前幾年國內還爆發過一陣Linux 熱潮(現在好多了,也許泡沫終有散盡的一天吧),筆者有一位朋友,用UNIX系統將近七年,曾經是Turbo Linux 的認證考試全亞洲第一名,是一位經驗非常豐富的UNIX用戶,但是他自己平時家用的電腦上安裝的也是Windows XP系統。筆者曾經問他為何不用Linux ,他笑笑說Linux 這類的操作系統,最終還是應該回到服務器上面去,要想在家庭用戶上面發展,遙遙無期又遙不可及!是啊,那些大力提倡使用Linux 的朋友,你們有沒有想過,如果一個小公司的打字員,你讓她使用Linux ,會不會直接導致她失業呢?如果今天的溫飽都成問題,誰還會考慮明天的發展?最近又聽聞RedHat公司發出了不再支持桌面Linux 的決定似乎也印證著筆者的想法吧? 好了,《Linux 探索》第一幕“傳奇的開始”也到了落幕的時刻了,下一幕,將帶大家走進Linux 的技術領域范圍,我將帶給大家另外一種了解Linux 的辦法。我們下次再見吧。