![]()
計算機歷史博物館軟件策展人Al Kossow成功恢復了上個月在猶他大學發現的超過半世紀之久的磁帶內容。
UNIX V4是第一個內核用當時全新的C編程語言編寫的UNIX操作系統版本,已經從1970年代的九軌磁帶驅動器中成功恢復。你可以從互聯網檔案館下載它,并在SimH中運行。在Mastodon上,"Flexion"發布了它在SGI IRIX下運行的截圖。
上個月,我們報道了猶他大學卡勒特計算學院Robert Ricci教授發現的一卷遺失的早期Unix版本磁帶的重大發現。當時,我們引用了聲名卓著的Kossow(他也運營著Bitsavers)的話,他說這卷磁帶"恢復的可能性相當大"。事實證明他是對的,在上周末,他成功完成了恢復工作。Ricci也在Mastodon上分享了一段視頻片段。
這里有一個恢復過程的視頻。雖然只有五分鐘多一點,但那時UNIX V4還很小:例如,內核大約只有27KB的代碼。
數據是使用計算機歷史博物館Len Shustek編寫的readtape程序恢復的。由于我們微機世界的大多數人很少接觸磁帶,用于歸檔舊軟盤的Greaseweazle工具可能是一個更熟悉的對比:readtape和Greaseweazle不是試圖從介質中復制字節或扇區(換句話說,是處理過的數字數據),而是采樣和記錄原始磁通量變化。然后可以使用這些數據重建數字數據,使一些錯誤恢復成為可能。在這種情況下,只有兩個塊無法正確讀取,但有足夠的信息來重建它們的內容。
因此,在互聯網檔案館的恢復文件中,你可以看到從一卷只能容納大約40MB數據的磁帶中創建了一個1.6GB的文件。你可能不想下載那個文件。
幸運的是,Angelo Papenhoff提供了一個處理過的版本,完整包含了告訴你如何運行它的README文件。為了進一步指導,在Reddit上,drop_table_allusers建議:
在你下載所有Unix v4文件的目錄中,啟動SimH pdp-11可執行文件,并將Unix v4文件中找到的boot.ini作為參數傳遞。然后按"k",輸入"unix",按回車鍵即可啟動...
它非常小:包含大約55,000行代碼,其中約25,000行是C語言,注釋不到1,000行。但是,已故的Dennis M. Ritchie和共同創造者Ken Thompson絕對是真正的程序員,正如古老智慧所記錄的:
真正的程序員不需要注釋——代碼是顯而易見的。
Thompson仍然很活躍,最近與計算機歷史博物館進行了第二次口述歷史訪談,題目恰當地稱為"一位計算傳奇人物的發言"。
我們在網上看到了很多對此及其所代表意義的誤解,所以我們將嘗試將其置于某種背景下。
Unix的第一個版本,后來被稱為"第零版",是Thompson在1969年用匯編語言手工編碼的。他為貝爾實驗室的一臺備用PDP-7編寫了它,這是數字設備公司1965年的一臺小型機。PDP-7是一臺18位機器:它以18位字為單位處理內存。這是很久以前的事了,像八位字節這樣的東西還沒有標準化。PDP-7 UNIX在2016年到2019年期間從打印輸出重建。
它運行得很好,幾年后,Thompson拿到了一臺PDP-11。Thompson為這臺16位機器重寫了他的操作系統——仍然使用匯編語言——創建了UNIX第一版。起初,這臺機器只有一個RS11硬盤,總共只有半兆字節的存儲空間,雖然重建的源代碼來自后來有第二個硬盤的機器。
隨后在同年晚些時候推出了UNIX v2,仍然運行在PDP-11/20上。正如我們今年早些時候報道的,類似UNIX V2測試版的東西最近被重建了。
1972年推出了UNIX V3,引入了管道這一新功能。這是第一個使用當時全新的C編程語言編寫的版本。
現在,長期丟失的UNIX V4被發現,其文件得以恢復。這是第一個內核大部分用C語言重寫的版本。UNIX V4只能在更高端的PDP-11型號PDP-11/45上運行。
如今,人們對UNIX早期階段的性質和演進了解不夠。例如,有些事情的發生只是因為Ken和Dennis在非常有限的硬件上工作。有一次,他們只有一個DEC RK05硬盤,容量為巨大的1.5MB。當他們獲得第二個硬盤驅動器時,他們將所有主目錄移到了那里。這些保存在/usr中——它是"users"的縮寫,包含了ken和dmr的主目錄,這意味著它也包含了大部分二進制文件——構成操作系統本身的實際程序。這給他們帶來了一個問題:當掛載命令本身就在那個磁盤上時,你怎么掛載第二個硬盤?解決方案:在第一個硬盤上建立一個特殊的/sbin目錄,其中包含訪問任何額外硬盤等所需的工具。
Rob Landley在15年前在Busybox郵件列表上寫了一個關于分割歷史的出色解釋:理解bin、sbin、usr/bin、usr/sbin分割。Landley很了解情況:他是Toybox的作者,這是Bruce Perens的BusyBox多命令二進制文件的替代品——在Alpine Linux中使用。
今天,Unix傳說的一部分是根目錄中的二進制文件(/bin、/sbin、/lib等)和/usr樹下保存的二進制文件(/usr/bin、/usr/sbin、/usr/lib等)之間存在重要的功能區別。試圖調解這種分割的過程被稱為usr合并,有趣的是,最新的Alpine Linux 3.23還沒有完成它,盡管原計劃要完成。
UNIX最初只是兩個天才在業余時間的快速開發,這樣他們就可以使用一臺備用計算機——在1960年代極其稀有的東西——來玩其中一人編寫的視頻游戲:SPACEWAR,這是Computer Space的一個版本,第一個商業電子游戲。
他們日常工作中的項目MULTICS操作系統因龐大和過于復雜而不公平地出名。事實上,它被使用了很多年,前用戶都很懷念它。
這兩個天才Ken和Dennis編寫了一些小而簡單的東西,與此保持一致,他們使用了小而神秘的縮寫和非常短的文件和目錄名。他們的同事,偉大的Brian Kernighan——"K&R C"和"AWK"中的"K"——甚至開玩笑地建議將名稱改為UNICS。
問題是這個小小的實驗性操作系統逃出了實驗室。第6版流傳出去,成為著名的Lions書的基礎,這是史上最著名代碼注釋的來源:
如果新進程因為被換出而暫停,將堆棧級別設置為savu(u_ssav)的最后一次調用。這意味著在調用aretu之后立即執行的返回實際上是從執行savu的最后一個例程返回的。你不應該理解這個。
(如果你好奇的話,它在帶注釋源代碼的第2238行。注釋本身啟發了一本書。)
Unix V7是真正造成損害的版本:它像病毒一樣傳播,其后代、分支和重寫被工業界和學術界廣泛采用。
現在,它已經發展成為一個臃腫的混亂,比激發它的操作系統大了數百萬倍。那些在神秘文件夾中開玩笑的神秘文件名現在被奉為神圣的經文,維護系統的人們已經忘記了它們的起源。
與此同時,原始開發者繼續努力工作,改進、重構和簡化設計,一直到第十版——然后,它被徹底重寫,成為網絡感知的貝爾實驗室Plan 9。今天,這項工作作為9front繼續進行,我們已經寫過它,包括它在歷史中的地位。
不過,現在一個關鍵的早期進化步驟已經被發現、成像并且可以工作。這幾乎就像是圣誕奇跡一樣!
Q&A
Q1:UNIX V4有什么特別之處?
A:UNIX V4是第一個內核用C編程語言編寫的UNIX操作系統版本,標志著UNIX從純匯編語言向高級編程語言的重要轉變。它只能在PDP-11/45這種更高端的機器上運行,內核大約只有27KB代碼,整個系統包含約55,000行代碼。
Q2:這個UNIX V4磁帶是如何被恢復的?
A:計算機歷史博物館的專家使用readtape程序恢復數據,該程序不是復制處理過的數字數據,而是采樣和記錄原始磁通量變化,然后重建數字數據。雖然有兩個數據塊無法正確讀取,但專家有足夠信息重建了它們的內容。
Q3:為什么早期UNIX系統的目錄結構看起來很奇怪?
A:這是因為硬件限制造成的。Ken Thompson和Dennis Ritchie在極其有限的硬件上工作,最初只有1.5MB的硬盤空間。當他們獲得第二個硬盤時,將用戶目錄移到/usr下,但這創造了掛載問題,所以需要/sbin目錄來存儲基本工具。這種分割一直延續至今。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.