📄 563.html
字号:
</tr></tbody>
</table>
</form>
</TD>
<TD rowSpan=2><IMG src="images/header_r1_c7.gif" tppabs="http://www.linuxhero.com/docs/images/header_r1_c7.gif" width=26 border=0 name=header_r1_c7></TD>
<TD><IMG height=83 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1 border=0></TD></TR>
<TR>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif"><IMG height=22
src="images/header_r2_c1.gif" tppabs="http://www.linuxhero.com/docs/images/header_r2_c1.gif" width=296 border=0
name=header_r2_c1></TD>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif" colSpan=5>
<DIV align=right><FONT class=normalfont>当前位置:
<A href="index.html" tppabs="http://www.linuxhero.com/docs/index.html">本站首页</A>
<font color="#FF6699">>></font>
<A href="type5.html" tppabs="http://www.linuxhero.com/docs/type5.html">安装启动</A> | <A href="copyright.html" tppabs="http://www.linuxhero.com/docs/copyright.html">版权说明</A></font></DIV>
</TD>
<TD><IMG height=22 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=10 cellPadding=0 width="100%" bgColor=#ffffff
border=0>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%" border=0>
<TR>
<TD vAlign=top align=middle width="60%">
<TABLE cellSpacing=0 cellPadding=0 width="100%"
background="images/back.gif" tppabs="http://www.linuxhero.com/docs/images/back.gif" border=0>
<TBODY>
<TR>
<TD vAlign=top width="80%">
<DIV align=center>
<FORM action="search.html" tppabs="http://www.linuxhero.com/docs/search.html" method=get>
</FORM>
<TABLE cellSpacing=0 cellPadding=0 width="95%"
border=0><TBODY>
<TR>
<TD background="images/bgi.gif" tppabs="http://www.linuxhero.com/docs/images/bgi.gif"
height=30></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=3 width="95%"
align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top>
<p><FONT class=normalfont><B><font color=blue>全面探讨lilo---lilo学习笔记</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:probing<br>来自:Linux知识宝库<br>联系方式:无名<br><br>声明:本笔记并非原创,只是我个人的学习笔记!<br>
很多的内容来自www.linuxsir.com www.linuxfans.org www.linuxAID.com www.lslnet.com<br>
非常感谢以上网站对我的学习提供的莫大的帮助,本着学习和分享的原则我贴出我的学习笔记,更希望兄弟们能给我指出其中错误的地方.谢谢!!!<br>
学习这部分知识,首先要学到问题的思路,其次你还要记住一些东西,是死记硬背下来!你会发现这点东东的确是很有用的!<br>
本文参考了大概有10来位作者(记得的有周迪,徐永久,郑良,Albert,江永忠等)的文章,出自上面所列网站,所以我就不再单独列出这些作者的名子了,请原谅!<br>
尽管如此,本文档归属linuxsir-probing!转载请注明出处!更不能被用到商业用途上!<br>
<br>
1 首先要了解的几个概念<br>
<br>
1.1一般的开机引导过程。<br>
在PC机上,最初的启动由BIOS完成。当开机自检结束时(Power-On Self Test,POST), BIOS尝试读入软盘的第一个扇区,把它看作引导扇区。若没有软盘,则尝试读入硬盘的第一个扇区。新的BIOS可以改变这种次序,先从硬盘启动。甚至从光盘启动。由于大多数BIOS不提供SCSI支持,若要从SCSI磁盘启动,SCSI适配器要提供他自己的BIOS.如果什么都找不到,老的BIOS会启动内置的ROM BASIC,或直接打印"NO ROM-BASIC".<br>
操作系统的启动分几步完成。由于引导扇区比较小,通常它主要任务是读入第二 个loader,第二个loader再读入第三个loader,直到整个操作系统被完全读入。<br>
DOS 引导区:<br>
OFFSET<br>
0x000 JMP xx Near jump into the program code<br>
0x003 Disk parameters<br>
0x03E Program code loading the DOS kernel<br>
0x1FE 0xAA55 Magic number for BIOS<br>
可见,引导区的结构相对比较简单。它的长度总是512字节。以上,磁盘参数只对DOS有意义。重要的是引导区从0开始,以BIOS的magic number 结束。<br>
从软盘启动比较简单,因为只有一个引导扇区:第一个扇区。硬盘则困难一些, 它被分成很多分区。但是,BIOS根本不管分区信息,它象对待软盘一样对待硬盘, 仍读入第一个分区,叫作:master boot record.(MBR). 所以MBR也应该和上面介绍的结构一样:从0开始,以BIOS的magic number 结束 在MBR的最后部分,有分区表。如下图:<br>
OFFSET Length<br>
0x000 0x1BE code loading and starting the boot sector of the active partitian<br>
0x1BE 0x010 partition1<br>
0x1CE 0x010 partition2<br>
0x1DE 0x010 partition3<br>
0x1EE 0x010 partition4<br>
0x1FE 0x0012 0xAA55 Disk parameters<br>
每个分区信息占16字节,结构如下:<br>
1 BOOT Boot flag: 0=not active ,0x80 active<br>
1 HD Begin:head number<br>
2 SEC CYL Begin:sector and cylinder number of boot sector<br>
1 SYS System Code:0x83 linux , 0x82 linux swap etc.<br>
1 HD End:head number<br>
2 SEC CYL End: sector and cylinder number of boot sector<br>
4 low byte high byte Relative sector number of start sector<br>
4 low byte high byte Number of sectors in the partition<br>
所以硬盘可以有4个分区。这四个分区叫做主分区rimary prititions.假如它 们不够用,可以设置所谓的扩展分区。扩展分区包含至少一个逻辑分区。扩展 分区的第一个扇区结构类似MBR,它的分区表的第一表项对应第一个逻辑分区。如果 存在第二个逻辑分区,那么分区表的第二个表项就包含了一个指针。这个指针指向 第一个逻辑分区后面的一个地址。这个地址包含一个分区表。该分区表的第一表项 对应第二个逻辑分区。这样就组成一个链表,从而扩展分区可以有任意多的逻辑分 区。<br>
每一个主分区和扩展区都包含一个引导扇区。系统只能从这几个地方之一启动。 BOOT标志决定哪个区被引导。<br>
原来,只有主分区,因此,MS-DOS的fdisk和大多数同类工具只能激活主分区.. MBR的代码要作以下的操作:<br>
1:确定活动分区。<br>
2:使用BIOS,将活跃分区的启动扇区读入。<br>
3:跳到启动扇区的0位置。<br>
MBR的空间足够完成这些工作。如上所述,每个分区理论上包含一个引导扇区, 而且,存在的第二个硬盘也包含和第一个类似的结构。MBR完全可以容纳一个复杂 的引导程序。即所谓的boot manager,动态的决定活动分区。Linux 为我们提供了lilo.<br>
<br>
1.2LILO的引导机制<br>
如上所述,计算机的最初启动是由BIOS控制的,在对一些硬件(如:内存、键盘等)初始化之后,它会试图加载硬盘的主引导记录(MBR)或软盘的引导扇区。<br>
MBR可通过两种方式运行,其一是定位到活动分区并加载相应的引导扇区,然后由引导扇区完成该分区内操作系统的基本组件的加载;其二是直接从一指定分区中加载信息,并通过它装入任一分区的操作系统,诸如LILO、OS/2 boot loader及Partition Magic等引导加载程序都可以配置成这种方式。<br>
软盘的引导扇区相当于硬盘活动分区的引导扇区,它通常用于装入软盘上的操作系统。<br>
由此可见,只要把LILO安装在MBR、活动分区或者引导软盘上,就能接管计算机的控制权,然后由LILO完成后继的引导过程。LILO中建有一个引导表地址编码,借此它的引导程序就能定位到Linux的内核文件,这种地址编码既可以按照柱面/磁头/扇区(CHS)模式,又可以采用LBA的线性块号模式,因此,即使对某些SCSI控制程序LILO也能运转良好。<br>
当LILO定位到配置文件后,经过预引导过程,就显示提示符:<br>
LILO boot:<br>
此时,系统允许选择引导不同的操作系统或者不同的内核配置,按Tab键显示可选项列表,然后输入可选项或者直接回车选择缺省配置,如果选择了引导Linux,还可以直接传递参数到系统内核。<br>
<br>
1.3LILO的特点 <br>
和其他系统的引导加载程序相比,LILO具有更大的灵活性,其引导方式也更丰富多彩。当然,GRUB也非常不错,在本版中我们也曾经有过详细的介绍.<br>
● 当LILO被安装在硬盘的MBR、活动分区或引导软盘上时,作为原引导程序的替身,它能引导任一硬盘任一分区上的Linux和其他操作系统;<br>
● 除了引导扇区,它没有任何隐含文件,也不需要使用特定的分区,它的配置文件可以在任何分区、甚至是存放在与Linux毫不相干的DOS分区的某个子目录下;<br>
● 它能引导几个不同的内核配置,甚至是几个不同的内核;<br>
● 它能引导同一机程序上的多个Linux版本;<br>
● 它能从网络上引导Linux。<br>
● 新版LILO 0.21.4.2突破1024-cylinder限制,新版本最大的更新是通过使用EDD BIOS EXTENSIONS消除了1024-cylinder的限制,现在LILO能够支持达2TB的硬盘。<br>
Download: ftp://sd.dynhost.com/pub/linux/lilo/ (10691 hits)<br>
Alternate Download: ftp://metalab.unc.edu/pub/Linux/system/boot/lilo/ (1762 hits)<br>
Appindex Record: http://freshmeat.net/appindex/1998/12/04/912827201.html<br>
LILO的灵活性使得其配置变得相当复杂,当有多个系统共存时,建议先安装其他操作系统,最后再装Linux,这样,设置LILO对其他系统的引导会相对简单一些。<br>
<br>
1.4什么是LILO以及本文档的一些约定<br>
把这个问题放到最后来回答是因为在看了以上的内容后你可以深刻的理解了lilo而不是简单的说lilo就是一个启动管理器.<br>
LILO(Linux Loader)是Linux自带的一个优秀的引导管理器,使用它可以很方便地引导一台机器上的多个操作系统。与其他常用的引导加载程序相比,LILO引导方式显得更具有艺术性,对其深入的理解,将有助于我们方便地处理多操作系统、网络引导、大硬盘及大内存等诸多棘手的问题。<br>
通常我们谈到LILO,会涉及到两个方面--LILO引导程序和LILO安装命令/sbin/lilo。为了不至于混淆这两个概念,本文将用LILO表示LILO引导程序,而lilo表示/sbin/lilo。<br>
一般地,LILO使用一个文本文件/etc/lilo.conf作为其配置文件。lilo读取lilo.conf,按照其中的参数将特定的LILO写入系统引导区。任何时候,修改了/etc/lilo.conf,都必须重新运行lilo命令,以保证LILO正常运行。lilo.conf使用的配置参数很多,配置起来也相当复杂。下面以RedHat Linux为例作一些初步探讨,RedHat的lilo程序包版本为0.20,可能这个版本相对来说老了,并且别的Linux发行版本可能会有所出入,但你要学会的不是简单的按步就班的做,而是学会基本概念后有自己的思路,用自己的思路来解决问题。<br>
lilo.conf文件中的配置参数分为两部分,一部分是全局参数,另一部分是引导映像参数。与Linux系统其他的配置文件一样,"#"号后的一行文字表示注释。<br>
LILO引导扇区包括一个分区表的空间,所以,LILO即可以安装在MBR中,也可以安 装在某个分区的引导扇区。LILO拥有DOS引导扇区的所有功能,而且,它还可以引导 逻辑扇区和第二硬盘分区。LILO还可以和另外的引导者合作(例如:NT loader),这样, 用户就可以有很多选择。<br>
<br>
2 LILO的调试<br>
<br>
LILO 最大的好处就是它独立于文件系统,可以启动各种操作系统:从Microsoft、OS/2、SCO Unix、Unixware、PC-DOS到Linux等等。LILO 能处理最多16个不同的映像,LILO 写入MBR 时就作为主引导程序,写入扩展分区的引导扇区时就是第二引导程序。采用LILO,可以有多种组合方式启动系统。我们先来看看引导过程,硬盘上的数据被准确的分配到对应的"磁道"和"扇区",硬盘上的数据分布首先是引导扇区,然后是文件分配表(FAT),接下来就是数据区。硬盘分区时,被分为基本分区和扩展分区。基本分区可以作为引导分区,可以通过任何引导程序标记为可引导。扩展分区可以分成好几个逻辑分区,很多的BIOS 不允许从逻辑分区启动。<br>
Linux 最多支持4个基本分区,如果需要额外的分区,那么就要其中的一个基本分区变成扩展分区,然后在扩展分区里面,划分逻辑分区。很重要的一点是有些逻辑分区的分区表不能被识别为设备的第一块。分区表通常存放于分区的引导扇区,而且,通常只有整个盘的分区启动扇区用作引导扇区,称为主引导记录(MBR)。<br>
LILO 可以用于以下情形:<br>
1、第一硬盘的引导扇区。<br>
2、软盘的引导扇区。<br>
3、位于第一硬盘的Linux 文件系统分区上的引导扇区。<br>
LILO 不能用于以下情形:<br>
1、交换分区。<br>
2、扩展分区中的逻辑分区的引导扇区。<br>
所以,如果你在第二硬盘上安装了Linux ,而不能启动的话,可以采取在第一硬盘上建立/boot 的办法来解决。<br>
引导加载过程由很多程序组成,我们先来看看LILO 安装时的各种不同程序:<br>
MAP 安装程序: 这个程序把LILO 的文件放到合适的位置并记录这些信息(会在LILO 启动时用到),这个程序就是/sbin/lilo ,每次配置文件有改动或者有新内核时,需要重新运行一遍。<br>
/boot/*.*: 其他LILO 启动时需要的文件存放在 /boot 目录下,map 文件是十分重要的,map 安装程序把新内核的位置记录到这个文件。<br>
引导加载程序: 这个程序无需多言是最重要的部件了。它被BIOS 调入内存,然后调用内核或者其他操作系统的引导扇区。<br>
包含引导加载程序第一部分的引导扇区被调入内存,然后调用引导加载程序的第二部分,一般位于文件 /boot/boot.b,接下来就启动内核。<br>
如果从可引导软盘启动的话,BIOS 把软盘的第一个扇区调入内存,一般,这个扇区包含一段程序来启动对应的操作系统。和软盘一样,如果LILO 写入MBR ,那么,MBR 就被调入内存,执行对应的操作,给用户提示选择需要引导的操作系统。具体地说,MBR 的头 446 个字节由引导加载程序利用,剩余的64 字节是分区表信息。还剩下的两个字节就是分区激活标志"55 AA" 了。<br>
在软盘上备份 MBR 信息:<br>
bash# dd if=/dev/hda of=/dev/fd0 bs=512 count=1<br>
恢复:(万一的情况下)<br>
bash# dd if=/dev/fd0 of=/dev/hda bs=446 count=1<br>
卸载LILO:<br>
当LILO覆盖了引导扇区时,它会保留一个引导扇区的备份在/boot/boot.xxyy中,其中xxyy是16进制的设备主/次号码(major/minor numbers),利用命令"ls -l /dev/device"就可获得硬盘或分区的主/次号码。如果这些备份文件已经存在,那么,当你重新安装LILO或重构内核时,它将不再生成此文件,这就保证了此备份文件是最原始的引导扇区。<br>
若要卸载LILO,你只需恢复初始的引导扇区就可以了。例如:LILO安装在/dev/had,对应的备份文件为/boot/boot.0300,简单地使用下面的命令即可:<br>
dd if=/boot/boot.0300 of=/dev/had bs=446 count=1<br>
当然,若想完全卸掉Linux,必须用Linux的fdisk对Linux分区进行破坏,因为DOS的fdisk无法移去非DOS分区。<br>
还可在DOS下用命令:<br>
c:> fdisk /mbr<br>
恢复 LILO:<br>
重新安装 Windows 以后,就会把LILO 干掉。无论什么原因我们都应该知道怎样恢复LILO。<br>
最好手头有一张安装 CD ,这年头,干净并且确实好用的软盘太少了。所以不推荐你使用软盘。当然,如果你认为你的软盘质量可靠,那么可以从CD-ROM上建立应急启动盘:<br>
dd if=/cdrom/disks/rescue of=/dev/fd0<br>
在 DOS 下面,采用:<br>
rawrite image-name a:<br>
也可以在 www.bootdisk.com上下载一个,按照说明制作一张启动磁盘。<br>
如果从 CD 启动的话,各个不同的Linux 版本有不同的方法进入应急状态。Red Hat 启动后有一个应急模式,SuSE 的话,需要先进入安装界面,然后按Ctrl+Alt+Fn 键找到shell 提示符,可以在这个提示符下来恢复。<br>
下面介绍恢复步骤:<br>
首先建立挂接点:<br>
mkdir mount<br>
然后把丢失的 Linux 挂接到这里:<br>
mount /dev/hda6 mount<br>
如果 /boot 位于另外的分区,<br>
需要把他挂接到 mount/boot 目录下,例如:<br>
mount /dev/hda1 mount/boot<br>
使用 chroot 命令,把 mount 作为根目录,cd /boot<br>
命令实际上进入的是 "mount/boot" 目录:<br>
chroot mount<br>
运行 /sbin/lilo ,这样就把 LILO 安装回了 MBR,重新启动就会看到 LILO 提示符回来了。<br>
<br>
2.1 LILO started by MS-DOS MBR<br>
如果系统至少有一个linux主分区,(非交换区,且在第一硬盘上),那么LILO就可 以安装在这些分区中的一个。当 LILO对应分区被激活后,引导过程如下:<br>
BIOS 读入 MBR<br>
MBR 读入 活跃主分区:LILO所在的分区。<br>
LILO 引导Linux或另外的操作系统。<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -