[轉載] 原文:https://blog.csdn.net/bychen623/article/details/53619084
Bochs:爲多平臺設計的x86架構模擬器/虛擬機
材料:
1、Ubuntu16.04LTS
2、Bochs-2.6.8
一、安裝步驟:
1、到官網上下載Bochs-2.6.8.tar.gz 下載鏈接
下載源碼而不直接使用sudo apt-get install vgabios bochs bochs-x bximage命令行安裝是因爲我們還要安裝Bochs的調試功能
2、解壓下載好源碼:
tar zxvf bochs-2.6.8.tar.gz
3、進入解壓後的目錄,然後執行命令行:
./configure --enable-debugger --enable-disasm
make
sudo make install
注意:
第1條是開啓Bochs的調試和反彙編功能;
安裝過程中可能出現一些問題,一般都是一些包和引用沒有安裝,下面是我遇到的幾個問題及解決方案:
錯誤1:fatal error: X11/Xlib.h: No such file or directory
解決方案:sudo apt-get install libx11-dev
錯誤2:fatal error: X11/extensions/Xrandr.h: No such file or directory
解決方案:sudo apt-get install xorg-dev
安裝成功後,在終端輸入bochs即可看到bochs的畫面了:
二、配置Bochs
安裝好Bochs後,接下來就需要對Bochs進行配置了,如果你不自己寫配置文件的話,執行bochs命令時Bochs會自己在當前目錄順序尋找以下文件作爲默認配置文件:
.bochsrc
bochsrc
bochsrc.txt
bochsrc.bxrc(僅對Windows有效)
我們可以通過ls -a命令看到Bochs安裝目錄下的所有文件:
然後可以進入到.bochsrc文件裏面查看自帶的配置信息
在這裏我們自己創建一個名叫bochsrc的配置文件,來告訴Bochs我們想要的虛擬機是什麼樣子的,下面就是我的配置文件:
#################################################################
# Bochs的配置文件
# Configuration file for Bochs
#################################################################
# how much memory the emulated machine will have
megs: 32
# filenameof ROM images
romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
# which disk image will be used 這個是啓動軟盤,我們虛擬出來的那個a.img
floppya:1_44=a.img, status=inserted
# choose the boot disk 確定啓動方式
boot: floppy
# where do we send log messages?
log: bochsout.txt
# disable the mouse
mouse: enabled=0
# enable key mapping ,using US layout as default
keyboard:keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map
注意這裏要確保romimage和vgaromimage這兩項的路徑是正確的,不然虛擬機啓動時會提示“couldn’t open ROM image file”的錯誤,還有Bochs的版本不一樣的話,鍵盤設置的方式也不太一樣。
接下來再來說一說如何創建鏡像,bochs創建鏡像是特別簡單的,只需要敲下面命令:
bximage
然後會有幾個選項(紅框框裏面的),第一個是選擇生成硬盤鏡像還是軟盤,我們選擇fd;第二個是鏡像大小選擇,1.44就可以了;第三個是命名,這裏隨便自己了。
三、最簡單的操作系統
那麼接下來,我們就要開始寫一個最簡單的操作系統了,這個代碼全由彙編完成,而且只有不到20行:
org 07c00h
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage: db "Hello, OS world!"
times 510-($-$$) db 0
dw 0xaa55
用NASM編譯一下這段代碼:
nasm boot.asm -o boot.bin
k然後在boot.asm的目錄下我們可以看到多了一個512字節的boot.bin文件,這個文件就要被我們寫入到軟盤裏面。這裏當然你可以寫入到一個真實的空白軟盤上,但是現在基本上都已經見不到軟盤了吧,所以我們這裏就用Bochs來虛擬出所需要的軟盤。
四、Bochs的使用
1.創建軟盤映像:
輸入sudo bximage,然後在問到要創建hd還是fd的時候,輸入fd,之後就一直回車默認就行了
2.這下我們通過虛擬,有了計算機,又有了軟盤,是時候將我們剛剛編譯好的引導扇區寫進軟盤了,Linux下自帶了dd命令可以很方便地進行軟盤讀寫:
sudo dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
一切準備就緒,是時候進行啓動Bochs了,進入到你的boot.bin所在目錄下,然後在終端輸入命令:
sudo bochs -f bochsrc
注意:這裏要特別注意bochsrc就是我們第二步寫的那個配置文件,因爲安裝Bochs成功之後可以在任意地方使用bochs命令了,但是要使用我們的配置文件bochsrc的話就需要加上絕對路徑,比如非Bochs安裝目錄下運行bochs的命令如下:
sudo bochs -f /home/bychen/downloads/bochs-2.6.8/bochsrc
輸入回車,
(注意:如果這裏出現是一個什麼都沒有的一片黑色的界面的話,那是因爲我們這裏是帶調試模式的Bochs,回車之後還需要一次回車,然後在出現Bochs提示符之後輸入“c”,再次回車)
看到Bochs界面上出現的“Hello, OS world!”
這就是一個最簡單的操作系統了~