Bochs的是一個高度可移植的開源IA-32(x86)的PC寫在C++仿真器
《Bochs模擬器win7鏡像下載可上網》是一個開放源代碼的x86平台模擬器項目,它可以模擬PC上諸如BIOS、處理器、I/O、內存等硬件設備,以至於用戶可以通過安裝在智能手機或者平板電腦上的Bochs來模擬運行Windows,Linux或者DOS等等。
一、 配置Bochs
實際上配置Bochs是很簡單的,為什麼很多人不會配置呢?我覺的就是因為他使用和配置方式和普通程序不一樣——配置文件。實際上配置文件是和 ini文件、bat文件類似的。Bochs沒有給我們提供圖形界麵的配置工具。這就需要我們自己來修改配置文件。
簡單的配置就可以讓你的操作係統在Bochs裏麵跑起來。用Bochs跑完整的linux和windows是不現實的。實在是太慢了。一般我們也 隻能把他當成調試器來使用。現在,我們先看一下如何讓dos在他裏麵跑起來。如果你細心的話你會發現在Bochs文件夾裏麵有一個Bochsrc- sample.txt的文本文件。裏麵包含了所有了Bochs參數的信息。這個是官方的教程。可惜是英文的,而且我也沒有找到有中文的教程(不然也沒有我 這篇文章)。在這裏我們僅僅介紹最簡單的配置選項。好了,廢話就不多說了。我們現在就開始。
我們以一個例子來說明,這個例子是我用來跑dos以及我自己的小操作係統的。下麵就是我們要用到的最基本的選項:
# 在一行的最前麵加上“#”表示這一行是注釋行。
# 內存,以MB為單位,對於dos來說最大可以訪問16MB
# 的內存,所以我就給了他16MB,你可以根據自己的機器來調整
megs: 16
# 下麵兩句一般是不可以改的,至於幹什麼用的就不用我說
# 了。從他們的文件名就可以看出來。
romimage: file=../BIOS-Bochs-latest, address=0xf0000
vgaromimage: file=../VGABIOS-lgpl-latest
# 這個還用說嗎?當然是軟驅了,我想我們寫操作係統肯定是先
# 把操作係統放在軟盤(或映像)裏麵吧?在Bochs裏麵是可
# 以使用任意大小的軟驅映像的。可以是1.44或2.88,我一般使
# 用2.88。還有就是Bochs裏麵可以使用兩個軟驅。不過好像
# 我們並不經常這樣做。
floppya: 2_88=test.img, status=inserted
#floppyb: 1_44=floppyb.img, status=inserted
# 下麵是硬盤,很簡單,還有就是Bochs也是可以支持多個硬
# 盤的。那麼,硬盤文件是怎麼生成的呢?我們可以發現硬盤是
# img格式的。你注意沒有在Bochs文件夾裏有一個工具叫
# bximage.exe,我想你應該猜出來了。他就是用來生成這個硬盤
# 文件的工具。我在這兒還想說的是硬盤分三種格式的,最好選
#用growing類型。這種有一個好處就是節省硬盤空間,不過使用
#這種類型的硬盤還需要在下麵加上mode = growing這個選項。
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="dos.img", cylinders=306, heads=4, spt=17
# 下麵這個就是光驅,沒什麼好說的。如果你想使用物理光驅,
# 隻要讓path=E:(我們假設E盤是光驅)
ata0-slave: type=cdrom, path="dos.iso", status=inserted
# 這個是啟動設備,可以使用cdrom(光驅)、c(硬盤)或floppy(軟
# 驅)。
#boot: cdrom
boot: c
#boot: floppy
# 這一句可以不要,他隻是指定用來保存日誌的文件。如果不指定的
# 話他就會輸出到命令控製台上。
log: Bochsout.txt
# 這一句是設置在開機時是否激活鼠標,Bochs對於鼠標的控製不是# 很好。建議如果不是特別需要的話不要激活他。在運行期間也可以點窗口右上角的鼠標圖標來激活他。
mouse: enabled=0
以上這些設置就可以讓你的DOS或自己的小操作係統在Bochs裏麵跑起來了。至於其他的一些高級支持,你可以查看Bochsrc- sample.txt裏麵的說明。不要害怕他,其實很簡單。關鍵是拋棄恐懼。
二、 啟動Bochs
配置文件已經寫好了,硬盤文件等也都已經弄好了。那麼我們如何來啟動Bochs呢?很簡單,你右擊一下上麵寫的那個配置文件(例如 myos.bxrc,注意:擴展名要是.bxrc。)選擇“運行”或雙擊即可。不過我一般都不這樣做,我一般是寫一個批處理文件。
很簡單,如下所示:
cd "d:\Bochs-2.2.1\dos"
..\Bochs.exe -q -f Bochsrc.bxrc
這樣做的好處就是無論這個啟動腳本放在哪兒都是可以使用的。那麼,我們如何進入調試狀態呢?下麵我們就來討論這個問題。
三、 調試功能
新建一個批處理文件,寫入一下內容:
cd "d:\Bochs-2.2.1\dos"
..\Bochsdbg.exe -q -f Bochsrc.bxrc
運行這個批處理文件,你就可以進入調試狀態了。不過你會發現,程序卡住了。沒有想普通運行狀態一樣進入你的dos操作係統。為什麼?因為調試在等 待你的命令。你隻有給他一個命令他才會繼續。我們輸入“c”,然後回車。是不是dos已經可是運行了?
如果沒有運行說明你輸入的窗口不對,你不會把c輸入到那個沒有光標的窗口了吧?如果真是那樣我真是服了你了。真的!但是,dos運行起來了,如何 在返回調試狀態?很簡單,按ctrl+c。什麼你正在運行的程序被結束了?誰讓你在操作係統窗口中按了,我是說在調試窗口按。至於哪個是調試窗口,哪個是 操作係統窗口,我就不說了。如果你不知道你就幹脆別使用Bochs了,也不要寫什麼程序了,更不要開發什麼操作係統了。為什麼?因為你不可能成功。從這兒 就可以看出來。最好是找塊豆腐撞死,這樣你會很幸福的死去,不然你就會成為教育後代的典範——看到了嗎XXX是怎麼死的,笨死的。嗬嗬!開個玩笑。你真要 不知道
千萬不要來找我,找我我也不告訴你。不好意思,我也不知道。那麼,在調試狀態下我們可以幹哪些事呢?你用過debug嗎?它能做的Bochs都能 做,它不能做的Bochs也可以做。下麵就是一些常用的調試命令。
help
我最想告訴大家的是這個指令,因為他可以告訴我們一切。古語說:“授之以魚,不若授之以漁”。我覺的很有道理。但是,有些人就是不想學這種一勞永 逸的方法。所以,我還要繼續寫下去。
輸入help,回車。你會得到以下信息:
help - show list of debugger commands
help 'command'- show short command description
-*- Debugger control -*-
help, q|quit|exit, set, instrument, show, trace-on, trace-off,
record, playback, load-symbols, slist
-*- Execution control -*-
c|cont, s|step|stepi, p|n|next, modebp
-*- Breakpoint management -*-
vb|vbreak, lb|lbreak, pb|pbreak|b|break, sb, sba, blist,
bpe, bpd, d|del|delete
-*- CPU and memory contents -*-
x, xp, u|disas|disassemble, r|reg|registers, setpmem, crc, info, dump_cpu,
set_cpu, ptime, print-stack, watch, unwatch, ?|calc
需不需要我翻譯一下前兩句?那好吧。
help - 現實調試命令列表
help '命令' - 顯示某條命令的詳細用法。
命令分為哪些?很明顯,四類:調試控製,運行控製,斷點管理,CPU和內存控製。我不想在這兒一一介紹了。沒有必要,我隻介紹一下最常用的就可以 了。
c:繼續,前麵我們已經用過了。
s:單步執行。他還有一個擴展用法。
s n :執行n步。
b 0x7c00:在內存0x7c00處設置一個斷點.當程序執行到0x7c00處就自動進入到調試狀態.後麵的這個數指的是內存的線性地址
。也可以使用10進製的數,但是好像沒有人會這樣做。
x /20 0x7c00: 以16進製的形式從內存的0x7c00開始顯示20個字的數據。這個是很常用的命令,但是需要注意的是他的顯示順序和16進製編輯器中的顯示順序有一點小 的區別。他的顯示是以字為單位的,而且在字中是從低到高顯示的.不過也沒有什麼大不了的。你隻要稍微注意一下就可以了。
dump_cpu:這個是我最長用的三個指令之一。他的功能是顯示現在的寄存器的狀態,詳細內容類似於:
eax:0x00000000, ebx:0x00000000, ecx:0x00000000, edx:0x00000683
ebp:0x00000000, esp:0x00000000, esi:0x00000000, edi:0x00000000
eip:0x0000fff0, eflags:0x00000002, inhibit_mask:0
cs:s=0xf000, dl=0x0000ffff, dh=0xff009bff, valid=1
ss:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1
ds:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1
es:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1
fs:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1
gs:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1
ldtr:s=0x0000, dl=0x00000000, dh=0x00000000, valid=0
tr:s=0x0000, dl=0x00000000, dh=0x00000000, valid=0
gdtr:base=0x00000000, limit=0xffff
idtr:base=0x00000000, limit=0xffff
dr0:0x00000000, dr1:0x00000000, dr2:0x00000000
dr3:0x00000000, dr6:0xffff0ff0, dr7:0x00000400
cr0:0x00000010, cr1:0x00000000, cr2:0x00000000
cr3:0x00000000, cr4:0x00000000
u /20 0x7c00 :反彙編內存0x7c00處,反彙編的長度是20。你想不想知道dos的引導程序是什麼樣子的?執行一下這個命令就可以了。你還可以使用這樣的命令 u /20 cs:0x120a,至於什麼意思,我也不說了。
現在,我們已經介紹了6條命令了。夠了。對於日常應用已經完全夠用了。如果你想了解其他命令的用法隻要執行一下help “命令名”就可以了(注意,命令上要帶有引號)。好了。現在已經把Bochs的基本功能介紹完了。你是不是感覺Bochs很簡單?對於簡單的應用來說,確 實如此。但是,想讓他支持一些高級功能就有點麻煩了。畢竟它是全模擬的虛擬機,所以在有些方麵實現起來並不容易。但是,向網絡之類的功能還是可以支持的。 你隻要看一下Bochsrc-sample.txt就知道了。我在這兒就不說了。我還要說的是Bochs不僅僅可以調試操作係統,還可以調試dos下的程 序。我們知道dos沒有多少好的調試器。那麼我們完全可以使用Bochs來調試。你知道在程序的開頭輸出一下程序的段地址和偏移地址,然後暫定一下,在虛 擬機裏麵設置一下斷點就可以了。
Bochs的是可以運行大部分的操作係統仿真,包括Linux,DOS或Windows裏麵的。 Bochs的最初是由凱文·勞頓編寫的,目前由該項目的維護。
Bochs的可編譯並在多種模式,其中一些仍處於開發階段的使用。 “典型”的使用Bochs的是提供完整的x86 PC模擬,包括x86處理器,硬件設備和內存。這使您可以在工作站上的模擬器中運行的操作係統和軟件,就像你有一台機器一台機器內。例如,假設您的工作站是Unix / X11工作站,但要運行Win'95應用。 Bochs的將允許你你的Unix / X11工作站上運行贏95和相關的軟件,您的工作站上顯示一個窗口,在PC上模擬監視器。
Android的端口通過Lyubomyr麗森和馬克西姆沃洛申
由謝爾蓋·Pylypenko libSDL端口(又名pelya)
Bochs的是一個高度可移植的開源IA-32(x86)的PC模擬器用C ++編寫,能夠在大部分常見的平台上運行。它包括對Intel x86 CPU,通用I / O設備,和一個自定義BIOS的仿真。 Bochs能夠被編譯成模擬許多不同的x86 CPU,從386年初可能甚至沒有達到市場還沒有最新的x86-64 Intel和AMD處理器。
http://bochs.sourceforge.net/
https://github.com/lubomyr/bochs
https://github.com/lubomyr/BochsLauncher
bochs虛擬機window7鏡像對x86硬件設備的完全模擬,所以它是一個模擬器,而vmware則是一個虛擬機,它會將用戶行為完全委托給真實的硬件來完成,除了一些特定的IO需要模擬外,即使在沒有網絡的情況下,也能夠照常運行。
手機軟件,是指能在手機上方便用戶的一係列軟件,具備各種各樣的功能,滿足用戶的各種需求,包括各種保護手
進入專區>
熱門評論
最新評論