grub是一个很强大引导加载器,很多的Redhat发行版使用的都是grub进行引导,但是grub有一个缺陷就是grub最大只能支持的1T的硬盘,在进入grub时,可以看到有个纯红色的背景图片,但是在MBR中存放grub一共就446字节,但是一个图片的大小有可能就大于446字节,所以这张图片肯定不会在grub中,所以,grub的运行机制是采用了两段式设计,grub的第一段放在MBR中,其作用是是引导grub的第二段,在第一段和第二段的中间其实还有一段,其大致作用可以理解为用来加载文件系统,和识别文件系统。在/boot/grub中可以看到很多结尾"1_5"的文件,这些就是grub的中间段所要加载的文件。其实grub也有自己的配置文件--"grub.conf";
下面打开grub.conf查看一下其中的内容:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/vol0/root
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/vol0/root rhgb quiet
        initrd /initrd-2.6.18-164.el5.img
title Install Red Hat Enterprise Linux 5
        root (hd0,0)
        kernel /vmlinuz-5 ks=http://192.168.0.254/workstation.cfg ksdevice=eth0 noipv6
        initrd /initrd-5


以#开头的都是注释信息
一、default:指的是默认启动的哪个,可以看到下面有两个title,其中第一个title表示为0,第二个title表示为1,所以这里默认启动的就是第一个title;
二、timeout:指的是超时时间,即在该时间内没有进行其他操作,则启动默认启动项;
三、spalashp_w_picpath:指的是进入grub时的背景图片,"(hd0,0)":这里指的是第一块磁盘的第一个分区,也是grub能够识别的磁盘格式,无论任何种类的磁盘,grub都将其识别为hd;/grub/splash.xpm.gz:指的是在grub中的那张图片,在grub启动时,内核还没有启动,所以文件系统还不存在,所以根也就不存在,所以就写作/grub而不写作/boot/grub;这里要说的是,grub只支持xpm格式的图片,而且支持的颜色位数为14位;
四、hiddenmenu:指的是是否要隐藏隐藏菜单;
五、title:后面跟的则是要启动的系统名字,当然这个根据个人需要,你也可以随便的命名
    root:指的是grub使用的根,也是文件访问的起始点
    kernel:指定内核文件是谁;在这里由于root已经指定了grub的根,所以这里直接指定/kernel;ro:只读root:这里的root指的是操作系统的根文件系统;rhgb:指的是rehat的一个边框,这个可有可无;quiet:指的是静默模式;
    initrd:内核需要读取文件系统,读文件系统时需要加载驱动,但是驱动在lib中,而lib在根下,去根下找需要加载驱动,所以这样就无法就解决了吗?其实initrd就是做这样的功能,它也是一个根,其实它也算是一个微型的Linux,它不提供其他功能,它只提供/lib/modules,所以内核加载驱动时去initrd中加载,Initrd提供了驱动那么内核就可以访问根了,访问这个文件系统了,但是这个initrd又不是必须的,当需要的驱动在内核中已经存在时,就不在需要initrd了;"/initrd-2.6.18-164.el5.img":因为内核中没有逻辑卷的驱动,而这个文件中就存在逻辑卷的驱动


grub的安装方法:
法1:手动安装
步骤:
一、新增加一块硬盘,创建一个新的分区,并将其格式化
#echo "
n
p
1

+100M
w" |
fdisk /dev/sdb
#mkfs -t ext3 /dev/sdb1
二、将该新分区挂载
#mount /dev/sdb1 /mnt/boot
三、创建grub目录
#mkdir /mnt/boot/grub
#cd /usr/share/grub

这里的grub是一个隐藏的目录,所以需要先进入
#cd i386-redhat/
复制当前目录中的所有文件到/mnt/boot/grub/
#cp ./* /mnt/boot/grub/
四、卸载/dev/sdb1
#umount /dev/sdb1
五、安装grub
#cd
#grub
grub>root (hd1,0)
grub>setup (hd1)
grub>quit

并且在grub下生成了一个grub.conf文件,这样就强制安装了grub
法2、使用grub-install安装
步骤:
一、新增加一块硬盘,创建一个新的分区,并将其格式化
#echo "
n
p
1

+100M
w" |
fdisk /dev/sdb
#mkfs -t ext3 /dev/sdb1
二、将该新分区挂载
#mount /dev/sdb1 /mnt/
三、创建boot目录
#mkdir /mnt/boot
四、安装grub
#grub-install --root-directory=/mnt /dev/sbd1
在此它会自动在boot目录下创建一个grub目录并且创建相关文件


这样grub可以通过两种方法进行创建,我们只需要将这两块已经创建好grub的硬盘放入PC中,可以看到出现了grub的提示符,如果有内核那么就可以进入系统了。好了到此grub就创建成功!