实现操作系统引导程序的前置工作
一 . 用到的命令
1.nasm
nasm boot.asm -o boot.bin
实现汇编代码的编译
2.bximage
bximage a.img -q -fd -size=1.44
-fd是创建虚拟软盘,大小为1.44M
3.dd
dd if=boot.bin of=a.img bs=512 \count=1 conv=notrunc
将二进制虚拟码写入软盘
if:代码的是输入,编译后的结果
of:代表的是输出,输出到a.img
bs=512:写入的大小
conv=notrunc:连续的写入
实现步骤
1.在linux下实现一个.asm文件
在命令行总编译
nasm boot.asm -o boot.bin
2.创建虚拟软盘:
bximage
经过创建好得到a.img
3.将二进制机器码写到a.img中
二 . 虚拟机创建
三 . Bochs软件
特点:
1.专业模拟X86架构虚拟机
2.开源软件(c++实现)
3.支持操作系统开发中的断点调试
4.简单配置就可以运行大主流操作系统
安装注意:
1.确定bochs安装路径(which bochs)
2.安装vgabios(apt-get install vgabios)
3.确定vgabios的安装路径(whereis vgabios)
使用方法:
1.安装完毕后,直接运行
bochs->continue
补充说明:
1.bochs的运行需要启动文件,在当前路径下,准备bochsrc.txt文件,这个文件模板如下
###############################################################
# Configuration file for Bochs
###############################################################
# how much memory the emulated machine will have
megs: 32
# filename of ROM images
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/vgabios/vgabios.bin
# what disk images will be used
floppya: 1_44=a.img, status=inserted
# choose the boot disk.
boot: floppy
# where do we send log messages?
# log: bochsout.txt
# disable the mouse
mouse: enabled=0
# enable key mapping, using US layout as default.
keyboard_mapping: enabled=1, map=/usr/local/share/bochs/keymaps/x11-pc-us.map
填入bochs的两个romimage 文件路径,接着安装vgabios并找到vgaromimage:的所在路径。
接着填入map的值,map的值也在keymap的路径之下。
2.bochs调试常用命令
b 设置断点
c 继续执行
s 单步执行
info b 查看当前所有断点
info cpu 查看cpu状态
r 查看常规寄存器状态
x 查看内存中的数据
trace on 打印执行指令
trace-reg on 打印寄存器的数值
四.创建虚拟软盘
bximage
FreeDos操作系统进行对软盘的格式化