Bochs安裝手冊

Bochs 的下載、安裝和配置

1 開源的BOCHS 虛擬機軟體

程式設計師的工作就像是在歷險,困難重重,途中不可避免地要遇上暗礁。有時候,少了一個字

符,或者多了一個字元,或者拼錯了字元,程式就無法成功編譯;有時候,儘管能夠編譯,但程

序中存在邏輯錯誤,要么少寫了語句,要么算法不對,運行的時候也得不到正確結果。

有時候,錯誤的原因很簡單,就是因為馬虎和誤操作,但很難知道問題出在哪裡。等到你終

於發現的時候,一天,甚至幾天的時間已經花掉了。在這種情況下,沒有調試工具來找到程式中

隱藏的錯誤是不行的。有時候,即使有調試工具的幫助,也會令人筋疲力盡,不過有總比沒有

好。在現實的世界裡,不管是經驗老道的程式設計師,還是剛入門的新手,沒有誰敢說自己的程

序是不需要調試的。

調試工具並不是智慧型到可以自動發現程式中的錯誤,這是不可能的。但是,它可以單步執行

你的程式(每執行一條指令後就停下來),或者允許你在程式中設定斷點,當它執行到斷點位置時

就停下來。這時,它可以顯示處理器各個暫存器的內容,或者記憶體單元里的內容。因此,你可以

根據機器的狀態來判斷程式的執行結果是否達到了預期。通過這種方式,你可以逐步逼近出現問

題的地方,直到最終發現問題的所在。市面上有多種流行的程式調試工具軟體,但它們通常都象

你用的其它軟體一樣工作在作業系統之上。

麻煩的是,本書中的程式全都只能運行在沒有作業系統的祼機下。這意味著,所有流行的調

試工具都不可用。不過,好訊息是,一款叫做 Bochs 的軟體可以幫助你。

Bochs 是開源軟體,是你唯一可選擇的調試器。開源意味著,你不用花錢購買就可以使用它。

它用軟體來模擬處理器取指令和執行指令的過程,以及整個計算機硬體。當它開始運行時,就直

接模擬計算機的加電啟動過程。正是因為如此,它才有可能做一些調試工作。

很重要的一點是,它本身就是一個虛擬機,類似於 VirtualBox。因此,它也就很容易讓你單步

跟蹤硬碟的啟動過程,查看暫存器的內容和機器狀態。在本書中,我們的程式都是直接從 BIOS 那

里接管處理器的控制權,因此,Bochs 的這個特點正好能夠用來完成調試工作。不像本書中使用的

其他工具,bochs 的使用方法在網上很容易搜尋到。網友王南洋為本書製作了一個 Bochs 的簡易教

程。

2 BOCHS 軟體的下載和安裝

要使用 Bochs,首先要從它的官網下載安裝程式。

打開這個網路連結後,將出現圖 1 所示的網頁,該網頁顯示了 Bochs 軟體的所有歷史版本。

一般來說,應當選擇最新的版本下載,比如圖中所示的 2.6 版。

選擇自己希望安裝的 BOCHS 軟體版本

第9 章 中斷和動態時鐘顯示

Bochs 的每一個版本都是針對不同平台開發的。因此,當你選擇了一個版本後,將進入另一個

頁面,允許你選擇一個適用於自己當前機器的安裝程式。如圖 2 所示。

選擇適用於自己當前系統平台的 BOCHS 安裝程式

從圖中可以看出,Bochs 虛擬機的安裝程式很小,只有幾兆位元組,而且 Windows 用戶的下載

量最多。別人下載什麼我們也下載什麼,這總是不會錯的,因此,我們就下載 Bochs-2.6.exe。

下載工作完成後,剩下的就是運行該安裝程式,將 Bochs 軟體安裝到你的計算機上。如果你

的作業系統是 Windows 7,那么安裝程式運行時,將出現一個安全提示。不要理會它,繼續運行安

裝程式即可。

3 BOCHS 虛擬機的配置

如圖 3 所示,在 Bochs 的工作資料夾(取決於實際安裝的位置,該位置在安裝的過程中可以

選擇和指定)下,有兩個程式,分別是 bochs.exe 和 bochsdbg.exe。我們說過,Bochs 是虛擬機軟

件,可以作為類似於 VirtualBox 的虛擬機來使用。在這種情況下,你應當使用 bochs.exe。相反,

如果你希望用 Bochs 來調試程式,那么,應當使用 bochsdbg.exe,它的意思是“Bochs 調試”

(Bochs Debuger)。

Bochs 軟體的工作資料夾 第9 章 中斷和動態時鐘顯示

因為是要調試程式,所以我們應當運行 bochsdbg.exe 程式。每當該程式運行時,都會出現所示的起始界面。

Bochs 程式的啟動界面和 VirtualBox 一樣,Bochs 也只是一台虛擬的計算機。因此,它需要做一些配置工作,比如,設定記憶體的大小、硬碟的數量和類型,等等。相對於 VirtualBox,Bochs 可以自定義的項目更多

些。

在第一次使用 Bochs 時,一定要做一些設定工作。

Bochs 可以提供一些默認的設定,這些默認的軟、硬體參數對調試本書的程式來說已經足夠。

因此,我們僅僅設定一下硬碟參數就可以了。如圖 5 所示,在“Bochs Start Menu”視窗中,雙擊

“Edit Options”列表框中的“Disk & Boot”,該項目用於設定磁碟和計算機啟動的參數。雙擊之

後,將彈出另一個界面,該界面上有 6 個標籤頁,分別是“Floppy Options”、“ATA channel 0”、

“ATA channel 1”、“ATA channel 2”、“ATA channel 3”和“Boot Options”。

“Floppy Options”是和軟磁碟驅動器有關的設定。軟磁碟在歷史上曾經是非常標準和流行的配

置,現在已經基本絕跡,所以,可以不用管它。

ATA 是很多人熟悉的硬碟接口標準,PATA 就是我們以前使用的 IDE 接口,SATA 是當前正在

流行的新標準。每台計算機可以有兩個以上的 ATA 通道,以插接多塊硬碟和光碟驅動設備。對於

每台計算機來說,“ATA channel 0”總是必備的,因此我們一會兒就來設定它。

“Boot Options”是和計算機啟動有關的選項,主要用於指定先從哪個設備(硬碟或光碟驅動

器)啟動。

先來設定主硬碟。單擊“ATA channel 0”,此時,如圖 5-19 所示,將在該標籤頁的內部出現另

一個標籤頁。其中,“ATA channel 0”頁面用於選擇是否開啟該通道,一般默認是選擇開啟,不用

管它;每個磁碟通道可以有兩塊磁碟設備,一主一副。因此,“First HD/CD on channel 0”頁面用

於設定該通道的主盤類型,“Second HD/CD on channel 0”頁面用於設定該通道的副盤類型。

如圖中所示,單擊“First HD/CD on channel 0”標籤頁,設定主硬碟。按圖中所示,應當先勾

選“Enable this device”(允許該設備)。

和 VirtualBox 一樣,Bochs 虛擬機可以使用檔案來模擬物理上的硬碟設備。尤其是,它可以接

受 VHD 虛擬硬碟檔案格式。

磁碟參數設定界面

一般來說,你會選擇 VirtualBox 虛擬機來觀察運行結果,調試程式時使用 Bochs。因此,最好

是它們共用同一個虛擬硬碟檔案。為此,如圖中所示,在“Path of physical device name”一欄中,

選擇 VirtualBox 所使用的 VHD 檔案,具體的位置依你的實際情況而定。

因為使用的是 VHD 硬碟檔案,所以,要在“Type of disk image”一欄中選擇“vpc”。畢竟,

VHD 檔案格式是微軟為 Virtual PC 定製的。

即使是指定了“VPC”的磁碟格式,並給出了虛擬硬碟檔案,該界面也不會自動檢測出該硬

盤的參數來。因此,如圖中所示,還需要手工給出該磁碟的柱面數、磁頭數,以及每磁軌扇區 第9 章 中斷和動態時鐘顯示數。如果你選用的是配書軟體包中的 LEECHUNG.VHD 檔案,可以照圖中所示的參數填寫。否

則,你應該先用 FixVhdWr.exe 程式得到 VHD 的參數,然後填寫到這裡。

Bochs 的啟動順序設定

設定了一塊硬碟之後,並意味著配置任務的結束。想想看,一台計算機可以配備好幾塊硬碟

和光碟驅動器,到底在加電之後,從哪塊磁碟啟動計算機呢?

還要打開“Boot Options”標籤頁,設定啟動參數。

“Boot drive #1”首選的啟動設備。應當選擇“磁碟”,即選擇“disk”。磁碟分軟碟和硬碟,但

軟碟已經不再使用,所以,應當按圖中所示,跳過軟碟啟動信號檢查。即,勾選“Skip Floppy

Boot Signature Check”。

最後,我們沒有安裝任何作業系統,所以在“Which operation system?”一欄選擇“none”,意

思是沒有。

一旦做完了以上工作,可以點“確定”按鈕返回到圖 4 的啟動界面。在那個界面上,我們應

當單擊“Save”按鈕,來保存以上的設定參數。

所示,Bochs 會彈出一個對話框,讓你選擇一個配置檔案名稱,以及該檔案將被保存的位

置。

保存設定參數

Bochs 提供了一個默認的檔案名稱“bochsrc.bxrc”,應當保持這個名字不變。同時,如圖中所

示,要將該檔案保存的位置指定到 Bochs 的安裝資料夾。之所以這樣做,是因為,每次當 Bochs

啟動時,它都會在自己的工作目錄下尋找默認的配置檔案。

至此,Bochs 的下載、安裝和配置工作就完成了。

每次 Bochs 啟動時,都會出現圖 4 的啟動界面。不要管它,只需直接單擊“Start”即可,

Bochs 會自動在其工作目錄下找到默認的配置檔案,並按那裡面的參數啟動。

Bochsdbg 啟動後,你就可以做調試工作了。具體的調試方法,參見書中的描述。

相關詞條

熱門詞條

聯絡我們