荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: georgehill (终生勤奋便成天才), 信区: Linux
标  题: 关于lilo--原理篇   (转载)
发信站: BBS 荔园晨风站 (Thu Dec 30 17:52:19 1999), 转信

发信人: fkbch (无灵子@笨愚斋), 信区: Linux
标  题: 关于lilo--原理篇   (转载)
发信站: BBS 水木清华站 (Thu Dec 30 17:08:46 1999)

 hehe, 看着挺乱的, 就给排了一下版. 感觉舒服多了.
--------------------------------------------------------------
【 以下文字转载自 FreeBSD 讨论区 】
【 原文由 stable 所发表 】
 作者  joe (左右为难)             站内  Linux
 标题  关于LiLo--原理篇
 时间  Wed Aug 25 15:18:42 1999
──────────────────────────────────

 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字节。以上,
磁盘蔡一样对待硬盘,仍读入第一个分区,叫作:master boot record.(MBR).
    所以MBR也应该和上面介绍的结构一样:从0开始,以BIOS的magic number 结束
在MBR的最后部分,有分区表。如下图:

OFFSET  Length
0x000   0x1BE code loading and starting the boot sector of the ac?
分区后面的一个地址。这个地址包含一个分区表。该分区表的第一表项
对应第二个逻辑分区。这样就组成一个链表,从而扩展分区可以有任意多的逻辑分
区。
    每一个主分区和扩展区都包含一个引导扇区。系统只能从这几个地方之一启动。
BOOT标志决定哪个区被引导。
    原来,只有主分区,因此,MS-DOS的fdisk和大多数同类工具只能激活主分区..
MBR的代码要作以下的操作:
    1:确定活动分区。
    2:使用BIOS,将活跃分区的启动扇区读入。
    3:跳到启动扇区的0位置。
    MBR的空间足够完成这些工作。如上所述,每个分区理论上包含一个引导扇区,
而且,存在的第二个硬盘也包含和第一个类似的结构。MBR完全可以容纳一个复杂
的引导程序。即所谓的boot manager,动态的决定活动分区。Linux 为我们提供了lilo

2 LILO:the linux loader
   LILO引导扇区包括一个分区表的空间,所以,LILO即可以安装在MBR中,也可以安
装在某个分区的引导扇区。LILO拥有DOS引导扇区的所有功能,而且,它还可以引导
逻辑扇区和第二硬盘分区。LILO还可以和另外的引导者合作(例如:NT loader),这样,
用户就可以有很多选择。
(注:以下几个标题,为防止引起歧义,用原文)
2.1 LILO started by MS-DOS MBR
如果系统至少有一个linux主分区,(非交换区,且在第一硬盘上),那么LILO就可
以安装在这些分区中的一个。当 LILO对应分区被激活后,引导过程如下:
    BIOS 读入 MBR
MBR  读入 活跃主分区:LILO所在的分区。
LILO 引导Linux或另外的操作系统。
要引导其它OS且不用LILO很简单,激活那个分区。嵌荓ILO的好去处。
2. 假如 boot manager 可以引导第二硬盘分区,linux可以装在第二硬盘上。
3 有些 boot manager 甚至可以引导逻辑分区,那LILO就可以装在逻辑分区上。
当然,也要注意以下情况:
1 某些操作系统直接改写MBR,这会将原来的boot manager破坏。
2 重新分区会破坏扩展分区的引导扇区,这是LILO可能要重装。
    当安装新的系统时,是否要重新安装(linux)依靠新的boot manager,要么LILO引
导扇区被注销,要么boot manager 为它提供一个引导项。重新分区或分区格式化会将
LILO和linux全部删除。

2.3 LILO占据MBR
假如整个linux系统都在第二硬盘上,且第一硬盘没有扩展分区,那么,LILO只有装
在MBR上。这样,会将老的MBR冲去,所以,在安装LILO前,要将老的MBR(包括分区
表)做一个备份。DOS下有很多工具可以完成这个任务。在linux下,这样备份:

          # dd if=/dev/hda of=/backup/MBR bs=512 count=1

写会使用命令:
    # dd if=/backup/MBR of=/dev/hda bs=446 count=1
这样,原来的MBR就被写会但不包括分区表。如果分区表也要恢复,那么bs=512.
注意,这样,新的分区表会被破坏!

2.4 LILO 文件
    与LILO有关的文件通常放在/boot/下,配置文件lilo.conf在/etc/下。包含实际
引导系统信息的映射文件有/sbin/lilo安装。对于任何LILO安装,配置文件应该被定
置以适合个人需要。
The configuration file:配置文件
    基本上,配置文件是一些变量赋值。每一行包含一个标志变量或一个变量赋值.
配置文件被特殊的变量赋值分成几个区,每个区引导襝ylinder)地址转化为线性地址。
通常,分区地址从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
    设置根文件系统的访问方式。
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根本就没有被读入,没安装LILO,或LILO驻留的分区没被激活。
    Lnumber : LILO的第一部分被读入并开始执行。但第二部分不能被读入。后面
的数字表明出错原因。这可能是由于硬盘的物理错误或不正确的物理结构信息。
    LI: LILO的第一部分可以读入第二部分,第二部分执行时出错。这可能是不正
确的物理结构信息或重装了boot.b而没有运行LILO重新安装。
    LIL:LILO的第二部分启动起来了,但是不能从map文件读入descriptor tables.
这说明不正确的物理结构信息或物理错误。
    LIL?: LILO的第二部分被读到不正确的地址。原因同LI
    LIL-: descriptor tables有错。这可能是不正确的物理结构信息或重装了
map file而没有运行LILO重新安装。

--
※ Origin: 笑 书 亭 <bbs.zd.dhs.org>

--

     书山有路勤为径;
     学海无涯苦作舟!
 我是来自大富翁的小美!^_^

※ 修改:·georgehill 於 Dec 30 17:54:22 修改本文·[FROM: 192.168.1.115]
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.115]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店