一、grub的简单介绍

    在讲解grub之前,应该对linux的启动流程有一个清晰的了解,在此只做简单的介绍:

POST(上电自检)-->BIOS(确定第一启动设备)-->boot loader(LILOgrub等程序)-->kernel(initrd)-->init(/etc/inittab)-->login

其中boot loader是存在于系统的第一启动设备的MBR446 Byte)中的一个加载程序,简单的说其功能就是加载系统内核(kernel),grub是当前主流的boot loader,功能非常强大,可以引导多种操作系统(linuxwindows等),由于受限于MBR(仅有446B)的限制,grub采用了非常精巧的设计,分段引导分为两个阶段:stage1stage2stage1位于MBR446B)中,主要功能是加载stage2stage2位于/boot/grub/目录中,这样就可以利用stage2去引导加载系统,摆脱了MBR446B)的限制,提供更加强大的功能。

二、grub的安装

1.grub的命令模式下安装。

这种方式只会安装grubstage1中的文件,即:只安装MBR446字节的内容。当然对于stage2的内容,可以通过复制/usr/share/grub/目录中的文件得到,即:将/usr/share/grub/目录中的文件复制到/boot/grub/下即可。具体安装步骤如下:

1)在命令行模式下输入grub命令,如下图所示:

grub的安装与配置_linux

2)在grub>中输入roothd0,0),在这root代表的是kernel所在的分区,而不是根文件系统。而后在输入setuphd0,在此只需指定磁盘,具体步骤如下所示:

grub的安装与配置_grub_02

 

2.在命令行下输入grub-install安装

例如:如果你在/dev/sda中安装grub可以使用如下命令:

      #grub-install  /dev/sda

这样在/dev/sda上就安装了grub

但是如果你在一块新的硬盘上安装grub,一定要按如下步骤操作:

 1)分区

2)将内核所在的分区挂载至:/mnt/boot目录中

 3)利用grub命令安装:grub -install --root-directory=/mnt /dev/sdb(--root-directory是指定根目录,安装的磁盘是/dev/sdb)

三、grub配置文件的格式

     grub的配置文件(grub.conf)是在安装系统的时候生成的,并不是安装完grub后生成的。grub.conf/boot/grub/目录中,其具体内容如下:

  1 # grub.conf generated by anaconda
  2 #
  3 # Note that you do not have to rerun grub after making changes to this file
  4 # NOTICE:  You have a /boot partition.  This means that
  5 # all kernel and initrd paths are relative to /boot/, eg.
  6 # root (hd0,0)
  7 # kernel /vmlinuz-version ro root=/dev/vol0/root
  8 # initrd /initrd-version.img
  9 # boot=/dev/sda
 10 default=0
 11 timeout=5
 12 splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
 13 hiddenmenu
 14 title Red Hat Enterprise Linux Server (2.6.28.10-qingmuversion1)
 15 root (hd0,0)
 16 kernel /vmlinuz-2.6.28.10-qingmuversion1 ro root=/dev/vol0/root rhgb quiet
 17 initrd /initrd-2.6.28.10-qingmuversion1.img

下面是各项的具体的介绍:

1default=0:这与title作为对照,有几个title启动时就可以选择几个菜单,默认是以0代表第一个title选项启动,它的意思是如果在读秒时间前没有按键,默认使用第一个(在此为0号)title启动。
  
2timeout=5,代表进入系统前的读秒时间。在此处是指读秒时间为5秒。

3splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
   
这一项用来设置系统启动时的背景图片,例如redhat启动时,在读秒时其背景图片是一种红色的背景图片。在此表示此图片是在(hd0,0)分区中/grub/splash.xpm.gz图片,redhat对图片的要求是:

       ①640*480   ②14bit  ③ .gz格式

图片可以用redhat自带的gimp工具进行编辑。

4hiddenmenu:是指是否隐藏菜单,就是是否隐藏title这一项的内容。在此表示隐藏title后面Red Hat Enterprise Linux Server (2.6.28.10-qingmuversion1)的内容。 

5root:代表内核文件放在哪个分区中,而不是根目录。

6kernel:这一项的后面的接的是内核的文件名,后面接的是内核的参数。在此:代表内核的文件名是:/vmlinuz-2.6.28.10-qingmuversion1ro:代表只读挂载;root:代表linux的根目录在哪个分区;rhgb为颜色显示;quiet代表安静模式(即不输出内核的检测信息)。

7initrd:代表RAM disk;其主要功能是用于切换到真正的根分区。在此表示此RAM disk initrd /initrd-2.6.28.10-qingmuversion1.img