2012年(7)
分类: LINUX
2012-10-20 11:15:29
第二阶段引导加载程序是引导加载程序的主体;很多人认为这才是引导加载程序的真正部分。它包含有加载程序更需要磁盘空间的部分,比如用户界面和内核引导程序。
LInux LOader(LILO) 已经成为所有 Linux 发行版的标准组成部分。作为一个 较老的/最老的 Linux 引导加载程序,它那不断壮大的 Linux 社区支持使它能够随时间的推移而发展,并始终能够充当一个可用的现代引导加载程序。有一些新的功能,比如增强的用户界面,以及对能够突破原来 1024-柱面限制的新 BIOS 功能的利用。
虽然 LILO 仍在不断地发展,但 LILO 工作原理的基本概念保持不变。
要使用 LILO 作为引导加载程序,需要做的事情取决于是要进行全新安装还是要让已经安装的 Linux 改为使用 LILO。如果是要进行全新安装,那么直接跳转到 配置 LILO 那一节。如果已经安装了某个 Linux 发行版,那么通常可以选择安装并配置 LILO(并可以将机器引导到新的 Linux 安装)。
要将现有的 Linux 迁移到 LILO,首先必须获得最新版本的 LILO(见 参考资料)。在做任何其他事情之前,建议您确保在手边拥有一张 Linux 引导盘 —— 如果偶而弄错了某些地方,它可以提供很大的帮助,能够恢复到初始的 Linux 配置!将 LILO 安装到系统中之后,让它接管 MBR 非常简单。以 root 用户身份输入:
# /sbin/lilo -v -v
这将使用当前的 LILO 默认值,抹去 MBR 中当前所有内容。不过,请阅读 配置 LILO,以确保能够按预期引导起来。也要注意,如果想要在同一机器上运行 Windows 和 Linux,那么应该先安装 Windows OS,然后再安装 Linux OS,这样,在 Linux 安装中所选择的引导加载程序就不会被 Windows 引导加载程序所覆盖。与 Linux 引导加载程序不同,多数 Window 引导加载程序不支持引导 Linux。如果已经先安装了 Linux,那么只需要自己创建一张 Linux 引导盘,这样就可以在安装完 Windows 之后,回到 Linux 安装中并重写 MBR。
LILO 的配置都是通过位于 /etc/lilo.conf 的一个配置文件来完成的。清单 1 给出了一个示例配置,使用的是我的家用机器,支持 Linux 和 Windows 机器的双重引导。了解我的工作站的基本配置,就可以想像出这些配置是如何与实际机器相关联的:
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=100 compact default=Linux image=/boot/vmlinuz-2.4.18-14 label=Linux root=/dev/hdb3 read-only password=linux other=/dev/hda label=WindowsXP |
清单 1 中的选项:
在 lilo.conf 文件中可以使用很多其他参数,不过清单 1 中的参数就足以让机器可用了。要获得关于 lilo.conf 的这些以及其他参数的 进一步资料,请参考手册页(man lilo.conf)。由于在引导时不会读取 lilo.conf,所以,当这个文件有改动时,需要“更新”MBR。 如果不完成此步骤就重新引导,那么对 lilo.conf 的修改不会在启动中反映出来。与先前将 LILO 写入 MBR 类似,需要运行:
$ /sbin/lilo -v -v
-v -v 标记会为您给出非常详细的输出。当像我们那样运行 LILO 时,有很多参数可以指定。 参阅手册页以获得更进一步的信息(man lilo)。
当 LILO 初始引导时,它会按次序打印出每个字母 —— L-I-L-O。如果所有字母都显示出来,那么第一阶段引导就成功了。缺少任何内容 都表示出现了问题:
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 来上传修改。
近来,GRand Unified Boot loader(通常称为 GRUB)似乎要取代 LILO 在引导加载程序方面的统治地位。GNU GRUB 基于原来的 GRUB 程序(最初由 Erich Stefan Boleyn 所创建),正在由自由软件基金会(Free Software Foundation)进行积极开发。
与使用 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 的配置都是通过位于 /boot/grub/grub.conf 的一个配置文件来完成的。清单 2 给出了一个示例配置,使用的是我的家用机器,支持 Linux 和 Windows 机器的双重引导:
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 中的选项:
在 grub.conf 文件中可以使用很多其他参数,不过清单 2 中的参数就足以让机器可用了。 要获得关于 grub.conf 的这些以及其他参数的进一步资料,请参考手册页(man grub.conf)。
与 LILO 的配置文件不同,grub.conf 会在引导时被读取,当被修改时不必去更新 MBR。