本书的实验例子可运行在三种环境中.

Bochs模拟器: 任何支持x64的版本都可以

VMware虚拟机

真实机器

本书很多实验只能在真实机器上运行, Bochs和VMware并不能支持那些功能.

问题1: 使用软盘还是U盘? 甚至是硬盘?

在Bochs中可以使用软盘或硬盘的映像(image)文件, 在真实机器上我们可以使用U盘作为介质启动计算机运行实验程序. 本书例子运行使用以下三种介质.

⓵ 软盘映像: 统一使用文件名为demo.img, 可以在bochsvmware里运行.

⓶ 硬盘映像: 统一使用文件名为c.img, 可以在bochs里运行

⓷ U盘: 将生成的硬盘映像直接写入U盘, 在真实机器上运行.

因此, 本书例子最终生成两个映像文件: demo.img用于bochs或vmware里运行; c.img用于在bochs或真实机器上运行.

使用FAT32文件格式

在使用软盘启动时,我们直接将boot代码写在MBR里。而当使用U盘启动时会遇到一些麻烦,我们的代码写在MBR里, 某些机器将启动不了.

因此, 当使用U盘在真实机器上测试时, 将使用FAT32文件格式, 也就是硬盘映像c.img使用FAT32文件格式.

如下,对于软盘映像(demo.img)和硬盘映像(c.img), 两种文件组织形式

1. 实验的运行环境

⓵ 软盘映像文件(demo.img): 将boot模块直接写入软盘的0扇区, 那么boot代码就是我们的MBR程序, BIOS将读软盘的0扇区(boot代码)到内存的7c00h位置.

⓶ 硬盘映像文件(c.img)和U盘: 将boot模块写入映像文件和U盘63号扇区, BIOS读取硬盘或U盘0扇区(这是FAT32文件格式启动盘生成的MBR代码)代码到内存7c00h, 然后再由这个MBR代码来从63号扇区读取我们的boot程序.

无论如何, boot程序最终是运行在7c00h区域里, boot程序的职责是负责加载后续的模式(包括lib16、lib32、lib64、protected和long模式)。

相关文章:

  • 2022-12-23
  • 2021-09-14
  • 2021-08-22
  • 2021-11-18
  • 2021-07-02
  • 2021-08-25
  • 2021-09-26
猜你喜欢
  • 2022-12-23
  • 2021-05-06
  • 2021-12-11
  • 2021-12-28
  • 2021-11-08
  • 2021-04-01
相关资源
相似解决方案