1. Mac安装bochs
需要安装homebrew
使用homebrew安装bochs
brew install bochs
bochs 使用 sdl2 渲染,bochs在Mac上可视化依赖sdl 或者 sdl2,使用homebrew安装sdl 或者 sdl2
brew install sdl2
我的电脑安装bochs后,bochs的目录是在 /opt/homebrew/Cellar/bochs/2.7
2.配置启动信息
终端输入 vim ~/.bash_profile 回车 或者直接找到 .bash_profile,添加下面两行配置(根据自己实际bochs安装位置),不存在 .bash_profile的话,直接touch .bash_profile
export BXSHARE="$HOME/opt/homebrew/Cellar/bochs/2.7/share/bochs"
export PATH="$PATH:$HOME/opt/homebrew/Cellar/bochs/2.7/bin"
再执行 source .bash_profile 让Mac重新加载配置
找到bochsrc-sample.txt 拷贝一份,然后修改名称为bochsrc.txt
我的电脑目录是在 /opt/homebrew/Cellar/bochs/2.7/share/doc/bochs/bochsrc-sample.txt
修改 bochsrc.txt 文件:
#图形模式设置,这两个一起开启
magic_break: enabled=1
display_library: sdl2
#bios 和 vga bios
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
#1.44=磁盘镜像位置 boot.img 跟下面创建磁盘时的磁盘名字保持一致
floppya: 1_44=boot.img, status=inserted
#从软盘启动
boot: floppy
#输出日志
log: bochsout.txt
#置鼠标不可用
mouse: enabled=0
#键盘配置
keyboard: keymap=#$BXSHARE/keymaps/x11-pc-us.map
#内存容量
megs: 32
文件中有2行需要注释掉,行前面加 '#' 如下
#sound: driver=default, waveout=/dev/dsp. wavein=, midiout=
...
#ata0-master: type=disk, mode=flat, path="30M.sample"
3.创建磁盘
打开终端,cd到bochs目录下的bin文件夹,输入 bximge 回车,
第一步:输入 1 回车(创建磁盘或者如软盘)
第二步:输入 fd 回车 (选择软盘)
第三步:直接回车 (默认1.44M就行)
第四步:输入 boot.img 回车 (磁盘名称,注意要和bochsrc.txt配置的挂载磁盘名称一致)
在bin文件夹下就会多出来一个 boot.img,大小1.5MB
4. 编写测试汇编代码,在屏幕输出hello world 来测试模拟器。
这里讲一下,mac自带的nasm,如果版本过低,可以用brew update nasm 试试升级一下
新建一个文件夹 cd进入,vim boot 按键盘上的i (英文输入法下),随便输入一些内容,然后esc再control + z退出,修改文件名为boot.asm,右键文本编辑打开,粘贴下面代码到boot.asm文件
org 0x7c00
jmp entry
db 0x90
entry:
mov ax,0
mov ss,ax
mov sp,0x7c00
mov ds,ax
mov es,ax
mov si,msg
putloop:
mov al,[si]
add si,1
cmp al,0
je fin
mov ah,0x0e
mov bx,15
int 0x10
jmp putloop
fin:
hlt
jmp fin
msg:
db 0x0a,0x0a
db "hello world!"
db 0x0a
db 0
times 510 - ($-$$) db 0
dw 0xaa55
5. 编译汇编代码
编译:
nasm boot.asm -o boot.bin
把生成的boot.bin放到bochs目录下的bin文件夹
6. 将编译后的代码写入软盘中
cd到bochs目录下的bin文件夹
将引导程序写进软盘镜像:
dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc
7. 启动bochs
启动命令是:bochs -f 配置文件的绝对路径
绝对路径 :
bochs -f /opt/homebrew/Cellar/bochs/2.7/share/bochs/bochsrc.txt
相对路径:cd到bochsrc.txt的目录
bochs -f bochsrc.txt
然后选择以什么方式启动,这里默认就行 模拟器
启动之后,输入: c 然后回车
8.安装和启动qemu
使用如下命令安装 qemu:brew install qemu
使用命令检查 qemu 是否安装成功:brew info qemu
启动 img 镜像:
qemu-system-i386 -L [BIOS、VGA BIOS、keymaps 的目录] -m 32m -rtc base=localtime -vga std -hda [img路径]
参数解释:
-L:设置 BIOS、VGA BIOS、keymaps 的目录。
-m:设置客户机的内存。
-rtc:设置时间。
-vga:显示器相关。
-hda:指定镜像的路径,最好是绝对路径,使用绝对路径麻烦相对少一些。
例如:
qemu-system-i386 -L /opt/homebrew/Cellar/bochs/2.7/share/bochs -m 32m -rtc base=localtime -vga std -hda /opt/homebrew/Cellar/bochs/2.7/bin/boot.img