西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開發(fā)其它知識(shí) → 安裝和配置bochs、調(diào)試自己寫的系統(tǒng)引導(dǎo)代碼

安裝和配置bochs、調(diào)試自己寫的系統(tǒng)引導(dǎo)代碼

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:西西整理時(shí)間:2013/5/13 21:43:16字體大。A-A+

作者:西西點(diǎn)擊:529次評(píng)論:0次標(biāo)簽: 系統(tǒng)引導(dǎo)

  • 類型:系統(tǒng)其它大小:162KB語(yǔ)言:中文 評(píng)分:2.5
  • 標(biāo)簽:
立即下載

1、安裝和配置bochs

首先從bochs.sourceforge.net里面把BOCHS給download下來,鑒于Windows的普及,僅僅談BOCHS在win下的使用方法,其實(shí)在其它的OS中方法差不多,不過我僅僅在Window和Linux下安裝使用過。

在bochs.sourceforge.net里面把Bochs-2.6.1.exe給download下來,雙擊就開始安裝。這軟件不大,安裝完才4兆多,當(dāng)然,這是標(biāo)準(zhǔn)安裝,如果你選擇的是完全安裝,則比標(biāo)準(zhǔn)安裝多個(gè)DLX linux demo這個(gè)OS,如果你是第一次使用BOCHS,建議你用完全安裝,裝完 ,現(xiàn)不用著急學(xué)會(huì)BOCHS的一大堆配置,可以先用用它自帶的這個(gè)OS,感受下BOCHS。

在BOCHS的目錄里面有個(gè)dlxlinux子目錄,進(jìn)去,雙擊bochsrc,就進(jìn)入下圖:

這dlx linux是系統(tǒng)自帶的,如果自己想用別的操作系統(tǒng)該怎么辦呢?嘿嘿,別著急,BOCHS的開發(fā)者們已經(jīng)為我們考慮好了,bochs.sourceforge.net里面,你能找到很多img文件,這些都是開發(fā)者們做好的鏡像文件了,嗯,說白了,就等于是機(jī)子的硬盤了,咱們僅僅需要的就是配置好,能運(yùn)行就可以。

通常我喜歡的方法是改配置文件,這方法似乎也是BOCHS的使用者們通常喜歡采用的吧,我詳細(xì)介紹這方法。

比方說,咱們想用msdos這個(gè)操作系統(tǒng),從網(wǎng)上找個(gè)msdos的啟動(dòng)盤的鏡像文件,如果找不到的話,可以自己做個(gè),方法:首先做個(gè)啟動(dòng)盤鏡像文件,取名boot.img這就做好了,方法可以參考我以前寫的”用vmware運(yùn)行簡(jiǎn)單的引導(dǎo)代碼“或者也可以用dos下的hd-copy這個(gè)工具做出來。然后單獨(dú)建立個(gè)目錄(隨意地方)msdos,然后把bochs安裝目錄里面的bochsrc-sample.txt這個(gè)文件復(fù)制到msdos這個(gè)目錄里面,并改名,注意,后綴最好是bxrc,這個(gè)后綴是bochs可以識(shí)別的。bochsrc-sample.txt這個(gè)文件是配置文件模板,我們就是在這個(gè)模板的基礎(chǔ)上修改參數(shù)成為我們的操作系統(tǒng)所使用的配置文件。

第一個(gè)參數(shù):floppya這是A驅(qū)動(dòng)器的參數(shù),當(dāng)然,自然也是模擬的。通常所用的軟驅(qū)是1.44MB的,因此后面跟的參數(shù)是1_44=/dev/fd0 注意,這個(gè)/dev/fd0必須是你的軟驅(qū)的鏡像,比方說咱們的msdos就是boot.img,你把/dev/fd0改成1_44=boot.img就可以。當(dāng)然,也可以模擬其它的軟驅(qū),如2。88M,720K,360K的,這非常的有用!后面的參數(shù)status標(biāo)明軟驅(qū)的狀態(tài),只能有兩個(gè)inserted(軟盤插入軟驅(qū)),ejected(軟盤未插入軟驅(qū))。

第二個(gè)參數(shù):boot,這是啟動(dòng)的驅(qū)動(dòng)器,它的頻率也比較高。它可以帶的參數(shù)有floppy(軟驅(qū)啟動(dòng)),disk(磁盤啟動(dòng)),cdrom(光驅(qū)啟動(dòng))。

這兩個(gè)參數(shù)是最最常用的,幾乎是必用吧。

第三個(gè)參數(shù):ata0,ata1,ata2,ata3,這應(yīng)該算是四個(gè)參數(shù)吧,沒事別改它,反正我是沒改過它,還常常吧后面的ata1,ata2,ata3給注釋掉,僅僅留ata0。

第四個(gè)參數(shù):ATA[0-3]-MASTER,ATA[0-3]-SLAVE,這就有用了,指定硬盤或光盤的參數(shù),并指明它是主盤還是從盤。標(biāo)準(zhǔn)的參數(shù)是ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17,type參數(shù)只能是兩者,disk(硬盤),cdrom(光盤),mode這個(gè)參數(shù)鏡像類型,它僅僅是針對(duì)磁盤才有效,有幾種,flat(一個(gè)文件的布局)concat(多個(gè)文件的布局)external(開發(fā)者指定的,通過C++的類BOCHS就是C++開發(fā)的)dll(開發(fā)者指定的,通過dll文件)vmware3(wmware3使用的硬盤鏡像)。還有幾個(gè)其它的不介紹;path是指定硬盤或是光盤鏡像的文件。Cylinders,Heads,Spt這幾個(gè)參數(shù)通過這名字就能知道了。

知道這3個(gè)參數(shù)(除了第三個(gè)),基本上就能應(yīng)付大多數(shù)的了。

下面安裝模板中的參數(shù)的位置,一個(gè)一個(gè)參數(shù)介紹,由于不常用,僅僅介紹下,不會(huì)象前面納幾個(gè)參數(shù)那樣詳細(xì)介紹,除非我覺得特別有用,或是使用過程中用過了。

config_interface:關(guān)于配置文件的接口,嗯,其實(shí)就是在BOCHS運(yùn)行過程中改變配置的界面。

display_library:圖形庫(kù)。

Romimage:ROM BIOS

Megs:內(nèi)存

optromimage [1-4]:ROM鏡像的選項(xiàng)

vgaromimage:VGA ROM BIOS

floppya:軟驅(qū)A

floppyb:軟驅(qū)B

ata[0-3]:硬盤或光驅(qū)的ata控制器

ATA[0-3]-MASTER, ATA[0-3]-SLAVE:ata設(shè)備的類型

Boot:?jiǎn)?dòng)驅(qū)動(dòng)器

Ips:模擬的頻率,有些時(shí)候特別有用,比如我裝minix1.5的時(shí)候,在login的時(shí)候,如果機(jī)子高檔的話,輸入passwd的時(shí)間特別短,這時(shí)候就需要調(diào)整頻率了。當(dāng)然,聽說軟件如果對(duì)實(shí)時(shí)控制特別研的時(shí)候,也必須改它。

Clock:時(shí)鐘

floppy_bootsig_check:是否檢查軟盤引導(dǎo)時(shí)候的引導(dǎo)的標(biāo)記0xaa55

log:調(diào)試用的日志

logprefix:日志記錄的格式

panic:Bochs這個(gè)軟件本身錯(cuò)誤的信息,如配置文件出錯(cuò)或是模擬錯(cuò)誤如不支持圖形模式。

Error:Bochs遇到不能模擬的情況,如出現(xiàn)非法指令。

Info:一些不常出現(xiàn)的情況。

Debug:主要用來開發(fā)Bochs這個(gè)軟件時(shí)報(bào)告情況用的。

以上四個(gè)參數(shù)(panic,error,info,debug)是Bochs運(yùn)行時(shí)遇到的不同等級(jí)的情況。

debugger_log:調(diào)試器輸出錯(cuò)誤的文件。

com1:串行端口。

parport1:并行端口。

sb16:聲卡。

vga_update_interval:VGA卡刷新率。

ne2k:網(wǎng)卡。

2、用bochs運(yùn)行引導(dǎo)代碼

通過前面參數(shù)的介紹,我們來配置和運(yùn)行自己寫的系統(tǒng)引導(dǎo)代碼,并且通過前面的介紹我們已經(jīng)建立了一個(gè)叫msdos的文件夾,里面包含配置文件和軟盤鏡像文件。

首先是設(shè)置floppya參數(shù)指向自己制作的包含引導(dǎo)代碼的軟盤鏡像boot.img,具體配置如下:

floppya: 1_44=boot.img, status=inserted

然后是boot參數(shù)的設(shè)置,我們直接用軟盤引導(dǎo),具體配置如下:

boot: floppy

其它參數(shù)都用默認(rèn)就好,然后直接雙擊bochsrc-sample.bxrc文件就可以運(yùn)行了,如下圖所示:

可以看出引導(dǎo)代碼的輸出語(yǔ)句”load root directory“,表明運(yùn)行成功!!

3、用bochs調(diào)試代碼

直接在bochs的安裝目錄中雙擊bochsdbg文件,然后選擇加裝前面我們的配置文件bochsrc-sample.bxrc,點(diǎn)開始就進(jìn)入調(diào)試模式了,如下圖所示:

此時(shí)是暫停在BIOS中。而我們的代碼是從0x7C00位置開始的,所以先要在那里設(shè)一個(gè)斷點(diǎn),然后繼續(xù)運(yùn)行到斷點(diǎn):

接下來可以用命令help來查看調(diào)試系統(tǒng)的各種基本命令,這里給出了一些常用的命令

3.1 執(zhí)行控制指令

c/cont/continue連續(xù)執(zhí)行
s/step/stepi [count]執(zhí)行count條指令,默認(rèn)為1條,會(huì)跟進(jìn)到函數(shù)和中斷調(diào)用的內(nèi)部
p/n/next [count]執(zhí)行count條指令,默認(rèn)為1條,但跳過函數(shù)和中斷調(diào)用
Ctrl+C停止執(zhí)行,并回到命令行提示符下
q/quit/exit退出調(diào)試和執(zhí)行

3.2 斷點(diǎn)設(shè)置命令

vb/vbreak seg:offset在虛擬地址上設(shè)置指令斷點(diǎn),其中seg和offset可以是以0x開始的十六進(jìn)制數(shù),或十進(jìn)制,或者是以0開頭的八進(jìn)制數(shù)
lb/lbreak addr在線性地址上設(shè)置斷點(diǎn),addr同上面的seg和offset
b/break/pb/pbreak addr在物理地址上設(shè)置斷點(diǎn)
info break顯示當(dāng)前所有斷點(diǎn)的信息
d/del/delete n刪除一個(gè)斷點(diǎn)

3.3 內(nèi)存操作指令

x /nuf addr檢查位于線性地址addr處的內(nèi)存內(nèi)容
xp /nuf addr檢查位于物理地址addr處的內(nèi)存內(nèi)容

其中參數(shù)n、u、f分別表示:

n為要顯示內(nèi)存單元的計(jì)數(shù)值,默認(rèn)為1

u表示單元大小,默認(rèn)值為w

b(bytes) 1字節(jié) h(halfwords) 2字節(jié) w(words) 4字節(jié) g(giantwords) 8字節(jié) f為顯示格式,默認(rèn)為x x(hex) 顯示為十六進(jìn)制數(shù) d(decimal) 顯示為十進(jìn)制數(shù) u(unsigned) 顯示為無(wú)符號(hào)十進(jìn)制數(shù) o(octal) 顯示為八進(jìn)制數(shù) t(binary) 顯示為二進(jìn)制數(shù) c(char) 顯示為對(duì)應(yīng)的字符

3.4 信息顯示和CPU寄存器操作命令

r/reg/regs/registers列表顯示CPU寄存器及其內(nèi)容
set $reg=val修改某寄存器的內(nèi)容。除段寄存器和標(biāo)志寄存器以外的寄存器都可以修改,如set $eax=0x01234567
creg列出所有的CR0-CR4寄存器
sreg列出CPU全部狀態(tài)信息,包括各個(gè)段選擇子(cs,ds等)以及l(fā)dtr和gdtr等。
print-stack打印堆棧情況。
info tab顯示頁(yè)表

3.5 反匯編命令

u/disasm/disassemble start end,反匯編給定線性地址范圍的指令。也可以是u /10 反匯編從當(dāng)前地址開始的10條指令。如下圖

總結(jié):

bochs的調(diào)試感覺和gdb對(duì)匯編的調(diào)試很類似,所以用起來挺方便的,而且對(duì)于開發(fā)操作系統(tǒng)的人來說,bochs的調(diào)試功能無(wú)疑是很強(qiáng)大的,可以直接看到cup的執(zhí)行情況,以及各個(gè)寄存器和內(nèi)存單元的內(nèi)容,這對(duì)于調(diào)試程序、掌握程序的運(yùn)行情況是很有幫助的。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)