标签:
1.GRUB简介
配置文件的位置和名称
GRUB 启动引导器的相关文件被缺省保存在“/boot/grub”目录中,其中 menu.lst 文件是 GRUB 的主配置文件,GRUB 在启动时就是根据该文件的配置内容显示启动菜单的。
# ls /boot/grub/
device.map grub.conf minix_stage1_5 stage2
e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5 fat_stage1_5 jfs_stage1_5 splash.xpm.gz vstafs_stage1_5 ffs_stage1_5 menu.lst stage1 xfs_stage1_5
在 Red Hat 系列的 Linux 系统中(包括 CentOS)更习惯于使用文件名 grub.conf 来作为 GRUB 的配置文件。为了保持与其他系统的兼容性和文件的一致性,CentOS 分别在“/boot/grub”和“/etc”两个目录中建立了名为 grub.conf 的符号链接文件指向真正的配置文件“/boot/grub/menu.lst”。
# cd /boot/grub
# ls -l menu.lst grub.conf
-rw------- 1 root root 595 Mar 31 18:06 grub.conf
lrwxrwxrwx 1 root root 11 Mar 31 18:06 menu.lst -> ./grub.conf # ls -l /etc/grub.conf
lrwxrwxrwx 1 root root 22 Mar 31 18:06 /etc/grub.conf -> ../boot/grub/grub.conf
因此,无论直接编辑menu.lst文件,还是编辑相应目录中的grub.conf文件都可以达到修改GRUB配置的目的。
CentOS 5 中 GRUB 的缺省配置
CentOS 5 服务器方式缺省安装后,文件 menu.lst 已经进行了缺省的配置。
## 执行 cat 命令后显示 menu.lst 文件的缺省配置 # cat /boot/grub/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/LogVolRoot # initrd /initrd-version.img
#boot=/dev/hda default=0 timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu
title CentOS (2.6.18-53.el5) root (hd0,0)
kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVolRoot initrd /initrd-2.6.18-53.el5.img
menu.lst 文件中的内容可以分为三类:
??
注释行通常放在文件的首部,以“#”开始,起到说明的作用;由于文件中的注释行在GRUB执行时会被忽略,因此也可以将暂时不使用的配置行加入“#”到行首作为注释,以使其失效而不必急于删除该行。 ??
全局配置行通常放在文件首部注释行的后面,其作用范围是整个GRUB运行环境(包括所有菜单项);不包括在title命令区域内的所有行都被视为全局配置行。
??
菜单项配置行以 title 命令开始,直到下一个 title 命令或文件末尾结束,其包括的所有配置行都作用于同一个启动项,该启动项由 title 命令的参数命名;配置文件中可以具有多个菜单项配置,用于多系统启动的配置。
menu.lst 的配置命令
下表列出了一些常用的可在 grub.conf 中使用的配置命令。
GRUB 配置文件举例
选择启动不同的 Linux 内核
要完成对 Linux 操作系统的引导至少要有 title、root、kernel、initrd 四条命令。对于不同的 Linux 操作系统(或同一系统的不同内核版本),需要根据内核文件实际的位置和名称进行启动行的配置,即 title、root、kernel 和 initrd 四条命令的命令参数需要具体设定。 下面是一个更新系统内核后的 GRUB 配置例子,可以选择启动不同的内核。
# 设置默认启动第一个启动项 default=0
配置命令
功能
default <菜单项序号>
设置启动菜单的默认启动项,菜单项序号参数其值从”0”开始,即”0”代表第1个菜单项,”1” 代表第2个菜单项等等。
timeout <延时秒数>
设置 GRUB 菜单的启动延时(以秒为单位),即经过该延时后 GRUB 将自动启动默认的菜单项。当 timeout 命令设置的延时秒数为负数或不设置 timeout 命令时,GRUB 启动菜单将取消启动延时功能,用户需手工选择要启动的菜单项。
title <标题> 设置用来装载一个操作系统的一组特定命令的标题,标题将在 GRUB 启动菜单中显示。 splashimage <图像文件全路名> 指定某文件作为启动菜单的背景图像,该文件必须是 xpm 格式的图像,可以是 gz 压缩文件。 root <GRUB 的设备名称>
设置 GRUB 的根分区(root),通常是文件系统的 boot 分区,即 Linux 内核所在的分区。
rootnoverify <GRUB
的设备名称> 做 root 命令同样的事情,只是不挂装分区(用于启动 Windows 系统)。
kernel 用 kernel 命令后跟 Linux 内核文件作为参数,加载 Linux 的内核文件。 initrd 用 initrd 命令加载初始 RAM 磁盘镜像文件。
map 映射磁盘或分区在 BIOS 中的标志符,用于启动在第二个硬盘中的 Windows。 makeactive 设置根设备为活动分区(针对于Windows不能从非活动分区启动)。 chainloader
使用 chainloader 命令调用Windows分区的启动引导器引导 Windows 系统。
# 设置 GRUB 菜单的启动延时为 5 秒 timeout=5
# 指定启动菜单的背景图像位于 /boot/grub/splash.xpm.gz splashimage=(hd0,0)/grub/splash.xpm.gz # 设置 GRUB 菜单为隐藏 hiddenmenu
# title 命令开始一个菜单项的配置
title CentOS (2.6.18-53.1.13.el5)
# 设置 GRUB 的根分区(即 /boot 分区) root (hd0,0)
# 设置 Linux 内核及参数
kernel /vmlinuz-2.6.18-53.1.13.el5 ro root=/dev/VolGroup00/LogVolRoot # 设置初始 RAM 磁盘镜像文件
initrd /initrd-2.6.18-53.1.13.el5.img
title CentOS (2.6.18-53.el5) root (hd0,0)
kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVolRoot initrd /initrd-2.6.18-53.el5.img
具有 Windows 的多系统启动配置
虽然在本书的 CentOS 服务器方式安装中,只安装了唯一的 Linux 操作系统,但是功能强大的 GRUB 启动引导器完全可以实现 Linux 和 Windows 共存的多系统启动。
由于 GRUB 不能够直接加载 Windows 系统的核心文件进行引导,而是通过调用 Windows 操作系统自身的启动引导器(通常为 Windows 所在分区的引导扇区),所以对于 Windows 系统的引导需使用与 Linux 系统引导不同的命令。Windows 的启动菜单配置经常会使用 map、root、makeactive、chainloader 等命令。
1、Linux 和 Windows 分别安装在两块硬盘的情况
在下面的实例中系统中的第一块硬盘中已经按照本书的步骤安装了 CentOS 系统,现在又添加了系统中的第二块硬盘,在该硬盘的第一个主分区中已经安装有能够在本机正常运行的 Windows 系统,剩下的任务就是在 menu.lst 配置文件中添加对 Windows 系统的引导配置内容。
default=0 timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu
title CentOS (2.6.18-53.el5) root (hd0,0)
kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVolRoot initrd /initrd-2.6.18-53.el5.img title Windows
map (hd0) (hd1) map (hd1) (hd0)
# 设置真实的 Windows 分区为 GRUB 的根设备。 rootnoverify (hd1,0)
# 设置根设备为活动分区(针对于 Windows 不能从非活动分区启动) makeactive
# 调用 Windows 分区的引导记录引导 Windows 系统启动 chainloader +1
由于 Windows 系统自身只能安装到主硬盘(系统中的第一块硬盘)中的活动分区中进行引导启动,因此在配置行中需要使用两条 map 命令双方向的映射两块硬盘在 BIOS 中的标志符(目的是为了迷惑 Windows 系统),并使用 makeactive 将 Windows 分区设置为活动分区,这样“chainloader +1”命令才能够使用 Windows 分区中的引导记录启动 Windows 系统。 2、Linux 和 Windows 安装在同一块硬盘的情况
下面是一个使用 GRUB 选择启动 Windows 或 CentOS 的 grub.conf 的另一个例子。在这个例子中, Windows 系统安装在硬盘的第一个主分区,Linux 的引导系统在磁盘的第一个逻辑分区上。
default=0 timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu
title CentOS (2.6.18-53.el5) root (hd0,5)
kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVolRoot initrd /initrd-2.6.18-53.el5.img title Windows
rootnoverify (hd0,0) chainloader +1
??显示源文件 ??
标签:
原文地址:http://www.cnblogs.com/x113/p/4629029.html