热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

当前位置 :| 主页>Linux教程>内核研究>

Linux的系统过程中的LILO和GRUB(下)

来源: 作者: 时间:2007-04-07 Tag: 点击:

初始引导过程

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

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

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

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

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

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

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

引导时的附加配置

LILO 被成功加载后,将看到 LILO 提示符。还是使用前面的示例 lilo.conf 文件,此时将有两个选择,可能对 LILO 新手来说并不直观。首先,可以让 LILO 超时(10 秒后),这将引导 /dev/hdb3,即 Linux 分区。另外,可以按下 TAB 键,这将列出将要引导的操作系统选项。在我们的示例 lilo.conf 中,将得到的选项是 “Linux” 和 “Windows”。输入哪一个,就会引导到哪个 OS。指定加载 Linux 选项,会提示输入一个口令,在本例中是 linux。如果输入的口令有误,则会返回 LILO 提示符。

不幸的是,LILO 不支持引导期间的交互式配置,所以,只能在 lilo.conf 中或者运行 /sbin/lilo 时指定选项。

关于第一次尝试 LILO 的最后一点建议是:我发现使用软盘引导磁盘比使用硬盘实现 LILO 配置更为安全。为此,必须在 lilo.conf 文件中使用 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 Foundation)进行积极开发。

使用 GRUB 作为引导加载程序

与使用 LILO 相同,使用 GRUB 作为活动的引导加载程序所需要的步骤,取决于是安装全新的 OS 还是已经安装了 Linux 并计划转移到 GRUB。如果是进行全新安装,那么可以直接跳转到 配置 GRUB 那一节。如果已经安装了某个 Linux 发行版,那么通常可以选择安装并配置 GRUB(并可以将机器引导到新的 Linux 安装)。

计划迁移到 GRUB 的当前 Linux 用户需要去获得最新版本的 GRUB(见 参考资料)。同样,与 LILO 相同,在做任何其他事情之前,需要在手边准备一张 Linux 引导盘。使用交互模式(后面将描述)则不需要这张磁盘,不过最好拥有一张以备急需时使用。将 LILO 安装到系统中之后,让它接管 MBR 非常简单。以 root 用户身份输入:

# /boot/grub/grub

这样将加载一个类似于 BASH 的命令提示符,可以在这里使用 GRUB 命令:

grub> install (hd1,3)/boot/grub/stage1 (hd0) (hd1,3)/boot/grub/stage2 p (hd1,3)/boot/grub/menu.conf

这个命令使用了 GRUB 安装命令,需要为它给出第一阶段映像的位置以及 MBR 的位置(install (hd1,3)/boot/grub/stage1 (hd1))。也要给出第二阶段映像的位置((hd1,3)/boot/grub/stage2)。最后,可选项 p (hd1,3)/boot/grub/menu.conf 告诉 GRUB GUI 菜单配置文件的位置。

在前面的示例中,hd1 是我的 Linux Disk,hd0 是我的 Windows 磁盘。这样将使用当前 GRUB 默认值,并抹去 MBR 中当前所有内容(请阅读 配置 GRUB,以确保能够按预期引导起来)。

配置 GRUB

GRUB 的配置都是通过位于 /boot/grub/grub.conf 的一个配置文件来完成的。清单 2 给出了一个示例配置,使用的是我的家用机器,支持 Linux 和 Windows 机器的双重引导:

清单 2. grub.conf 示例文件

default=0
timeout=10
splashimage=(hd1,3)/grub/splash.xpm.gz
password --md5 $1$opeVt0$Y.br.18LyAasRsGdSKLYlp1
title Red Hat Linux
	password --md5 $1$0peVt0$Y.br.18LyAasRsGdSKLYlp1
	root (hd1,3)
	kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
	initrd /initrd-2.4.18-14.img
title Windows XP
	password --md5 $1$0peVt0$Y.br.18LyAasRsGdSKLYlp1
	rootnoverify (hd0,0)
	chainloader +1

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

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

splashimage= 是用作 GRUB GUI 背景的图片所在的位置。



相关文章:
精通initramfs构建step by step
Linux利用kexec迅速切换内核
进程上下文VS中断上下文
内核通知链 学习笔记
linux spi子系统驱动分析
menuconfig 配置选项
《Linux操作系统内核实习》之练习一
udev详解
什么叫微内核,宏内核?
Linux 信号signal处理机制
开发简单的 Linux2.6 内核模块
删除内核的perl脚本
Linux2.6内核usb gadget驱动移植
GCC hacks in the Linux kernel
iomem
kernel学习的想法
让自己的驱动支持udev
linux内核编译步骤
内核的等待队列
Linux内核wait_queue深入分析
升级和删除内核
SD卡驱动分析2
Linux Kernel VDSO本地权限提升漏洞
内核中的TCP的追踪分析-15-TCP(IPV4)的客户端与
linux 2.6内核可加载模块的编译
内核模块HelloWorld
在环回接口上发送一个数据报
ARP初始化
1分钟编译FreeBSD内核
linux设备模型之uart驱动架构分析