↑點選藍字 關注我們
我叫 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 年

我選擇在社群方面貢獻力量,而不是直接參與核心開發,幫助回答問題、編寫文件等。我還創辦了一份關於 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 系統如此昂貴,以至於自己編寫一個更簡單。

在我看來,這並不是一個有效的辦法,所以我堅持使用 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