首页>计算机>Linux认证>学习教程>正文
Linux启动过程全接触

www.zige365.com 2008-8-19 17:16:47 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
自举程序及其功用

  BIOS调用一个专门的程序,这个程序的任务就是把操作系统的内核调入内存。这个程序就叫做自举程序(Boot Loader)。在我们继续下面内容之前,先来看一下启动系统的不同途径。

  1.从软盘启动Linux

  从软盘启动时,存储在软盘第一扇区的指令将被加载并执行。这个指令然后就会把其余的内核复制到内存中。

  Linux内核可以装在1.44MB的软盘里,不过为了减少磁盘占用量,它们都进行了压缩。这个压缩过程是在编译时完成的,而解压缩的过程则由自举程序完成。

  从软盘启动Linux时,自举程序要做的工作非常简单。它是一个位于/usr/src/linux-2.4.2/arch/i386/boot/bootsect.S的汇编语言文件。当我们编译Linux内核源代码,或者获取一个新的内核时,这个可执行的汇编代码就会被放在内核程序的前端。由此可见,要制作一个可启动的Linux软盘其实很简单。我们只要从磁盘的第一个扇区拷贝Linux内核,就可以创建一个可启动软盘。当BIOS加载软盘的第一个扇区时,它实际上拷贝的是自举程序。自举程序由BIOS调用(跳到物理地址为0x00007c00的位置),然后执行以下的操作:

  (1)把自已从地址0x00007c00移动到0x00090000;

  (2)使用地址0x00003ff4,创建“实模式”栈;

  (3)设置磁盘参数表,这里使用的是BIOS提供的软盘驱动程序;

  (4)通过调用BIOS程序显示“Loading”信息;

  (5)自举程序调用BIOS程序来加载软盘上内核的setup()函数,并把它放在起始地址为0x00090200的内存中;

  (6)接下来自举程序调用一个BIOS程序,这个程序从软盘加载剩余的内核程序,并将其放入起始地址为0x00010000(所谓的低地址)或者0x00100000(所谓的高地址);

  (7)然后,跳转到setup()函数。

  2.从硬盘启动Linux

  当系统从硬盘启动时,启动过程又有所不同。硬盘的第一个扇区叫做MBR(Master Boot Record),其上存储着分区表和一个小程序。这个程序加载存储由操作系统的第一扇区来开始启动。Linux是一个高度灵活且非常优秀的软件,所以在MBR里,它使用一个叫做LILO的程序来代替上述的那个程序。LILO允许用户选择所要启动的操作系统。

  一般来说,Linux是从硬盘启动的。这就需要不同的自举程序。在Intel系统里,用得最多的自举程序就是LILO。对于其它的体系结构,还存在着别的自举程序。LILO可以安装在MBR上(请注意:在安装Red Hat Linux时,有一个步骤会让用户选择把LILO安装到MBR或者引导扇区)或一个活动分区的引导扇区上。

  由于LILO太大,MBR无法容纳,所以它被分成两部分。MBR(或者磁盘分区的引导扇区)包含有一个小的自举程序,它被BIOS载入到起始地址为0x00007c00的内存中。然后,这个小程序再把自己移到0x0009a000地址处,接着设置实模式栈,最后加载第二部分的LILO自举程序(请注意:实模式栈地址范围是0x0009b000 到 0x0009a200)。

  第二部分的LILO会从磁盘读取所有可用的操作系统,并且给用户列出,以选择所要启动的系统。一旦用户选择完成,自举程序就会加载相应的扇区内容到内存中并且执行之。

  自举程序被BIOS调用时(跳到物理地址为0x00007c00处),要执行以下操作:

  (1)把自已从地址0x00007c00移动到0x00090000;

  (2)使用地址0x00003ff4,创建“实模式”栈;

  (3)设置磁盘参数表。这里使用的是BIOS提供的软盘驱动程序;

  (4)通过调用BIOS程序显示“Loading Linux”信息;

  (5)自举程序调用BIOS程序来加载软盘上内核的setup()函数,并把它放在起始地址为0x00090200的内存中;

  (6)接下来自举程序调用一个BIOS程序,这个程序从软盘加载剩余的内核程序,并将其放入起始地址为0x00010000或者0x00100000;

  (7)然后,跳转到setup()函数。

本新闻共4页,当前在第2页  1  2  3  4  

我要投稿 新闻来源: 编辑: 作者:
相关新闻
红旗linux认证工程师考题系统部份(3)
Wine让Windows上的软件集体移民
LinuxDNS的负载均衡及子域委派
用chkconfig轻松管理启动程序
如何设置Ubuntu做网关