安装 bochs
直接使用 brew 进行安装,若没有下载 brew 工具, 参见 https://brew.idayer.com
brew install bochs
==> Fetching dependencies for bochs: libtool and sdl2
会自动安装 libtool 和 sdl2 工具,安装成功后默认安装目录为: /usr/local/Cellar/bochs/2.8
创建软盘
首先进入项目目录,输入如下命令
bximage
编写汇编代码
代码如下,存储为 boot.asm 文件
org 7c00h
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage: db "Hello OS World"
times 510 - ($-$$) db 0
dw 0xaa55
编译汇编代码
我们使用 nasm 来汇编 boot.asm 生成操作系统的二进制代码。首先需要安装 nasm
brew install nasm
进入项目目录,并使用如下命令生成 boot.bin文件
nasm boot.asm -o boot.bin
将编译后的代码写入软盘中
使用如下命令,把 bin 文件(512 字节)写入 a.img 软盘中
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
注意 boot.bin 和 a.img 文件必须在项目目录下
配置启动信息
找到bochs安装目录下的配置路径:/usr/local/Cellar/bochs/2.8/share/doc/bochsrc-sample.txt
关于配置路径问题,标志就是找到bochsrc-sample.txt该文件。不同的电脑、不同的bochs版本可能会有区别。
拷贝 bochsrc-sample.txt 文件,并重命令为 bochsrc, 加入如下配置
display_library: sdl2
romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastboot
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
mouse: enabled=0
floppya: 1_44=a.img, status=inserted
boot: floppy
log: bochsout.txt
logprefix: %t%e%d
# memory: guest=512, host=256, block_size=512
启动bochs
输入启动命令 bochs -f bochsrc
结果显示
项目目录结构如下
项目地址