当前位置:Linux教程 - Linux - 全面了解Linux加载器

全面了解Linux加载器

LILO的引导机制
  计算机的启动是由BIOS控制的,在完成对硬盘配置的测试及初始化之后,便会根据指定的引导信息,寻找加载硬盘、软盘或光盘的主引导记录MBR(Master Boot Record)或引导扇区。只要把LILO安装在MBR或活动分区上,就能取得引导控制权,由LILO完成各种引导过程。系统出现LILO boot:提示符后,按TAB键,显示可引导选择项列表,然后输入选项或直接回车选择缺省配置。

  与OS/2 Boot Loader和Partition Magic引导加载程序相比,LILO的灵活性更高,其引导方式也更加丰富:

  1.当LILO被安装在MBR上时,它能引导任意硬盘任一分区上的任一操作系统。

  2.如果选择引导Linux,它还可以直接传递参数到系统内核。

  3.能引导不同配置、不同版本的Linux内核。

  4.能从网络引导Linux系统。

LILO的配置方法
  LILO的配置一般有两种方法:命令配置和手工配置。通常情况下,在安装Linux系统时就可以根据画面提示完成LILO的安装配置,从而解决多重系统的引导问题。如果对系统的分区、设备配置不是很熟悉,或不能正确理解安装画面的英文提示,可能无法正确安装配置。如果安装配置LILO失败,也不必大惊小怪,可使用手工配置来解决。手工配置的方法是用vi编辑命令来编辑/etc目录下的lilo.conf文本文件,然后在超级用户下执行lilo命令,将配置信息写入MBR即可。

常见问题及解决方法
  1.系统安装完成后重新启动系统时,屏幕没有任何提示。出现这种情况说明LILO没有正确安装到MBR。

  解决方法:用软盘启动系统,检查/etc/lilo.conf文件配置是否正确。如果不正确,可用vi编辑命令修改lilo.conf文件,然后再执行lilo命令将配置写入硬盘引导区。至于配置细节,可从以下配置实例来说明。

  例一.C盘为IDE接口,D盘为SCSI接口,引导文件在IDE硬盘上,根文件在SCSI硬盘上,其配置文件/etc/lilo.conf的内容为:

  # lilo configuration file

  boot=/dev/had(设定boot所在的位置为IDE的MBR)

  delay=100(启动一个引导的等待时间)

  vga=normal(显示模式为标准VGA)

  Prompt(响应键盘输入)

  imgae=/vmlinuz(指定linux的核心文件)

  root=/dev/sda1(指定linux所在硬盘及分区)

  lable=linux(为系统起一个名字,以供引导时选择)

  read-only

  other=/dev/hda1(其他可引导设备)

  label=dos(其他系统为DOS)

  table=/dev/had(设定DOS所在分区)

  例二.C盘和D盘均为SCSI接口,引导文件在C盘上,根文件在D盘上,光驱接口为SCSI,其配置文件/etc/lilo.conf的内容为:

  #lilo configuration file

  boot=/dev/sha

  delay=100

  vga=normal

  prompt

  image=/vmlinuz

  root=/dev/sdb1

  label=linux

  read-only

  other=/dev/sda

  label=dos

  table=/dev/sda1

  2.系统启动时出现L XXXX,其中XXXX为错误代码,范围是0x00-0x80。出现这种画面时,可察看磁盘错误代码,尔后根据错误代码采取相应的措施。例如错误代码0x04表示扇区没有找到,比较典型的原因是硬盘C、H、S参数(该参数可用FDISK查到)不匹配。可以重新调整硬盘参数,再执行LILO。

  3.系统启动时出现LILO后死机。出现这种情况一般有以下几种原因:(1)硬盘C、H、S参数不匹配,重新调整硬盘参数后执行LILO;(2)使用双SCSI硬盘,SCSI ID号设置不当,会出现系统自检为第二硬盘,而在安装系统时Linux认为是第一硬盘,故在系统启动时不能正确装入。以笔者使用的AHA2940SCSI卡为例,如果将两块硬盘的ID号都设置在ID7以前,就会出现上述情况。正确的设置方法是将第一块硬盘设为ID0,第二块硬盘设为ID8,这样就不会出现上述情况了。

  4.系统引导时能出现LILO,但在引导过程中找不到硬盘。这种情况一般是因为Linux的主分区在1024磁道以外,解决的方法是重新安装Linux系统,将主分区调整到1024磁道以内。

  5.系统中既有IDE硬盘又有SCSI硬盘,Linux的根分区建在SCSI硬盘上,有些主板在系统引导时出现LILO后死机。出现这种问题是因为系统不能确定是IDE为先还是SCSI为先,这时可在lilo.conf文件加上以下语句解决:

  disk=/dev/sda

  bios=0x80(指定SCSI硬盘为第一硬盘)

  sectors=63

  heads=255(CHS的值根据实际填写)

  cylinders=1216

  disk=/dev/had

  bios=0x81(指定IDE硬盘为第二硬盘)

  sectors=63

  heads=128(CHS的值根据实际填写)

  cylinders=821

LILO的卸载
  在反复执行LILO进行引导系统地安装过程中,要使LILO正确、可靠的安装,每次最好对上次的安装进行卸载。LILO的卸载方式一般有两种,一种是DOS方式卸载,具体步骤是在DOS命令行下执行fdisk/MBR,即可将LILO卸下;第二种是在Linux系统下卸载。LILO在安装引导扇区时,一般会在/etc目录下保留一个原引导扇区的备份文件boot.xxyy,其中xxyy是该引导设备的主、次设备号(Major/Minor Number),Linux的各种设备均放在/dev目录下,利用ls -l命令就可获得各种设备的主次设备号。IDE接口硬盘的主设备号一般为03,相应的备份文件为boot.0300。SCSI硬盘的主设备号一般为08,相应的备份文件为boot.0800。使用下面的命令即可卸下IDE或SCSI硬盘的LILO:

  dd if=/boot/boot.0300 of=/dev/had bs=446 count=1

  dd if=/boot/boot.0800 of=/dev/sda bs=446 count=1

建立MBR的备份
  为了防止引导区被破坏而无法引导系统,可建立一个MBR的备份(包括分区表),具体操作方法是:

  dd if=/dev/had of=/dev/MBR bs=512 count=1

恢复MBR
  当MBR被破坏,系统不能正常引导时,可用软盘引导系统,在LILO提示符下输入:

  mount root=/dev/sda1

  将Linux引导起来,尔后执行:

  dd if=/boot/MBR of=/dev/had bs=446 count=1

  执行以上命令恢复MBR,不包括分区表,如果要连分区表一起恢复,则让bs=512。