600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Linux的LILO引导程序 LILO引导装载器详解

Linux的LILO引导程序 LILO引导装载器详解

时间:2018-10-24 05:17:31

相关推荐

Linux的LILO引导程序 LILO引导装载器详解

LILO(即 LInux

LOader)是最常用的两种 Linux 引导装载程序之一。LILO

可以被安装进可引导硬盘驱动器的 MBR

或者分区的分区引导记录。它还可以安装在可移除设备上,比如软盘、CD 或

USB 钥匙。如果您还不熟悉 LILO,那么在软盘或 USB

钥匙上进行实践是好办法,所以我们在例子中就是这么做的。

在安装 Linux

期间,常常指定 LILO 或 GRUB 之一作为引导管理程序。如果选择

GRUB,那么可能还没有安装

LILO。如果是这样,那么需要安装它的软件包。我们假设您已经安装了 LILO

包。如果您在安装软件包方面需要帮助,那么请参阅本教程后面的包管理部分。

lilo

命令(在 /sbin/lilo

中)的主要功能是,写第一阶段引导记录,并且使用配置信息(一般在

/etc/lilo.conf

中)来创建一个映射文件(/boot/map)。这个程序还有一些辅助用法,我们稍后会提到。我们先看一个典型的

LILO 配置文件,这个文件可能用于一个 Windows 和 Linux

双重引导的系统。

prompt

timeout=50

compact

default=linux

boot=/dev/fd0

map=/boot/map

install=/boot/boot.b

message=/boot/message

lba32

password=mypassword

restricted

image=/boot/vmlinuz-2.4.21-32.0.1.EL

label=linux

initrd=/boot/initrd-2.4.21-32.0.1.EL.img

read-only

append="hdd=ide-scsi root=LABEL=RHEL3"

other=/dev/hda1

loader=/boot/chain.b

label=WIN-XP

上面的第一组选项是全局选项,控制 LILO

如何操作。第二组和第三组选项是映像专用选项,分别针对要用 LILO

引导的两种操作系统,在这个例子中是 Red Hat Enterprise Linux 3 和

Windows XP。

例子中的全局选项是:

prompt

要求显示引导提示。

timeout

以十分之一秒为单位指定超时时间,超过这个时间之后自动装载默认系统。例子中的

timeout=50 表示超时时间为 5 秒。

compact

尝试合并对相邻扇区的读请求。这可以加快装载速度并且使映射文件更小。

default

指定默认情况下应该装载的操作系统。如果没有指定,就使用第一个操作系统。在我们的例子中,如果用户在

5 秒的超时时间内没有选择其他操作系统,就将装载 Linux 系统。

boot

指 定在哪里安装 LILO。在我们的例子中,这是软盘

/dev/fd0。要想在第一个硬盘的 MBR 中安装,应该指定

boot=/dev/hda。我们的 RHEL 3 系统实际上位于

/dev/hda11,所以如果要在这个分区中安装 LILO,就应该指定

boot=/dev/hda11。如果忽略这个参数,LILO

将尝试使用当前挂装为根(/)的设备的引导扇区。

map

指定映射文件的位置,LILO 使用这个文件向用户提供提示并且装载在

lilo.conf 的映像部分中指定的操作系统。默认情况下,这是

/boot/map。

install

指定要作为引导扇区安装的新文件。默认是 /boot/boot.b,这是 LILO

包提供的。

message

指 定在引导提示之前显示的消息。这个消息的长度必须小于 65535

字节。如果系统对 LILO 菜单显示图形化背景,那么 /boot/message

可能包含一个图像文件。在某些 Red Hat 系统上,这是一个 PCX 格式的

300x200 像素文件。在 SUSE 系统上,可能是 16 色 640x480 像素的 VGA

位图。在这种情况下,还有某些其他参数。请参阅系统附带的文档。例如,在我的

SUSE SLES9 系统上这是

/usr/share/doc/packages/lilo/README.bitmaps。

lba32

指定 LILO 应该为硬盘使用 LBA32 模式而不是 CHS

或线性扇区寻址。

password

指 定在引导映像之前必须输入的口令。注意,这个选项是明文的,所以

/etc/lilo.conf

的文件属性应该只允许根用户查看这个文件。这个口令不应该与根口令相同。password

和下一个选项 restricted

实际上是映像选项,但是为了方便可以在全局部分中指定。如果这样指定,相同的值应用于所有映像,除非在映像部分中被覆盖了。

restricted

放宽口令要求,这样只有当用户试图在引导期间提供额外参数时才要求输入口令。使用这个选项,在正常引导时用户不必输入口令,但是要想引导进单用户模式就必须提供口令。

下一部分是 RHEL3

Linux 系统的映像选项:

image

指定这个部分针对一个 Linux

系统,应该从一个文件装载这个系统。参数是 Linux

内核映像的文件名。

label

一个可选的标签,可以输入它来选择这个映像,而不必输入完整的映像名。

initrd

初始 RAM 磁盘

的名称,其中包含挂装文件系统之前内核需要的模块。

read-only

指定根文件系统最初应该以只读模式挂装。在对根文件系统进行检查之后,后面的引导阶段常常将它重新以读写模式挂装。

append

指定要传递给内核的选项。我们的例子指定应该为 /dev/hdd 使用 SCSI

仿真(2.4 以及更早的内核以这种方式处理光学设备,比如

CD-ROM)。它还指定具有标签 RHEL3 的分区应该挂装为根(/)。

最后一部分是非

Linux 系统的映像选项。

other

指定包含待装载系统的引导扇区的设备(或文件)的设备名。

loader

指定要使用的装载程序。LILO 支持

chain.b,它只是从可引导分区装载分区引导记录;LILO 还支持 chain.b

的变体 /boot/os2_d.b,它可以用来从第二个硬盘驱动器引导 OS/2。

label

一个可选的标签,可以输入它来选择这个映像,而不必输入完整的映像名。

现在,如果插入一张空软盘,可以运行 lilo

命令(/sbin/lilo)来创建一张可引导软盘,如清单 4 所示。注意,lilo

命令有 5 个详尽等级。多指定一个 -v 就加一级。

现在,如果插入一张空软盘,可以运行 lilo

命令(/sbin/lilo)来创建一张可引导软盘,如清单 4 所示。注意,lilo

命令有 5 个详尽等级。多指定一个 -v 就加一级。

root@lyrebird root]# lilo -v -v

LILO version 21.4-4, Copyright (C) 1992-1998 Werner Almesberger

'lba32' extensions Copyright (C) 1999,2000 John Coffman

Reading boot sector from /dev/fd0

Merging with /boot/boot.b

Secondary loader: 11 sectors.

Mapping message file /boot/message

Compaction removed 43 BIOS calls.

Message: 74 sectors.

Boot image: /boot/vmlinuz-2.4.21-32.0.1.EL

Setup length is 10 sectors.

Compaction removed 2381 BIOS calls.

Mapped 2645 sectors.

Mapping RAM disk /boot/initrd-2.4.21-32.0.1.EL.img

Compaction removed 318 BIOS calls.

RAM disk: 354 sectors.

Added linux *

Boot other: /dev/hda1, on /dev/hda, loader /boot/chain.b

Compaction removed 0 BIOS calls.

Mapped 6 (4+1+1) sectors.

Added WIN-XP

/boot/boot.0200 exists - no backup copy made.

Map file size: 8192 bytes.

Writing boot sector.

我们现在有了可引导 LILO 磁盘。如果

LILO 遇到错误,就可能会看到错误消息而且不写引导扇区。例如,如果在

/etc/lilo.conf 文件中忽略了 lba32 选项,就可能看到清单 5

那样的输出。这提示尝试 linear 或 lba32

选项。在这个例子中,使用命令行指定 -l 选项,这相当于在 lilo.conf

中指定 linear 选项。如果使用 -L 选项再试一次,lilo

应该会成功,输出应该与前面的清单一样。

清单 5:

[root@lyrebird root]# lilo

Warning: device 0x030b exceeds 1024 cylinder limit

Fatal: geo_comp_addr: Cylinder number is too big (16284 > 1023)

[root@lyrebird root]# lilo -l

Warning: device 0x030b exceeds 1024 cylinder limit

Fatal: sector 261613688 too large for linear mode (try 'lba32' instead)

在测试了引导磁盘之后,修改 lilo.conf 文件中的 boot=/dev/fd0 项,将

LILO 安装在 MBR 或分区引导记录上。例如, boot=/dev/hda 将 LILO

安装在第一个 IDE 硬盘的主引导记录上。

您现在大致了解了

LILO 及其配置文件,包括如何从 lilo

命令行覆盖某些配置选项。可以使用命令 man lilo 在 lilo

的手册页中找到更多信息。在 lilo 包安装的 postscript

用户指南中甚至有更丰富的信息。这应该安装在文档目录中,但是对于不同系统,准确的位置不一样。寻找文件的一种方法是通过

grep 过滤包清单。清单 6 显示了这个例子中使用的基于 rpm 的 RHEL3

系统的 LILO 用户指南位置。

清单 6:

[ian@lyrebird ian]$ rpm -ql lilo | grep ".ps$"

/usr/share/doc/lilo-21.4.4/doc/Technical_Guide.ps

/usr/share/doc/lilo-21.4.4/doc/User_Guide.ps

LILO

有几个辅助命令。

lilo -q

将显示映射文件中的信息。

lilo -R

将 lilo

设置为只在下次重新引导时自动引导指定的系统。对于自动重新引导远程系统,这非常方便。

lilo -I

将显示关于内核路径的信息。

lilo -u

将反安装 lilo 并且恢复原来的引导记录。

当 LILO 引导 Linux

系统时,您可能希望在引导时提供额外的参数。例如,如果图形化启动不起作用了,您可能希望引导进模式

3(即单用户模式)以便进行恢复。在标签名后面输入的任何文本将被传递给内核。例如,在我们的例子中,通过简单地输入“linux”来选择

RHEL 系统。要想引导进模式

3(即单用户模式),可以输入以下字符串之一:

linux

3

linux single

还要记住,对于

LILO,每当更新了配置文件(/etc/lilo.conf)的时候,必须 运行

lilo

命令。如果添加、移动或删除了分区,或者做了可能使产生的引导装载程序无效的其他修改,那么也应该运行

lilo 命令。

(本文摘自IBM中国网站Linux专区“LPI 101 考试准备:

Linux 安装与包管理”课程。作者:Ian

Shields , 高级程序员, IBM)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。