电脑技术学习

深入解剖 LILO

dn001
前面的文章我们讲述了;LILO;的配置,本文我们将深入底层来讲述LILO;的技术细节,也将告诉读者怎样
去掉LILO;以及重新安装LILO。
前文我们讲述了LILO;配置的灵活性,本文我们将讲述LILO;的内部技术细节以及启动时的主要操作及其功
能,以帮助我们调整LILO;的安装。LILO;最大的好处就是它独立于文件系统,可以启动各种操作系统:
从Microsoft、OS/2、SCO;Unix、Unixware、PC-DOS到Linux等等。

LILO;能处理最多16个不同的映像,LILO;写入MBR;时就作为主引导程序,写入扩展分区的引导扇区时就是
第二引导程序。采用LILO,可以有多种组合方式启动系统。

我们先来看看引导过程,硬盘上的数据被准确的分配到对应的“磁道”和“扇区”,硬盘上的数据分布首
先是引导扇区,然后是文件分配表(FAT),接下来就是数据区。

硬盘分区时,被分为基本分区和扩展分区。基本分区可以作为引导分区,可以通过任何引导程序标记为可
引导。扩展分区可以分成好几个逻辑分区,很多的BIOS;不允许从逻辑分区启动。

Linux;最多支持4个基本分区,如果需要额外的分区,那么就要其中的一个基本分区变成扩展分区,然后在
扩展分区里面,划分逻辑分区。很重要的一点是有些逻辑分区的分区表不能被识别为设备的第一块。分区
表通常存放于分区的引导扇区,而且,通常只有整个盘的分区启动扇区用作引导扇区,称为主引导记录(MBR)。

LILO;可以用于以下情形:

1、第一硬盘的引导扇区。
2、软盘的引导扇区。
3、位于第一硬盘的Linux;文件系统分区上的引导扇区。

LILO;不能用于以下情形:

1、交换分区。
2、扩展分区中的逻辑分区的引导扇区。

所以,如果你在第二硬盘上安装了Linux;,而不能启动的话,可以采取在第一硬盘上建立;/boot;的办法来解决。

引导加载过程由很多程序组成,我们先来看看LILO;安装
时的各种不同程序:

MAP;安装程序:这个程序把LILO;的文件放到合适的位置
并记录这些信息(会在LILO;启动时用到),这个程序就是
/sbin/lilo;,每次配置文件有改动或者有新内核时,需要重新运行一遍。

/boot/*.*:其他LILO;启动时需要的文件存放在;/boot;目录下,map;文件是十分重要的,map;安装程序把新内
核的位置记录到这个文件。

引导加载程序:这个程序无需多言是最重要的部件了。它被
BIOS;调入内存,然后调用内核或者其他操作系统的引导扇区。

包含引导加载程序第一部分的引导扇区被调入内存,然后调用引导加载程序的第二部分,一般位于文件
/boot/boot.b,接下来就启动内核。

如果从可引导软盘启动的话,BIOS;把软盘的第一个扇区调入内存,一般,这个扇区包含一段程序来启动对应的
操作系统。和软盘一样,如果LILO;写入MBR;,那么,MBR;就被调入内存,执行对应的操作,给用户提示选择需
要引导的操作系统。具体地说,MBR;的头;446;个字节由引导加载程序利用,剩余的64;字节是分区表信息。还剩
下的两个字节就是分区激活标志“55;AA”;了。

在软盘上备份;MBR;信息:

bash#;dd;if=/dev/hda;of=/dev/fd0;bs=512;count=1;

恢复:(万一的情况下)

bash#;dd;if=/dev/fd0;of=/dev/hda;bs=446;count=1;

删除;LILO:

c:>;fdisk;/mbr;

恢复;LILO:

重新安装;Windows;以后,就会把LILO;干掉。无论什么原因
我们都应该知道怎样恢复LILO。

最好手头有一张安装;CD;,这年头,干净并且确实好用的
软盘太少了。所以不推荐你使用软盘。当然,如果你认为
你的软盘质量可靠,那么可以从CD-ROM
上建立应急启动盘:

dd;if=/cdrom/disks/rescue;of=/dev/fd0

在;DOS;下面,采用:

rawrite;image-name;a:

也可以在;www.bootdisk.com上下载一个,按照说明制作一张启动磁盘。

如果从;CD;启动的话,各个不同的Linux;版本有不同的方法进入应急状态。Red;Hat;启动后有一个应急模式,
SuSE;的话,需要先进入安装界面,然后按Ctrl+Alt+Fn;键找到shell;提示符,可以在这个提示符下来恢复。

下面介绍恢复步骤:

首先建立挂接点:
mkdir;mount;

然后把丢失的;Linux;挂接到这里:
mount;/dev/hda6;mount;

如果;/boot;位于另外的分区,
需要把他挂接到;mount/boot;目录下,例如:
mount;/dev/hda1;mount/boot;

使用;chroot;命令,把;mount;作为根目录,cd;/boot;
命令实际上进入的是;"mount/boot";目录:

chroot;mount;

运行;/sbin/lilo;,这样就把;LILO;安装回了;MBR,重新启动就会看到;LILO;提示符回来了。

标签: