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在编译内核时将内核做成压缩的二进制内存映像
,启动中自动拷贝到内存中并解压,然后让核心代码接管系统。
[1] [2] 下一页
核心代码得到系统的控制权之后,下一步需要检测系统设备并激活必须的设备,在这
个过程中,一串初始化信息在屏幕上滚过:
Linux version 2.2.14 ([email protected]) (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文件并且进入运行级的设置。
(出处:http://www.sheup.com)
(出处:http://www.sheup.com/)