《ORANGE’S:一个操作系统的实现》上环境建议使用的是Linux,但是我日常使用的是Windows,所以我选择在Windows下搭建开发环境,没有事情的时候,也可以学习一下,比较方便,这篇文章记录一下环境的搭建。
目录
安装NASM
NASM汇编器地址:https://www.nasm.us/,进入选择下载就可以了,现在安装的时候稳定版是2.16.01。点击进入,根据操作系统进行选择对应的NASM,我的系统是64位的,所以现在选择win64,点击进入,可以看到有 .exe 和 .zip 两种方式,我这里选择 .zip 的文件。
将下载的NASM汇编器的压缩文件解压并且配置环境变量。环境变量配置完成后,打开命令行窗口,输入 nasm -v 命令,查看配置是否正确。如果配置正确,会显示NASM汇编器的版本。
安装 dd 命令工具
在这本书中,Linux下使用 dd 工具将文件写到空白软盘的扇区,Windows下使用的是 rawrite2 工具。因为这本书建议的开发环境是Linux,所以之后的内容使用的是 dd 工具。为了使用方便,在网上找到Windows版本的dd工具,网址:chrysocome.net - dd for windows,进入网站后,向下查看网页,可以看到dd版本的下载列表,选择最新版下载就可以。
将下载的 dd 命令工具的压缩文件解压并且配置环境变量。环境变量配置完成后,打开命令行窗口,输入 dd --version 命令,查看配置是否正确。如果配置正确,会显示 dd 命令工具的版本。
安装虚拟机Bochs
虚拟机Bochs的官方网站:bochs: The Open Source IA-32 Emulation Project (Home Page),下载地址:Bochs x86 PC emulator download | SourceForge.net。Windows下载的虚拟机Bochs是一个 .exe 的可执行文件,双击打开,按照提示进行安装就可以了。安装完成后,打开“开始”菜单,可以看到虚拟机Bochs的图标,表示安装成功。安装成功后,将Bochs的安装路径配置到环境变量中,因为后面需要使用该虚拟机提供的 bximage.exe 进行磁盘创建。
测试环境
按照书上目前看到的内容已经完成了开发环境搭建,现在测试一下环境是否搭建成功。编写书上的程序进行测试,以此了解流程,代码内容如下:
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 ; 结束标志
将这段代码保存到文件 boot.asm,然后使用NASM编译该代码:
nasm boot.asm -o boot.bin # nasm ASM源代码文件 -o 输出文件
现在得到了一个512字节的boot.bin,然后我们需要使用 dd(软盘绝对扇区读写工具) 命令工具将这个文件写到一张空白软盘的第一个扇区。
首先,使用Bochs虚拟机提供的 bximage.exe 创建一张软盘,将该软盘文件创建在 boot.asm 代码文件所在的路径下。直接在命令行窗口中输入 bximage 命令,然后根据提示选项进行选择就可以了。
然后使用 dd 命令将 boot.bin 写入到 boot.img 镜像中,命令如下:
dd if=boot.bin of=boot.img bs=512 count=1
写入完成后,启动Bochs虚拟机,设置 boot.img 为启动镜像。
经过上述一系列操作,截止到书上看到的内容,已经将软件都安装好,并且可以使用了。
公众号