GRUB的功能并不仅仅是作为 linux 的引导工具这么简单。许多情况下,我们的计算机中可能安装了不止一个操作系统,在启动时就需要有一个软件来根据我们的选择加载其中的一个。GRUB 是一个强大的多重引导管理工具,支持几乎所有您能在 PC 上见到的操作系统 (例如 windows 家族的 98 me NT 2000 xp )。我们建议您用 GRUB 来管理您计算机上所有的操作系统。
早先使用过 LILO 的朋友可能都知道,装系统时根分区(/boot分区)不能分在超过1024柱面的地方,一般是在8.4G左右的地方,否则lilo不能安装,或者安装后不能正确引导系统。而 GRUB 就不会出现这种情况,只要安装时您的大硬盘是在LBA模式下,GRUB 就可以引导根分区在8G以外的操作系统。
通常情况下您可以再开机时通过一个菜单来选择您要引导的系统。您也可以在引导时动态改变 GRUB 的参数,GRUB 的命令行有非常强大的功能,而且支持如 bash 或 doskey 一样的历史功能,你可以用上下键来寻找以前的命令。在菜单下面按 e 是编辑启动命令,按 c 是使用命令行。
GRUB 理解文件系统,所以它是通过文件系统将内核读取到内存。( LILO 是靠读物理扇区来读取内核的 )能够理解文件系统使得 GRUB 非常的灵活。您很少需要重新将 GRUB 写入到引导位置。例外的情况包括:
- 您更改了 GRUB root 分区的文件系统类型(例如,从 ext3 改为 ReiserFS)
- 您更新了 GRUB 的版本,并启用了新版本的 stage1 和 stage2 文件
一个常见的情形是您刚编译完新的内核,希望启用它。如果您是按照附录A 中的方法编译安装的内核,这时您什么都不需要对 GRUB 做,重新引导系统就是了。您也可以手动修改 grub.conf,但同样不需要重新将 GRUB 写入到引导位置。
健壮
早先使用 LILO 的朋友一定都见识过它的高故障率。GRUB 由于采用了先进的设计理念,使得它显得非常的健壮。您可以放心的调整分区的大小或是改变内核的物理位置而不必担心 GRUB 会瘫痪。
GRUB 的菜单配置文件 grub.conf 位于 /boot/grub/,您可以使用您偏爱的编辑器来修改它。典型的 grub.conf 具有如下的样式:
# grub.conf generated by MagicInstaller.# Note that you do not have to rerun grub after making changes to this file.default=1timeout=5splashimage=(hd0,2)/boot/grub/splash.xpm.gztitle windows xp rootnoverify (hd0,0) chainloader +1title MagicLinux root (hd0,2) kernel /boot/vmlinuz-2.6.0-1 ro root=/dev/hda3 vga=791 splash=silent initrd /boot/initrd-2.6.0-1.img
以“#”开头的行中的内容为注释。GRUB会忽略空行和注释行。
以“title”为界,grub.conf 分为上下两个部分
上部是一些全局变量的设置
default 变量定义了 GRUB 默认将引导哪个系统。(在这个例子里是 MagicLinux)
提示:
GRUB 中的计数都是从0开始的。例如:第一个启动项为 0,第一块硬盘的第一个分区为(hd0,0)
timeout 变量定义了系统在引导默认启动项前将会在菜单画面等待几秒
splashimage 变量定义了菜单页面的背景图像
下部由 title 分割为若干独立的启动项,每个启动项又有各自的参数。
我们首先看 windows xp 部分
GRUB 并不知道如何引导 windows xp,也读不懂 NTFS 的文件系统。
GRUB 使用了“链式加载”的方法来引导它不支持的操作系统。在这个例子里,GRUB 通过 rootnoverify 变量指向 windows xp 所在的分区,然后将引导权交给了位于这个分区上的 xp 自己的引导程序。
关于 MagicLinux 部分
root 变量指向内核所在的分区
kernel 变量指向内核文件,ro 表示 read only,ro 后面的 root 指向Linux 的根目录所在的分区,vga 参数指定启动时的显示模式,splash 参数定义了启动时您将看到图像(silent)还是文字(verbose)。
initrd 参数定义了 initrd 映像文件
提示:
rootnoverify 和 root 的区别在于 rootnoverify 不会尝试 mount 它所指向的分区。
故障与修复
尽管 GRUB 十分的健壮,您仍然有可能遇到一些意外的故障。一个常见的情形是您的 windows 系统崩溃了,您必须重装它。很不幸 windows 系统不支持多重启动,安装过程中他会破坏您写在主引导扇区( MBR )的 GRUB,这样您将无法进入 Magic Linux。
解决问题的思路无非是想办法进入 Magic Linux 然后重新将 GRUB 写入到 MBR。
如果您的机器有软驱,您手中又有启动软盘。那么恭喜您,事情非常简单,您用软盘引导进入 Magic Linux,然后用指令:
grub-install /dev/hda
将 GRUB 重新写入到 MBR 就可以了。
如果您的机器没有软驱,但您还保留着安装光盘,请您从安装光盘引导计算机,在安装引导提示下输入以下命令:
linux rescue
你会被提示回答几个基本的问题,然后一路走下去,直到出现提示符。此时使用命令:
chroot /mnt/sysimage
来改变你的根目录到硬盘中原来根目录的位置。使用命令:
grub-install /dev/hda
将 GRUB 重新写入到 MBR。
使用开机密码
GRUB 支持加密。加密后最直接的结果是,只有知道密码的人才能通过命令行以交互的方式引导计算机。要给 GRUB 加密,首先您要取得一个通过 MD5 算法加密后的密码。( 尽管这么做并不是必须的,但把密码以明文保留在 grub.conf 里面总归不太让人放心 ) 打开 GRUB shell:
[[root@myopia root]]# grubProbing devices to guess BIOS drives. This may take a long time.GRUB version 0.93 (640K lower / 3072K upper memory)[[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename.]]grub>
使用 md5crypt 命令来取得加密后的密码:
grub> md5cryptPassword: **********Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb.
取得密码后,将这个密码复制粘贴到 grub.conf 的上半部分,形势如下:
password --md5 $1$U$JK7xFegdxWH6VuppCUSIb
如果您希望别人不能使用您机器上的某些操作系统,您可以进一步使用 lock 锁住它。这里以 windows xp 为例,注意 lock 的位置:
title windows xp lock rootnoverify (hd0,0) chainloader +1
现在启动是您若是想进入 windows xp 或是修改启动选项,您需要参照启动菜单框下方的提示,键入“p”,然后输入正确的密码方可解除锁定。