Foxdisk02-如何安装1

Foxdisk是基于BIOS中断或者直接访问硬件的,在设计的时候,第一个需要考虑的问题就是软件如何运行。这个问题很有趣,也是我在早期开发一个小的OS时试图搞清楚的最初的问题。

作为介于BIOS和操作系统间的一个小程序,我考虑了两种让Foxdisk运行的方法。其一是依靠硬件,将Foxdisk的引导代码放在PCI ROM或者以Option ROM的形式直接嵌入到BIOS中;另外一种是类似GRUB的方式,修改硬盘的MBR,实现Foxdisk的引导。我们首先从PC的启动过程谈起。

1)     PC启动的过程

Foxdisk02-PC_boot

图1 计算机启动过程

这是我理解的计算机的启动过程,显示了计算机从开机到进入操作系统的工作顺序。在上述的几个阶段,都可以抢得控制权,实现我们自己的代码。分别为:

阶段①:Call Rom,此阶段Option ROM可以抢得计算机的控制权。

阶段②:int19h,Option ROM软件可通过修改int 19h抢得控制权。另外,所有通过模拟可引导设备的Option ROM以使得BIOS能够引导其软件的方法均归于此阶段。

阶段③:LoadMBR,通过直接修改硬盘上的MBR区域抢得控制权。

阶段④:Load OS,在操作系统引导的时候抢得控制权。

阶段⑤:在操作系统层面安装软件。

阶段①~④均称为底层阶段,软件一般直接与计算机硬件打交道,或者通过BIOS中断访问硬件。阶段⑤称为上层阶段,软件借助于操作系统提供的各种API工作。

关于Option ROM的介绍,可以参考文档《BIOS Boot Specification》version 1.01。这是发布于1996年的文档,由intel、Phoenix和Compaq联合制定的规范。多年来,BIOS的启动过程也没有太大的变化,直到UEFI的出现。

具体的内容我不在博客中介绍,文档中介绍得很清楚。只要记住两点即可:第一,BIOS允许外设有自己的代码,用来实现一些特殊的功能,比如网卡的Option ROM、PCI设备的Option ROM;第二,只要依据一定的规范来写代码,BIOS会将控制权转移给Option ROM,这时整个计算机的控制权都在手中,理论上做什么都可以。

继续阅读“Foxdisk02-如何安装1”

3,547 total views, no views today