grub配置文件menu.lst

下面是一个grub配置文件(/boot/grub/menu.lst)示例:

[root@tech grub]# cat menu.lst
# 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/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-53.1.14.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-53.1.14.el5
        module /vmlinuz-2.6.18-53.1.14.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        module /initrd-2.6.18-53.1.14.el5xen.img
title CentOS (2.6.18-53.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-53.el5
        module /vmlinuz-2.6.18-53.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        module /initrd-2.6.18-53.el5xen.img
 
Grub是如何找到硬盘的?grub对硬盘的代码设置有点像:
      (hd0,0)
  • 硬盘代号用小于号括起来的;
  • 硬盘以hd表示,后面会接一组数字;
  • 以“搜寻顺序作为硬盘代号,而不是依照硬盘排线的顺序!(这点很重要)
  • 第一个搜寻到的硬盘代号为0,第二个为1,以此类推;
  • 每块硬盘的第一个partition代号为0,以此类推。
搜索到的第一硬盘的第一个分区表示为:(hd0,0),第一个逻辑分区表示为:(hd0,4)。

在grub的配置文件中,title以前的四行是用来对grub进行整体设定的:
  • default=0 开机时的默认选择项目,这个必须与title对照,0表示对应一个title,1表示对应第二个title,以此类推。
  • timeout=5 如果设置了hiddenmenu,则等待5s,如没有按下任意键则执行默认的title项目。
  • splashimage=(hd0,0)/grub/splash.xpm.gz 在选单中显示的图片。
  • hiddenmenu 不显示选单

title用于设置开机的设定项目,开机是可以选择直接指定内核进行启动或者将控制权交给下一个Loader(chain loader)。
1、直接指定内核启动:
title CentOS (2.6.18-53.1.14.el5xen)   <--在选单中的显示名
        root (hd0,0)   <--设定内核所在磁盘位置
        kernel /xen.gz-2.6.18-53.1.14.el5  <--设定使用的内核
        module /vmlinuz-2.6.18-53.1.14.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet  <--设定根目录位置
        module /initrd-2.6.18-53.1.14.el5xen.img  <--设定initrd(虚拟化磁盘)镜像文件名
initrd 称为初始化虚拟磁盘,用于帮助加载核心模块,让Linux内核在开机过程中不需挂载根目录就能载入所需要的模块。如果你的filesystem为LVM, Raid时,或者硬盘为SCSI接口(包括SATA和USB接口)时,Linux内核将无法认识这些设备从而导致不能正常启动。而initrd可以通过 int13 芯片读取核心模块(驱动程序),当硬盘被驱动后内核就可以挂载根目录了。其他模块的读取也就没问题了。

2、利用chain loader方式将控制权交给下一个grub:
title Windows Partition
       rootnoverify (hd0,0)   <--将控制权交给C盘下的super block(第一个扇区)
       chainloader +1  <--代表第一个sector
       hide (hd0,1)  <--隐藏不想让Windows看到的分区(搜寻到的第一块硬盘的第二个分区,此分区为Linux分区,可选项)
       makeactive  <--设定partition的active标志(可省略)

安装Grub

1、使用grub-install脚本将必要的文件复制到/boot/grub/下。
grub-install [--root-directory=DIR] INSTALL_DEVICE
--root-directory=DIR 设置实际的安装目录,grub默认会将文件复制到/boot/grub/
INSTALL_DEVICE 安装的设备代码
例如:grub-install /dev/hdb    #将grub所需文件复制到/boot/grub/下,/boot/grub/在硬盘/dev/hdb上。

2、在/boot/grub/中设置menu.lst,然后用grub shell来安装grub到MBR或super block。

[root@linux ~]# vi /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd1,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-53.1.14.el5xen)
        root (hd1,0)
        kernel /xen.gz-2.6.18-53.1.14.el5
        module /vmlinuz-2.6.18-53.1.14.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        module /
initrd-2.6.18-53.1.14.el5xen.img
[root@linux ~]# grub
1). 先设定一下含有 /boot 目录的那个 partition。
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
# grub 认出他为 ext2 的 filesystem。



2). 搜寻一下,是否存在 stage1 这个文件。
grub> find /boot/grub/stage1
(hd1,0)
# gurb安装在 /dev/hdb1 嘛!



3). 搜寻一下是否可以找到内 ? /boot/vmlinuz ?
grub> find /boot/vmlinuz
Error 15: File not found
grub> find /boot/vmlinuz-2.6.18-53.1.14.el5xen
(hd1,0)
# 需要填写完整的 kernel 档案名称!


4). 将grub安装到 MBR。
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/boot/grub/stage2
/boot/grub/grub.conf"... succeeded
Done.


5). 将grub安装到/dev/hdb1 呢?亦即是 super block 当中!
grub> setup (hd1,0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd1,0)"... failed (this is not fatal)
Running "embed /boot/grub/e2fs_stage1_5 (hd1,0)"... failed (this is not fatal)
Running "install /boot/grub/stage1 (hd1,0) /boot/grub/stage2 p
/boot/grub/grub.conf "... succeeded
Done.
# 虽然 法经 stage1_5 安装到 super block 去,不过,还是没问题的!
# 关键是 stage1 要安装成功,最后显示 succeeded 字 就可以了!



grub> quit

你可能感兴趣的:(grub配置文件menu.lst)