首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 操作系统 > Linux > 正文
  • 实战lilo管理工具
      2007-2-25  来源:网络资源  编辑:Jsbulo  热度:

    lilo是linux 的引导管理程序,它和OS/2、NT的BootManager,以及许多人用的system commander的作用类似,当你在这个提示符下按下Tab键的时候,它会显示出当前可以引导的系统:

    lilo:

    dos smplinux

    实际上,lilo就是一小段引导程序,可以位于任何有可能用来引导系统的位置,但是通常我们把它放在硬盘的主引导区,这个概念对任何与病毒打过交道的用户都应该是非常熟悉的。系统自检完毕之后,就会从硬盘上读入主引导区的内容,于是,lilo接管了系统的控制权,可以引导Linux了。理论上,许多书籍建议你用软盘引导服务器以便避免可能的破坏,这倒是那种“教科书的解决方案”的一个典型。

    你可以看到在上面显示出了多个系统名字,输入某一个名字引导相应的系统,lilo会自动选择对应的分区以及启动文件来启动系统。

    与lilo决斗是系统管理员生活的一部分,硬盘可能会损坏,病毒可能更改了引导记录,错误地编译内核使系统报销,甚至一些愚蠢的反病毒程序也可能会使得lilo被破坏,这时你也许必须从DOS上引导,然后重新配置lilo。如何从DOS下启动Linux等一会再说,现在让我们把主要精力拿来对付lilo。

    lilo的配置是靠编辑/etc/lilo.conf实现的,这个文件的规则很简单,举例来说,这是我的lilo文件:

    [wanghy@openlab /etc]$ cat lilo.conf

    boot=/dev/hda

    install=/boot/boot.b

    prompt

    timeout=50

    default=smp


    image=/boot/bzImage

    label=smp

    read-only

    append="mem=256M"

    root=/dev/hda1


    image=/boot/vmlinuz-2.2.12-20

    label=linux

    read-only

    root=/dev/hda1

    other = /dev/hda3

    label = dos

    table = /dev/hda

    首先是boot=/dev/hda,这表示你用的启动磁盘是第一个IDE硬盘(由于这个原因,通常你不能从从盘上启动Linux)。

    接下来,install=/boot/boot.b将/boot.b表示要将/boot/boot.b文件的内容写到引导记录中。这个文件在安装Linux的时候就已经创建了。

    prompt

    timeout=50

    default=smp

    这两行表示系统启动时将会显示一个lilo:提示信息并等待5秒钟,注意timeout的单位是0.1秒。如果5秒钟之内没有输入系统的名字,那么缺省将引导标号为"smp"的系统。

    接下来定义的是各个引导项目,首先定义了两个Linux引导项目,image=/root/bzImage这样的行定义了启动时使用的内核映像,接下来,label=smp定义了这个启动选择项的名字是smp。在下面的几行则是用bzImage启动系统时的一些附加参数:

    read-only

    使用只读方式连接文件系统,由于系统启动的时候要检测文件系统完整性,因此要使用这个选项,当系统启动后,启动脚本会自动将它切换为read-write模式。

    append="mem=256M"

    缺省下,Linux内核只使用64MB以下的内存空间,由于这个系统有256MB内存,必须用命令行直接通知内核,append后的内容就是启动时加给内核的命令行参数。必须注意,有时你需要把它写成mem=255M,原因是在许多系统上bios会占用部分存储空间,如果你没有把握,就从内存量中减去一。

    root=/dev/hda1

    当这个内核启动以后,用/dev/hda1文件系统作为本机文件系统的根。

    接下来的段落的效果与刚才我们解释的一样,刚才定义了一个名叫"smp"的启动项,它启动Linux并且连结/dev/hda1文件系统,而从image=/boot/vmlinuz-2.2.12-20开始的段落则定义一个名叫“Linux"的选项,它使用/boot/vmlinuz-2.2.12-20作为内核映像,挂接/dev/hda1文件系统,但是只使用缺省的64MB内存。

    再往下的段落

    other=/dev/hda3

    label=dos

    table=/dev/hda

    定义了一个名叫dos的启动项,这个启动项用来启动位于/dev/hda3上的MS-DOS分区。
    由于DOS不使用内核映像而是利用引导记录,系统必须能够找到分区表信息以便定位引导记录,table=/dev/hda表示系统的DOS类型的分区表在/dev/hda上。

    当完成了lilo.conf的设置工作后,执行

    /sbin/lilo

    会出现这样的信息:

    [openlab]# /sbin/lilo

    Added smp *

    Added linux

    Added dos


    *表示这个加入的项是缺省启动项。三行信息表示我们定义的三个启动项都已经被加入,以后再启动就可以使用新的启动定义了。

    lilo还支持很多其他的定义,但是对于系统管理员来说,上面解释的已经足够了,想要了解进一步的内容,执行man lilo.conf。

    前面提到了内核映像这个概念,Linux在编译内核时将内核做成压缩的二进制内存映像,启动中自动拷贝到内存中并解压,然后让核心代码接管系统。

    核心代码得到系统的控制权之后,下一步需要检测系统设备并激活必须的设备,在这个过程中,一串初始化信息在屏幕上滚过:

    Linux version 2.2.14 (root@openlab.asnc.edu.cn) (gcc version egcs-2.91.66
    199903

    14/Linux (egcs-1.1.2 release)) #9 SMP Sat Jan 29 10:07:06 EST 2000

    Intel MultiProcessor Specification v1.1

    Virtual Wire compatibility mode.

    OEM ID: MSIProduct ID: 440BXAPIC at: 0xFEE00000

    Processor #0 Pentium(tm) Pro APIC version 17

    Processor #1 Pentium(tm) Pro APIC version 17

    I/O APIC #2 Version 17 at 0xFEC00000.

    Processors: 2

    mapped APIC to ffffe000 (fee00000)

    mapped IOAPIC to ffffd000 (fec00000)

    Detected 451033204 Hz processor.

    Console: colour VGA+ 80x25

    Calibrating delay loop... 448.92 BogoMIPS

    Memory: 257700k/262144k available (1044k kernel code, 424k reserved, 2920k
    data,

    56k init)

    Dentry hash table entries: 32768 (order 6, 256k)

    Buffer cache hash table entries: 262144 (order 8, 1024k)

    Page cache hash table entries: 65536 (order 6, 256k)

    VFS: Diskquotas version dquot_6.4.0 initialized

    Checking 386/387 coupling... OK, FPU using exception 16 error reporting.

    Checking ’hlt’ instruction... OK.

    .............

    这个信息很长,几乎每个被初始化的设备都会显示一段讯息,从这里可以看出系统中那些设备已经开始工作,那些设备失败了。如果信息滚动过快,可以在启动完成之后用dmesg命令显示全部信息。

    当需要直接在内核映像中启动的设备(这些设备是在编译内核时确定的)初始化完毕后,Linux连结在lilo.conf的root=行中定义的根文件系统,启动init进程(应该记得它是一切程序的最初启动者),寻找/etc/inittab文件并且进入运行级的设置。