释迦牟尼佛真有画像吗:7.5 其他引导装入程序
来源:百度文库 编辑:中财网 时间:2024/10/03 14:58:34
7.5 其他引导装入程序
这里要介绍其他一些流行的引导装入程序,说说它们可能在哪里使用,并总结它们的特性。我们并不打算给出一份完整的说明,因为这样做将需要一本书的篇幅。对此感兴趣的读者可以参考本章后面的"参考资源",做进一步的学习。
7.5.1 Lilo
Linux加载器(即Lilo)在桌面PC平台的商业Linux发行版中广泛使用。同样,在Intel x86/IA32体系结构中也使用得很多。Lilo由几个组件组成。它在可启动磁盘的第1个扇区上有一个主加载器 。这个主加载器限制在磁盘扇区容量以内,通常是512字节。因此,Lilo的主要任务是直接载入二级加载器,并将控制权移交给它。二级加载器可以跨越多个分区,它将完成加载器的大多数工作。
Lilo由一个配置文件和工具驱动,这个工具是lilo可执行程序中的一部分。配置文件在主机操作系统的控制下进行读写,也就是说,配置文件既不被主加载器引用,也不被二级加载器引用。配置文件的条目是在系统安装或系统管理时,通过lilo配置工具读取或处理的。代码清单7-10是一个简单的lilo.conf配置文件的示例,文件中描述了典型的Linux和Windows双系统启动。
代码清单7-10 Lilo 配置文件:lilo.conf
- # This is the global lilo configuration section
- # These settings apply to all the "image" sections
- boot = /dev/hda
- timeout=50
- default=linux
- # This describes the primary kernel boot image
- # Lilo will display it with the label 'linux'
- image=/boot/myLinux-2.6.11.1
- label=linux
- initrd=/boot/myInitrd-2.6.11.1.img
- read-only
- append="root=LABEL=/"
- # This is the second OS in a dual-boot configuration
- # This entry will boot a secondary image from /dev/hda1
- other=/dev/hda1
- optional
- label=that_other_os
这个配置文件指示Lilo配置工具使用第1块硬盘(/dev/hda)的主引导记录(master boot record,MBR)。文件还包含了一条用户延迟指令,给用户一个在超时以前进行选择的机会(本例中是50s)。这也给系统使用者提供了从列表中选择启动哪一个操作系统映像的机会。如果操作系统使用者在时间用尽以前按下Tab键,Lilo将列出一张列表以供选择。Lilo使用lable标签显示每一个映像文件。
配置文件中的映像通过image标签定义。见代码清单7-10,本例中的主要(默认)映像是一个Linux内核映像,文件名是myLinux-2.6.11.1。Lilo将从硬盘载入这个映像。之后,它将载入用作初始化ramdisk的第2个文件,即myInitrd-2.6.11.1.img。Lilo用包含"root=LABEL=/"的字符串构建内核命令行,并在Linux内核执行过程中传递给内核。Linux在启动后,将通过这个方法获得根文件系统。
7.5.2 GRUB
现在有很多商业Linux发行版都使用GRUB作为引导装入程序。GRUB(Grand Unified Bootlosder)是一个GNU项目,提供了许多Lilo所没有的特性。GRUB和Lilo之间最大的不同是,GRUB能够理解文件系统和内核映像格式。而且,GRUB可以在启动时读取和修改其配置选项。GRUB也支持通过网络启动,这在嵌入式环境中极为有用。GRUB在启动时会提供一个命令行接口,利用此接口,就可以在启动过程中修改配置参数。
与Lilo一样,GRUB也通过一个配置文件进行驱动。但是和Lilo的静态配置有些不一样,GRUB引导装入程序在启动时读取这个配置。这意味着可以根据不同的系统配置,在启动过程中进行修改。
代码清单7-11给出一个GRUB配置文件的示例,这个配置文件取自PC机。GRUB的配置文件名为grub.conf,通常存放在一个专门存储启动映像文件的小分区中。在本例的配置文件所在的机器里,这个目录是/boot。
代码清单7-11 GRUB 配置文件示例:grub.conf
- default=0
- timeout=3
- splashimage=(hd0,1)/grub/splash.xpm.gz
- title Fedora Core 2 (2.6.9)
- root (hd0,1)
- kernel /bzImage-2.6.9 ro root=LABEL=/ rhgb proto=imps quiet
- initrd /initrd-2.6.9.img
- title Fedora Core (2.6.5-1.358)
- root (hd0,1)
- kernel /vmlinuz-2.6.5-1.358 ro root=LABEL=/ rhgb quiet
- title That Other OS
- rootnoverify (hd0,0)
- chainloader +1
GRUB首先给用户列出可启动的映像。代码清单7-11中的title是用户可以看到的映像名。default标签指定在给定时间内(本例为3s)不进行选择将自动启动的映像。映像的序号从0开始计数。
与Lilo不同,GRUB可以读取一个给定分区上的文件系统,并载入映像。root标签符指定根分区,grub.conf配置文件中的所有文件名都在根分区中。在本例所示的配置中,根是第1块磁盘的第1个分区,用root(hd0,1)表示。分区从0开始计数,这里指的是第1块磁盘的第2个分区。
映像被指定为与所指定的根分区相关的文件名。在代码清单7-11中,默认启动的映像是Linux 2.6.9内核,与之相匹配的ramdisk映像是initrd-2.6.9.img。注意,GRUB的语法是将内核命令行参数与内核文件位置放在同一行上。
7.5.3 其他引导装入程序
很多其他的引导装入程序也用在专用的环境中。例如,Redboot是另一个用于Intel和Xscale平台上的开源引导装入程序,它用于采用Intel IXP和PXA系列处理器的评估板中;Micromonitor用在诸如Cogent和其他一些厂商的开发板中;YAMON一般用于MIPs平台中 ;LinuxBIOS主要用在X86环境中。总之,当你考虑选择一个启动代码时,应该首先考虑如下一些重要的因素:
它支持我选择的处理器吗?
它是否已经移植到了与我使用的开发板相似的板子上?
它支持我所需要的特性吗?
它支持我计划使用的硬件设备吗?
我是否能够获得社区里的很多用户的支持?
有没有我可以购买支持服务的商业厂商?