Linux誕生的十二年,是其不斷尋求發展的十二年,是經歷各種磨練的十二年,也是逐漸成熟、逐漸清晰的十二年。 十二年一輪,只是歷史長河中的短短一瞬。Linux用2.6版內核開啟了其新一輪的發展,我們則將以對Linux十二年的回顧來揭開Linux內核的神秘面紗。 我沒有從頭開始經歷Linux發展的所有大事,只是想從一個Linux用戶的角度來描述一下Linux十二年成長經歷中的點滴。 正因為如此,我的資料都來自於互聯網。盡管年代已久遠,但是廣闊的互聯網空間仍然隨處可見Linux誕生以來的點點滴滴。將它們收集起來,Linux十二年的發展逐漸在眼前展現。
Linux誕生記 目前公認,Linux誕生於1991年8月29日,一切從下面這封郵件的發出開始。 Newsgroups: comp.os.minix Subject: What would you like to see most in minix? Summary: small poll for my new operating system Message-ID: <1991Aug25.205708.9541 @klaava.Helsinki.FI> Date: 25 Aug 91 20:57:08 GMT Organization: University of Helsinki Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). 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 would want. Any suggestions are welcome, but I won't promise I'll implement them :-) Linus (
[email protected]) PS. Yes - it's free of any minix code, and it has a multi-threaded fs.It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(. 上面這封郵件的譯文如下: 各位使用Minix的朋友們,大家好。 我正在為386(486)的兼容機做一個自由的操作系統。它僅僅是一個業務愛好,不會很大,也不像GNU那麼專業。從4月開始我就著手於這項工作,現在差不多就要完成了。我歡迎任何喜歡或不喜歡Minix的朋友能給我反饋,因為在某種程度上我的這個操作系統和它很像。比如,它們都使用了相同的文件系統物理組成(這是由實際情況所決定的)。 目前我已經將Bash 1.08和GCC 1.40移植到這個操作系統上,它們都能夠正常地工作。這意味著在這幾個月的努力下,我終於完成了一些實際的東西。我很想知道對於這個操作系統,大多數人到底需要哪些功能和特性。我歡迎各種建議,雖然我並不敢保證能夠實現它們。 Linus (
[email protected]) 又及:這個操作系統從Minix代碼而來,有一個多線程的文件系統。它不具備很好的靈活性(使用了386的任務切換機制),而且因為我所擁有的資源有限,它也許永遠都不能支持除了AT硬盤之外的東西。 文中提到的Minix是一個微型的Unix操作系統,完全免費且源代碼公開。作者是荷蘭的Andy Tanenbaum教授。他編寫這個操作系統的目的是為了教學和演示,因此他一直拒絕在Minix中加入不必要的特性而使其變得復雜。但是很多愛好者們熱衷於改進Minix,Linus Torvalds就是其中的一個。 現在再看這封信,誰能想到它對今後十多年中IT業造成的沖擊呢? 如果注意到1991年時Linus的許多郵件,我們會發現那個時候的他並不是現在這樣的一個頂級開發高手。那時候的Linus只是一個OS新手,他自己也在回憶錄中承認,當時向很多人請教了很多基本的問題。 誰又能說十二年後不會再出現這樣一個傳奇呢?
十年磨一劍 1991年11月,Linux 0.10版本推出。早期的Linux只有很少的一些程序,直到0.11版本,Linux仍然缺少init/login、rename system call、named pipes、symbolic links這些基本的特性。0.12版本之後,版本號直接跳到了0.95,Linux開始逐漸接近一個真正成熟的系統。 Linux開發的版本號慣例是,中間的數字為偶數代表穩定版,中間的數字為奇數代表開發版。因此到目前為止,Linux經歷了以下幾個穩定版本,他們的版本號和維護者分別如下:1.0.x;1.2.x;2.0.x由David Weinehall負責維護;2.2.x由Alan Cox負責維護;2.4.x由Marcelo Tosatti負責維護。 直到2003年12月18日推出Linux 2.6.0,由Linus Torvalds親自負責維護。
微內核與巨內核之爭 Linux以一種難以置信的速度流行起來。在它高速發展的歷程中,不能不提到著名的Linux是否過時之爭。雙方當事人恰恰就是Linus和Minix的作者Andy Tanenbaum教授。在這次爭論中,雙方對操作系統的很多方面都進行了深入的討論,至今看來仍然很有意義。 最先發難的是Andy Tanenbaum教授。1992年1月29日,他在題為“Linux is obsolete”的E-mail中說到了對未來一段時間內操作系統發展的觀點。 (1)是微內核還是巨內核 傳統的操作系統使用的都是巨內核結構。這意味著操作系統是一個整體可執行文件,進程管理、內存管理和文件系統全部運行在內核模塊中。而目前較新的一種設計方式是微內核,操作系統的大多數部分作為獨立的進程運行,存在於內核以外,內核通過消息傳遞、中斷處理、低級進程管理,以至於I/O來完成各種工作。 他認為微內核明顯優於巨內核,而Linux使用的恰恰就是巨內核。Andy Tanenbaum教授認為這是歷史的倒退,相當於在20世紀90年代仍然使用70年代的技術。 (2)靈活性(Portability) Andy Tanenbaum教授還認為,不應該對於一種特定的體系機構編寫操作系統,因為體系結構的進化是非常快的,這樣將導致移植非常困難。目前的Linux過於依賴80386架構,而這樣顯然是不對的。 之後Linus在回復的郵件中承認,微內核的確好一些,至少在理論上是這樣。但是Linus認為在當時擁有一個可用的操作系統更加重要。他說,如果前一年的春天GNU的內核Hurd推出的話,那Linux就沒有存在的必要了。Linus認為,不能僅僅用是否是微內核作為評論操作系統優秀與否的標准。 Linus說的是很重要的一點。微內核模式在開發和調試上都帶來了一定的難度,這也許是Hurd遲遲不能推出的一個重要原因。在很久以後的Revolution OS記錄片中,GNU的主教Richard Stallman承認,Hurd各部分之間的配合和調試是個大問題。也許Linus的確有遠見。他認為應該迅速推出能用的系統,而不是在做了最優化設計之後再推出系統,這個觀點值得我們深思。 對於靈活性,Linus認為只是某些不願意寫新程序的人的借口。他認為事實上由於POSIX標准的緣故,Linux比Minix更具靈活性,因為往Linux上移植程序會更加方便。靈活性是一個好主意,但是過猶不及,OS應該最大限度地利用架構的特點,這樣會讓開發變得更加容易。 後來雙方又進行了很多爭論,涉及到不少技術細節,也有不少別的人參與進來,他們說的話對於想學習OS的人很有啟發意義。 今天的Linux已經不能簡單地說是一個微內核系統或巨內核系統了,它同時具有這兩種系統的不同特點。不過我們可以看到,正是像上面這樣的討論,構成了今天這一龐大的OS理論基礎,這也正是Linux自由、開放的精神所在。