1991-Linux:一封新聞群組信件引發的作業系統革命#
案件摘要#
1991 年 8 月 25 日,芬蘭赫爾辛基大學 21 歲學生 Linus Torvalds 在 Usenet 上寫道:「我正在做一個(免費)作業系統,只是興趣,不會像 GNU 那樣大又專業。」這封謙遜的信,開啟了人類史上最大規模的協作軟體工程。
前因 -- 為什麼會有這個案子#
- Unix 的授權困境:Unix 原本在 AT&T 貝爾實驗室誕生,但因 1956 年反壟斷協定不能賣軟體,原始碼反而流向大學(1975 年起)。1980 年代 AT&T 商業化 Unix(System V),授權費昂貴,校園用不起。
- Minix 的啟蒙:1987 年荷蘭教授 Andrew Tanenbaum 為教學寫出 Minix——可在 PC 上執行的類 Unix 系統,附完整原始碼,僅 69 美元。Linus 買了一台 386 PC 跑 Minix,發現它缺乏終端模擬功能,於是動手自己寫。
- GNU 計畫的缺口:1983 年 Richard Stallman 發起 GNU(GNU's Not Unix),目標打造完全自由的 Unix 替代品,並創作 GPL 授權。到 1991 年,GNU 的編譯器(GCC)、編輯器(Emacs)、shell、工具鏈齊備——只缺一個可用的核心(GNU 自己的 Hurd 核心難產)。
- 前人的失敗:1989 年 William & Lynne Jolitz 的 386BSD 尚未成熟;坊間沒有免費又完整的 PC Unix。歷史等一個填補缺口的人。
線索與推理 -- 數學式、程式、理論#
那封信(1991.8.25, comp.os.minix)#
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...
當時 Linus 已在 7 月發布 Linux 0.01(約 10,259 行 C 與組合語言)。核心的第一行程式碼(boot/bootsect.S 附近)就是從 BIOS 接手控制權:
! bootsect.S 概念:把核心載入記憶體
mov ax,#0x9000 ! 載入位址
mov es,ax
mov cx,#256 ! 256 words
核心(kernel)與 Shell 的分工#
作業系統的核心負責行程、記憶體、檔案系統、裝置;shell 是包在外面的命令解譯器。經典的 fork-exec 模型:
/* 核心行程建立(概念,參照 kernel/fork.c) */
pid_t pid = fork(); // 複製自己,兩個行程從此並行
if (pid == 0) {
execve("/bin/ls", argv, envp); // 子行程換成 ls 的程式碼
} else {
wait(NULL); // 父行程等待
}
Linux 0.01 的核心排程器極簡——round-robin 加優先權:
# 簡化版 round-robin 排程(模擬 Linux 0.01 的概念)
def schedule(tasks):
# tasks: [(name, counter, priority)]
tasks.sort(key=lambda t: -t[1]) # counter 最大者先跑
current = tasks[0]
current = (current[0], current[1] // 2, current[2]) # 時間片減半
for i, t in enumerate(tasks[1:], 1): # 其餘補回 counter
tasks[i] = (t[0], t[1] + t[2], t[2])
return tasks
tasks = [("init", 15, 15), ("shell", 5, 5), ("gcc", 10, 10)]
print(schedule(tasks)) # gcc 先被排程,counter 遞補機制運作
GPL 與開源開發模式#
- GPL(1989, GPL v1;1991, v2):Copyleft 授權——可以自由使用、修改、散布,但衍生作品必須同樣以 GPL 釋出。數學化表達:GPL 對軟體定義了一個「閉包」運算
\[ GPL(S) = \{ \text{所有 } S \text{ 的衍生作品} \} \subseteq GPL\text{-授權軟體集} \]
- Linux + GNU 的合流:Linus 決定以 GPL 釋出 Linux 核心,GNU 的工具鏈填補了使用者空間。1992 年 Tanenbaum 與 Torvalds 著名的「Monolithic vs microkernel」筆戰中,Tanenbaum 批評 Linux 是「過時設計」——歷史卻證明單體核心(monolithic kernel)+ GPL 的組合贏了效能與生態。
- Bazaar vs Cathedral:1997 年 Eric Raymond 發表〈The Cathedral and the Bazaar〉,指出 Linux 的開發模式(人人可改、快速釋出、群體除錯)優於傳統封閉團隊。其背後是 Linus' Law:
\[ \text{「給予足夠多的眼睛,所有臭蟲都淺顯易見」} \implies E[\text{bug 發現率}] \propto N_{\text{開發者}} \]
分散式協作的除錯能力隨人數近線性增長——這是開源模式的數學優勢。
結案 -- 後果與影響#
- 伺服器霸主:超過 70% 的網頁伺服器執行 Linux;全球雲端基礎設施幾乎以 Linux 為底。
- Android 之父:Android 核心即 Linux kernel,讓 Linux 成為使用者數最多的作業系統(數十億台手機)。
- 超級電腦:TOP500 榜單 100% 的超級電腦執行 Linux。
- 商業模式革命:Red Hat、SUSE 證明「賣服務不賣軟體」可行;IBM、微軟相繼擁抱 Linux。
- 2000 年代「大教堂倒下、市集接管」,開源成為軟體業的預設模式——從 Python、Git 到 AI 框架,皆是市集的子孫。
關鍵人物與文獻#
- Linus Torvalds:comp.os.minix 宣告(1991.8.25)、Just for Fun(自傳,2001)
- Richard Stallman:GNU 宣言(1983)、GPL 授權(1989)
- Andrew Tanenbaum:Minix(1987)、Tanenbaum–Torvalds 筆戰(1992)
- Eric Raymond:〈The Cathedral and the Bazaar〉(1997)
- Ken Thompson & Dennis Ritchie:Unix 原創者——Linux 的精神祖師