Ubuntu下bochs虛擬機的安裝配置

Bochs是由Kevin Lawton 於1994年開始開發的一個用於完全模擬Intel的x86模擬器。開始它僅僅是一個商業產品,不過可以購買到它的源程序。2000年3月,Mandrakesoft買下了Bochs,並把它置於GNU

  LGPL下使之成爲一個開源程序。在2001年3月,Kevin把Bochs的家從bochs.com移到了

  bochs.sourceforge.net上了。

  Bochs是用C 開發的,它被設計成可以運行於多種主流平臺下,包括x86, PPC, Alpha,

  Sun和MIPS。它完全是靠軟件模擬來實現的。從啓動到重啓,包括PC的外設鍵盤,鼠標,VGA卡,磁盤,網卡等,全部都是有軟件來模擬的。這和其它的

  模擬器如VMware,plex86等有很大的區別。也正是由於Bochs完全是靠軟件來模擬整個PC環境,因此它非常的適合開發操作系統,這對廣大操作

  系統愛好者來說是一個福音。因爲有它,使得調試操作系統非常非常的容易,它自帶一個調試器bochsdbg,它可以從PC機剛啓動的那一剎那起就開始模

  擬,注意,這不是從讀取磁盤中的引導扇區那開始模擬。

  鑑於Bochs對操作系統設計的巨大作用,《操作系統:設計與實現》這一偉大的操作系統書籍所帶的光盤中就有Bochs軟件。而且就現在linux內核的調試也很多時候也要靠它哦。

  我很久很久以前曾在XXP上使用過它,不過自從轉到Ubuntu上後就沒怎麼動過這法寶了。最近正在學習操作系統課程,碰到很多很多抽象的概念,其實操作

  系統課本我已經看過多遍,但還是對那些概念沒有一個感性的認識,只是每次看時有些感覺過後就怎麼都記不起來了,鬱悶哪!

  這次我試驗了一下在Ubuntu安裝配置bochs,在網上抓的資料全都是獨立編譯的。其中感覺比較好的是這篇:[Bochs HOWTO:

  http://www.wangcong.org/articles/bochs.html

  ]。

  其實,在Ubuntu下只用一條命令就可以搞定:

              sudo apt-get install bochs

  但是,只是這樣還差很遠。我就遇到了這些問題,而網上卻少有相關的資料。由此,我把我遇到的問題及解決方法發出來以供大家參考。

  問題一、安裝bochs在terminal下輸入下列代碼

  sudo apt-get install bochs

  這樣安裝結束後,在我使用bochs的時候出現了下列錯誤:

  Event type: PANIC

  Device: [  ]

  Message: dlopen failed for module 'x': file not found

  這是由於在安裝的時候,少安裝了個bochs-x包

  這個包可以在

  http://packages.ubuntu.com/dapper/misc/bochs-x

  找到

  也可以在terminal下面輸入

  sudo apt-get install bochs-x

  這樣纔算安裝完畢了。

  問題二、啓動問題

  點進入系統後控制檯出現下面的提示:

Please choose one: [6] 6
00000000000i[  ] installing win32 module as the Bochs GUI
00000000000i[  ] using log file bochsout.txt
========================================================================
Event type: PANIC
Device: [MEM0 ]
Message: ROM: System BIOS must end at 0xfffff
A PANIC has occurred. Do you want to:
cont    - continue execution
alwayscont - continue execution, and don't ask again.
This affects only PANIC events from device [MEM0 ]
die    - stop execution now
abort   - dump core
Choose one of the actions above: [die]

  問題原因:

  在2.3.5以前的bochs使用的BIOS-bochs-latest是64k的,那個時候需要加上

  romp_w_picpath: file=BIOS-bochs-latest,address=0xf0000

  在2.3.5中的BIOS-bochs-latest更新了,變成了128k的,這個時候配置需要改爲

  romp_w_picpath: file=$BXSHARE/BIOS-bochs-latest

  解決方法:

  去掉配置文件中的address那個

  問題三、bochs的啓動配置文件bochsrc

  一般網上的資料都會提示你安裝好後會有如下工具:

/usr/bin/bochs  Bochs啓動程序
/usr/bin/bxp_w_picpath  Bochs帶的製作磁盤鏡像文件的工具
/usr/bin/bxcommit  把redolog放進flat磁盤鏡像文件中去的交互工具
/usr/share/doc/bochs/bochsrc-sample.txt  Bochs配置文件的例子
/usr/share/bochs/BIOS-bochs-*  ROM BIOS鏡像文件
/usr/share/bochs/VGABIOS-*  與VGA BIOS鏡像文件相關的文件
/usr/bin/bochs-dlx  啓動Bochs中DLX linux的程序
/usr/share/bochs/dlxlinux/  DLX Linux的目錄,包含它的磁盤鏡像文件和配置文件
/usr/share/bochs/keymaps/*.map  X11和SDL的keymap列表

  其實在終端安裝的卻沒有第四、第七和第八項,就連第二第三項也要另外安裝:

    sudo apt-get install bxp_w_picpath

    sudo apt-get install bxcommit

  所以,網上那些bochsrx在Ubuntu是運行不了的,就因爲這點,我搞近一個下午,開始我老以爲是配置文件不對呢。

  普通的bochsrc:

  romp_w_picpath: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000

  vgaromp_w_picpath: file=$BXSHARE/VGABIOS-lgpl-latest

  但是在Ubuntu下壓根就沒有VGABIOS-lgpl-latest

  例如:

lzel@lzel-desktop:/usr/share/bochs$ ls
BIOS-bochs-latest BIOS-bochs-legacy BIOS-qemu-latest keymaps
lzel@lzel-desktop:/usr/share/bochs$

  後來我才發現,從終端下安裝bochs時它把VGA專門作爲了一個程序安裝在了/usr/share/vgabios/中了。

lzel@lzel-desktop:/usr/share/bochs$ ls /usr/share/vgabios/

vgabios.bin vgabios.cirrus.bin vgabios.cirrus.debug.bin vgabios.debug.bin
lzel@lzel-desktop:/usr/share/bochs$

  這樣配置文件就要改爲:

 romp_w_picpath: file=$BXSHARE/BIOS-bochs-latest
megs:4
floppya: p_w_picpath=./boot.img,status=inserted
vgaromp_w_picpath: file=/usr/share/vgabios/vgabios.bin
boot:a                                                                                                
log:out.bochs

OK,這樣應該差不多了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章