本机环境
vmware + Centos7+linux内核版本3.10.0-1160.el7.x86_64+bochs-2.6.8
依赖环境的安装(需要在root用户下,不是在root用户下加入sudo)
Sudo yum -y install gtk2 gtk2-devel
Sudo yum -y install libXt libXt-devel
Sudo yum -y install l libXpm libXpm-devel
Sudo yum -y install SDL SDL-devel
Sudo yum -y install l libXrandr-devel.x86_64
Sudo yum -y install xorg-x11-server-devel
Sudo yum -y install gcc
Sudo yum -y install l gcc-c++
Bochs 安装(我的必须在虚拟机中重新下载bochs压缩包,copy到虚拟机中尝试几次均不成功,文件损坏)
下载地址 https://udomain.dl.sourceforge.net/project/bochs/bochs/2.6.8/bochs-2.6.8.tar.gz
解压安装包 sudo tar -zxvf bochs-2.6.8.tar.gz
创建新的目录去安装bochs mkdir bochs
进入解压后的文件夹 cd bochs-2.6.8
安装配置环境
./configure --prefix=/root/Ytest/bochs --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11 LDFLAGS='-pthread'(/root/Ytest/替换为自己的路径)
编译 make
安装 make install
进入新创建的bochs文件夹 cd bochs ,创建touch bochsrc.disk ,进入配置文件 vim bochsrc.disk 填入配置信息
megs : 32
romimage: file=/root/Ytest/bochs/share/bochs/BIOS-bochs-latest(路径替换)
vgaromimage: file=/root/Ytest/bochs/share/bochs/VGABIOS-lgpl-latest(路径替换)
boot: disk
log: bochs.out
mouse:enabled=0
keyboard:keymap=/root/Ytest/bochs/share/bochs/keymaps/x11-pc-us.map(路径替换)
ata0:enabled=1,ioaddr1=0x1f0,ioaddr2=0x3f0,irq=14
ata0-master: type=disk, path="hd60M.img", mode=flat,cylinders=121,heads=16,spt=63
#gdbstub:enabled=1,port=1234,text_base=0,data_base=0,bss_base=0
ESC键输入:wq退出
创建磁盘 bin/bximage
输入参数
1
hd
flat
60
hd60M.img
编写测试代码 cd ..(上一级目录)
Touch mbr.s
Vim mbr.s
SECTION MBR vstart=0x7c00
mov ax,0x0000
mov ss,ax
mov ax,0x7c00
mov sp,ax
mov ax,0x0600
mov bx,0x0700
mov cx,0x0000
mov dx,0x184f
int 0x10
mov ax,0x0300
mov bx,0x0000
int 0x10
mov ax,0x0000
mov es,ax
mov ax,message
mov bp,ax
mov ax,0x1301
mov bx,0x0007
mov cx,0x000c
int 0x10
jmp $
message db "Hello World!"
times 510-($-$$) db 0
db 0x55,0xaa
安装编译器 sudo yum -y install nasm
进行编译 nasm – o ytest mbr.s
写入磁盘 dd if=/root/Ytest/ytest of=/root/Ytest/bochs/hd60M.img bs=512 count=1 conv=notrunc
进入bochs cd bochs
运行 bin/bochs -f bochsrc.disk
回车后输入字符c 就可以看见Hello world!