从Red Hat Linux 7.2起,GRUB(GRand Unified Bootloader)取代LILO成为了默认的启动装载程序。相信LILO对于大家来说都是很熟悉的。这次Red Hat Linux用GRUB代替LILO,可见GRUB大有过人之处。不过,相对于LILO来说,大家对GRUB还是要陌生一些。本文将对GRUB的基本情况、术语、接口、命令以及配置文件做个介绍,希望对大家有所帮助。
一、GRUB的概述
在Red Hat linux装载一个系统前,它必须由一个引导装载程序(boot loader,启动管理程序)中的特定指令告诉它去引导系统。这个程序一般是位于系统的主硬盘驱动器或是其他知道如何去开始linux内核的媒介驱动器上。
如果说一个x86系统只安装了Red Hat Linux而且只有一个版本的linux内核,那么通过引导装载程序开始Red Hat Linux的特定过程就不重要了。Red Hat Linux安装程序允许用户快速方便地配置引导装载程序存放在主硬盘驱动的主引导记录中来引导操作系统。
然而,为了能从多个linux内核或其他操作系统引导,那么就很有必要了解Red hat linux用于提供必要的引导选项的方法,以及理解引导的过程与如何去改变。
本文是讨论GRUB,它是Red Hat Linux用来在x86系统上装载操作系统的默认方法。同时,本文也将详细介绍用于控制引导过程的各种命令和配置选项。
GRUB的定义
GNU GRUB(GRand Unified Bootloader)是一个将引导装载程序安装到主引导记录的程序,主引导记录是位于一个硬盘开始的扇区。它允许位于主引导记录区中特定的指令来装载一个GRUB菜单或是GRUB的命令环境。这使得用户能够开始操作系统的选择,在内核引导时传递特定指令给内核,或是在内核引导前确定一些系统参数(如可用的RAM大小)。
前面所提到的引导方法被称为直接装载。因为这种方法中使用的是直接装载操作系统的指令,没有用到任何在引导装载程序和操作系统主文件(如内核)之间的中间代码。然而,不同操作系统所采用的引导过程可能会与上面提到的有一些细微的不同。例如,微软的DOS和Windows操作系统在安装时,倾趋于完全重写主引导记录,而不是合并当前的主引导记录的配置。这将破坏掉其他操作系统保存在主引导记录中的所有信息,如Red Hat Linux。微软操作系统,还有一些其他的专有操作系统,都是使用一种称为链式装载的引导方法来启动的。在这种方法中,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区。
在Red Hat Linux中,一旦GRUB载入它自己的包含Linux内核的根分区,那么kernel命令就可以将内核文件的位置作为一个选项来执行。一旦Linux内核引导,它就设定自己的根文件系统,此时的根文件系统就是大多数人用来与Linux联系的了。最初的GRUB根文件系统以及它的挂入都被去掉,它们仅存在于用来引导内核文件。
如果GRUB是由Red Hat Linux的安装程序自动配置的,那么它默认的显示接口是菜单接口。在系统第一次启动后,一个操作系统或内核的菜单(事先已经用它们各自的引导命令配置好)将一个按名称排列的列表保存在这个接口中。使用箭头键选择一个非默认选项,然后按回车键来引导它。如果不是这样,一个记时器可能已经被设置,那么GRUB将启动装载那个默认的选项。
一个非常基本的用于引导Red Hat Linux或Microsoft Windows 2000的GRUB菜单配置文件可能如下所示:
default=linux
timeout=10
color=green/black light-gray/blue
# section to load linux
title linux
root (hd0,1)
kernel /vmlinuz root=/dev/hda5
boot
# section to load Windows 2000
title windows
rootnoverify (hd0,0)
chainloader +1
这个文件告诉GRUB建立一个以Red Hat Linux为默认操作系统的菜单,设定10秒后自动引导。这里给出了2个部分,每个部分对应于一个操作系统项目,每个部分都包含了指向操作系统硬盘分区表的命令。