GRUB(统一引导装入器)是基本的Linux引导装入器。
其有四个作用,如下:
1.选择操作系统(如果计算机上安装了多个操作系统)。
2.表示相应引导文件所在的分区。
3.找到内核。
4.运行初始内存盘,设置内核和相关模块。
GRUB的设置文件是
Fedora的是在/boot/grub/grub.conf
Ubuntu中是在 /boot/grub/menu.lst
/boot/grub/grub.conf中典型的GRUB设置文件,如下图
[root@localhost ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,9)
# kernel /boot/vmlinuz-version ro root=/dev/hda10
# initrd /boot/initrd-version.img
#boot=/dev/hda
default=1
timeout=30
splashimage=(hd0,9)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.9-1.667)
root (hd0,9)
kernel /boot/vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.9-1.667.img
title Other
rootnoverify (hd0,0)
chainloader +1
变量 说明
#: 对菜单设置文件进行注释。
default: 指定默认操作系统。如果为0,则没有用户输入时,自动启动第一段中显示的操作系统。
timeout: 设置GRUB启动默认之前的时间极限(秒数)。在上图中为30秒。
splashimage: 指定默认GRUB引导时所使用的背景图像的位置。
hiddenmenu: 这个命令被使用时,他不显示GRUB菜单接口,在超时时间过期后载入默认项。用户通过按[Esc]键,能看到标准的GRUB菜单。能在其前加#或删除来达到显示菜单借口的目的。
title: 设置GRUB菜单中显示的选项。一个是显示Fedora Core (2.6.9-1.667),一个 为Other,也即我使用的视窗系统 XP。
kernel: 指定Linux内核地址。
initrd: 指定初始内存盘地址。
rootnoverify: 对视窗系统 XP之类的敏感操作系统指定引导文件所在分区。
chainloader: +1表示对指定分区中第一个扇区寻找引导文件。
说明1:password变量未被列出,是因为我在安装系统时,未选择引导装载口令。这个变量被使用时,他能防止不知道口令的用户编辑菜单的项目。
在GRUB中增加口令的办法:使用grub-md5-crypt命令,在提示下输入所要口令。能看到一系列奇怪的字符,能将其复制到设置文件中。非常容易从命令行复制这个口令,只要用鼠标加亮选择口令,在文本编辑器中打开/etc/grub.conf,在所要位置右单击鼠标,然后Linux即会自动插入加亮的MD5口令。
说明2:为了方便起见,/etc/grub.conf链接实际引导装入器的设置文件/boot/grub/grub.conf。
能在系统里使用man grub或info grub命令。
补充 Ubuntu中的
==============================================================================
default 0
timeout 3
hiddenmenu
title Ubuntu 9.04, kernel 2.6.28-11-generic
uuid bb77114e-07a7-44a4-9345-4cc9f6e25296
kernel /vmlinuz-2.6.28-11-generic root=UUID=5e0cc8d2-2b7f-41a5-aa58-acc670569b5f ro quiet splash
initrd /initrd.img-2.6.28-11-generic
quiet
title Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid bb77114e-07a7-44a4-9345-4cc9f6e25296
kernel /vmlinuz-2.6.28-11-generic root=UUID=5e0cc8d2-2b7f-41a5-aa58-acc670569b5f ro single
initrd /initrd.img-2.6.28-11-generic
title Windows 95/98/NT/2000
root (hd0,0)
makeactive
chainloader +1
title Ubuntu 9.04, memtest86+
uuid bb77114e-07a7-44a4-9345-4cc9f6e25296
kernel /memtest86+.bin
quiet
==============================================================================
上面的选项的作用:
(1)default 0:此选项是在默认的情况下,GRUB启动哪个操作系统,如果装了多个操作系统,GRUB能够指定默认是启动那个操作系统。如果是0,则默认启动第一个(最上面的)的操作系统;如果是1,则默认第二个,以此类推。
(2)timeout 3:超时时间,单位是秒,在此时间内如果用户没有进行任何操作,那么将启动default指定的操作系统,如果是正数,则此等待时间规定为秒数,如果是 0,则立刻进入指定操作系统,如果是负数,则进入GRUB的程序界面,一直等待用户选择进入指定的操作系统。
(3)hiddenmenu:表示隐藏GRUB的程序界面,在Ubuntu系统中,默认情况下GRUB的程序界面是隐藏的,如果想显示,则需要按提示按下Esc键。
(4)title Ubuntu 9.04, kernel 2.6.28-11-generic:表示出现在GRUB程序界面中的字符串,这里可以是任何字符串,原则上都使用引导的操作系统的名称。
(5)root(hd0,1):这个是GRUB中分区的表示方法,GRUB程序中分区的表示方法与Ubuntu系统中的表示分区方法不同,在Ubuntu 中表示分区的方法如同hda1:其中h表示IDE硬盘,d表示设备,a表示第一个IDE设备中的主盘,1表示此硬盘的第一个主分区(具体分配信息请查阅其 他有关资料)。而在grub中是使用(hd0,1)的方式表示的,其中h表示IDE硬盘,d表示设备,0表示第一块IDE设备中的主盘,1表示此硬盘上的 第二个分区。因此在GRUB程序v中,硬盘的分区是从0开始的,而硬盘数也是从0开始的,如Ubuntu系统的hdb5在GRUB程序中就表示为 (hd1,4)。注意,前面的root表示的是操作系统的启动分区,而不是root目录。
(6)kernel:kernel及其后面的部分指定的是具体的内核文件,并且根据分区的挂载点和特性,后面指定了内核文件所在位置以及内核文件名,并且指明了跟目录所在的分区,并且将其以只读(ro)方式挂载。
(7)initrd:这部分是虚拟磁盘的文件名。
(8)chainloader+1:存在Windows操作系统的时候就会有这一项,这是Ubuntu采用的链式启动引导器,即表示启动分区有GRUB的启动分区直接下移到下一个位置(windows的引导位置)。
通过对GRUB的配置文件menu.lst的配置,可以很容易对启动的操作系统进行控制(在此文件中有大量#表示的详细说明)。