1. 调试分析 Linux 0.00 引导程序

1.1. 实验目的

  • 熟悉实验环境;

  • 掌握如何手写Bochs虚拟机的配置文件;

  • 掌握Bochs虚拟机的调试技巧;

  • 掌握操作系统启动的步骤;

1.2. 实验内容

1.2.1. 掌握如何手写Bochs虚拟机的配置文件

  • 简介 Bochs 虚拟机的配置文件

  • 如何设置从软驱启动

  • 如何设置从硬盘启动

  • 如何设置调试选项

1.2.2. 掌握Bochs虚拟机的调试技巧

  • 如何单步跟踪?

  • 如何设置断点进行调试?

  • 如何查看通用寄存器的值?

  • 如何查看系统寄存器的值?

  • 如何查看内存指定位置的值?

  • 如何查看各种表,如 gdtidtldt 等?

  • 如何查看 TSS

  • 如何查看栈中的内容?

  • 如何在内存指定地方进行反汇编?

1.2.3. 计算机引导程序

  1. 如何查看 0x7c00 处被装载了什么?

  2. 如何把真正的内核程序从硬盘或软驱装载到自己想要放的地方;

  3. 如何查看实模式的中断程序?

  4. 如何静态创建 gdtidt

  5. 如何从实模式切换到保护模式?

  6. 调试跟踪 jmpi 0,8 ,解释如何寻址?

1.3. 实验报告

通过仔细的调试与跟踪程序,完成以下任务:

  1. 请简述 head.s 的工作原理

  2. 请记录 head.s 的内存分布状况,写明每个数据段,代码段,栈段的起始与终止的内存地址

  3. 简述 head.s 5762 行在做什么?

  4. 简述 iret 执行后, pc 如何找到下一条指令?

  5. 记录 iret 执行前后,栈是如何变化的?

  6. 当任务进行系统调用时,即 int 0x80 时,记录栈的变化情况。

1.3.1. 评分标准

  1. 记录描述要详细完整,每题 15%,总共 90%

  2. 格式规范美观,10%