最近開始系統的學習計算機網絡,買了被奉為經典中的經典《TCP/IP詳解
卷2:實作》。不過這本書确實也有點過時了,講解的是4.4BSD-Lite的代碼,和目前BSD釋出版的代碼已經有很大差異了。根據在網絡上搜尋的結果,FreeBSD-2.0、NetBSD-1.0和BSD/OS
2.0都是基于4.4BSD-Lite的,但是BSD/OS在當時是商業版,現在也沒有找到這個版本的源代碼。FreeBSD的i386架構的源碼,最接近的隻有2.0.5版本的,2.0的不知道是沒有,還是已經丢失了。比較了FreeBSD-2.0.5、NetBSD-1.0的代碼和4.4BSD-Lite代碼的差異,FreeBSD的已經差異很大,NetBSD的則幾乎沒有差異!是以最後決定安裝NetBSD-1.0版本的系統。安裝的目的當然是為了能對系統的代碼進行修改并測試,隻是看代碼而不能修改多沒意思啊^_^.
折騰了好幾天,最後終于是安裝成功并且核心的重編和更新也沒有問題了。簡單記錄下經過千辛萬苦得出來的步驟:
1.最開始直接用1.0版本的kcaha-10.fs/kcbt-10.fs進行安裝,但是這兩個安裝映像死活找不到核心檔案netbsd,檢視過1.0的核心代碼,估計問題是出在打開軟碟和讀寫軟碟的部分,不過核心代碼沒法編譯,在1.3版本的系統裡編譯也沒通過,最後隻能無奈放棄這個安裝方式了。
2.開始的時候1.0版本的沒法安裝成功,是以就下載下傳了往後的版本,最後确定1.3版本是最接近可以正确啟動安裝程式的版本。但是比對1.3版本的代碼和1.0的代碼後,發現1.3版本的網絡代碼部分也已經改動了不少了,對檢視源代碼不是很友善。嘗試過在1.3版本的系統下直接将核心檔案netbsd換成1.0版本的,不過最後系統沒法正常啟動。在1.3版本的系統下編譯1.0版本的核心代碼,也不是很順利。不過對1.3版本的安裝過程中,發現安裝程式隻是将編譯好的應用和核心檔案直接解壓到硬碟上,然後做一些配置工作,之後就可以重新開機并從硬碟引導安裝好的系統了。是以想到使用1.3版本的安裝程式,将1.0版本的系統解壓到硬碟上,應該可以将1.0版本的系統安裝成功。首次嘗試這個方法的時候,重新開機之後從硬碟引導1.0版本的系統時,root檔案系統居然變成隻讀的,其他檔案系統/usr、/var和/home都沒有mount成功。當時以為這個方法行不通,接着嘗試了其他的方式,也都沒有成功,最後又回到了這個方式上來,不過糊裡糊塗的解決了檔案系統挂載的問題後,一下子所有問題都迎刃而解了。
3.首先建立一個虛拟機,需要帶有軟碟和CD光牒,軟碟用于存放安裝程式,CD光牒存放編譯好的應用和核心。當然,硬碟是必須要有的...

系統類型選擇“Other”:
軟碟使用的鏡像檔案就是NetBSD-1.3的啟動鏡像檔案boot.fs:
CD光牒鏡像檔案包含的檔案清單如下:
除了kern.tgz外,其他的每個檔案都對應NetBSD-1.0/i386/binary下的一個目錄,檔案生成方式如下(以base.tgz檔案為例,其他檔案類似):
kern.tgz檔案是從NetBSD-1.0的啟動鏡像檔案kcaha-10.fs(kcbt-10.fs應該也可以,不過我沒試過這個檔案)裡把netbsd檔案抽取出來打包壓縮生成的:
8個tgz檔案都建立好之後,放在同一個目錄下生成iso鏡像檔案:
打包壓縮成tgz檔案格式,是為了符合NetBSD-1.3版本的安裝檔案格式要求。
4.啟動虛拟機,開始安裝過程:
自定義硬碟的分區方式,
根分區使用2G空間,交換分區使用64M,為記憶體的兩倍,
根據硬碟的容量進行分區安排就可以了,
回車之後就真正格式化硬碟了,
按回車後即進入軟體包安轉界面,選者cdrom安裝方式,
按Ctrl-Z退出安裝程序,檢視目前已挂載的裝置,将CD光牒挂載到系統上(不挂載的話會一直找不到檔案):
進入挂載的目錄之後再使用fg指令回到安裝程序,這裡如果不cd進入CD光牒的挂載目錄的話,好像會有問題,懶得去确認了,哈哈:
忽略報錯資訊,繼續:
檔案路徑和之前輸入的不一樣的,要不是強制加上的,要不就是有bug了,修改路徑後繼續:
再次忽略報錯資訊,繼續往下:
回車之後就會将cdrom中的檔案解壓到硬碟上,
輸出資訊有點亂,直接回車:
回到最開始的安裝界面了,這裡可以直接退出了。
把硬碟的分區都挂載到系統上,然後使用chroot指令跳轉到/mnt目錄下:
跳轉成功,進入/etc目錄下用 vi
修改 rc 檔案:
紅色方框内的就是需要修改的地方。按照實際的分區輸入分區挂載的指令,儲存之後退出vi。
先斷開軟碟的連接配接,再reboot重新開機系統:
NetBSD-1.0 登入成功!