13.3.3 Boot Loader

如前所述,在启动的过程中,BIOS会把Boot Loaer读入内存,并把控制权交给它。MBR(硬盘启动)或软盘的启动扇区(软盘启动)内的代码就是Boot Loader或者Boot Loader的一部分。Boot Loader的实现是很复杂的,这也是我们什么要了解磁盘结构的原因。

实际上Boot Loader的来源有多种,最常见的一种是你的操作系统就是DOS,而Boot LoaderDOS系统提供的MS-Boot Loader。这种情况下比较简单:如果是软盘启动,Boot Loader会检查盘上是否存在两个隐含的系统文件(IBMBIO.COMIBMDOS.COM),若有,读出并送至内存中指定的区域,把控制权转移给IBMBIO这个模块,否则显示出错信息。如果是硬盘启动,Boot Loader将查找主分区表中标记为活动分区的表项,把该表项对应的分区的引导扇区读入,然后把控制权交给该扇区内的引导程序,这段程序也可以被看作是Boot Loader的一部分,它完成的工作与软盘的Boot Loader大致相同。

有时候一台计算机上所装的操作系统并不是DOS,或者并不仅仅是DOS。在这种情况,如果你是一个Linux的使用者,那么,你的计算机上现在就需要两套操作系统了(LinuxWindows),于是启动碰上了一个新问题—怎么能引导多个系统?

仅仅MS-DOSBoot Loader无法完成这种工作,你所要的是一个可以多重启动的工具,怎么办?幸运的是,有很多用来实现这一功能的软件(大部分是共享或自由软件)已经被编制了,如在DOS环境下启动LinuxLOADLINLinux下最常用的LILO等等,使用它们,你可以方便的从各种操作系统启动。不幸的是,你是一个操作系统的研究者,很可能你会需要编写自己的Boot Loader程序,所以,你必须了解这个程序的工作原理。由于LILO的强大功能和方便使用的特性,很多人来使用它,因此我们将在这里详细介绍LILO