深入理解 GNU GRUB - 02 boot.S 2.5 MBR过程模拟实现

来源:互联网 发布:自动发卡源码7az 编辑:程序博客网 时间:2024/06/07 16:55

转载注明出处(cppgp: http://blog.csdn.net/cppgp)

 

2.5 MBR过程模拟实现
现在,我们对系统引导的第一步已经有了一个详细的认识。为了更深一步的理解MBR和这些BIOS调用,提供一些测试题目:
  1)    开机后在屏幕上输出”Hello cppgp”,并在一定时间后重复输出。
  2)    开机后紧跟着读取第二个扇区,并且显示整个扇区512字节到屏幕上。
实现上述功能,编译生成512字节的IMG文件,设置虚拟机通过软盘引导,选择使用软盘镜像文件,设置镜像文件为我们编译生成的IMG文件,就可进行测试。
下文首先简单介绍虚拟机配置,然后实现上述的1) 、2)两个题目。


2.5.1 测试虚拟机配置
《自己动手写操作系统》第二章“搭建你的工作环境”,对虚拟机选择、工作平台搭建、测试引导程序等都有详细的描述。这里只简单介绍搭建Vmware Work Station V7.1.3测试虚拟机的过程(其他版本的Vmware Workstation类似)。如下:
  1)    选择菜单”File”->”New”->”Virtual Machine”创建一个新的虚拟机。在安装向导的帮助下可以简单完成。其中主要的选择如下:配置选择”Custom(advanced)”,硬件兼容版本选择”Workstation 6.5-7.x”操作系统安装选择”I will install the operating system later”,客户操作系统选择”Linux”,虚拟机名称为”grub-analysis”并定制你的保存路径,处理器配置默认,内存配置默认,网络连接默认,IO控制器类别默认,选择磁盘选择”Create a new virtual disk”,磁盘类型默认,磁盘大小默认(我们不会用到的),磁盘名称默认,单击”Finish”完成。
  2)    选中刚才创建的虚拟机,右键选择”Settings”,选择软盘”Floppy”,”Device Status”选择”Connect at power on”。”Connection”选择”Use floppy image file”,选择”Browse”确保选择自己生成的IMG文件。
  3)    选择菜单”Vm”->”Power”->”Power On to BIOS”,在Boot配置项中选择确保有软盘驱动器且是第一引导选择。默认配置便是这样,一般不用更改。
  4)    启动虚拟机,就会使用设定的IMG文件引导。


2.5.2 “Hello cppgp”的实现

 

在Linux下使用GCC编译、连接,使用objcopy提取IMG。如下:


2.5.4 读取并显示第二扇区内容

读者自己实现吧。或者以后抽时间写了添加在这里。