Linux核心往事

OSCHINA
↑點選藍字 關注我們
我叫 Lars Wirzenius,見證了 Linux 的起步。Linux 如今在全球取得了巨大成功,但它誕生之初卻非常不起眼。
以下是我對 Linux 最早期的記憶,關於它如何被建立 —— 這也是 Linux 達成如今地位的起點。

我在 1988 年秋季開始了在赫爾辛基大學計算機科學專業的學習,那年我還遇到了 Linus Torvalds,他是那年計算機科學系另一位說瑞典語的新生。在那年的尾聲,我們獲得了訪問 Unix 伺服器的許可權,我因為誤將rm輸入為rn(Usenet 閱讀器的縮寫)而意外發現了 Usenet 這個討論系統。
我把這件事告訴了 Linus,然後我們花了很多時間來探索這個系統。
一年後,我們都去參加了義務兵役,但在不同的地方。我們在 1990 年秋天回到了大學繼續學業,並都選擇了 C 和 Unix 程式設計課程,這門課程還包括相當一部分 Unix 核心架構的理論。這促使我們閱讀了其他作業系統的核心,比如 QNX 和 Plan 9。我和 Linus 熱情地討論了作業系統應該如何正確構建。我們有著 20 歲大二學生的那種過度自信,所幸這件事沒有被記錄下來流傳後世。
1991 年 1 月,Linus 在當地一家組裝電腦零件的商店購買了他的第一臺個人電腦。這臺電腦配備了一款 386 CPU,在當時算是相當高階的,因為 Linus 想探索多工處理。
此外,由於他從一臺配備 32 位 Motorola 68008 CPU 的辛克萊爾 QL電腦遷移過來,他想要一個 32 位的 CPU,不想降級到 16 位,因此 286 並不是一個選擇。Linus 的第一臺個人電腦擁有驚人的 4 兆位元組 RAM 和一個硬碟。
他獲得了一份《波斯王子》遊戲的副本,這佔據了接下來幾個月他大部分的空閒時間。後來,他還購買了一份MINIX,因為在大學使用過 Unix 後,他想在家裡也擁有類似的東西。

字母 A 和字母 B

完成遊戲後,Linus 開始學習英特爾組合語言。有一天,他向我展示了一個多工處理的程式。一個任務或執行緒會在螢幕上寫入字母 "A" 的流,另一個寫入 "B";當 "A" 的流變為 "B" 的流時,上下文切換在視覺上非常明顯。這就是後來被稱為 Linux 核心的第一個版本。
後來,Linus 擴充套件了這個程式,並用 C 語言編寫了大部分。在 1991 年晚春的這個時期,我為 Linus 編寫了一個 C 語言的sprintf()函式的實現,因為他還沒有學會如何編寫帶有可變引數列表的函式。我想讓他免受為每種要寫入的值編寫不同函式的痛苦。這段程式碼的核心仍然在核心中,作為 snprintf ()。
隨著時間的推移,Linus 不斷改進他那初出茅廬的核心,並持續實現新功能。不久之後,他編寫了鍵盤和序列埠的驅動程式,螢幕上實現了對VT100終端轉義序列的模擬,並且可以使用它透過調變解調器從家中撥打電話到大學,以讀取 Usenet。這簡直就是科幻小說中的情節!
有一天,Linus 不小心嘗試使用他的硬碟來撥打電話到大學,結果導致他的主引導扇區以"ATDT"和大學調變解調器電話號碼開始。從這次事故中恢復過來後,他在核心中實現了檔案許可權功能。
1991 年 8 月,Linus 在 首次公開提及他的新核心 的地方,即在 comp.os.minix 新聞組中,提到了這句話:“我正在做一個(免費)作業系統(僅作為愛好,不會像 GNU 那樣龐大和專業)”,如此謙遜。
該系統最初被稱為 Freax。幾周後,Linus 請求 ftp.funet.fi 管理員之一 Ari Lemmke 上傳第一個 tar 存檔。Ari 選擇了 Linux 這個名字。最初的版本仍然在其中一個原始檔中保留了原始名稱。
在這段時間裡,人們對嘗試這個新事物很感興趣,因此 Linus 需要提供一種安裝方法和說明。由於他只有一臺個人電腦,所以他來到我家安裝。由於他的電腦一直被用來開發 Linux,而這只是在他 Minix 安裝的基礎上簡單擴充套件的,所以它實際上從未真正安裝過。
因此,我的電腦是 Linux 第一次安裝的 PC。當這一切發生的時候,我正在睡覺,我推薦這種安裝 Linux 的方法:睡覺,而 Linus 做艱苦的工作。
Linux 的第一個版本使用了一種禁止商業使用的許可證。一些早期的貢獻者建議改為使用免費軟體許可證。
1991 年秋天,RMS 訪問了芬蘭,我帶 Linus 去聽了 RMS 的演講。這次演講,貢獻者的壓力以及我的糾纏最終說服了 Linus 在 1992 年初選擇 GNU GPL 許可證。
聖誕節假期期間,Linus 在 Linux 中實現了虛擬記憶體。這使得 Linux 成為在記憶體有限的廉價機器上更加實用的作業系統。

1992 年

1992 年伊始,發生了一場著名的與 Andrew Tanenbaum 的辯論,Andrew Tanenbaum 是一位大學教授,也是 MINIX 的作者。他對 Linux 及其架構持有一些看法。Linus 也對 MINIX 有自己的觀點。這場辯論被描述為一場激烈的爭吵,但從後來看,實際上相當文明。
對 Linux 未來成功更為重要的是,X11 系統被移植到了 Linux 上,使得 1992 年成為了 Linux 桌面的元年。
我選擇在社群方面貢獻力量,而不是直接參與核心開發,幫助回答問題、編寫文件等。我還創辦了一份關於 Linux 的簡短新聞通訊,其中最有趣的是發表了第一次採訪 Linus 的文章。這份新聞通訊後來被 comp.os.linux.announce 新聞組所取代。
第一個 Linux 發行版也是在 1992 年開始的:Softlanding Linux System或 SLS。第二年,SLS 演變成了 Slackware,這激發了 Ian Murdock 在 1993 年創辦 Debian,旨在探索更基於社群的開發結構。在接下來的幾年裡,還會出現其他一些發行版。
1993 年,我和 Linus 都被大學聘為教學助理。我們得以共用一間辦公室。那個房間裡有一臺 PC,Linus 接管了它,用於 Linux 開發。我則對 DEC 終端用於訪問 Usenet 感到滿意。
有一天,Linus 感到無聊,工作中的電腦執行得有點慢。他花了一整天的時間用匯編語言重寫了 Linux 核心的命令列解析器,為了提高速度。(當然,這完全是徒勞的,解析器後來又用 C 語言重新編寫,以便於移植。其速度並不重要。)
幾年後,他花了好幾天的時間玩《Quake》,表面上是為了測試核心記憶體管理,儘管那時用的是一臺更新的電腦。那個房間裡玩得很開心,而且沒有任何惡作劇。完全沒有。
在某一點上,Linux 獲得了對乙太網和 TCP/IP 的支援。這意味著人們可以不用調變解調器就能閱讀 Usenet。然而,早期的 Linux 網路程式碼有時有點粗糙,因為它們是從零開始編寫的。
有一次,Linux 傳送了一些損壞的包,導致網路上的所有 Sun 機器都崩潰了。由於修復 Sun 核心很困難,Linux 被禁止在大學網路中使用,直到其錯誤被修復。無法從自己的辦公桌訪問 Usenet 是一個極大的動力。

1.0

在 1994 年的春天,我們覺得 Linux 已經完成了,結束了,沒有更多可以新增的了。人們可以用 Linux 來編譯它自己,閱讀 Usenet,同時執行許多個 xeyes 程式。
我們決定釋出 1.0 版本,並安排了一場釋出活動,邀請了芬蘭的計算機媒體,甚至有一個電視臺派出了攝製組。大部分活動都是儀式性地在後臺編譯 Linux 1.0,同時 Linus 和其他人談論 Linux 是什麼,以及它的優點。Linus 解釋說,PC 上的商業 Unix 系統如此昂貴,以至於自己編寫一個更簡單。
在 1995 年,我和 Linus 在大學裡上了一個軟體工程課程,這個課程主要由一個大型實踐專案組成。當然,這個專案是基於 Linux 構建的。我堅持要使用版本控制系統。我曾目睹在早期課程中的學生進行一種嘈雜的版本控制:學生們透過 NFS 共享原始碼樹,在修改檔案時會大聲喊 “我在編輯這個檔案”。
在我看來,這並不是一個有效的辦法,所以我堅持使用 CVS,這是我剛剛瞭解到的。但正是這次經歷讓 Linus 不喜歡 CVS,並且多年來拒絕使用任何超出上傳 tar 包到 FTP 站點的版本控制工具。
那年也是 Linux 首次被 Linus 移植到新架構的時候。他得到了一臺 DEC Alpha 機器。我後來用這臺機器作為終端來閱讀 Usenet。其他人也將 Linux 移植到其他架構,但這並沒有讓我得到更多機器來閱讀 Usenet。
在 1997 年,Linus 畢業後搬到了美國,在 Transmeta 公司找到了一份工作。我在赫爾辛基地區的一家不同大學找到了一份工作。
在接下來的幾年裡,發生了許多事情。結果是 Linux 仍然缺少一些功能,所以人們開始著手解決這些問題。“開源” 這個術語被創造出來,IBM 在 Linux 開發上投入了大量資金。Netscape 釋出了一個開源的網頁瀏覽器版本。
跳過一些細節,許多年後,開源基本上統治了世界。LWN 開始運營,並每週報道了這些歷史事件。
在 1991 年,Linus 寫道,Linux “不會像 GNU 那樣變得龐大和專業”。到了 2023 年,Linux 執行在每一個大洲,每一個海洋,數十億臺裝置上,在軌道上,甚至在火星上。
這對於最初只是兩個討論帖,在螢幕上寫下一串 A 和 B 的專案來說,已經相當不錯了。
本文翻譯自:《The early days of Linux》
https://lwn.net/Articles/928581/
END
熱門文章
分享在看點贊~Orz

相關文章