在VMware 10.0上安裝NetBSD 1.0

來源:互聯網
上載者:User

標籤:style   blog   class   code   java   c   

       最近開始系統的學習電腦網路,買了被奉為經典中的經典《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.首先建立一個虛擬機器,需要帶有磁碟片和光碟片,磁碟片用於存放安裝程式,光碟片存放編譯好的應用和核心。當然,硬碟是必須要有的...

 

系統類別型選擇“Other”:

  

磁碟片使用的鏡像檔案就是NetBSD-1.3的啟動鏡像檔案boot.fs:

[[email protected] floppies]$ pwd/home/tortoise/Downloads/NetBSD-1.3/i386/installation/floppies[[email protected] floppies]$ bximage========================================================================                                bximage                  Disk Image Creation Tool for Bochs          $Id: bximage.c 11315 2012-08-05 18:13:38Z vruppert $========================================================================Do you want to create a floppy disk image or a hard disk image?Please type hd or fd. [hd] fdChoose the size of floppy disk image to create, in megabytes.Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88. [1.44]         -- 這裡直接斷行符號I will create a floppy image with  cyl=80  heads=2  sectors per track=18  total sectors=2880  total bytes=1474560What should I name the image?[a.img] boot.imgWriting: [] Done.I wrote 1474560 bytes to boot.img.The following line should appear in your bochsrc:  floppya: image="boot.img", status=inserted[[email protected] floppies]$ dd if=boot.fs of=boot.img2880+0 records in2880+0 records out1474560 bytes (1.5 MB) copied, 0.0233093 s, 63.3 MB/s[[email protected] floppies]$ 

 

光碟片鏡像檔案包含的檔案清單如下:

[[email protected] bin]# ls -l /mnt/cdtotal 15550-r-xr-xr-x. 1 root root 6722031 May  7 19:55 base.tgz-r-xr-xr-x. 1 root root 4446591 May  7 19:57 comp.tgz-r-xr-xr-x. 1 root root   51083 May  7 19:56 etc.tgz-r-xr-xr-x. 1 root root 1074976 May  7 19:55 games.tgz-r-xr-xr-x. 1 root root  349556 May  7 19:59 kern.tgz-r-xr-xr-x. 1 root root  761644 May  7 19:56 man.tgz-r-xr-xr-x. 1 root root 1711013 May  7 19:56 misc.tgz-r-xr-xr-x. 1 root root  805086 May  7 19:57 text.tgz[[email protected] bin]# 

除了kern.tgz外,其他的每個檔案都對應NetBSD-1.0/i386/binary下的一個目錄,檔案產生方式如下(以base.tgz檔案為例,其他檔案類似):

[[email protected] base10]$ pwd/home/tortoise/Downloads/NetBSD-1.0/i386/binary/base10[[email protected] base10]$ cat base10.* > base.tgz[[email protected] base10]$ tar -tzvf base.tgz | headdrwxr-xr-x root/wheel        0 1994-10-20 03:27 .drwxr-xr-x root/wheel        0 1994-10-20 03:03 ./altrootdrwxr-xr-x root/wheel        0 1994-10-20 03:10 ./bin-r-xr-xr-x bin/bin       40960 1994-10-20 03:10 ./bin/[-r-xr-xr-x bin/bin       40960 1994-10-20 03:08 ./bin/cat-r-xr-xr-x bin/bin       45056 1994-10-20 03:08 ./bin/chmod-r-xr-xr-x bin/bin       45056 1994-10-20 03:09 ./bin/cp-r-xr-xr-x bin/bin      200704 1994-10-20 03:09 ./bin/csh-r-xr-xr-x bin/bin       57344 1994-10-20 03:09 ./bin/date-r-xr-xr-x bin/bin       45056 1994-10-20 03:09 ./bin/dd[[email protected] base10]$ 

kern.tgz檔案是從NetBSD-1.0的啟動鏡像檔案kcaha-10.fs(kcbt-10.fs應該也可以,不過我沒試過這個檔案)裡把netbsd檔案抽取出來打包壓縮產生的:

[[email protected] floppies]$ pwd/home/tortoise/Downloads/NetBSD-1.0/i386/floppies[[email protected] floppies]$ bximage========================================================================                                bximage                  Disk Image Creation Tool for Bochs          $Id: bximage.c 11315 2012-08-05 18:13:38Z vruppert $========================================================================Do you want to create a floppy disk image or a hard disk image?Please type hd or fd. [hd] fdChoose the size of floppy disk image to create, in megabytes.Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88. [1.44] 1.2I will create a floppy image with  cyl=80  heads=2  sectors per track=15  total sectors=2400  total bytes=1228800What should I name the image?[a.img]  Writing: [] Done.I wrote 1228800 bytes to a.img.The following line should appear in your bochsrc:  floppya: image="a.img", status=inserted[[email protected] floppies]$ dd if=kcaha-10.fs of=a.img2400+0 records in2400+0 records out1228800 bytes (1.2 MB) copied, 0.0181592 s, 67.7 MB/s[[email protected] floppies]$ sudo mount -o loop -r a.img /mnt/floppy[[email protected] floppies]$ ls -l /mnt/floppy/total 659drwxr-xr-x. 2 root root    512 Oct 24  1994 bin-rwxr-xr-x. 1 root root   2005 Oct 24  1994 copy_kerneldrwxr-xr-x. 2 root root   2560 Oct 24  1994 devdrwxr-xr-x. 2 root root    512 Oct 24  1994 mnt-rwxr-xr-x. 1 root root 659600 Oct 24  1994 netbsddrwxr-xr-x. 2 root root    512 Oct 24  1994 sbindrwxr-xr-x. 3 root root    512 Oct 24  1994 usr[[email protected] floppies]$ cp /mnt/floppy/netbsd ./[[email protected] floppies]$ tar -cvf kern.tar ./netbsd./netbsd[[email protected] floppies]$ gzip kern.tar[[email protected] floppies]$ mv kern.tar.gz kern.tgz[[email protected] floppies]$ tar -tzvf kern.tgz-rwxr-xr-x tortoise/tortoise 659600 2014-05-14 23:12 ./netbsd[[email protected] floppies]$ 

8個tgz檔案都建立好之後,放在同一個目錄下產生iso鏡像檔案:

[[email protected] bin]$ ls -ltotal 31468-rw-rw-r--. 1 tortoise tortoise  6722031 May  7 19:55 base.tgz-rw-rw-r--. 1 tortoise tortoise  4446591 May  7 19:57 comp.tgz-rw-rw-r--. 1 tortoise tortoise    51083 May  7 19:56 etc.tgz-rw-rw-r--. 1 tortoise tortoise  1074976 May  7 19:55 games.tgz-rw-rw-r--. 1 tortoise tortoise   349556 May  7 19:59 kern.tgz-rw-rw-r--. 1 tortoise tortoise   761644 May  7 19:56 man.tgz-rw-rw-r--. 1 tortoise tortoise  1711013 May  7 19:56 misc.tgz-rw-rw-r--. 1 tortoise tortoise   805086 May  7 19:57 text.tgz[[email protected] bin]$ mkisofs -o NetBSD-1.0-bin.iso *.tgzI: -input-charset not specified, using utf-8 (detected in locale settings) 62.91% done, estimate finish Wed May 14 23:19:53 2014Total translation table size: 0Total rockridge attributes bytes: 0Total directory bytes: 0Path table size(bytes): 10Max brk space used 07952 extents written (15 MB)[[email protected] bin]$ 

打包壓縮成tgz檔案格式,是為了符合NetBSD-1.3版本的安裝檔案格式要求。

 

4.啟動虛擬機器,開始安裝過程:

 

自訂硬碟的分區方式,

根分區使用2G空間,交換分區使用64M,為記憶體的兩倍,

根據硬碟的容量進行分區安排就可以了,

斷行符號之後就真正格式化硬碟了,

按斷行符號後即進入軟體包安轉介面,選者cdrom安裝方式,

按Ctrl-Z退出安裝進程,查看當前已掛載的裝置,將光碟片掛載到系統上(不掛載的話會一直找不到檔案):

進入掛載的目錄之後再使用fg命令回到安裝進程,這裡如果不cd進入光碟片的掛載目錄的話,好像會有問題,懶得去確認了,哈哈:

忽略報錯資訊,繼續:

檔案路徑和之前輸入的不一樣的,要不是強制加上的,要不就是有bug了,修改路徑後繼續:

再次忽略報錯資訊,繼續往下:

斷行符號之後就會將cdrom中的檔案解壓到硬碟上,

輸出資訊有點亂,直接斷行符號:

回到最開始的安裝介面了,這裡可以直接退出了。

 

把硬碟的分區都掛載到系統上,然後使用chroot命令跳轉到/mnt目錄下:

跳轉成功,進入/etc目錄下用 vi 修改 rc 檔案:

紅色方框內的就是需要修改的地方。按照實際的分區輸入分區掛載的命令,儲存之後退出vi。

先斷開磁碟片的串連,再reboot重啟系統:

 

NetBSD-1.0 登入成功! 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.