实战lilo管理工具


lilo是linux 的引导管理程序,它和OS/2、NT的BootManager,以及许多人用的syste
m commander的作用类似,当你在这个提示符下按下Tab键的时候,它会显示出当前可以
引导的系统:

lilo:

dos smplinux

实际上,lilo就是一小段引导程序,可以位于任何有可能用来引导系统的位置,但是
通常我们把它放在硬盘的主引导区,这个概念对任何与病毒打过交道的用户都应该是非
常熟悉的。系统自检完毕之后,就会从硬盘上读入主引导区的内容,于是,lilo接管了
系统的控制权,可以引导Linux了。理论上,许多书籍建议你用软盘引导服务器以便避免
可能的破坏,这倒是那种“教科书的解决方案”的一个典型。

你可以看到在上面显示出了多个系统名字,输入某一个名字引导相应的系统,lilo会
自动选择对应的分区以及启动文件来启动系统。

与lilo决斗是系统管理员生活的一部分,硬盘可能会损坏,病毒可能更改了引导记录
,错误地编译内核使系统报销,甚至一些愚蠢的反病毒程序也可能会使得lilo被破坏,
这时你也许必须从DOS上引导,然后重新配置lilo。如何从DOS下启动Linux等一会再说,
现在让我们把主要精力拿来对付lilo。

lilo的配置是靠编辑/etc/lilo.conf实现的,这个文件的规则很简单,举例来说,这
是我的lilo文件:

[wanghy@openlab /etc]$ cat lilo.conf

boot=/dev/hda

install=/boot/boot.b

prompt

timeout=50

default=smp


image=/boot/bzImage

label=smp

read-only

append="mem=256M"

root=/dev/hda1


image=/boot/vmlinuz-2.2.12-20

label=linux

read-only

root=/dev/hda1 

other = /dev/hda3

label = dos

table = /dev/hda

首先是boot=/dev/hda,这表示你用的启动磁盘是第一个IDE硬盘由于这个原因,通
常你不能从从盘上启动Linux)。

接下来,install=/boot/boot.b将/boot.b表示要将/boot/boot.b文件的内容写到引导
记录中。这个文件在安装Linux的时候就已经创建了。

prompt

timeout=50

default=smp

这两行表示系统启动时将会显示一个lilo:提示信息并等待5秒钟,注意timeout的单位
是0.1秒。如果5秒钟之内没有输入系统的名字,那么缺省将引导标号为"smp"的系统。

接下来定义的是各个引导项目,首先定义了两个Linux引导项目,image=/root/bzIma
ge这样的行定义了启动时使用的内核映像,接下来,label=smp定义了这个启动选择项的
名字是smp。在下面的几行则是用bzImage启动系统时的一些附加参数:

read-only

使用只读方式连接文件系统,由于系统启动的时候要检测文件系统完整性,因此要使
用这个选项,当系统启动后,启动脚本会自动将它切换为read-write模式。

append="mem=256M"

缺省下,Linux内核只使用64MB以下的内存空间,由于这个系统有256MB内存,必须用
命令行直接通知内核,append后的内容就是启动时加给内核的命令行参数。必须注意,
有时你需要把它写成mem=255M,原因是在许多系统上bios会占用部分存储空间,如果你
没有把握,就从内存量中减去一。

root=/dev/hda1

当这个内核启动以后,用/dev/hda1文件系统作为本机文件系统的根。

接下来的段落的效果与刚才我们解释的一样,刚才定义了一个名叫"smp"的启动项,它
启动Linux并且连结/dev/hda1文件系统,而从image=/boot/vmlinuz-2.2.12-20开始的段
落则定义一个名叫“Linux"的选项,它使用/boot/vmlinuz-2.2.12-20作为内核映像,挂
接/dev/hda1文件系统,但是只使用缺省的64MB内存。

再往下的段落

other=/dev/hda3

label=dos

table=/dev/hda

定义了一个名叫dos的启动项,这个启动项用来启动位于/dev/hda3上的MS-DOS分区。
由于DOS不使用内核映像而是利用引导记录,系统必须能够找到分区表信息以便定位引导
记录,table=/dev/hda表示系统的DOS类型的分区表在/dev/hda上。

当完成了lilo.conf的设置工作后,执行

/sbin/lilo

会出现这样的信息:

[openlab]# /sbin/lilo

Added smp *

Added linux 

Added dos


*表示这个加入的项是缺省启动项。三行信息表示我们定义的三个启动项都已经被加入
,以后再启动就可以使用新的启动定义了。

lilo还支持很多其他的定义,但是对于系统管理员来说,上面解释的已经足够了,想
要了解进一步的内容,执行man lilo.conf。

前面提到了内核映像这个概念,Linux在编译内核时将内核做成压缩的二进制内存映像
,启动中自动拷贝到内存中并解压,然后让核心代码接管系统。

核心代码得到系统的控制权之后,下一步需要检测系统设备并激活必须的设备,在这
个过程中,一串初始化信息在屏幕上滚过:

Linux version 2.2.14 (root@openlab.asnc.edu.cn) (gcc version egcs-2.91.66 
199903

14/Linux (egcs-1.1.2 release)) #9 SMP Sat Jan 29 10:07:06 EST 2000

Intel MultiProcessor Specification v1.1

Virtual Wire compatibility mode.

OEM ID: MSIProduct ID: 440BXAPIC at: 0xFEE00000

Processor #0 Pentium(tm) Pro APIC version 17

Processor #1 Pentium(tm) Pro APIC version 17

I/O APIC #2 Version 17 at 0xFEC00000.

Processors: 2

mapped APIC to ffffe000 (fee00000)

mapped IOAPIC to ffffd000 (fec00000)

Detected 451033204 Hz processor.

Console: colour VGA+ 80x25

Calibrating delay loop... 448.92 BogoMIPS

Memory: 257700k/262144k available (1044k kernel code, 424k reserved, 2920k
 data,

 56k init)

Dentry hash table entries: 32768 (order 6, 256k)

Buffer cache hash table entries: 262144 (order 8, 1024k)

Page cache hash table entries: 65536 (order 6, 256k)

VFS: Diskquotas version dquot_6.4.0 initialized

Checking 386/387 coupling... OK, FPU using exception 16 error reporting.

Checking 'hlt' instruction... OK.

.............

这个信息很长,几乎每个被初始化的设备都会显示一段讯息,从这里可以看出系统中
那些设备已经开始工作,那些设备失败了。如果信息滚动过快,可以在启动完成之后用
dmesg命令显示全部信息。

当需要直接在内核映像中启动的设备这些设备是在编译内核时确定的)初始化完毕
后,Linux连结在lilo.conf的root=行中定义的根文件系统,启动init进程应该记得它
是一切程序的最初启动者),寻找/etc/inittab文件并且进入运行级的设置。

相关内容