1.安装VMware虚拟机,版本16,下载地址,http://downdownxia.com/down/VMware16lsb.rar?key=fa4505a42b82aa65195be879fc84defd
2.安装centos系统,版本6.5,下载地址:magnet:?xt=urn:btih:046A679B7CEF709AEB141DF3A4D3F1E4DB460A99
3.安装bochs
3.1切换源 ,依次执行以下命令,
cd /etc/yum.repos.d/
mkdir bak
mv * bak/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://file.kangle.odata.cc/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://file.kangle.odata.cc/repo/epel-6.repo
yum clean all
yum makecache
3.2安装bochs前置依赖
yum groupinstall -y "Server Platform Development" "Development Tools"
yum install kernel-headers kernel-devel qt-devel gtk2-devel textinfo tcl-devel tk-devel
3.3下载bochs-2.6.8.tar.gz:Find out more about Bochs x86 PC emulator | SourceForge.net
tar -xf bochs-2.6.8.tar.gz -C /usr/src
ln -sv bochs-2.6.8 bochs
cd bochs
./ configure,完整命令如下:
./configure --with-x11 --with-wx --enable-debugger --enable-disasm \
--enable-all-optimizations --enable-readline --enable-long-phy-address \
--enable-ltdl-install --enable-idle-hack --enable-plugins --enable-a20-pin \
--enable-x86-64 --enable-smp --enable-cpu-level=6 --enable-large-ramfile \
--enable-repeat-speedups --enable-fast-function-calls \
--enable-handlers-chaining --enable-trace-linking \
--enable-configurable-msrs --enable-show-ips --enable-cpp \
--enable-debugger-gui --enable-iodebug --enable-logging \
--enable-assert-checks --enable-fpu --enable-vmx=2 --enable-svm \
--enable-3dnow --enable-alignment-check --enable-monitor-mwait \
--enable-avx --enable-evex --enable-x86-debugger --enable-pci \
--enable-usb --enable-voodoo
3.4安装报错,需要执行以下命令修改文件:
cp misc/bximage.cpp misc/bximage.cc
cp iodev/hdimage/hdimage.cpp iodev/hdimage/hdimage.cc
cp iodev/hdimage/vmware3.cpp iodev/hdimage/vmware3.cc
cp iodev/hdimage/vmware4.cpp iodev/hdimage/vmware4.cc
cp iodev/hdimage/vpc-img.cpp iodev/hdimage/vpc-img.cc
cp iodev/hdimage/vbox.cpp iodev/hdimage/vbox.cc
3.5编译bochs
make && make install
4.安装nasm
yum install nasm
5.编写boot引导程序boot.asm,目录在bochs下或其他目录均可,代码如下:
org 0x7c00 ;bios引导地址
BaseOfStack equ 0x7c00 ;栈基
Label_Start:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, BaseOfStack
;==========清屏
mov ax, 0600h ;清屏
mov bx, 0700h ;清屏
mov cx, 0 ;滚动范围左上角坐标0,0
mov dx, 0184fh ;右下角坐标(80,50)
int 10h
;==========设置焦点
mov ax, 0200h
mov bx, 0000h ;页码为0
mov dx, 0000h ;游标行列数为0
int 10h
;==========显示字符串:Start Booting......
mov ax, 1301h
mov bx, 000fh
mov dx, 0000h
mov cx, 17
push ax
mov ax, ds
mov es, ax
pop ax
mov bp,StartBootMessage
int 10h
;=========复位
xor ah, ah
xor dl, dl
int 13h
jmp $
StartBootMessage: db "whg'os Start Boot"
;=========填充0
times 510 - ($ - $$) db 0
dw 0xaa55 ;结束标志
6.将boot.asm进行编译
nasm boot.asm -o boot.bin
7.使用bximge创建虚拟软盘,目录在bochs下或其他目录均可,使用命令:bximge,然后依次选择1,fd,1.44M,boot.img
8.使用dd命令将boot.bin引导程序强制写入到引导扇区中:
dd if=boot.bin of=./boot.img bs=512 count=1 conv=notrunc
9.运行bochs,进入bochs文件夹,执行以下命令,依次选择6,c(回车),即可看到结果。
bochs -f .bochsrc
结果: