Mac下编译运行Bochs
首先要安装X11,检查X11是否安装的最简单方式就是SpotLight里面输入X11,如果没有安装会提示安装。
装完后可能需要重启一下,否则等会启动虚拟机的时候可能出现can not connect to x display的错误。
编译
安装完成后下载Bochs的源码,我这边下的是2.6.8: 下载地址:http://mac.softpedia.com/get/System-Utilities/Bochs.shtml
下载完成后解压,然后bash切换到bochs源码的目录,依次运行:
./configure --with-x11
make
make install
这样就安装完成了。
装载
那么怎样去装载磁盘运行呢?还是在当前目录下,输入:
bximage
进入下图后,输入1为虚拟机创建一个软盘:
输入fd
软盘的大小默认就好,回车
软盘名字默认叫做a盘就行,回车
到此完成软盘的创建和装载。
刻录
这时候把我们的引导程序写入到a.img,运行
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
boot.bin是我生成的引导程序。
配置虚拟机的基础参数
在当前目录新建bochsrc文件,输入如下内容:
megs: 32
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
floppya: 1_44=a.img, status=inserted
boot: floppy
log:bochsout.txt
mouse:enabled=0
keyboard:keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map
display_library: x
我这边安装完后的bochsrc的文件在/usr/local/share/bochs下,然后相关的文档在/usr/local/share/doc下(此目录下有个默认的配置文件,如果运行错误,请参考此配置文件)
运行
输入:
bochs -f bochsrc
以当前而配置文件运行。
选择6开始模拟器。
引导文件源码
org 07c00h ;告诉编译器程序加载到7c00处
mov ax, cs
mov ds, ax
mov es, ax
call DispStr ;调用显示字符串例程
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax ;ES:BP=串地址
mov cx, 16 ;CX=串长度
mov ax, 01301h ;AH=13,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 ;填充剩下的空间,使生成二进制代码恰好为512字节
dw 0xaa55 ;结束标志
我这边用的是nasm编译器编译的。