分享
 
 
 

LILO配置攻略

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

LILO配置攻略

转 周迪

返回〗〖转发〗

LILO(Linux Loader)是Linux自带的一个优秀的引导管理器,使用它可以很方便地引导一台机器上的多个操作系统。与其他常用的引导加载程序相比,LILO引导方式显得更具有艺术性,对其深入的理解,将有助于我们方便地处理多操作系统、网络引导、大硬盘及大内存等诸多棘手的问题。

通常我们谈到LILO,会涉及到两个方面——LILO引导程序和LILO安装命令/sbin/lilo。为了不至于混淆这两个概念,本文将用LILO表示LILO引导程序,而lilo表示/sbin/lilo。

一般地,LILO使用一个文本文件/etc/lilo.conf作为其配置文件。lilo读取lilo.conf,按照其中的参数将特定的LILO写入系统引导区。任何时候,修改了/etc/lilo.conf,都必须重新运行lilo命令,以保证LILO正常运行。lilo.conf使用的配置参数很多,配置起来也相当复杂。下面以RedHat Linux为例作一些初步探讨,RedHat的lilo程序包版本为0.20,别的Linux发行版本可能会有所出入,但不会太大。

lilo.conf文件中的配置参数分为两部分,一部分是全局参数,另一部分是引导映像参数。与Linux系统其他的配置文件一样,“#”号后的一行文字表示注释。

一、LILO的全局参数

全局参数是全程有效的,它可以出现在文件lilo.conf中的任何地方。以下是具体的参数项:

1.backup=backup-file

在装入LILO之前将原先的引导区备份到backup-file,而不是RedHat 缺省的/boot/boot.NNNN。也可以备份到一个设备上,如: /dev/null。注意:如果原先已有一个同名文件,该参数将被忽略。我们可通过这个备份恢复原先的引导扇区:

dd if=/boot/boot.NNNN of=/dev/hda bs=446 count=1

恢复原先的MBR。(注:虽然boot.NNNN有512字节,但只能恢复前446字节到MBR。)

2.boot=boot-device

指定一个用于安装LILO的设备。通常LILO可安装在如下几个地方:

MBR:第一个硬盘的主引导区, 对应于/dev/hda、/dev/sda等。

Root:Linux根分区的超级块(Super block), 对应于/dev/hda1、/dev/hda2、/dev/hda5、/dev/sda1、/dev/sda5等。

Floppy:LILO安装在软盘上,对应于/dev/fd0。

不指定时,lilo缺省安装在根分区超级块上。

3.compact

该参数用于优化LILO,产生一个更小的“map”文件。如果在软盘上安装LILO,强烈推荐使用此参数。

4.default=name

指定缺省引导的操作系统。如default=dos 表示将label为DOS的系统作为缺省引导的操作系统。如不指定该参数,排在lilo.conf中的第一个操作系统将作为缺省操作系统。

5.delay=tsecs

在没有指定“prompt” 参数时,LILO将立即引导缺省的操作系统,“delay”参数在这之间插入一段延时,单位是1/10秒。

6.disk=device-name

为某些非标准硬盘定义参数。其内部还包括有几个可选的子参数。

bios=〈bios_device_code〉:设备号。十六进制数0x80表示第一硬盘;0x81表示第二硬盘,依此类推。

sectors=〈sectors〉:硬盘扇区数。

heads=〈heads〉:硬盘磁头数。

cylinders=〈cylinders〉:硬盘柱面数。受系统BIOS限制,柱面数必须在1024以内。

partition=〈partition_device〉:用于物理定位特殊硬盘上的分区,有一个子参数start。

start=〈partition_offset〉:每一分区的起始扇区。

例如:

disk = /dev/sda

bios=0x80

#指定SCSI硬盘为第一硬盘

sectors = 32

heads = 64

cylinders=632

#硬盘参数为632/64/32

partition=/dev/sda1

start=2048

#第一分区起始扇区为2048

partition = /dev/sda2

start=204800

#第二分区起始扇区为204800

partition = /dev/sda3

start = 500000

partition = /dev/sda4

start = 900000

当机器上有两块硬盘,一块为SCSI硬盘,另一块为IDE硬盘时,LILO很有可能无法自动识别它们的主、从顺序,这时可进行如下设置:

disk = /dev/sda

bios = 0x80

disk = /dev/hda

bios = 0x81

#SCSI硬盘为主硬盘,IDE硬盘为从硬盘

该参数是为Linux无法识别的硬盘准备的,一般Linux可以正确识别和使用大多数硬盘,除非最坏的情况,否则不用设置它。

7.force-backup=backup-file

类似“backup”参数,但是将覆盖原有的同名文件。

8.ignore-table

通知lilo忽略无效的硬盘分区表。

9.install=boot-sector

LILO实际上包含有几个部分,而这几部分都存放在/boot/boot.b文件中。如果忽略“install”参数,则lilo认为install=/boot/boot.b。

10.linear

产生用于替换硬盘sector/head/cylinder地址(硬盘几何参数)的linear扇区地址。linear地址在运行时产生并且不依赖于硬盘几何参数。某些SCSI硬盘和一些以LBA方式使用的IDE硬盘可能会需要使用这个参数。注意,在将LILO安装到软盘上时不能使用“linear”参数。

11.lock

出现LILO提示后立即按最近一次的引导映像启动计算机。也就是说,当我们在lilo.conf中加入了该参数,然后运行lilo安装LILO,再重新启动计算机,这时LILO会提示我们选择引导哪一种操作系统,这一选择将被LILO记录下来,即“锁定”,下次启动计算机时,LILO将忽略“delay”、“prompt”等参数及键盘输入而直接跳转到其“锁定”的操作系统。

12.map=map-file

指定map文件。 没有本项时缺省使用/boot/map,每次执行lilo命令都会产生一个新的map文件。

13.message=message-file

该命令用于指定一个包含注释信息的文件,该文件将在系统打印出字符串“LILO”之前显示。如果在LILO启动时想获取较多的信息,可以编辑一个文件,再使用该命令就可以了。文件中如果包含有ASCII码为0xFF的字符(Ctrl+L)则表示清屏。注意,文件的大小不能超过65535个字节。每次文件改变之后,都必须重新运行lilo命令重建map文件,以保证其正常显示。

14.optional

当用于启动的引导映像不存在时,该参数使lilo忽略它。这对用于测试一个不长期存在的Linux核心是有用的。

15.password=password

为LILO设置口令保护,每次重新启动计算机提示用户输入口令。设置了口令后,建议将lilo.conf的文件属性改为600,以免让非root用户看到口令。

16.prompt

给出“boot:”提示,强制LILO等待用户的键盘输入,按下回车键则立即引导默认的操作系统,而按下Tab键则打印可供选择的操作系统。当“prompt”被设置而“timeout”没有被设置时,系统会一直处于等待状态而不引导任何操作系统。不设置该参数时,LILO不给出“boot:”提示而直接引导默认操作系统,除非用户按下了Shift、Ctrl、Alt三键中的任何一个。大多数情况下,如果你的硬盘上有多个操作系统,建议使用参数,它留给用户一个选择的余地。

17.restricted

与“password”联用,使“password”仅作用于在LILO提示后有命令行输入的时候。

18.serial=parameters

使用串行口控制。这将初始化指定的串口,并将使引导管理器能接受来自串口的输入。从串口发送一个中断信号相当于从控制台键盘上按下Shift键,它同样会被LILO捕捉到。如果不能保证来自串口的访问和控制台一样安全,比方说有一个modem连在串口上,建议为每个引导映像加上口令保护(password)。参数串有如下语法:

〈port〉[,〈bps〉[〈parity〉[〈bits〉]]]

〈port〉:数字表示的串口号,0表示COM1,其余类推。所有四个串口都可被使用。

〈bps〉:串口速率,支持110、 150、300、600、1200、2400、4800和 9600 bps,缺省值为2400bps。

〈parity〉:设置串口校验。一般情况下,LILO忽略奇偶校验。n表示无校验,e 表示偶校验,o 表示奇校验。

〈bits〉:字符位数,只能取7或8,缺省值是8。当有奇偶校验时只能取7。

如果设置了“serial”,即使没有设置“delay”,系统也会将“delay”项的值自动增加20。

19.timeout=tsecs

设置等待键盘输入的时长,单位是0.1秒。超过这段时间没有输入则为超时,系统将自动引导缺省的操作系统。如果不设置本参数,缺省的超时时间长度为无穷大。

二、引导映像参数

引导映像参数作用于每一个引导映像区。如果某一引导映像参数(例如:password)与全局参数的定义相抵触,则以该引导映像参数的定义为准,但仅限于该引导映像区。以下是具体参数项:

image=pathname

设置包含Linux核心引导映像的文件或设备。

other=pathname

设置包含非Linux操作系统,如DOS、SCO UNIX、Windows 95等系统引导映像的文件或设备。

range=start-end

如果“image”参数被设置为一个设备,则Linux核心引导映像的存放范围必须被设置。

image = /dev/fd0

range = 1-512

# Linux核心引导映像存放在软盘上的第一至512扇区

label=name

通过此参数来标识当前操作系统,即操作系统名。用户可通过在LILO提示后输入“标识”来决定引导哪一个操作系统。

alias=name

给当前操作系统起一别名。

lock

类似同名全局参数。

optional

类似同名全局参数。

password=password

类似同名全局参数。

restricted

类似同名全局参数。

以下两个参数项用于非Linux操作系统:

loader=chain-loader

如果要引导第二块硬盘上的非Linux操作系统或将LILO安装到软盘,这个参数是必需的。不指定时,缺省值是/boot/chain.b。如启动第二块硬盘上的MS-DOS或Windows 95,可定义loader=/boot/any_d.b;对于OS/2,则为loader=/boot/os2_d.b。

作为一个特殊的功能模块,any_d.b已不合时宜,在0.20版以后的lilo程序包中已不再包含它并将其功能整合进chain.b,os2_d.b亦有所变动。它们的功能可用如下语句代替。

例:

other = /dev/hdb1

loader = /boot/any_d.b

替换为:

other = /dev/hdb1

map-drive = 0x80

to = 0x81

map-drive = 0x81

to = 0x80

对于os2_d.b:

other = /dev/hdb1

loader = /boot/os2_d.b

替换为:

other = /dev/hdb1

loader = /boot/os2_d.b

map-drive = 0x80

to = 0x81

map-drive = 0x81

to = 0x80

map-drive=〈bios_device_code〉

通知chain.b装入重映射软驱或硬驱的内存驻留驱动程序,使用它可以引导不同硬盘上的不同操作系统,条件只有一个, BIOS必须能访问硬盘。“map-drive”后跟有变量“TO=〈盘设备号〉”。实际上,“map-drive”起到了“软”交换两个软驱或硬驱主、从顺序的作用,避免了手工接线的麻烦。

例:交换软驱

map-drive = 0

to = 1

map-drive = 1

to = 0

交换硬驱(参看loader参数例)

table=device

指定包含非Linux系统分区的主设备。举例来说,如果Windows 95在第一个IDE硬盘的第一个基本分区上,即/dev/hda1上,那么必须定义table=/dev/hda 。

三、核心参数

如果LILO引导的是Linux系统,我们可用下面命令传递一些参数给Linux核心。除“literal”之外,它们也可用于全局参数区。

append=string

append传递一个特殊硬件的参数串string给Linux系统的核心。它常用来配置一些Linux不能正确测试到的硬件设备。例如:

append = "hd=64,32,202"

通知Linux核心,硬盘参数为64柱面、32磁头、202扇区。具体的参数串设置可参看/usr/doc/HOWTO/BootPrompt-HOWTO文件。

literal=string

类似于“append”,但它将撤消所有的其它核心参数(比如设置了root设备)。因为“literal”会不分青红皂白地撤消一些必需的、重要的参数,所以不能将它设置在全局参数区。

ramdisk=size

指定RAM盘的大小。size为零时不建立RAM盘。忽略此参数时,RAM盘大小由Linux核心引导映像决定。

read-only

通知LILO以只读方式载入根文件系统。通常我们在检查根文件系统时需要将根文件系统以只读方式载入。Linux系统在每次启动时也会将根文件系统以只读方式载入,待例行的文件系统检查后再将其重新载入为读写方式。

read-write

通知LILO以读写方式载入根文件系统。

root=root-device

指定被安装根文件系统硬盘分区设备。

vga=mode

指定引导Linux系统时的VGA模式。有以下取值:

normal:常规80×25文本模式

extended (or ext): 80×50文本模式

ask: 引导时询问用户使用哪一种VGA模式,这时敲回车键将显示一个可分配的VGA模式表。

如果不指定VGA模式,系统将缺省地使用包含在系统核心里的VGA模式值。

四、lilo.conf配置实例

有了这些基础知识,我们可以很容易地按照自己的意图配置LILO。请看一个lilo.conf文件的例子:

boot=/dev/hda #将LILO安装在MBR。LILO作为主引导管理器

message=/boot/message #注释为/boot/message

compact #产生一个更小的“map”文件

map=/boot/map #指定“map”文件为/boot/map

install=/boot/boot.b

password=zhoudi #设置口令

vga=normal #80x25文本模式

linear #使用“linear”地址

prompt #提示用户键盘输入

timeout=50 #超时时长为5秒

default=dos #缺省引导label为dos的操作系统

#设定Linux

image=/boot/vmlinuz-2.0.34-1

#设置Linux核心引导映像

label=linux #标识为linux

root=/dev/hda1 #设置根文件系统

read-only#LILO以只读方式载入根文件系统

#设定MS-DOS或Windows 95

other=/dev/hda2 #DOS分区为第一个IDE硬盘的第二分区

label=dos#标识为dos

table=/dev/hda #主设备为第一个IDE硬盘

#设定SCO UNIX

注意:SCO分区必须设为活动(active)分区并将LILO安装在MBR上。

other=/dev/hda3

label=sco

table=/dev/hda

这个例子中,LILO是作为主引导管理器来管理机器上所有操作系统的。LILO也可作为二级引导管理器,这只要将“boot”参数改为根分区就可做到。例如:

boot=/dev/hda1

以这种方式使用LILO时,Linux根分区必须用DOS或Linux的fdisk程序将其设置为活动分区,并且这种方式只对硬盘主分区(不是扩展或逻辑分区)有效。

LILO还可以启动第二个以上的操作系统。在我的机器上有两块希捷硬盘,一块硬盘为8.4GB,另一块为1.2GB,都以LBA模式接在主IDE口上。8.4GB跳线为主盘,1.2GB跳线为从盘,Linux核心很容易地就将它们辨认出来并能正常使用,1.2GB的硬盘上安装了MS-DOS 6.22。笔者是这样设置lilo.conf的:

disk=/dev/hda

bios=0x80

#由于IDE硬盘存在双硬盘问题,所以当启动DOS系统时,会提示“无系统盘或系统盘错!”,需修改程序如下。

disk=/dev/hdb

bios=0x81

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

linear

prompt

timeout=50

default=dos

image=/boot/vmlinuz-2.2.11-1

label=linux

root=/dev/hda1

read-only

other=/dev/hdb1

label=dos

map-drive = 0x80

to = 0x81

map-drive = 0x81

to = 0x80

#交换两硬盘主、从顺序

table=/dev/hdb

配置好lilo.conf文件后,在root账户下执行lilo命令,新的LILO就被载入系统。上面第一个例子执行结果如下:

#lilo

Added linux

Added dos*

Added sco

(注:带*号的表示其为缺省操作系统)

五、LILO提示信息

LILO在运行时会给出一些提示信息,了解它的含义对我们正确配置lilo.conf或查找硬件错误是有帮助的。

当LILO装入它自己的时候,显示单词 “LILO”:每完成一个特定的过程显示一个字母。如果LILO在某个地方失败了,屏幕上就停留几个字母,以指示错误发生的地方。

注意,如果磁盘发生瞬间故障,可能会在第一个字母“L”后插入一些十六进制数字(磁盘错误码)。除非LILO停在那里并不停地产生错误码流,否则并不说明有严重问题。

没有提示: LILO没有安装或者安装LILO的分区没有被激活。

L〈错误码〉 : LILO的第一部分已经被装入并运行了,但它不能装入第二部分的引导程序。两位数字的错误码指示问题的类型(参见“磁盘错误码”),这种情况通常是在介质访问失败或硬盘参数错误。

LI: LILO第一部分正确但是第二部分执行时出错。这一般是硬盘参数有误或/boot/boot.b被移动后没有重新运行map安装程序。

LIL: LILO第二部分开始执行,但是不能从“map”文件中读取描述符表( descriptor table)。 这通常是因介质错误或磁盘参数有误引起的。

LIL?: LILO在错误的地方加载。原因与“LI”大致相同。

LIL-:描述符表(descriptor table)错误。典型原因是硬盘几何参数微妙的不匹配或/boot/boot.b被移动而没有运行map安装程序。

LILO: LILO执行正确。

1010101010: 分区情况已经改变却没有重新安装LILO,另外,超频也可能会出这种情况。

六、磁盘错误码

0x00:“内部错误”。 由LILO扇区读取子程序产生。可能是因为被破坏的文件,重建map文件试试看。另一个原因也许是,当使用“linear”参数时去访问超出1024的柱面。

0x01:“非法命令”。这意味着LILO访问了BIOS不支持的硬盘。

0x02:“没找到地址标记”。通常是介质问题,多试几遍看看。

0x03:“写保护错”。 仅在写操作时出现。

0x04:“扇区未找到”。典型的原因是硬盘参数错误。

0x06:“激活顺序改变”。这应该是短暂的错误,再试一次。

0x07:“无效的初始化”。BIOS没有适当地初始化硬盘,热启动一次或许有帮助。

0x08:“DMA超出限度”。这不应当发生,重新启动。

0x09:“DMA试图越过64kB边界”。这不应当发生,建议忽略“compact”参数。

0x0C:“无效的介质”。这不应当发生,重新启动看看。

0x10:“CRC错误”。检测到介质错误。建议多启动几次,运行map安装程序,把map文件从坏块写到正常的介质上。

0x11:“ECC纠正成功”。读错误发生然后被纠正,但是LILO并不知道这个情况,终止了启动过程。

0x20:“控制器错误”。一般不应发生。

0x40:“定位失败”。这可能是介质问题,重新启动试试。

0x80:“磁盘超时”。磁盘或驱动器没有准备好。介质坏了或磁盘没有转,也有可能是从软盘启动而没有关上软驱门。

0xBB:“BIOS错误”。一般不应发生,如果反复发生,可考虑去掉“compact”参数或添加删除“linear”参数。

如果在写操作过程中发生错误,则在错误码前有个前缀“w”。尽管写错误并不影响启动过程,但它们暗示了系统中存在某种错误,建议重新配置LILO成只读格式(read-only)。

LILO的配置相当复杂,读者只有在实践中不断学习、摸索,勤于思考,才能用好LILO。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有