1.下載bochs源碼
2.解壓後進入該目錄進行配置
sudo ./configure --enable-debugger --enable-disasm
3.編譯安裝
sudo make
sudo make install
bochs
使用配置文件中的信息來尋找所使用的磁盤映像文件、運行環境外圍設備的配置以及其他一些虛擬機器的設置信息。
4.新建自己的目錄進行配置
4.1配置文件解析
4.1.1. megs
用於設置被模擬系統所含內存量。默認值:32MB
修改示例:
megs:128
4.1.2.floppya(floppyb)
floppya
表示第一個軟驅,floppyb
代表第二個軟驅。
如果需要從一個軟盤上來引導系統,floppya
需要指向一個可引導的磁盤。
示例:
4.1.3. ata0 ata1 ata2 ata3
這4
個參數名用來啓動模擬系統中最多4
個ATA
通道。
對於每個啓用的通道,必須指明IO
基地址和一箇中斷請求信號。
默認只有ata0
是啓用的,並且參數默認如下。
4.1.4. ata0-master(ata0-slave)
ata0-master
用來指明模擬系統中第1
個ATA
通道(0
通道)上連接的第1
個ATA
設備(硬盤或CDROM
等);
ata0-slave
指明第1
個通道上鍊接的第2
個ATA
設備。
選項 | 說明 | 可取的值 |
---|---|---|
type |
連接的設備類型 | [ disk | cdrom ] |
path |
映像文件路徑名 | |
mode |
映像文件類型、僅對disk 有效 |
[ flat | concat | external | dll | sparse | vmware3 | undoable | growing | volatile ] |
cylinders |
僅對disk 有效 |
|
heads |
僅對disk 有效 |
|
spt |
僅對disk 有效 |
|
status |
僅對cdrom 有效 |
[ inserted | ejected ] |
biosdetect |
bios 進行變換的類型(int 13 ),僅對disk 有效 |
[ none | lba | large | rechs | auto ] |
model |
確認設備ATA 命令返回的字符串 |
在配置ATA
設備時,必須指明連接設備的類型type
,可以是disk
或cdrom
。還必須指明設備的“路徑名” path
。“路徑名”可以是一個硬盤映像文件、CDROM
的ISO
文件或者直接指向系統的CDROM
驅動器。在Linux
系統中,可以使用系統設備作爲Bochs
的硬盤,但由於安全原因,在Windows
下不贊成直接使用系統上的物理盤。
對於類型是disk
的設備,選項path
、cylinders
、heads
和spt
是必須的。對於類型是cdrom
的設備,選項path
是必須的。
磁盤變換方案(在傳統int 13 BIOS
功能中實現,並且用於像DOS
這樣的老式操作系統)可以定義爲:
名稱 | 說明 |
---|---|
none |
無需變換,適用於容量小於512MB (1032192 個扇區)的硬盤。 |
large |
標準移位算法,用於容量小於4.2GB (8257536 個扇區)的硬盤。 |
rechs |
修正移位算法,使用15 磁頭的僞物理硬盤參數,適用於容量小於7.9GB (15482880 個扇區)的硬盤。 |
lba |
標準lba- 輔助算法。適用於容量小於8.4GB (16450560 個扇區)的硬盤。 |
auto |
自動選擇最佳變換方案(如果模擬系統啓動不了就應該改變)。 |
mode
選項用於說明如何使用硬盤映像文件。它可以是一些模式之一。
名稱 | 說明 |
---|---|
flat |
一個平坦順序文件。 |
concat |
多個文件。 |
external |
開發者專用,通過C++ 類來指定。 |
dll |
開發者專用,通過DLL 來使用。 |
sparse |
可堆砌、可確認、可退回的。 |
vmware3 |
支持vmware3 的硬盤格式。 |
undoable |
具有確認重做日誌的平坦文件。 |
growing |
容量可擴展的映像文件。 |
volatile |
具有易變重做日誌的平坦文件。 |
以上選項默認值是:
4.1.5. boot
boot
用來定義模擬機器中用於引導啓動的驅動器。
示例:
4.1.6.cpu
cpu
用來定義模擬系統中仿真的CPU
的參數。四個參數如下:
|參數|說明|
|COUNT
|指明系統模擬的處理器個數。(支持SMP
最多爲8
,否則爲1
)|
|QUANTUM
|指定控制從一個處理器切換到另一個之前最多可執行的指令數量。|
|RESET_ON_TRIPLE_FAULT
|指定當處理器發生三重錯誤時需要對CPU
執行復位操作而不是僅僅讓其停機(PANIC
)。|
|IPS(Instructions Per Second)
|指定每秒鐘仿真的指令條數。
4.1.7.log
指定log
的路徑名可以讓Bochs
記錄執行的一些日誌信息。
4.2 新建配置文件bochsrc
4.3 新建系統調試代碼boot.s
4.4 創建軟盤floppy
4.4.1 使用bximage工具
4.4.2 創建名爲a.img
,大小爲1.44MB
的軟盤。
4.5 編譯boot.s
as86 -0 -a -o boot.o boot.s
ld86 -0 -s -o boot boot.o
dd bs=32 if=boot of=./a.img skip=1
4.6 部分 Bochs 調試指令