描述
默认情况下,本文件 ( /etc/lilo.conf ) 由引导管理程序 lilo 读取 (参考 lilo(8)).
它看起来可能象这样:
-
boot = /dev/hda delay = 40 compact vga = normal root = /dev/hda1 read-only image = /zImage-2.5.99 label = try image = /zImage-1.0.9 label = 1.0.9 image = /tamu/vmlinuz label = tamu root = /dev/hdb2 vga = ask other = /dev/hda3 label = dos table = /dev/hda
该文件表明 lilo 使用设备 /dev/hda 的 Master Boot Record (简称 MBR, 主引导记录). (有关 lilo 使用方法 及与其它操作系统 相互影响的讨论, 参考 lilo 文档中 user.tex 部分).
引导时, 引导载入程序会等待 4 秒 (40 个十分之一秒), 使你有机会按下 Shift 键. 如果没有按键动作发生, 第一个核心映像文件 (/zImage-1.5.99, 也许你刚在 五分钟之前 完成的安装) 将被引导; 否则, 引导载入程序会 询问你要引导哪一个映像. 如果你不知道 有哪些选项可以选择, 按 [TAB] 键 (如果使用的 是美国键盘布局, 还可以按 [?]), 可以得到一个菜单, 这时你就可以 选择引导较新的核心, 或者是老的稳定的核心, 甚至是另外的 根文件系统上的核心, 也可以引导其它的操作系统, 在 lilo.conf 中可以配置最多 16 个映像.
正如上面所见, 配置文件以一定数量的全局选项开始 (例子中开始的 6 行), 紧接着是各映像的描述选项, 在各映像中的选项会覆盖全局选项.
全局选项
这部分有许多 可能的关键字, 下面部分尽可能按照 user.tex 中的描述进行解释.
-
backup=
backup-file
- 使用 backup-file 文件 (可能是一个设备,如 /dev/null) 代替原来的 /boot/boot.NNNN 存放引导扇区的备份. boot= boot-device
- 指定包含引导扇区的设备名称 (如硬盘分区), 如果忽略了该关键字, 引导扇区就从当前作为 root 文件系统安装的设备读取 (也可能是进行写入). change-rules
- 定义引导时用于改变分区类型的数字 ('隐藏'). 细节请参考 user.tex 中的 "Partition type change rules" 部分. compact
- 尽力把读取相邻扇区的请求合并为一次读取. 这可以显著 缩短装载时间并减小映像, 在用软盘引导时, 强烈推荐使用 `compact' 选项. default= name
- 使用指定的映像文件 作为默认值加以引导. 如果忽略了 `default' 选项, 配置文件中 第一个出现的映像会被引导. delay= tsecs
- 在装载第一个映像之前等待的十分之一秒数. 这在需要激活键盘之后立即从硬盘启动系统非常有用, 如果忽略了本选项或设置为 0 将不等待. disk= device-name
-
为指定的磁盘给出非标准参数, 有关细节参考 user.tex 中的 "Disk geometry" 部分. 特别有用的是 `bios=' 参数, BIOS 为磁盘编号为0x80, 0x81等,但是它不知道 Linux 磁盘对应的是哪一个 BIOS 盘 (因为这依赖于 BIOS 的设置, 也依赖于 BIOS 的类型), 所以如果你使用的是设置很特殊的系统, 你就必须说明 Linux 磁盘与 BIOS 盘之间的对应关系. 例如:
disk=/dev/sda bios=0x80 disk=/dev/hda bios=0x81
意思是, 你的第一块 SCSI 盘 (译者注: 通常id=0) 对应一号 BIOS 盘, 第一个 IDE 口上的主盘对应二号 BIOS 盘.
disktab=
disktab-file
- 指定包含磁盘参数表的文件名称. 如果忽略 `disktab' 选项, 映像安装程序查找 /etc/disktab , 不鼓励使用 disktab . fix-table
-
允许 lilo 调整分区表中的三维地址 (sector/head/cylinder). 每个分区表项包含有本分区起始扇区与结束扇区的三维地址和线性地址, 如果分区不是对应在整个磁道上并且有其它的操作系统 (如PC/MS-DOS 或 OS/2) 在使用同一磁盘, 它们可能会修改三维地址, lilo 可以在分区上保存两种地址的引导扇区, 如果使用了 `fix-table' 选项, lilo 可以重新调整错误的三维开始地址.
警告: 这并不能保证其它的操作系统随后不重新修改地址, 并且发生其它的负作用. 正确的方法是对磁盘重新分区, 使得分区对应于整个磁道.
force-backup=
backup-file
- 类似 `backup', 如果原来有同名的备份文件就予以改写. ignore-table
- 通知 lilo 忽略混乱的分区表. install= boot-sector
- 把指定的文件作为新的引导扇区进行安装, 如果忽略 `install' 选项,默认使用 /boot/boot.b. linear
- 生成线性的扇区地址代替 sector/head/cylinder 类型的三维地址. 线性地址是在运行时进行转换, 它不依赖于磁盘的几何结构. 注意如果使用 `linear' 选项, 就不能使用 便携式磁盘 (如软盘) 作为引导盘, 这是因为 决定磁盘 几何结构的 BIOS 服务对于软盘 不能可靠的工作. 对于大磁盘使用 `linear' 选项时, /sbin/lilo 可以生成对不可到达 磁盘区域的引用, 这是由于 在引导完成之前 并不知道扇区的三维地址. lba32
- 生成 32 位的逻辑块地址代替 sector/head/cylinder 结构的三维地址. 如果 BIOS 支持数据分组 (packet) 定址, 就会使用这类调用去存取磁盘, 这样就可以从大于 8.4Gb 的分区进行引导, 变换的几何结构仅限于是 C:H:S 类型的地址 ; 如果 BIOS 不支持数据分组定址, 'lba32' 就如 'linear' 选项, 地址被转换为 C:H:S 结构. 使用 'lba32' 选项,所有的软盘仍保持 C:H:S 类型的格式. lock
- 允许自动记录引导命令作为下次引导的缺省值. 通过这种方法, lilo 可以"锁定"一个选项直到手工覆盖它. map= map-file
- 指定映像文件的位置. 如果忽略了 `map' 选项,就使用 /boot/map . message= message-file
- 指定包含有在引导提示出现之前显示的消息的文件名称. 在打印 "LILO " 之后等待按 Shift 键过程中消息不会显示. 在此消息中, FF 字符 ([Ctrl L]) 清除本地屏幕, 消息文件的大小限制为 65535 字节, 如果改变或删除了此文件, 映像文件必须重建. nowarn
- 禁止对后来的危险发出警告. optional
- 每一个 `optional' 选项 (参考下面) 都作用于所有的映像. password= password
- 每一个 `password=...' 选项 (参考下面) 都作用于所有的映像. prompt
- 在任何按键之前强制进入引导提示. 如果设置了 'prompt' 但是没有设置 `timeout', 就不能自动引导机器 (需要人工干预). restricted
- 每一个 `restricted' 选项 (参考下面) 都作用于所有的映像. serial= parameters
-
允许从串行线路进行控制. 指定的串行端口被初始化, 引导载入程序接受从此端口和 PC 键盘的输入. 在串行线路上发送一个中断 (break) 相当于在控制台按下 shift 键, 可以得到载入程序的注意. 允许串行线路控制时, 所有的引导映像都应该加上口令保护. 比如线路是连接在 modem 上时, 相对于控制台, 这是最起码的安全要求. 参数串有如下的语法格式:
<port>[,<bps>[<parity>[<bits>]]]
<port>: 串行端口号, 以 0 为基准. 0 对应于 COM1, 也就是 /dev/ttyS0, 依此类推. 可以使用所有的四个端口 (如果有的话).
<bps>: 本端口的波特率. 支持如下波特率: 110, 150, 300, 600, 1200, 2400, 4800 和 9600 bps. 默认是 2400 bps.
<parity>: 线路上使用的奇偶校验方式. 载入程序忽略输入的奇偶校验, 即省略第八位, 下面字符描述校验方式 (大小写均可): n 无校验, e 偶校验, o 奇校验.
<bits>: 字符位数. 仅支持 7 位或 8位, 如果无奇偶校验, 默认为 8 位, 有校验则为 7 位.
如果设置了 `serial' 选项, `delay' 的值自动增加到 20.
例如: serial=0,2400n8 用缺省的参数初始化 COM1 端口.
timeout=
tsecs
- 设置键盘输入的超时时间 (以十分之一秒为单位). 到了指定的时间没有按键发生, 第一个映像被自动引导. 类似的, 如果用户停顿时间太长, 口令输入过程也被终止, 默认没有超时时间. verbose= level
-
打开详细报告过程. 更大的数字可以得到更多的输出, 如果在 lilo 的命令行附加了 -v , level 值会再增加. 最大值为 5.
另外, 核心配置参数 append, ramdisk, read-only, read-write, root 和 vga 也在全局选项部分设置. 如果没有在各核心映像部分修改它们, 默认是使用了的.
各映像选项
各个映像部分从任意一行开始.
image=pathname
(用于指出包含有 Linux 核心的文件或设备), 或者如下面这行:
other=pathname
指出要引导的其它系统.
在以前, image 行指定引导的设备时, 就必须用
-
range=
start-end
- 格式给出扇区的范围.
后来 (要引导其它系统) 使用了下面这三个选项 :
-
loader=
chain-loader
- 指出使用的 chain 装入程序. 默认时使用 /boot/chain.b , 当不是从第一块硬盘或软盘引导时, 必须给出 chain 装入程序. table= device
- 给出包含有分区表的设备. 如果忽略了此选项, 引导载入程序就不会给被引导的操作系统传送分区信息, (有些操作系统可以通过其它办法知道自己是从哪个分区引导的, 如 MS-DOS 通常在它的引导扇区保存磁盘的几何结构或分区信息). 注意: 如果通过 `table' 选项引用的分区表设备被修改了, 就需要重新执行 /sbin/lilo. unsafe
- 在建立映射时不能存取引导扇区. 这样禁止某些包括分区表的完整性检查, 如果引导扇区在固定格式的软盘设备上, 使用 UNSAFE 可以避免在执行映射安装程序时需要把可读盘放入驱动器中, `unsafe' 和 `table' 不兼容.
在上面所示的两种情况下, 都适用下述选项 :
-
label=
name
- 指出每个映像的标识文件名称 (不含路径). 通过设置各种 `label', 可以为映像指定不同的名称. alias= name
- 通过使用别名可以为同一个项目指定第二个名称. lock
- (参考前面.) optional
- 如果在映射建立时没有提供映像文件就忽略它. 这对于指定 实际上并不存在的实验核心是非常有用的. password= password
- 通过 password 口令保护映像. restricted
- 如果参数是在命令行中给出的, 为引导映像就仅需要口令 (如 single).
Linux 核心选项
如果引导的是 Linux 核心, 可以传递命令行参数到核心.
-
append=
string
-
在传递给核心的参数表中附加本选项. 典型的应用是指定不能完全自动探测到的硬件参数, 或者是可能有风险的情况. 例如:
append = "hd=64,32,202"
literal=
string
- 类似 `append', 但删除其它选项 (如设置 root 设备). 因为通过 `literal' 选项, 可以无意中删除掉其它关键选项, 所以它不能用在全局选项部分. ramdisk= size
- 指出 RAM 磁盘的大小, 0 表示没有 RAM 盘需要建立. 忽略了此选项, RAM 盘的大小就使用引导映像中原来配置的值. read-only
- 指出 root 文件系统以只读方式安装. 典型地, 系统在启动过程中 (在 fsck 检查过程之后) 以读写方式安装 root 文件系统. read-write
- 以读写方式安装 root 文件系统. root= root-device
- 指定作为 root 安装的设备. 如果使用的是 current , root 就设置为当前以根文件系统安装的设备. 如果用 -r 选项改变了 root 的值, 就使用各个自己的设备. 如果忽略了 'root' 选项, 就使用核心中包含的 root 设备. (该值是在核心的 Makefile 文件中由 ROOT_DEV 给出并在编译核心时就确定了的, 以后可以用 rdev(8) 程序修改.) vga= mode
-
引导时可以选择的 VGA 文本模式. 可以使用下列值:
normal: 普通 80x25 文本模式 .
extended (或 ext): 选择 80x50 文本模式 .
ask: 引导停止并等待用户输入.
<number>: 使用此数字对应的文本模式. 通过 vga=ask 引导, 然后按 [Enter] 可以得到一个支持的列表输出.
忽略了此选项, 就使用核心映像中包含的 VGA 模式设置值. (该值是在核心的 Makefile 文件中由 SVGA_MODE 给出并在编译核心时就确定了的, 以后可以用 rdev(8) 程序修改.)