论坛风格切换切换到宽版
  • 945阅读
  • 0回复

[问题求助]引导加载程序LILO和GRUB [复制链接]

上一主题 下一主题
离线qsums.
 
发帖
1994
C币
-193509
威望
384
贡献值
1
银元
-5
铜钱
4485
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
最近在进行嵌入式Li.nux方面的研究,也翻阅了一些关于引导加.载操作系统方面的资料,特此整理一下。.


什么是引导加载程序?
最简单地讲,引导加载程序(boot load.er) 会引导操作系统。.当机器引导它的操作系统时,BIOS 会读取引导介质上最前面的 512 字节(即人们所知的 主引导记录(master boot .record,MBR))。在单一的 MBR 中只能存储一个操作系统的引导记录,所以当需要多个操作系统时就会出现问题。所以需要更灵活的引导加载程序.。域名
主.引导记录本身要包含两类内容 —— .部分(或全部)引导加载程序以及分区表(其中包含有关于介质其余部分如何划分为分区的信息)。当 BIOS 引导时,它会寻找硬盘驱动器第一.个扇区(M.BR)中存储的数据;BIOS 使用存储在 MBR 中的数据激活引导加载程序。    健康
由于 BIOS 只能访问很少量的数据,所.以大部分引导加载程序分两个阶段进行引导。在引导的第一个阶段中,BIOS 引导一部分引导加载程序,即 初始程序加载程序(initial program loader,IPL)。IPL 查询分区表,从而能够加载位于不同介质上任意位置的数据。.首先通过这步.操作来定位第二阶段引导加载程序(其中包含加载程序的其余部分.)。             电子
第二阶段引导加载程序是.引导加载程序的主体;很多人认为这才是引导加载程序的真正部分。它包含.有加载程序更需要磁盘空间的部分,比如用户界面和内核引导程序。从简单的命令行到绘声绘.色的 GUI,这些用户界面的范围很广泛。 .
引导加载程序通常配置为两种方式的其中之一:要么是作为主引导加载程序(.primary boot loader),要么是作为二级引导加载程序(secondary boot loader)。主引导程序 是安装在 MBR 上的第一阶段引导加.载程序。 二级引导加载程序 是安装在可引导分区的第一.阶段引导加载程序。必须在. MBR 上安装单独的.引导加载程序,并配置它将控制权转交给二级引导加载程序。             汽车
很多较新的 Linux 引导加载程序特别实用,因为它们提供了不同.程度的交互,比如高级.的 G.UI 和加密的口令,以及通过选择操作系统进行引导的能力。这样,可以在具有多.个物理磁盘的同一机器上共存多个操作系统。这种设置越来越常见,因为它帮助很多用户在安装新的 Linux 时,能够保留先前由 Windows® 机器所生成的宝贵数据资料。随着时间.的推移,引导加载程序已经得到了增强,为用户引入了大量的功能。各个引导.程序的功能和配置存在差异,但基本的目标是相同的。(        游戏          )
现在来看两个较.为流行的引导加载.程序:LILO 和 GRUB。           鲜花

LILO
LInux LOad.er(LILO) 已经成为所有 Linux 发行版的标准组成部分。作为一个较老的Linux 引导加载程序,它那不断壮大的 Linux 社区支持使它能够随时间的推移而.发展,并始终能够充当一个可用的现代引导加载程序。有.一.些新的功能,比如增强的用户界面,以及对能够突破原来 1024-柱面限制的新 BIOS 功能的利用。           女人
虽然 LILO 仍.在不断地.发展,但 LILO 工作原理的基本概念保持不变。           女人

使用 LILO 作为引导.加载程序            杀毒
要使用 LILO 作为引导加载程序,需要.做的事情取决于是要进行全新安装还是要让已经安装的 Linu.x 改为使用. LILO。如果是要进行全新安装,那么直接跳转到配置 L.ILO 那一节。如果已经安装了某个 Linux 发行版,那么通常可以选择安装并配置 LILO(并可以将机器引导到新的 Linux 安装)。.
要将现有的 Linux 迁移到 LILO,首先必须获得最新版本的 LILO。在做任何其他事情之前,建议.您确保在手边拥有一张 .Linux 引导盘 —— 如果偶而弄错了某些地方,它可以提供很大的帮助,能够恢复到初始的 Linux 配置!将 LILO 安装到系统中之后,让它接管 .MBR 非常简单。以 root .用户身份输入:外贸
# /sbin/lilo -v. -v            建材
这.将使.用当前的 LILO 默认值,抹去 MBR 中当前所有内容。要注意,如果想要在同一机器上运行 Windows 和 Linux,那么应该先安装 Windows OS,然后再安装 Linux OS,这样,在 Linux 安装中所选.择的引导加载程序就不会被 Windows 引导加载程序所覆盖。与 Linux 引导加载程序不同,多数 Window 引导加载.程序不支持引导 Linu.x。如果已经先安装了 Linux,那么只需要自己创建一张. Linux 引导盘,这样就可以在安装完 Windows 之后,回到 Linux 安装中并重写 MBR。教育

配置 LILO
LILO 的配置都是通过位于 /etc/lilo.conf 的一个.配置文件来完成的。清单 1 给出了一个示例配置,支持 Linux 和 Windo.ws 机器的双重引导.。.



主 HDD(物理磁盘. 1)上安装.了 Windows XP。在 Linux 术语中,这个 HDD 是 /dev/hda(在 G.RUB 术语中是 hd0,0)。           婚庆

从 HDD(物理磁盘 2.)上安装了 Red Hat Linux;root 分区位于.这个硬盘驱动器的第三个分.区,即 /dev/hdb3(在 GRUB 术语中是 hd1,3)。

清单 1.. lilo.conf 示例文件           鲜花
boot=/dev/hda
map=/boot/map
ins.tall=/boot/boot.b.
prompt
timeout=100
compact
default=Linux
image=/boot/vmlinuz-.2.4..18-14.
    label=Li.nux.
    root=/dev/h.db3    美容
    read-only
    passw.ord=linux虚拟主机
other=/dev/hda
    label=Windo.wsXP.
清单 1 中的选项:



boot= 行告诉 .LILO 在哪里安装引导加载程序。在上面的.示例中,将把它安装到第一块硬盘的 MBR。也可以选择将 LILO 安装到 /dev/hdb3.(示例中的 Linux 分区),这样需要向 /dev/hda 安装另一个引导加载程序,并令其指向 LILO 引导加载程序;然后只需要让 LILO 作为二级引导加载程序。.通常,引导加载程序应该位于 /dev/hda。还可.以将这个参数指向软盘驱动器(最常见的是 /dev/fd0),来制做. LILO 软盘引导磁盘。 电影

map= 指向引导期间 LILO. 内部使用的映射文件。当使用 /sbin/li.lo 命令安装 LILO 时,它会自动生成这个文件,其中包含有描述符表(还有其他内容)。.建议不要改动这个文件! .

install= 是 LILO 在引导过程中内部使用的文件之一。它同时包含有引导加载程序的主要部分.和二级部分。boot.b 文件的一个片段被写入到 MBR.(引导加载程序的主要部分),它会指向那个映射,接下来指向二级引导.加载程序。同样,不要改动它!     健康

prompt=. 告诉 LILO 使用用户界面(本例中给出了两个选择 —— Linux 和 Windo.wsXP)。除了使用 prompt/user 界面以外,在适当情况下还可以为 .Linu.x 内核等指定.具体的参数。如果不在配置文件中指定此选项,那么 LILO 将引导到默认的 OS,不发生任何用户交互,也不会等待。(但是请注意,如果在引导时按下了 SHIFT,那么还是可以得到提示,当不想把引导加载程序暴露给普通用户时,这非常有用)。 服务器

t.imeout= 是引导提示在自动引导默认 OS(本例中是 Linux)之前.的等待时间(以十分之一秒为单位)。如果在 l.ilo.conf 没有指定 prompt,那么这个参数就会被忽略。               乙肝

co.mpact 选项可以大大加速引导过程,它会将连续的读磁盘的请求合并为一个单独的请求.。当希望从软盘引导时,这个选项尤其有用。 服务器

d.efault= 选项告诉 LILO 默认使用哪个映像进行引导,比如在等待超时之后。这与 .lilo.conf 文件中的某个映像的标签相关联。如.果没有在配置文件中指定此选项,那么它将引导文件中指定的第一个映像。 服务器

对于允许.用户引导到的每一个 Linux 版本,都应.该指定 image= 及以下三个选项。image 选项指定希望引导到的内核版本。 .

label= 标明了在运行期间.希望能够从用户界面引导的不同 OS。另外,这个标签用于指定引导的默认 OS。(注意:标签名.称中避免出.现空格;否则,引导那个文件时会出现无法预期的错误。) .

root= 告诉 .LILO OS .文件系统实际所在的位置。在示例中为 /dev/hdb3,即第二块硬盘上的第三个分区。 (        游戏          )

read-on.ly 告诉 LILO 以只读的方式初始引导到文件系统。OS 一旦完全引导起来,就会以.读写方式挂载。 [成人用品]

password=. 允许您为将要引导到的特定 OS 设置口令。不幸的是,这个口令是以可读文本的方式保存在 lilo.conf 文件中,所以,所有.人都能够读取它。如果需要,还可以对想要引导自的每个操作系统设置口令(在我们的示例中,只为 Linux 的引导设.置了一个口令).。               乙肝

other= 的动作类似于 image 和 root 选项的组合,但是用于除了 Linux 以外的其他操作系统。在我们的示例中,它告诉 LILO 到.哪里去找到 Windo.ws OS(位于第一块硬盘的第一个分区)。如果先安装 Windows,后安装 Linu.x,通.常会是这样。 学习

label= 与所有其他 label 选.项相同。 服务器

在 lilo.conf 文件中可以使用很多其他参数,不过.清单 1 中的参数就足以让机器可用了。要获得.关于 lilo.conf 的这些以及其他参数的进一步资料,请参考手册页(man lilo.conf)。由于在引导时不会读取 lilo.conf,所以,当这个文.件有改动时,需要“更新”MBR。如果不完成此步骤就重新引导,那么.对 lil.o.conf 的修改不会在启动中反映出来。与先前将 LILO 写入 MBR 类似,需要运行:投资
$. /sbin/lilo -v -v .
-v -v 标记会为您给出非常详细的输出。当像我们那样运行 LILO 时,有很.多参数可以指定。参阅手册页以.获得更进一步的信息(man lilo)。.

初始引导过程
当 LILO 初始引导时,它会按次序打印.出每个字母 —— .L-I-L-O.。如果所有字母都显示出来,那么第一阶段引导就成功了。缺少任何内容都表示出现了问题:    外汇



L:第一阶段.引导加载程序已经被加载。如果 LILO 停止在这里,那么是在引导第二阶段引导加载程序时出现了问题。这通常会伴随有一个错误代码。在这个阶段的常见问题是.介质问题,或者在 lilo.conf 文件.中指定了不正确的磁盘参数。 .

LI:第二阶段引导加载程序已..经被加载。LILO 在此处停止.表示第二阶段引导加载程序不能被执行。同样,这可能是因为出现了与只显示 L 类似的问题:正在加载,或者因 boot.b 文件被破坏、移动或删除而不能加载。     外汇

LI.L:第二阶段引导.加载程序正在被执行。此时,可能会再次出现介质问题,或者映射文件(如 lilo.conf 文件.中所指定的)在寻找描述符表时可能会出现问题。              电子

LIL?:加载到与上面相同的阶..段。这.通常意味着加载第二阶段引导加载程序使用了错误的地址,最常见的原因是 boot.b 所在的位置与 lilo.conf 文件所指定的不同。               乙肝

LIL-:加载到与上面相同的阶段。加载.描述符表时出现问题,最常见.的原因是描述符表错误。 教育

LILO:LILO 成.功被加载.,没有出现任何错误。 .



引导时的附加配置
LILO 被成功加载后,将看.到 LILO 提示符。还是使用前面的示例 lilo.conf 文件,此时将有两个选择,可能对 LILO .新手来说并不直观。首先,可以让 LILO 超时(10 秒后),这将引导 /dev/hdb3,即 Linux 分区。另外,可以按下 TAB 键,这将列出将要引导的操作系统选项。在我们的示例 lilo.c.onf 中,将得到的选项.是 “Linux” 和 “Windo.ws”。输入哪一个,就会引导到哪个 OS。指定加载 Linux 选项,会提示输入一个口令,在本例中是 linux。如果输入的口令有误,则会返回. LILO. 提示符。          婚庆
不.幸的是,LILO 不支持引导期间的交互式配置,所以,只能在 .lilo.conf 中或者运行 /sbin/lilo 时指定选项。    健康
关于第一次尝试 LILO 的最后一点建议是:使用软盘引导磁盘比使用硬盘实现 LILO 配置更为安全。为此,必须在 lilo.c.o.nf 文件中使用 boot=/dev/fd0 替换 .boot=/dev/hda。那样,如果弄乱了 lilo.conf 文件中的任何配置,都可以取出引导磁盘并像先前一样引导到 Linux。当使用软盘进行引导一切正常以后,可以将 lilo..conf 修改回. boot=/dev/hda,然后最后一.次运行 /sbin/lilo 来上传修改。[成人用品]

GNU GRUB
近来,GRand Unified Boot loader(通常称为 GRUB)似乎要取.代 LILO 在引导加载程序方面的统治地位。GNU GRUB 基于原来的 GRUB 程序(最初由 Erich Stefan Boleyn 所创建),正在由自由软件基金会(Free Software Foun.d.ation).进行积极开发。              汽车

使用 GRUB 作为引导加.载程序--- 印刷
与使用 LILO 相同,使用 GRU.B 作为活动的引导加载程序所需要的步骤,取决于是安装全新的 OS 还是已经安装了 Linux 并计划.转移到 GRU.B。如果是进行全新安装,那么可以直接跳转到配置 GRUB 那一节。如果已经安装了某个 Linux 发行版.,那么通常可以选择安装并配置 GRUB(并可以将机器引导到新的 Linux 安装)。.
计划迁移到 GRU.B 的当前 Linux 用户需要去获得最新版本的 GRUB。同样,与. LI.LO 相同,在做任何其他事情之前,需要在手边准备一张 Linux 引导盘。使用交互模.式,则不需要这张磁盘,不过最好拥有一张以备急需时使用。将 GRUB 安装到系统中之后,让它接管 MBR 非常简单。以 root 用户身份输入:.
# /boot/grub/.grub (        游戏          )
这样将加载一个类似于 BASH 的命令提示符,可以.在这里使用 GRU.B 命令:          婚庆
grub> in.stall (hd1,3)/boot/grub/st.age1 (hd0) (hd1,3)/boot/grub/stage2 p (hd1,3)/boot/gr.ub/menu.conf     外汇
这个命令使用了 GR.UB. 安装命令,需要为它给出第.一阶段映像的位置以及 MBR 的位置(install (hd1,3)/boot/grub/sta.ge1 (hd0))。也要给出第二阶段映像的位置((hd1,3)/boot/grub/stage2)。最后,可选项 p (hd1,3)/boot/grub/menu.conf 告诉 GRUB GUI 菜单配置文.件的位置。           女人
在前面的示例中,hd1 是. Linux Disk,hd0 是 Windows .磁盘。这样将使用当前 GRUB 默认值,并抹去 MBR 中当前所有内容。    健康

配置 GRUB
GRUB 的配置都是通过位于 /boot/grub/grub.conf 的一个配置文件来完成的。清单 2. 给出了一个示例配.置。电脑
清单 2. grub.con.f 示例文件          婚庆
default=0
timeout=10
splas.himage=(hd.1,3)/grub/splash.xpm.gz健康
p.assword --md5 $1$opeVt0$.Y.br.18LyAasRsGdSKLYlp1--------------彩票
tit.le Red Hat Linux.
    password --md5 $1$0peVt0$Y.b.r.18LyAasRsGdSKLYl.p1<性病>
    ro.ot (hd1,3)    美容
    kernel. /vmlinuz-2.4.18-14 ro ro.ot=LABEL=/              乙肝
    initrd /.initrd-2.4..18-14.img.
tit.le Windows XP电脑
    password --md.5 $1$0peVt0$Y.br.18.LyAasRsGdSKLYlp1.
    rootnoverify (hd0,0.).
    chainloader +1.            杀毒
清单 2 中的选项:



defau.lt= 选项通知 .G.RUB 在.超时之后默认使用哪个映像进行引导。这一选项与 grub.conf 文件中的某个映像相关联。 0 表示指定了第一个,1 表示指定了第二个,依次类推。如果没有在配置文件指定此选项,那么它将引导文件中指定的第一个映像。     外汇

time.out= 是在自动引导默认 OS(在本例中是 Red Hat. Linux)之前引导提示会等待多少秒。 健康

splashimage= 是用作 GR.UB GUI 背.景的图片所在的位置。              电子

password 选项指定了使用 M.D5 加密的口令,用于访问 GRUB 的交互式引导选项。注.意,这不会阻止用户选择引导已经定义的 .OS;需要为 每一个 -titl.e 设置它。为了生成一个 md5 口令,请运行 GRUB 所附带的 grub-md5-cry.pt 工具(以 root .身份)。它将提示输入一个希望加密的口令。然后输出使用 MD5 加密的口令。将这个口令拷贝到 .grub.conf 中 password -md5 之后,但是要在同一行上。通常这个口令可以设置为 root 口令,因为无论如何也只有 root 才可以读取 grub.conf 文件。 --- 印刷

title 标明了.在运行期间能够从用.户界面引导的具体 OS。与 LILO 不同,在这个名称中可以有空格。 .

password 的设置方式与前面的 passw.ord 相同。如果计.划与其他用户共享此机器,那么不要将这个口令设置为 root 口令。 .

root 告.诉 GR.UB OS 文件系统的实际位置。可见,GRUB 引用介质的方式与 LILO 不同。在 LILO. 示例中, /dev/hdb3 是第二块硬盘中的第三个分区。.Grub 将此硬盘引用为(hd1,3),即第二块硬盘的第三个分区(disk 0 是第一块硬盘)。 .

kernel:vmlinuz-X.X.XX-XX 是. root .目录中默认引导映像的名称。 (        游戏          )

initrd:.initrd-X.X.XX-XX.img 是 root .目录中默认 initrd 映像的名称。 .

rootnoverify 告诉 GRUB 不要尝试去改变 OS 的 root。这样,当文.件系统不被 .GRUB 所支持时,不会出现引导错误。 虚拟主机

chainloader +1 告诉 GRU.B 使用一个链式加载程.序来加载这个 OS,加载 Windows 时需要这个选项。           婚庆

与 LILO 的配置文件不同,grub.conf 会在引导时被读取,当被修改时不必去更.新. MBR。           鲜花

初始引导过程
与 LILO 类似,当 GRUB 初始加载时,从 MBR 加载第一阶段程序。加载后,它进.入第一阶段和第二阶.段引导加载程序之间的中间阶段(为了方便.讨论,.可称为第 1.5 阶段)。之所以存在第 1.5 阶段,是为了能够对 /boot/grub 中的 GRUB 配置文件进行常规的文件系统.访问,而不是去访问磁盘块。然后进入引导加载程序的第二阶段,GRUB 加载 grub.conf 文件。    健康
现在应该能够看到 GRUB GUI 了。对于熟悉 W.indows 的用户来说,这看起来感觉比 LILO 更友好。不过,不要因为 GRUB 拥有 GUI 就认为它是一个不能处理数据的引导加载程.序。可选项.多得惊人。.
如果像我那样.配置,那么现在应该能看到屏幕中有两个选项:引导到 Re.d .Hat Linux 或者引导到 Windows XP。默认情况下,它将加载 Linux。选择任意一个的结果不言而喻。虚拟主机

引导时的附加配置
在 GRUB GUI 中,按下任何键都会停止超时的计时。然后按下 P 键,可.以输入 GRUB 口令,.并获得对 GRUB 交互式引导选项的完全访问权限。按下以下其中一个键,应该能够使用三个选项之.中的一个:.



要在引导之前编辑命令,请按下 E。这将让您能够为当.前选中的 OS 编辑具体的选项。GRUB 只会显示出与那个 OS 的引导相关的选项,然后您可以恰当地进行编辑。当为 root 文件系统指定了错误的 HDD 时,这尤其有用。.如果需要以单用户模式访问机器(不需要指定口令就能够让您获得 ro.ot 访问权限!),那么在 GRUB 主屏幕上选择 Linux OS。.然后与前面一样,按下 E,并移到内核那一.行(在我的示例中是 kernel /vmlinuz-.2.4.18-14 ro root=LABEL=/)。然后在那一行最后添加 single,并按下 B 来使用修改过的 grub.conf 进行引导。在编.辑模式下所做的任何修改.都不会保存到 grub.conf 文件中。 学习

要.修改内核参数,请按下 A。如果您是一位经验丰.富的 Linux 用户,可以根据需要调整内核参数。 .

要获得类似于 BASH 的命令行界面,请按下 C。这个小.型的命令行界面允许您在系统中查找 GRUB 配置文件,加载另外的配置文件,编辑配置文件中的行,以及.直接输入 GRUB 命令。如果配置的变化(比如删除了某个分区)让系统无法引导,那么可能会用到这个界面。如果需要将系统引导为.单用户模式,或者.要让运.行级别为 3 而不是普通的运行级别,也可能会使用到它。 电影

可见,GRUB 真.正开.放了引导期间的可能性。不过,这可能是一件.好坏参半的事情,因为 GRUB 也潜在地允许攻击者在 OS 加载之前访问系统。会被误用的主要开放领域是:          婚庆



访问单用户模式。所有加载到单用户模式的人都会.得到 root 访问权限,使得 Linux 可被.随意滥用。 .

访问其他操作.系统。任何配置为不需要口.令的可引导操作系统,比如 DOS,都将是开放的。 投资

访问 .GRUB 编辑器。这允许用户获得修改 GRUB 配置的完全访.问权限。 外贸

在 GRUB 配置中,设置安全性非.常重要;设置口.令,并使用 MD5 加密,可以保证整个系统的安全。           鲜花

GRUB 的未来
GRUB 将要被 GRUB2 .所取代。原来的 GRUB 将要被重新命名为 GRUB Leg.acy;除了修复 bug 以外,不会再对它进行积极开发。GRUB2 将是对原来 GRUB 的完全重写。到目.前为止,以下特性是变化的核心部分:          婚庆



通过创建压缩的核心映像取代了.第 1.5 阶段 .

支持核心映像的动态加载

争取让整个 GRUB 框架成为面.向对象的 电脑

支持国际化,比如 非-ASCII .字符集 [成人用品]

支持.不同硬件体系结构和不同平台(不同于. Linux 的平台) 学习


GRUB 与 LILO 的比.较服务器
如本文开始处所述,所有引导加载程序都以类似的方式工作,满足共同的目的。不过,LILO. 和 GRUB 之.间有很多不同之处:--- 印刷



LILO 没有交.互式命令界面,而. GRUB 拥有。 投资

LILO 不支持网络引导,而 GR.UB 支持。 <性病>

LILO 将关于可以引导的操作系统位置的信息物理上存储在 MBR 中。如果修改了 LILO. 配置文件,必须将 LILO 第一阶段引导加载程序重写到 MBR。相对于 GRUB,这是一个更为危险的选择,因为错误配置的 MBR 可能会让系统无法引导。使用 GRUB,如果配置文件配置错误,则只是默认转到 .GRU.B 命令行界面.。 投资




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/89151/showart_1745271.html           女人
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个