0x00 前言
自己动手写操作系统,自然需要一个承载程序的运行环境,这一章记录我使用bochs遇到的坑,凌晨十二点半才填完坑。
这次记录的是使用bochs完整实现一个最简单的操作系统(其实根本不算操作系统,只是通过硬盘启动个mbr程序)。
0x01 bochs
1.安装
安装比较简单了,我没有使用源码安装,不想再折腾那个了,不然估计我就没戏能开始了。
yum install bochs bochs-x -y
需要装两个东东,后面一个如果不过,会报错,如果报错可以看我后面的错误记录。
2.配置文件
bochs需要一个配置文件,来描述硬件信息。文件里面有详细的注释。
配置文件就叫bochs.disk,名字可以随意,后缀是什么也无所谓。
###############################################################
# Configuration file for Bochs
###############################################################
# how much memory the emulated machine will have
megs: 32
# 对应真实机器的BIOS和VGA BIOS
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest
# 设置bochs使用的磁盘,软盘使用关键字floppya,硬盘使用disk
# 若有多个软盘,可写floppya,floppyb
#floppya: 1_44=a.img, status=inserted
# choose the boot disk.
# 默认是软盘,注释掉,改为disk
#boot: floppy
boot: disk
# where do we send log messages?
log: /tmp/bochsout.txt
# disable the mouse
mouse: enabled=0
# enable key mapping, using US layout as default.
keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#这一句是根据bximage生成的,后面会解释。
ata0-master: type=disk, path="/home/dante/workspace/os/hd60M.img", mode=flat, cylinders=121, heads=16, spt=63
3.制作虚拟硬盘
这里使用bochs配备的bximage。
root@dante-pc:/home/dante/workspace/os# bximage -hd -mode='flat' -size=