《操作系统真象还原》环境搭建
部署工作环境
最近在学习《操作系统真象还原》,并打算跟随作者手写一个自己的os。我的实验环境跟作者稍有不同,在配置过程中遇到一些问题,如果你也在使用manjaro,也许我的一些经验能够帮到你。
安装软件
sudo pacman -S nasm
sudo pacman -S bochs
配置bochs
创建os文件夹,作为我的工作目录。拷贝一份bochs默认的配置文件到我的工作目录下
cp /usr/share/doc/bochs/bochsrc-sample.txt ~/os/bochsrc
作如下修改
解除这一行的注释
#mesg: 32
mesg:32
#ata0-master: type=disk, mode=flat, path="30M.sample"
注释掉这两行
#sound: driver=default, waveout=/dev/dsp. wavein=, midiout=
配置工作暂且一放,我们先编译一段汇编代码,在bochs上运行一下。来检验我们的配置情况
SECTION MBR vstart=0x7c00
mov ax,cs
mov ds,ax
mov es,ax
mov ss,ax
mov fs,ax
mov sp,0x7c00
mov ax, 0x600
mov bx, 0x700
mov cx, 0
mov dx, 0x184f
int 0x10
mov ah, 3
mov bh, 0
int 0x10
mov ax, message
mov bp, ax
mov cx,5
mov ax,0x1301
mov bx,0x2
int 0x10
jmp $
message db "1 MBR"
times 510-($-$$) db 0
db 0x55,0xaa
nasm支持多种输出文件格式,可以使用nasm-hf查看。默认是输出bin格式,如果想要将编译好的程序运行在linux系统中,应该输出elf格式,elf是linux的可执行文件的格式。因为我们这段程序一会要运行在无操作系统的环境中,因此直接输出成纯二进制格式,即bin格式
nasm -o mbr.bin mbr.S #当前汇编文件名mbr.S
创建虚拟硬盘
bximage #在交互模式下选择创建虚拟硬盘的参数
bochs提示我们将如下内容添加到我们bochsrc配置文件中
ata0-master: type=disk, path="hd60M.img", mode=flat
dd命令将编译好的mbr.bin 写入hd60M.img
dd if=mbr.bin of=hd60M.img bs=512 count=1 conv=notrunc
启动bochs
bochs -f bochsrc
按下c 显示如下,说明环境搭建成功!!