按照《操作系统真相还原》上的说法,其实验环境需要在电脑上安装虚拟机,然后在虚拟机上跑bochs
但是我非常不喜欢这种做法,还是在自己电脑上玩最爽快,所以使用MacBook安装bochs,并且搞个实验环境
安装bochs
brew install bochs
做一个简单实验
按照书上说需要设置gdbstub,但是经过我的实验和相关查询,在MacBook上不需要设置这个选项,因为好像可以直接使用MacBook的本地gdb
写一个汇编代码文件
SECTION MBR vstart=0x7c00
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov fs, ax
mov sp, 0x7c00
mov ax, 0xb800
mov gs, ax
mov ax, 0x600
mov bx, 0x700
mov cx, 0
mov dx, 0x184f
int 0x10
mov byte [gs:0x00], '1'
mov byte [gs:0x01], 0xA4
mov byte [gs:0x02], '2'
mov byte [gs:0x03], 0xA4
mov byte [gs:0x04], '1'
mov byte [gs:0x05], 0xA4
mov byte [gs:0x06], '1'
mov byte [gs:0x07], 0xA4
jmp $
times 510-($-$$) db 0
db 0x55, 0xaa
编译为bin文件
nasm -o mbr.bin mbr.S
创建一个硬盘镜像
bximage -hd=60M -mode="create" -q hd60M.img
bximage在MacBook上的用法和书中完全不一样,如果想学习使用,可以使用man工具来学习该命令的相关参数设置
把bin文件写入到该硬盘镜像中
dd if=mbr1.bin of=hd60M.img bs=512 count=1 conv=notrunc
创建一个想要模拟的虚拟机参数文件
# 设置虚拟机内存为32MB
megs: 32
# 设置BIOS镜像
romimage: file=$BXSHARE/BIOS-bochs-latest
# 设置VGA BIOS镜像
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
# 设置从硬盘启动
boot: disk
# 设置日志文件
log: bochsout.txt
# 关闭鼠标
mouse: enabled=0
# 打开键盘
keyboard: type=mf, serial_delay=250
# 设置硬盘
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="hd60M.img", mode=flat
运行查看结果
bochs -f bochsrc.disk
总结
《操作系统真相还原》这本书要比清华大学的那个操作系统课程讲的更加细致
《操作系统真相还原》这本书所使用的汇编语言不是mips汇编,清华大学那个课程使用的是mips汇编
《操作系统真相还原》这本书非常好,在MacBook上环境也非常容易创建,推荐学习