bochs模擬器:安裝

bochs是一個(gè)用來模擬IA32(x86)架構(gòu)的模擬器,包括x86的CPU路翻、通用輸入輸出I/O設(shè)備等钾挟。后續(xù)我們將使用bochs來運(yùn)行自己編寫的代碼首启,因此也需要用到bochs提供的debug功能,所以本文采用源碼編譯的方式來安裝驻龟。

源碼方式安裝

下載最新的源碼

下載路徑:https://sourceforge.net/projects/bochs/files/bochs/2.7/温眉,下載后的包名稱為bochs-2.7.tar.gz

編譯源碼&安裝

  • 解壓下載的壓縮包

    tar zcf bochs-2.7.tar.gz

    解壓后會(huì)出現(xiàn)目錄bochs-2.7翁狐。

  • 配置編譯選項(xiàng)

    cd bochs-2.7

    ./configure --enable-debugger

    打開bochs的debug功能类溢,這樣在運(yùn)行bochs時(shí)可以使用類似Linux下的gdb功能進(jìn)行調(diào)試。

  • 編譯并安裝

    make

    sudo make install

    整個(gè)編譯過程大概需要十分鐘露懒,編譯完成后會(huì)生成bochsbximage兩個(gè)可執(zhí)行文件闯冷,bochs就是模擬器本身二進(jìn)制文件,bximage則用于創(chuàng)建各種虛擬鏡像(例如軟盤鏡像懈词、硬盤鏡像等)窃躲。默認(rèn)會(huì)將這兩個(gè)可執(zhí)行文件安裝到系統(tǒng)的/usr/local/bin目錄下。

安裝完成后钦睡,在命令行輸入bochs就可以打開模擬器了蒂窒,此時(shí)是無法正常出現(xiàn)bochs的界面躁倒,因?yàn)樾枰峁゜ochs的配置文件,指定待模擬系統(tǒng)的一些配置洒琢,這個(gè)在后文會(huì)介紹如何使用bochs秧秉,此處不做深入探討。

輸入bochs后的界面:

========================================================================
                        Bochs x86 Emulator 2.7
              Built from SVN snapshot on August  1, 2021
                Timestamp: Sun Aug  1 10:07:00 CEST 2021
========================================================================
00000000000i[      ] BXSHARE not set. using compile time default '/usr/local/share/bochs'
------------------------------
Bochs Configuration: Main Menu
------------------------------

This is the Bochs Configuration Interface, where you can describe the
machine that you want to simulate.  Bochs has already searched for a
configuration file (typically called bochsrc.txt) and loaded it if it
could be found.  When you are satisfied with the configuration, go
ahead and start the simulation.

You can also start bochs with the -q option to skip these menus.

1. Restore factory default configuration
2. Read options from...
3. Edit options
4. Save options to...
5. Restore the Bochs state from...
6. Begin simulation
7. Quit now

Please choose one: [2]  

問題及解決方案

一般問題會(huì)出現(xiàn)在編譯前的配置過程衰抑,多為本地環(huán)境檢測(cè)達(dá)不到要求象迎,可以嘗試打bochs-2.7``目錄下的configure`文件,根據(jù)錯(cuò)誤提示分析下具體錯(cuò)誤出現(xiàn)的位置以及錯(cuò)誤出現(xiàn)的邏輯呛踊。多數(shù)情況下都是環(huán)境的配置不滿足要求(例如某些依賴的庫未安裝)砾淌,下面記錄的問題是本文安裝過程中碰到的。

  • 運(yùn)行./configure時(shí)提示"ERROR: X windows gui was selected, but X windows libraries were not found."

    原因在錯(cuò)誤信息中已經(jīng)提示的很清楚谭网,因?yàn)槲覀冃枰褂胓ui界面汪厨,而本地環(huán)境沒有檢測(cè)到對(duì)應(yīng)的X windows gui庫,解決方案就是為本地環(huán)境安裝X windows gui庫愉择,命令如下:

    sudo apt install xorg-dev

  • 運(yùn)行./configure時(shí)提示"WARNING: The Bochs debugger gui cannot be compiled here, disabling it"

    錯(cuò)誤提示中并未明確能看到原因劫乱,只知道是對(duì)應(yīng)的gui庫沒有找到,通過提示信息找configure文件內(nèi)容锥涕,發(fā)現(xiàn)提示附近的代碼為:

    ENH_DBG_OBJS=""
    if test "$gui_debugger" = 1; then
      if test "$bx_have_gtk_version" -ge 2; then
        ENH_DBG_OBJS="enh_dbg.o gtk_enh_dbg_osdep.o"
        $as_echo "#define BX_DEBUGGER_GUI 1" >>confdefs.h
    
      elif test "$DEFAULT_GUI" = win32 -o "$with_win32" = yes; then
        ENH_DBG_OBJS="enh_dbg.o win32_enh_dbg_osdep.o"
        $as_echo "#define BX_DEBUGGER_GUI 1" >>confdefs.h
    
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: , disabling it" >&5
    $as_echo "$as_me: WARNING: The Bochs debugger gui cannot be compiled here, disabling it" >&2;}
        $as_echo "#define BX_DEBUGGER_GUI 0" >>confdefs.h
    
      fi
    fi
    

    可以進(jìn)一步去查看gui_debugger標(biāo)志和bx_have_gtk_version標(biāo)志的賦值邏輯衷戈,此處不詳細(xì)贅述,最終結(jié)果為需要安裝gtk2.0和gtk3.0的開發(fā)庫层坠,命令如下:

    sudo apt install libgtk-3-dev

    sudo apt install libgtk2.0-dev


附錄

  1. bochs官方鏈接:https://bochs.sourceforge.io/

  2. 本文所使用的環(huán)境

    軟件名稱 軟件版本
    Linux操作系統(tǒng) Ubuntu 22.04 LTS(X64)
    gcc 11.4.0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末殖妇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子破花,更是在濱河造成了極大的恐慌谦趣,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旧乞,死亡現(xiàn)場(chǎng)離奇詭異蔚润,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)尺栖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門嫡纠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人延赌,你說我怎么就攤上這事除盏。” “怎么了挫以?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵者蠕,是天一觀的道長。 經(jīng)常有香客問我掐松,道長踱侣,這世上最難降的妖魔是什么粪小? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮抡句,結(jié)果婚禮上探膊,老公的妹妹穿的比我還像新娘。我一直安慰自己待榔,他們只是感情好逞壁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锐锣,像睡著了一般腌闯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雕憔,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天姿骏,我揣著相機(jī)與錄音,去河邊找鬼橘茉。 笑死工腋,一個(gè)胖子當(dāng)著我的面吹牛姨丈,可吹牛的內(nèi)容都是我干的畅卓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蟋恬,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼翁潘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起歼争,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沐绒,沒想到半個(gè)月后俩莽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乔遮,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蹋肮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坯辩。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖漆魔,靈堂內(nèi)的尸體忽然破棺而出坷檩,到底是詐尸還是另有隱情,我是刑警寧澤矢炼,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布僧家,位于F島的核電站,受9級(jí)特大地震影響裸删,放射性物質(zhì)發(fā)生泄漏八拱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一涯塔、第九天 我趴在偏房一處隱蔽的房頂上張望肌稻。 院中可真熱鬧,春花似錦匕荸、人聲如沸爹谭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诺凡。三九已至,卻和暖如春践惑,著一層夾襖步出監(jiān)牢的瞬間腹泌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工尔觉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凉袱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓侦铜,卻偏偏與公主長得像专甩,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钉稍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容