2008年5月26日 星期一

NachOS目錄結構

於NachOS的code目錄底下包含下列目錄


bin -- NachOS用來轉換二進位mips執行檔的程式,例如big-endian/little-endian轉換,二進位碼分析
filesys -- 檔案系統相關程式碼
lib -- 一些library
machine -- 模擬機器程式碼,模擬一台mips機器,包括mips cpu模擬器
network -- 網路相關程式碼
test -- 測試用程式碼,這部分程式碼將會使用cross-compiler進行編譯
threads -- 多執行緒的程式碼
userprog -- 使用者程式碼

GLOBAL安裝 使用


GLOBAL是一隻能夠對程式碼作所引、連結的工具
他支援很多種程式(C++, Java, PHP...)
也支援許多編輯器(vi, Emacs....)
也可以輸出成HTML
讓你修改、閱讀程式碼更加輕鬆愜意!

下載

# wget http://tamacom.com/global/global-5.7.1.tar.gz


解壓縮
# tar zxvf global-5.7.1.tar.gz


編譯
# cd global-5.7.1/
# ./configure
# make


安裝
請先確定擁有root權限
# make install


到此GLOBAL就完成安裝了
我們來產生一個網頁格式的輸出吧
先到你程式碼的目錄下
這裡以NachOS為例
#cd /root/nachos-4.0/code


接著產生輸出
# htags -aFghImsvw


稍待一會兒就完成了
你可以看到多出一個HTML目錄
看看裡面的index.html
有沒有很舒服的感覺?

關於產生html的選項,有興趣可以去官網

GNU GLOBAL


面對龐大的NachOS程式碼你如何應對呢?是不是有時為了追蹤一個程式碼找老半天,就因為你不知道這個function是在哪裡宣告的?在茫茫大海中去尋找是誰、在哪使用這個function?

剛開始使用NachOS作練習時,這個問題困擾我很久。每次為了一個Error快要翻遍全部的程式碼。

直到我發現這個網站

http://cc.ee.ntu.edu.tw/~farn/courses/OS2007/nachos/HTML/index.html
這實在是太方便了,所以我找了他的生成軟體
Gnu GLOBAL
輕鬆的把龐大的程式製成網頁
讓你快速編輯程式碼

2008年5月25日 星期日

修改NachOS中cross-compiler路徑

如果你很不爽NachOS理要求cross-compiler存放的路徑,或是你根本沒有權限存取/usr。沒關係,我們可以修改NachOS中使用cross-compiler的位置,就可以將cross-compiler放到你想放的位置去了。

修改code/test/Makefile
找到這行

GCCDIR = /usr/local/nachos/decstation-ultrix/bin/
將其中"/usr/local/nachos/decstation-ultrix/bin/"換成你存放cross-compiler的位置
這麼作就可以使NachOS在編譯時使用指定位置的交叉編譯器

NachOS 編譯問題(gmake)

如果你不是在redhat9下進行編譯,你可能碰到一些問題。(我在ubuntu8.04碰到這個問題)

gmake notfound
gmake跟make有啥差別?

上網找了半天都跟你說gmake == gnu make == make

這下囧了

後來發現Makefile裡面可以設定
請修改code/Makefile
找到這行
MAKE = gmake
改成
MAKE = make
就可以使用了

使用VMware模擬Redhat9的注意事項

為使用NachOS來練習OS,一套linux是必須的。但是又有誰只為了NachOS而使用雙系統,甚至再拿一台電腦來灌?
所以我們用模擬的。
VMware是一套模擬軟體,相信大家耳熟能詳,他能在x86電腦上模擬x86電腦,也提供了良好的模擬硬體環境。

對於VMware的使用,這裡不再多做說明,本篇的重點為使用VMware Workstation ACE Edition安裝Redhat9時會碰到的問題。

當你在VMware上安裝完Redhat9,你會發現網路無法使用。網路卡無法啟動,一直跟你說你網路線沒插。
為了解決這個問題,我們安裝VMware-tools。
VMware-tools是一個在VMware虛擬電腦下使用的一個工具,他提供所有虛擬裝置的驅動程式,以及建立更方便的虛擬電腦與實體電腦間的操作。(只是用於VMware模擬出的linux系統,切勿安裝於真實系統)
將VMware-tools安裝映像檔掛載到虛擬光碟機上。
裡面有兩個檔案,VMwareTools-6.0.0-45731.i386.rpm, VMwareTools-6.0.0-45731.tar.gz,雖然Redhat9支援rpm方式安裝,但是在這裡使用rpm安裝將無效(原因不明),所以我們用另外一個檔案來進行安裝。

先將VMwareTools-6.0.0-45731.tar.gz複製到硬碟中並解壓縮

# cp /mnt/cdrom/VMwareTools-6.0.0-45731.tar.gz /root
# cd /root
# tar -zxvf VMwareTools-6.0.0-45731.tar.gz


在執行安裝指令
# cd vmware-tools-distrib/
# ./vmware-install.pl
接下來依照安裝指示,大部分都是直接按[Enter]就OK,除了接析度,解析度請調成虛擬電腦現在正在使用的解析度,不用擔心以後是不是不能調,等VMware-tools安裝完成後,虛擬電腦就像一般視窗一樣,可任意調整大小。

安裝完成後重新開機,請確定VMware虛擬電腦的網路設定選在NAT,否則網路還是不能用。
重新開機之後就一切OK了!
開始我們的NachOS吧

NachOS安裝

安裝前準備
我們這裡使用Redhat9為安裝/操作nachOS的作業平台,
請注意安裝Redhat9時勾選開發工具。因為我們使用gcc 3.3.2如果起使用其他linux或是cygwin請確定先安裝gcc 3.3.2

下載NachOS以及Cross-compiler

NachOS4.0 -- NachOS4.0原始碼
mips cross-compiler -- 在x86系統編譯mips二進位碼交叉編譯工具

編譯

解壓縮NachOS到家目錄(/root)

先將cross-compiler解壓縮至根目錄(/)
一定要再根目錄,否則編譯NachOS會出錯

到/root/nachos-4.0/code/
使用make指令進行編譯
編譯過程會有大量螢幕資訊,只要沒有Error就OK
注意最後幾行有Error就是編譯失敗

下載及編譯指令流程(#為註解)
#下載nachOS
wget http://www.csie.ncu.edu.tw/~945002036/nachos-4.0.tar.gz

#解壓縮nachOS
tar -zxvf nachos-4.0.tar.gz

#下載cross-compiler
wget http://www.csie.ncu.edu.tw/~945002036/mips-decstation.linux-xgcc.tgz

#移動cross-compiler壓縮檔至根目錄(/)
#It can be change by modify nachos/code/test/Makefile: GCCDIR
mv ./mips-decstation.linux-xgcc.tgz /
cd /

#cross-compiler已經是執行檔,不需編譯
tar zxvf mips-decstation.linux-xgcc.tgz

#編譯nachOS,請確定cross-compiler已經備妥, 否則編譯測試程式(test)將發生錯誤.
cd root/nachos-4.0/code/
make
cd userprog/
ls

#執行測試程式
./nachos -e ../test/test1


測試程式執行結果應為

Total threads number is 1
Thread test/test1 is executing.
Print integer:9
Print integer:8
Print integer:7
Print integer:6
return value:0
No threads ready or runnable, and no pending interrupts.
Assuming the program completed.
Machine halting!

Ticks: total 200, idle 66, system 40, user 94
Disk I/O: reads 0, writes 0
Console I/O: reads 0, writes 0
Paging: faults 0
Network I/O: packets received 0, sent 0