《30天自制操作系统》是一本学习操作系统的好教材,它教我们怎么从建立引导区开始,从零实现一个操作系统。但是,实现书中例子的时候,我们需要不断将我们写好的操作系统代码写入软盘并且还要不断重启电脑来试验我们的代码,大家一定感到很头疼吧。
与其不停的重启,不如使用模拟器,向大家推荐一款模拟器qemu,它是由Fabrice Bellard编写,功能非常强大。那么下面我就来教大家使用qemu运行书中自制操作系统的方法吧。
一、安装qemu
我使用的是苹果笔记本,苹果有一个非常好用的程序管理工具叫brew,安装brew需要在终端中输入
sudo ruby -e "$(curl -fsSLhttps://raw.github.com/mxcl/homebrew/go)"
或者
curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1
然后使用brew安装qemu
sudo brew install qemu --env=std --use-gcc
如果成功,就会在/usr/local/bin/中创建出许多以qemu开头的文件,其中qemu-img和qemu-system-i386是对我们来讲最重要的两个文件。
二、自制操作系统
为了方便读者,我把书中前三天内容的精髓汇总在一个程序中,其中包含FAT软盘格式、从软盘中读扇区和在屏幕中输出文字。程序如下:
; 程序名称ipl.nas
; hello-os
; TAB=8
ORG 0x7C00 ; 程序加载到内存地址0x7C00后
; 以下的记述用于标准FAT12格式的软盘
start:
JMP entry
DB "HELLOIPL" ; 启动区名称(8字节)
DW 512 ; 扇区大小(512字节)
DB 1 ; 簇大小(1扇区)
DW 1 ; FAT起始位置
DB 2 ; FAT个数
DW 224 ; 根目录大小(224项)
DW 2880 ; 磁盘大小(2880扇区)
DB 0xf0 ; 磁盘种类
DW 9 ; FAT长度