核心演進史
- 1969
- 美國 AT&T 貝爾實驗室的 Ken Thompson、Dennis Ritchie 與 Douglas McIlroy 開始開發 UNIX 作業系統。
- 1969.12.28
- Linus Benedict Torvalds 誕生於芬蘭赫爾辛基。
- 1984.01
- 美國的 Richard Stallman 發表 GNU 宣言。開始了偉大的 GNU 計劃,風起雲湧的開放軟體運動正式展開。
- 1984
- 美國國家科學基金會連接五個超級電腦中心及其它學術研究單位的 NFSnet,使用 TCP/IP 協定,成為 Internet 的骨幹。開啟網際網路時代。
- 1985.10.17
- 英特爾革命性的 32 位元處理器 80386 (i386) 問世。
- 1987.03.22
- GCC (GNU Compiler Collection) 誕生。(首發行為 0.9 版)
- 1987
- 荷蘭 Vrije 大學 Andrew Stuart "Andy" Tanenbaum 教授出版了 Operating Systems Design and Implementation,並含 Minix 作業系統與原始程式。
- 1988
- Linus 就讀赫爾辛基大學。
| 以上為造就 Linux 的史前重大事件 | |
- 1991.07.03 Linux 濫觴
發信人: [email protected] (Linus Benedict Torvalds)
討論區: comp.os.minix
主 題: GCC-1.40 and a posix question
訊息流水號: 1991Jul13, [email protected]
日 期: 3 Jul 91 10:00:50 GMT網友們好:
因為我在進行一項 minix 專案,我對 POSIX 標準的定義很有興趣。誰能指點我
一個 (更好的) 在最新 POSIX 規格下機器可讀格式?有 FTP 站尤佳。Linus Torvalds [email protected]
- 『一支穿雲箭,千軍萬馬來相見。』Torvalds 在 comp.os.minix 版發佈了這封 News 後,開啟作業系統新的局面。卅多年前 UNIX 打敗了 David N. Cutler 開發的 VMS;而廿餘年後 Cutler 開發的 Windows NT 打敗了 OS/2,準備大舉攻佔作業系統市場,卻因 Linux 的出現,而無法一統天下。
巧合:VMS 三個字母均向後移,正好是 WNT (Windows NT)。- 『一支穿雲箭,千軍萬馬來相見。』Torvalds 在 comp.os.minix 版發佈了這封 News 後,開啟作業系統新的局面。卅多年前 UNIX 打敗了 David N. Cutler 開發的 VMS;而廿餘年後 Cutler 開發的 Windows NT 打敗了 OS/2,準備大舉攻佔作業系統市場,卻因 Linux 的出現,而無法一統天下。
- 1991.08.01 v0.01 (10,239 行; 63,362 位元組)
- Linux 誕生,保證能跑的硬體為
- 386 AT
- VGA/EGA 螢幕
- AT 的硬碟控制器 (IDE 硬碟尤佳)
- 芬蘭鍵盤
- Linus 在開發作業系統時,處處都以他熟悉的 Minix 作為比較。時而依 Minix 的模式開發,但有時因 Linus 的主觀意見,而與 Andrew S. Tanenbaum 教授在作業系統的想法上相左,導致了近年來最出名的作業系統竟然以單一核心 (Monolithic) 而非微核心 (Micro kernel) 的架構。而很多的部份 (諸如記憶體管理),讓後來的駭客們花了很多精神將它調整成跨平台的架構,否則 Linux 沒辦法走出 i386 濁水溪。
- 下列是 Linux 最初版本的一些特色。
- 使用 gcc v1.40 開發編譯。
- 完全使用 i386 晶片的硬體性能 (比 Linus 當初用的 Minix 的 8086 版強)。
- 為節省處理訊息佇列等相關問題,不採用訊息通行 (message passing),較類似傳統的 Unix。
- 多執行緒檔案系統。
- 最小的作業切換 (task switching)。
- 中斷不隱藏。
- 核心、檔案系統與記憶體管理均使用相同的堆積處理程式。
- 使用 i386 提供的分頁與節區功能來管理記憶體,只用了 memory.c 及 page.s 二支程式來做記憶體管理。
- 提供了 fork、exit、getpid 等等核心功能,並已有例外處理及陷井 (traps) 能力。
- 使用 Minix 1.5.10 檔案系統。
- 已可執行 bash 及 update 二套程式。
- 這套作業系統 Linus 原先屬意的名字為 Freax。但 Ari Lemke 將原始程式放在 nic.funet.fi 站上時,卻以 Linux 當目錄名稱,而定名並沿用至今。
發信人: [email protected] (Linus Benedict Torvalds)
討論區: comp.os.minix
主 題: What would you like to see most in minix?
摘 要: small poll for my new operating system
訊息流水號: <[email protected]>
日 期: 25 Aug 91 20:57:08 GMT
組 織: 赫爾辛基大學嗨 minix 的用戶大家好 -
我在開發一個 (自由) 386(486) AT 相容的作業系統 (只是興趣,非為了像 gnu 偉大跟專業)。 從四月開始醞釀,現在已準備好開始了。 我希望喜歡或不喜歡 minix 的人能有任何回應,因我的作業系統有點像它 (一些檔案系統實體層 (為了實踐的原因) 跟其它東西間)。
我正在移植 bash(1.08) 與 gcc(1.40),這些看起來可運作。 這意謂我將在幾個月內將實踐,所以我想知道大多數的人需要什麼功能。 任何的建議都歡迎,但我不保證全部都會實作 :-)
Linus ([email protected])補充: 是的,它不包含任何 minix 程式碼,且它是多執行緒的檔案系統。 它是不可移植的 (用 386 作業切換等),且它可能永不支援 AT 硬碟外的設備, 即我現有的設備 :-(.
- 1991.10.05 v0.02 (原始程式已佚)
發信人: [email protected] (Linus Benedict Torvalds)
討論區: comp.os.minix
主 題: Free minix-like kernel sources for 386-AT
訊息流水號: <[email protected]>
日 期: 5 Oct 91 05:41:06 GMT
組 織: 赫爾辛基大學你曾渴望 minix-1.1 的美好日子,當人們可寫他們自己的驅動程式嗎? 沒有一個好的專案讓你可以依你需要修改並獲取作業系統經驗嗎? 當全部都要 minix 來跑時讓你沮喪嗎? 不再整夜寫一支漂亮的程式嗎? 那這篇可能是你要的 :-)
話說數月前,我開發一個自由的版本,看起來像 minix 在 AT-386 電腦執行。 它終於到一個階段,已經可以使用了 (雖然可能沒您想要的),我會將原始碼散佈。 這只是 0.02 版 (+1 (非常小的) 已經修補),但我有讓 bash/gcc/gnu-make/gnu-sed/compress 等成功跑在上面。 這個我的玩具專案己經在 nic.funet.fi (128.214.6.100) 的 /pub/OS/Linux 目錄中。該目錄並包括一些 README 檔及一些可以在 linux 下跑的二進位檔 (bash, update 與 gcc, 和一些你要的 :-) 全部的核心原始碼,無使用任何 minix 程式。 函式庫 (Library) 原始程式僅部份是自由免費的,所以現在不能散佈。 系統是可以編譯並也是可以運作。嘿嘿。 原始碼至二進位程式 (bash 及 gcc) 可以在 /pub/gnu 一些地方看到。
留神! 警告! 注意! 這些原始程式仍需要 minix-386 編譯 (用 gcc-1.40,或許 1.37.1 可以,但未測),若要執行,您需要 minix 設好它。 我的已經可以運作。您可能需要是專家來設定 (?),若是能取代 minix-386, 請忽略我。它現在需要對作業系統與 386 存取 minix 的專家。 系統需要 AT 相容硬碟 (IDE 尤佳) 與 EGA/VGA。 若您仍感興趣,請 ftp 下載 README/RELNOTES,或者將額外的訊息伊給我。
我 (幾乎) 可以聽到您自問 "為何?"。 Hurd 公佈了一年 (或二年,還是數月,誰知道),而我已取得 minix。 這是由 hacker 給 hacker 們的程式。 我喜愛這麼做,某人可能也喜歡看它抑或依他們的需求修改。 它仍小到很容易理解、使用與修正,我亦盼你們給我任何的意見。 我也有興趣收到任何人寫來的 minix 公用程式/函式庫。 若您的儘力是自由散佈 (在合法或免費),我也希望能聽到, 那麼我能將它加入系統。 我現在使用 Earl Chews estdio (感謝 Earl 好又有效的系統), 類似的工作也很歡迎。 您的版權當然原封不動。 若您樂意讓我使用您的程式碼。
Linus
附: 給 PHIL NELSON! 我不能直接找到你, 仍為 "forward error - strawberry unknown domain" 諸如此類。
- 1992.01.16 v0.12
- 1992.03.08 v0.95
-
- 支援 X 視窗環境。
- 1993.07.18 v0.99.11
-
- 開始使用 BogoMips 在開機時計算系統 busy-loop。
- 1994.03.02 v0.99.15j
- 1994.03.14 v1.0 (176,250 行; 1,016,601 位元組)
- 1994.04.03 v1.0.6
- 1994.04.17 v1.0.9
- 1994.04.06 v1.1.0
- 1994.08.06 v1.1.52
- 1995.03.02 v1.1.95
- 1995.03.07 v1.2 (310,950 行; 1,850,182 位元組)
-
- 擴充設備驅動程式,開始移植至其它硬體平台。包括:Alpha, Sparc 與 Mips。
- 1995.06.12 v1.3
- 1996.05.10 v1.3.100
- 1996.06.09 v2.0 (777,956 行; 4,718,270 位元組)
-
- 穩定的多硬體平台架構:x86、Alpha 及其它。
- 防火牆、IP 偽裝。
- 多 CPU 初始化。
- 重新開發的跨平台架構核心。
- 1996.09.30 v2.1
- 1999.01.26 v2.2 (1,800,847 行; 10,592,549 位元組)
-
- 對 Intel 類的 CPU 更好的支援:包括 AMD、Cyrix、Celeron、PII 等等。
- 多 CPU 支援的修正。
- 支援本地終端機 Frame buffer。
- 檔案系統:支援多樣系統,包括微軟檔案系統、Solaris、BSD 等等。
- 更多的磁碟機陣列支援。
- 新的防火牆程式:ipchains。
- 增強的網路程式:IPv6 亦支援等等。
- 1999.05.11 v2.3
- 2001.01.04 v2.4 (3,377,902 行)
-
- CPU 支援:惠普 PA-RISC 處理器、艾克迅通訊的 ETRAX CRIS ("Code Reduced Instruction Set") 處理器。
- 加入 ISA 隨插即用。
- 加入 USB 與 PC 卡支援。
- 加入藍芽支援。(2.4.6 及以後版本)
- 檔案系統方面:加入邏輯磁區管理 (Logical Volume Manager, LVM) 第一版、磁碟機陣列等功能。
- 2001.11.23 v2.5
- 2003.12.17 v2.6 (5,929,913 行)
-
- CPU 支援:日立 H8/300 系列、NEC v850、摩托羅拉 m68k 處理器、支援非統一記憶體存取 (Non-Uniform Memory Access, NUMA)、支援安迅資訊的 Voyager 架構、支援英特爾超緒處理 (hyperthreading) 與實體位址延伸 (Physical Address Extension, PAE)。
- 整入 uClinux 微處理器。
- 整入 ALSA 音效驅動程式。
- 作業系統支援:
- 進階可程式化中斷控制器 (Advanced Programmable Interrupt Controllers, APIC)。
- 使用者與使用群組上限由六萬五處增至四十億。
- 行程處理代碼從三萬二千增至十億。
- 設備主代碼由 255 增至 4095,副代碼由 255 增至百萬。
- 改進 64 位元支援,檔案系統增至 16TB。
- 改進 overall responsiveness 互動處理,核心徹底變成可搶占 (pre-emptible) 及可重寫的 I/O 排程。
- 支援快速使用者空間互斥 (fast userspace mutex, futex),允許原生 POSIX 執行緒函式庫 (Native POSIX Thread Library, NPTL) 使用可重寫執行緒架構。
- 改進的模組載入器。
- Linux 使用者模式整合。
- 支援無限寬頻架構 (InfiniBand)。(2.6.11 與之後版本)
- 儲存裝置支援:
- 邏輯磁區管理 (LVM) 第二版。
- 支援 SGI 的 XFS 檔案系統。
- 新的 "系統檔案系統" (sysfs),降低 procfs 的系統相關資訊。
- 網際網路小型電腦系統介面 (iSCSI) 支援。(2.6.12 與之後版本)
- 檔案系統事件通告 (inotify) 支援。(2.6.13 與之後版本)
- 核心使用者空間檔案系統 (FUSE)支援。(2.6.14 與之後版本)
參考資料:
- Linux History
- Linus Torvalds announces Linux
- The Linux kernel by Andries Brouwer
- Linux kernel - Wikipedia, the free encyclopedia.
- Linux Kernel Version History: Consolidated list