安裝步驟
環(huán)境?
CentOS release?7.5.1804
gcc version 4.8.5?
依賴庫安裝
sudo yum install gtk2 gtk2-devel
sudo yum install libXt libXt-devel
sudo yum install libXpm libXpm-devel
sudo yum install SDL SDL-devel
( sudo yum install libXrandr-devel.x86_64 )
( yum install xorg-x11-server-devel )
源碼配置和安裝
獲取和解壓
源碼地址:https://sourceforge.net/projects/bochs/files/bochs/2.6.8/
wget?https://sourceforge.net/projects/bochs/files/bochs/2.6.8/bochs-2.6.8.tar.gz
tar xvfz bochs-2.6.8.tar.gz
配置
./configure --enable-ne2000 \
? ? ? ? ? --enable-all-optimizations \
? ? ? ? ? --enable-cpu-level=6 \
? ? ? ? ? --enable-x86-64 \
? ? ? ? ? --enable-vmx=2 \
? ? ? ? ? --enable-pci \
? ? ? ? ? --enable-usb \
? ? ? ? ? --enable-usb-ohci \
? ? ? ? ? --enable-e1000 \
? ? ? ? ? --enable-debugger \
? ? ? ? ? --enable-debugger-gui \
? ? ? ? ? --enable-disasm \
? ? ? ? ? --with-sdl \
? ? ? ? ? --with-x11
錯(cuò)誤解決方案
若遇到以下問題
checking how to run the C++ preprocessor...
/lib/cpp
configure: error: in `/home/shupan/source/bochs-2.6.8':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
缺少相關(guān)頭文件赫粥,執(zhí)行以下命令解決
sudo yum install glibc-headers?gcc-c++
若出現(xiàn)以下錯(cuò)誤
sdl.cc:36:17: fatal error: SDL.h: No such file or directory
#include <SDL.h>
? ? ? ? ? ? ? ? ^
compilation terminated.
則執(zhí)行:??sudo yum install SDL SDL-devel
出現(xiàn)其他錯(cuò)誤類似次员,yum search xxx, 然后再安裝
安裝
sudo make? && make install
添加環(huán)境變量
export BXSHARE=/usr/local/share/bochs
(可寫入到~/.bash_profile中纸泄,記得source)
若安裝在非系統(tǒng)目錄下基公,則還需添加PATH環(huán)境變量,如
export PATH="$PATH:$HOME/opt/bochs/bin"
鏡像文件制作
執(zhí)行:bximage?
依次鍵入:
1
fd
Enter
boot.img
匯編程序編寫
vim boot.asm
org 07c00h ;告訴編譯器,程序加載到內(nèi)存地址07c00h
? ? mov ax,cs
? ? mov ds,ax
? ? mov es,ax
? ? call DispStr? ? ;調(diào)用顯示字符串例程
? ? jmp $? ? ? ? ? ;無限循環(huán)
DispStr:
? ? mov ax,BootMessage
? ? mov bp,ax? ? ? ;es:bp = 字符串地址
? ? mov cx,16? ? ? ;cx = 字符串長度
? ? mov ax,01301h? ; ah = 13h,? al = 01h
? ? mov bx,000ch? ? ;頁號為0(bh = 0) 黑底紅字(bl = 0Ch,高亮)
? ? mov dl,0
? ? int 10h? ? ? ? ;10h號中斷
? ? ret
BootMessage:? db "Hello, OS World!"
times 510-($-$$)? db 0? ? ? ;填充剩下的空間宋欺,使生成的二進(jìn)制代碼恰好為512字節(jié)
dw 0xaa55? ? ? ? ? ;MBR結(jié)束標(biāo)志
安裝nasm
sudo yum install nasm
編譯鏡像文件
nasm boot.asm -o boot.bin
dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc
bochsrc配置
vim .bochsrc? 【注意加載順序】
# how much memory the emulated machine will have
megs: 32
# filename of ROM images
# BIOS已經(jīng)修改轰豆,地址可以不加,可以根據(jù)文件大小進(jìn)行推斷齿诞,如里加地址要與文件大小相匹配
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
# what disk images will be used
# 配置鏡像名
floppya: 1_44=boot.img, status=inserted
# choose the boot disk.
boot: a
# where do we send log messages?
log: run.log
# disable the mouse, since Finix is text only
mouse: enabled=0
# enable key mapping, using US layout as default.
# 鍵盤的映射方式也改變了
keyboard: keymap=$BXSHARE/keymaps/x11-pc-us.map
加載執(zhí)行
bochs -f .bochsrc
注意:需要有對應(yīng)的庫和圖形界面酸休,若連接遠(yuǎn)程或者沒有對應(yīng)的圖形界面庫,則會(huì)報(bào)如下錯(cuò)誤(當(dāng)時(shí)采坑了好久)
>>PANIC<< Cannot connect to X display??
是本機(jī)祷杈,不是遠(yuǎn)程斑司。? 需要展示圖形界面。
選6
再按C (continue)繼續(xù)執(zhí)行但汞,展示如下界面宿刮,
展示出 “Hello,OS World!"