当前位置:Linux教程 - Linux综合 - 全面探讨lilo---lilo学习笔记

全面探讨lilo---lilo学习笔记

  声明:本笔记并非原创,只是我个人的学习笔记! 很多的内容来自www.Linuxsir.com www.linuxfans.org www.linuxAID.com www.lslnet.com 非常感谢以上网站对我的学习提供的莫大的帮助,本着学习和分享的原则我贴出我的学习笔记,更希望兄弟们能给我指出其中错误的地方.谢谢!!! 学习这部分知识,首先要学到问题的思路,其次你还要记住一些东西,是死记硬背下来!你会发现这点东东的确是很有用的! 本文参考了大概有10来位作者(记得的有周迪,徐永久,郑良,Albert,江永忠等)的文章,出自上面所列网站,所以我就不再单独列出这些作者的名子了,请原谅! 尽管如此,本文档归属linuxsir-probing!转载请注明出处!更不能被用到商业用途上! 1 首先要了解的几个概念 1.1一般的开机引导过程。 在PC机上,最初的启动由BIOS完成。当开机自检结束时(Power-On Self Test,POST), BIOS尝试读入软盘的第一个扇区,把它看作引导扇区。若没有软盘,则尝试读入硬盘的第一个扇区。新的BIOS可以改变这种次序,先从硬盘启动。甚至从光盘启动。由于大多数BIOS不提供SCSI支持,若要从SCSI磁盘启动,SCSI适配器要提供他自己的BIOS.如果什么都找不到,老的BIOS会启动内置的ROM BASIC,或直接打印"NO ROM-BASIC". 操作系统的启动分几步完成。由于引导扇区比较小,通常它主要任务是读入第二 个loader,第二个loader再读入第三个loader,直到整个操作系统被完全读入。   DOS 引导区: OFFSET 0x000 JMP xx Near jump into the program code 0x003 Disk parameters 0x03E Program code loading the DOS kernel 0x1FE 0xAA55 Magic number for BIOS   可见,引导区的结构相对比较简单。它的长度总是512字节。以上,磁盘参数只对DOS有意义。重要的是引导区从0开始,以BIOS的magic number 结束。   从软盘启动比较简单,因为只有一个引导扇区:第一个扇区。硬盘则困难一些, 它被分成很多分区。但是,BIOS根本不管分区信息,它象对待软盘一样对待硬盘, 仍读入第一个分区,叫作:master boot record.(MBR).      所以MBR也应该和上面介绍的结构一样:从0开始,以BIOS的magic number 结束 在MBR的最后部分,有分区表。如下图: OFFSET Length 0x000 0x1BE code loading and starting the boot sector of the active partitian 0x1BE 0x010 partition1 0x1CE 0x010 partition2 0x1DE 0x010 partition3 0x1EE 0x010 partition4 0x1FE 0x0012 0xAA55 Disk parameters  每个分区信息占16字节,结构如下: 1 BOOT Boot flag: 0=not active ,0x80 active 1 HD Begin:head number 2 SEC CYL Begin:sector and cylinder number of boot sector 1 SYS System Code:0x83 linux , 0x82 linux swap etc. 1 HD End:head number 2 SEC CYL End: sector and cylinder number of boot sector 4 low byte high byte Relative sector number of start sector 4 low byte high byte Number of sectors in the partition   所以硬盘可以有4个分区。这四个分区叫做主分区rimary prititions.假如它 们不够用,可以设置所谓的扩展分区。扩展分区包含至少一个逻辑分区。扩展 分区的第一个扇区结构类似MBR,它的分区表的第一表项对应第一个逻辑分区。如果 存在第二个逻辑分区,那么分区表的第二个表项就包含了一个指针。这个指针指向 第一个逻辑分区后面的一个地址。这个地址包含一个分区表。该分区表的第一表项 对应第二个逻辑分区。这样就组成一个链表,从而扩展分区可以有任意多的逻辑分 区。   每一个主分区和扩展区都包含一个引导扇区。系统只能从这几个地方之一启动。 BOOT标志决定哪个区被引导。   原来,只有主分区,因此,MS-DOS的fdisk和大多数同类工具只能激活主分区.. MBR的代码要作以下的操作:   1:确定活动分区。   2:使用BIOS,将活跃分区的启动扇区读入。   3:跳到启动扇区的0位置。   MBR的空间足够完成这些工作。如上所述,每个分区理论上包含一个引导扇区, 而且,存在的第二个硬盘也包含和第一个类似的结构。MBR完全可以容纳一个复杂 的引导程序。即所谓的boot manager,动态的决定活动分区。Linux 为我们提供了lilo. 1.2LILO的引导机制   如上所述,计算机的最初启动是由BIOS控制的,在对一些硬件(如:内存、键盘等)初始化之后,它会试图加载硬盘的主引导记录(MBR)或软盘的引导扇区。   MBR可通过两种方式运行,其一是定位到活动分区并加载相应的引导扇区,然后由引导扇区完成该分区内操作系统的基本组件的加载;其二是直接从一指定分区中加载信息,并通过它装入任一分区的操作系统,诸如LILO、OS/2 boot loader及Partition Magic等引导加载程序都可以配置成这种方式。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 

  软盘的引导扇区相当于硬盘活动分区的引导扇区,它通常用于装入软盘上的操作系统。   由此可见,只要把LILO安装在MBR、活动分区或者引导软盘上,就能接管计算机的控制权,然后由LILO完成后继的引导过程。LILO中建有一个引导表地址编码,借此它的引导程序就能定位到Linux的内核文件,这种地址编码既可以按照柱面/磁头/扇区(CHS)模式,又可以采用LBA的线性块号模式,因此,即使对某些SCSI控制程序LILO也能运转良好。   当LILO定位到配置文件后,经过预引导过程,就显示提示符:   LILO boot:   此时,系统允许选择引导不同的操作系统或者不同的内核配置,按Tab键显示可选项列表,然后输入可选项或者直接回车选择缺省配置,如果选择了引导Linux,还可以直接传递参数到系统内核。 1.3LILO的特点   和其他系统的引导加载程序相比,LILO具有更大的灵活性,其引导方式也更丰富多彩。当然,GRUB也非常不错,在本版中我们也曾经有过详细的介绍.   ● 当LILO被安装在硬盘的MBR、活动分区或引导软盘上时,作为原引导程序的替身,它能引导任一硬盘任一分区上的Linux和其他操作系统;   ● 除了引导扇区,它没有任何隐含文件,也不需要使用特定的分区,它的配置文件可以在任何分区、甚至是存放在与Linux毫不相干的DOS分区的某个子目录下;   ● 它能引导几个不同的内核配置,甚至是几个不同的内核;   ● 它能引导同一机程序上的多个Linux版本;   ● 它能从网络上引导Linux。 ● 新版LILO 0.21.4.2突破1024-cylinder限制,新版本最大的更新是通过使用EDD BIOS EXTENSIONS消除了1024-cylinder的限制,现在LILO能够支持达2TB的硬盘。 Download: FTP://sd.dynhost.com/pub/linux/lilo/ (10691 hits) Alternate Download: ftp://metalab.unc.edu/pub/Linux/system/boot/lilo/ (1762 hits) Appindex Record: http://freshmeat.net/appindex/1998/12/04/912827201.Html   LILO的灵活性使得其配置变得相当复杂,当有多个系统共存时,建议先安装其他操作系统,最后再装Linux,这样,设置LILO对其他系统的引导会相对简单一些。 1.4什么是LILO以及本文档的一些约定 把这个问题放到最后来回答是因为在看了以上的内容后你可以深刻的理解了lilo而不是简单的说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即可以安装在MBR中,也可以安 装在某个分区的引导扇区。LILO拥有DOS引导扇区的所有功能,而且,它还可以引导 逻辑扇区和第二硬盘分区。LILO还可以和另外的引导者合作(例如:NT loader),这样, 用户就可以有很多选择。 2 LILO的调试 LILO 最大的好处就是它独立于文件系统,可以启动各种操作系统:从Microsoft、OS/2、SCO Unix、Unixware、PC-DOS到Linux等等。LILO 能处理最多16个不同的映像,LILO 写入MBR 时就作为主引导程序,写入扩展分区的引导扇区时就是第二引导程序。采用LILO,可以有多种组合方式启动系统。我们先来看看引导过程,硬盘上的数据被准确的分配到对应的"磁道"和"扇区",硬盘上的数据分布首先是引导扇区,然后是文件分配表(FAT),接下来就是数据区。硬盘分区时,被分为基本分区和扩展分区。基本分区可以作为引导分区,可以通过任何引导程序标记为可引导。扩展分区可以分成好几个逻辑分区,很多的BIOS 不允许从逻辑分区启动。 Linux 最多支持4个基本分区,如果需要额外的分区,那么就要其中的一个基本分区变成扩展分区,然后在扩展分区里面,划分逻辑分区。很重要的一点是有些逻辑分区的分区表不能被识别为设备的第一块。分区表通常存放于分区的引导扇区,而且,通常只有整个盘的分区启动扇区用作引导扇区,称为主引导记录(MBR)。 LILO 可以用于以下情形:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 

1、第一硬盘的引导扇区。 2、软盘的引导扇区。 3、位于第一硬盘的Linux 文件系统分区上的引导扇区。 LILO 不能用于以下情形: 1、交换分区。 2、扩展分区中的逻辑分区的引导扇区。 所以,如果你在第二硬盘上安装了Linux ,而不能启动的话,可以采取在第一硬盘上建立/boot 的办法来解决。 引导加载过程由很多程序组成,我们先来看看LILO 安装时的各种不同程序: MAP 安装程序: 这个程序把LILO 的文件放到合适的位置并记录这些信息(会在LILO 启动时用到),这个程序就是/sbin/lilo ,每次配置文件有改动或者有新内核时,需要重新运行一遍。 /boot/*.*: 其他LILO 启动时需要的文件存放在 /boot 目录下,map 文件是十分重要的,map 安装程序把新内核的位置记录到这个文件。 引导加载程序: 这个程序无需多言是最重要的部件了。它被BIOS 调入内存,然后调用内核或者其他操作系统的引导扇区。 包含引导加载程序第一部分的引导扇区被调入内存,然后调用引导加载程序的第二部分,一般位于文件 /boot/boot.b,接下来就启动内核。 如果从可引导软盘启动的话,BIOS 把软盘的第一个扇区调入内存,一般,这个扇区包含一段程序来启动对应的操作系统。和软盘一样,如果LILO 写入MBR ,那么,MBR 就被调入内存,执行对应的操作,给用户提示选择需要引导的操作系统。具体地说,MBR 的头 446 个字节由引导加载程序利用,剩余的64 字节是分区表信息。还剩下的两个字节就是分区激活标志"55 AA" 了。 在软盘上备份 MBR 信息: bash# dd if=/dev/hda of=/dev/fd0 bs=512 count=1 恢复:(万一的情况下) bash# dd if=/dev/fd0 of=/dev/hda bs=446 count=1 卸载LILO:   当LILO覆盖了引导扇区时,它会保留一个引导扇区的备份在/boot/boot.xxyy中,其中xxyy是16进制的设备主/次号码(major/minor numbers),利用命令"ls -l /dev/device"就可获得硬盘或分区的主/次号码。如果这些备份文件已经存在,那么,当你重新安装LILO或重构内核时,它将不再生成此文件,这就保证了此备份文件是最原始的引导扇区。   若要卸载LILO,你只需恢复初始的引导扇区就可以了。例如:LILO安装在/dev/had,对应的备份文件为/boot/boot.0300,简单地使用下面的命令即可:   dd if=/boot/boot.0300 of=/dev/had bs=446 count=1   当然,若想完全卸掉Linux,必须用Linux的fdisk对Linux分区进行破坏,因为DOS的fdisk无法移去非DOS分区。 还可在DOS下用命令: c:> fdisk /mbr 恢复 LILO: 重新安装 Windows 以后,就会把LILO 干掉。无论什么原因我们都应该知道怎样恢复LILO。 最好手头有一张安装 CD ,这年头,干净并且确实好用的软盘太少了。所以不推荐你使用软盘。当然,如果你认为你的软盘质量可靠,那么可以从CD-ROM上建立应急启动盘: dd if=/cdrom/disks/rescue of=/dev/fd0 在 DOS 下面,采用: rawrite image-name a: 也可以在 www.bootdisk.com上下载一个,按照说明制作一张启动磁盘。 如果从 CD 启动的话,各个不同的Linux 版本有不同的方法进入应急状态。Red Hat 启动后有一个应急模式,SuSE 的话,需要先进入安装界面,然后按Ctrl+Alt+Fn 键找到shell 提示符,可以在这个提示符下来恢复。 下面介绍恢复步骤: 首先建立挂接点: mkdir mount 然后把丢失的 Linux 挂接到这里: mount /dev/hda6 mount 如果 /boot 位于另外的分区, 需要把他挂接到 mount/boot 目录下,例如: mount /dev/hda1 mount/boot 使用 chroot 命令,把 mount 作为根目录,cd /boot 命令实际上进入的是 "mount/boot" 目录: chroot mount 运行 /sbin/lilo ,这样就把 LILO 安装回了 MBR,重新启动就会看到 LILO 提示符回来了。 2.1 LILO started by MS-DOS MBR 如果系统至少有一个linux主分区,(非交换区,且在第一硬盘上),那么LILO就可 以安装在这些分区中的一个。当 LILO对应分区被激活后,引导过程如下: BIOS 读入 MBR MBR 读入 活跃主分区:LILO所在的分区。 LILO 引导Linux或另外的操作系统。 要引导其它OS且不用LILO很简单,激活那个分区。Linux分区没有任何变化,非常安全。 2.2 LILO started by a boot manager 假如用户不想删除老的boot manager,或者某个OS LILO不能引导,可以考虑该途径。 1. 假如boot manager可以引导扩展区,那儿是LILO的好去处。 2. 假如 boot manager 可以引导第二硬盘分区,linux可以装在第二硬盘上。 3. 有些 boot manager 甚至可以引导逻辑分区,那LILO就可以装在逻辑分区上。 当然,也要注意以下情况: 1 某些操作系统直接改写MBR,这会将原来的boot manager破坏。 2 重新分区会破坏扩展分区的引导扇区,这是LILO可能要重装。 当安装新的系统时,是否要重新安装(linux)依靠新的boot manager,要么LILO引 导扇区被注销,要么boot manager 为它提供一个引导项。重新分区或分区格式化会将 LILO和linux全部删除。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 

2.3 LILO占据MBR 假如整个linux系统都在第二硬盘上,且第一硬盘没有扩展分区,那么,LILO只有装 在MBR上。这样,会将老的MBR冲去,所以,在安装LILO前,要将老的MBR(包括分区 表)做一个备份。DOS下有很多工具可以完成这个任务。在linux下,这样备份: # dd if=/dev/had of=/backup/MBR bs=512 count=1 写会使用命令: # dd if=/backup/MBR of=/dev/had bs=446 count=1 这样,原来的MBR就被写会但不包括分区表。如果分区表也要恢复,那么bs=512. 注意,这样,新的分区表会被破坏! 2.4 LILO 文件   与LILO有关的文件通常放在/boot/下,配置文件lilo.conf在/etc/下。包含实际 引导系统信息的映射文件有/sbin/lilo安装。对于任何LILO安装,配置文件应该被定 置以适合个人需要。 The configuration file:配置文件   基本上,配置文件是一些变量赋值。每一行包含一个标志变量或一个变量赋值. 配置文件被特殊的变量赋值分成几个区,每个区引导一个linux或其它OS.   下面解释常见的行: boot = device   说明那一个设备或哪一个分区包含引导扇区。假如没有给boot赋值,取当前缺省值。 Compact   激活一种模式,在此模式下,LILO一次向BIOS请求读入相邻的几个分区。这极大的 缩短了装载时间,特别是从软盘启动。 Delay=tenths   以10秒为单位,规定LILO在引导第一个引导配置前应等待用户的时间。若没有定义,则 直接引导。 Linear   使LILO生成线性地址,而不使用通常的Sector/Head/Cylinder机制。Linux地址机制 可以不依赖磁盘的物理结构。 Install = boot sector   使用指定的boot sector写入引导扇区,缺省用/boot/boot.b disktab=disktab   使用指定的disktab,缺省使用/boot/disktab.disktab保存了硬盘物理结构信息。 Map=map file   说明映射文件的路径。 Message=file   指定一个文件,该文件的内容将会在LILO引导是被显示。假如没有说明该文件,那么就 只会出现"LILO"。 Verbose=level   说明LILO的调试级别。从0(不显示任何信息)到5(所有的状态信息)。 Backup = backup file   以前引导扇区内容的备份文件。缺省使用/boot/boot.device number force-backup=backup file   和backup 相同,当时假如备份文件存在,被覆盖。 Prompt   指定要用户通过键盘选择要引导的内核。不会缺省选择。 Timeout=tenths   设置一个超时值,在此时间内必须有键盘输入,否则用第一个配置。类似,假如超 时,就不能再输入密码。一般情况下,该取缺省值,无穷大。    注:delay 与 timeout的区别(joe 认为),delay 是"LILO"出现后用户必须有 输入的最长时间。Timeout 是用户在按了任意键后,系统等待选择,用户 两次击键的最大间隔时间。 Serial=port, bps parity bits   设置串口参数。如果LILO会从该文件获取串口参数的话。如果其中之一无效, 那所有三个参数都无效。Port从四个标准串口选择一个:0对应COM1 或者 /dev/ttyS0.。支持的波特率范围为:100-9600。所有校验设置都支持   (n:none,e:even,odd) bits为7或者8。缺省为serial=0,2400n8. Ignore-table   让LILO忽略被破坏的分区表。 Fix-table   允许LILO将每个分区的(sector/head/cylinder)地址转化为线性地址。通常, 分区地址从cylinder boudary开始。某些操作系统,会改变这一点。由于LILO只能 将它的启动扇区写于两种地址都一致的分区上,不正确的3D地址可以用fix-table 来纠正。但是,这种纠正不能被保证是永远的,所以重分区以保证对齐cylinder boudary 是最好的选择。 PassWord=password   为引导配置设置password restricted   放松对password的限制。只有用户想传附加的启动参数给内核时才需要password optional   允许配置的几个内核有错误的,或者不存在,如果不说明optional,LILO遇到这种 情况就会打印一些错误信息然后退出。   每个从LILO引导的配置从image行开始。    Image = kernel    Label = name   Image包含要引导的内核。Label是给用户选择用的。Image行通常指向一个设备, 例如/dev/fd0,可以找到内核的范围用range来注明。    Range = range   range可以用start sector -end sector 或者 start sector + length 表示。例如:    image = /dev/fd0    label = floppy    range = 1+512 以下变量赋值有可能出现: append=string   将string作为引导参数传给内核。例如,硬件参数。 Literal=string 和append查不多。但是,他会冲掉原来的设置。所以不能被全局说明。 Ramdisk=size   设置RAM disk的大小。 Read-only read-write
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 

设置根文件系统的访问方式。 Root=device 设置根文件系统存在的设备。 Vga=mode   屏幕设置。可能模式为:normal,extended 和ask. 。 以下设置是针对别的操作系统的: loader=loader   说名用来引导操作系统的文件。缺省为 /boot/chain.b . 另外,LILO包含以 下的loader: os2_d.b 可以从第二硬盘上引导os/2 any_d.b 在引导操作系统之前试图将两个硬盘的次序颠倒,从而可以引导第二硬盘 上的os. Table=device   说明一个设备,该设备的某个分区上存放要引导的os.假如没有说明table, LILO就不会将该信息传给要引导的osunsafe   关掉对要引导的os的检查。只有要从软盘引导时,才使用该设置。没有该设置, 每次map installer开始运行时,引导盘都要插入软驱。 The disktab file disktab文件包含LILO要引导的设备的物理结构信息。通常,这些信息可以从设备驱 动程序获取。所以,只有这种方法不行时才会用到disktab 文件。在此情况下,如 果文件不能用,LILO报告错误信息:    geo_query_dev HDIO_GETGEO(dev …) 或者    HDIO_REQ not supported for your SISI controller    Please use /boot/disktab 然后,物理结构信息就必须手工地输入: # /boot/distab-LILO parameter table # #This table contains the geometry parameters for SCSI and # IDE disks,which can not be recognized automatically # Entries in this table overwrite recognized parameters! # # Dev. BIOS Secs/ Heads/ Cylin - Par. # num. Code track cyLin. Ders. Offset (optional) #0x800 0x80 32 64 202 0 # /dev/sda 各个域含义如下: 0x800 设备号.由主副设备号组成。 设备号.由主副设备号组成。 0x80 设备的BIOS 码。0x80代码系统的第一个硬盘。0x81第二个,。。。。 所有同一硬盘上的分区该值相同。 32,64,203 sector 数目(每个track) heads 数目 cylinders 数目 0 分区的开始。也可以从分区表中读,所以可以不说明。 2.5 LILO 启动信息 在启动过程中,LILO会显示'LILO':每完成一个特定的过程显示一个字母。如果LILO在某个地方失败了,屏幕上就停留几个字母,以指示错误发生的地方。如果LILO出错退出,可以根据显示来判断系统的 出错原因。 注意,如果磁盘发生瞬间故障,可能会在第一个字母"L"后插入一些十六进制数字(磁盘错误码)。除非LILO停在那里并不停地产生错误码流,否则并不说明有严重问题。 没有信息:LILO根本就没有被读入,没安装LILO,或LILO驻留的分区没被激活。   L(number): LILO的第一部分被读入并开始执行。但第二部分不能被读入。后面 的数字表明出错原因。这可能是由于硬盘的物理错误或不正确的物理结构信息。   LI: LILO的第一部分可以读入第二部分,第二部分执行时出错。这可能是不正确的物理结构信息或重装了boot.b而没有运行LILO重新安装。   LIL:LILO的第二部分启动起来了,但是不能从map文件读入描述符表(descriptor tables).这说明不正确的物理结构信息或物理错误。   LIL?: LILO的第二部分被读到不正确的地址。原因同LI   LIL-: descriptor tables有错。这可能是不正确的物理结构信息或重装了 map file而没有运行LILO重新安装。 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:"磁盘超时"。磁盘或驱动器没有准备好。介质坏了或磁盘没有转,也有可能是从软盘启动而没有关上软驱门。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 

  0xBB:"BIOS错误"。一般不应发生,如果反复发生,可考虑去掉"compact"参数或添加删除"linear"参数。   如果在写操作过程中发生错误,则在错误码前有个前缀"w"。尽管写错误并不影响启动过程,但它们暗示了系统中存在某种错误,建议重新配置LILO成只读格式(read-only)。 3 几个重要的LILO引导参数   LILO的引导参数有很多,在此对一些比较重要的参数作一介绍。   1. "boot="   此参数指明包含引导扇区的设备名(如:/dev/had),若此项忽略,则从当前的根分区中读取引导扇区。   2. "root="   此参数告诉内核启动时以哪个设备作为根文件系统使用,其设定值为构造内核时根文件系统的设备名,可用的设备名有:   (1)/dev/hdaN~/dev/hddN:ST-506兼容硬盘,a到d上的N个分区   (2)/dev/sdaN~/dev/sdeN:SCSI兼容硬盘,a到e上的N个分区   (3)/dev/xdaN~/dev/xdbN:XT兼容硬盘,a到b上的N个分区   (4)/dev/fdN:软盘,A:(N=0)或B:(N=1)   (5)/dev/nfs:由网络取得根文件系统的标志   3. "nfsroot="   若需通过NFS提供根文件系统来引导无盘工作站,此参数为内核指定了网络根文件系统所在的机程序、目录及NFS,其格式为:nfsroot=[〈server_ip〉:]〈root_dir〉[,nfs_options〉]   4. "nfsaddrs="   设定网络通讯所需的各种网络界面地址,如无此参数,则内核会试图用反向地址解析协定(RARP)或启动协定(BOOTP)找出这些参数,其格式为:   nfsaddrs=〈客户端IP〉:〈服务端IP〉:〈网关IP〉:〈子网屏蔽〉:〈客户端名称〉:〈网络设备名 〉:〈auto〉   5. "image="   指定Linux的内核文件。   6. "delay="   设定引导第一个映像前的等待时间。   7. "disk="   此参数为某一特殊的硬盘定义非标准参数。   8. "append="   为内核传递一个可选的参数行,其典型的应用是为不能完全由系统自动识别的硬盘指定参数,如: append = "hd=64,32,202"   9. "label="   此参数为每个映像指定一个名字,以供引导时选择。   10. "read-only"   设定以只读方式挂入根文件系统,用于文件系统一致性检查(fsck)。   11. "install="   安装一个指定文件作为新的引导扇区,缺省为/boot/boot.b。   12. "loader="   说明所使用的链加载程序(chain loader),缺省为/boot/chain.b,如果不是从首硬盘或软盘启动,那么,此选项必须说明。   13. "table="   说明包含分区表的设备名,如果此参数忽略,引导加载程序将不能传递分区信息到已引导的操作系统。当此参数指向的分区表被修改时,必须重新运行/sbin/lilo。   14. "init="   内核初始化时执行的程序,通常过程为init、getty、rc和sh,版本1.3.43以来的Linux内核能够执行/sbin/init说明的命令行,若在引导过程中出现问题,则可设置init=/bin/sh直接跳到Shell。   15. "ramdisk_start="   由于内核不能放在压缩的内存文件系统映像内,为使内核映像能够和压缩的内存映像放在一张软盘内,加入"ramdisk_start=〈offset〉",这样内核才能开始执行。   16. "mem="   此参数的目的之一是为Linux指定使用的内存数量:如mem=96MB,目的之二是指定mem=nopentium告诉内核不要使用4MB分页表。   17. "vga="   设置显示模式,如80×50、132×44等。 4 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秒。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 

  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。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 

  如果设置了"serial",即使没有设置"delay",系统也会将"delay"项的值自动增加20。   19.timeout=tsecs   设置等待键盘输入的时长,单位是0.1秒。超过这段时间没有输入则为超时,系统将自动引导缺省的操作系统。如果不设置本参数,缺省的超时时间长度为无穷大。 5 引导映像参数   引导映像参数作用于每一个引导映像区。如果某一引导映像参数(例如: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 。 6 核心参数   如果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文本模式
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 

  ask: 引导时询问用户使用哪一种VGA模式,这时敲回车键将显示一个可分配的VGA模式表。   如果不指定VGA模式,系统将缺省地使用包含在系统核心里的VGA模式值。 7 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   (注:带*号的表示其为缺省操作系统) 8 Linux启动问题解决方法 8.1 Lilo失效有五种参考方法: 1、如果有启动软盘,用它启动后,运行lilo,重启。 2、红旗下通过:用安装光盘引导系统。在安装向导开始后,我们即可溜到另一个控制台下(按Ctrl+Alt+F2),将看到bash#字样。如果你Linux的/分区是对应/dev/hda3,所用的文件系统是ext2的。 注意:#开始的行是注释行 mount -t ext2 /dev/hda3 /tmp #(使用的reiser文件系统的用户用reiserfs代替ext2) chroot /tmp /sbin/lilo 如果同时忘记了root口令,可在此用passwd修改 取出光盘,用硬盘启动。 3、红旗下通过:用Windows的启动软盘启动进入DOS,假定光驱为g:,Linux安装在/dev/hda3,将Linux安装光盘放入光驱,在DOS提示符下运行以下三条命令: g: cddosutilsautoboot ..loadlin vmlinuz root=/dev/hda3 1 或者 ..loadlin vmlinuz root=/dev/hda3 single 或者 ..loadlin vmlinuz root=/dev/hda3 init=/bin/sh rw
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页