实验环境:
· ubuntu18.04
· qemu
· nasm
1.安装需软件
qemu安装,请参考
nasm安装
sudo apt-get install nasm
2.编写引导扇区代码a.asm
1 | org 07c00h ; 告诉编译器程序加载到7c00处 |
代码分析
1 | $表示当前行被汇编后的地址 |
3.生成启动镜像
1 | nasm a.asm -o a.bin |
4.使用QEMU
引导软盘映像文件a.img
1 | ./qemu-system-i386 -hda /home/hys/code/6828/src/orange/ch1/a.img # 根据自己情况适当修改文件路径 |
启动后效果如下:
至此一个简单的”操作系统”已经完成。
5.调试我们写的引导扇区代码
启动qemu,等待gdb连接
1
qemu-system-i386 -hda /home/hys/code/6828/src/orange/ch1/a.img -gdb tcp::26000 -S
启动gdb
gdb -n -x .gdbinit
,设置断点,观察寄存器的值p/x $cs
显示寄存器cs
的值
.gdbinit
文件内容:设置gdb
连接到时QEMU
并调试早期启动的16位代码
1 | set $lastcs = -1 |
gdb相关命令请查看http://visualgdb.com/gdbreference/commands/
Ref:
1.https://123xzy.github.io/2019/03/08/MIT-6-828-Lab-Guide/
2.Orange’S:一个操作系统的实现
3.qemu
4.gdb
5.Intel 80386 Reference Programmer’s Manual
7.lab1
8.Interrupts
9.https://en.wikipedia.org/wiki/INT_10H
10.http://visualgdb.com/gdbreference/commands/x