GRUB是linux中最主要的多系统引导程序,如果grub.conf文件丢失或被破坏,但内核文件等没有丢失,在开机时,可以通过grub界面引导启动系统。
以下实验平台为CentOS 6.2。操作步骤如下图所示,
P-01
注:root(hd0,0),表示/boot分区,即操作系统内核和引导文件所在的磁盘分区,grub不区分ide硬盘和scsi硬盘,统一使用hdx,这里(hd0,0)表示第一块硬盘的第一个分区,与系统中的分区表示不一样。
kernel加载内核,/vmlinuz通过tab键会自动补全,由于装系统时,使用了lvm,所以root=/dev/mapper/vg_itpro-lv_root;如果不清楚root所在目录,需通过光盘进入救援模式进行查看。
系统启动成功后,在/boot/grub下创建或修复grub.conf文件,
最简洁的文件内容如下,
[root@itpro ~]# cat /boot/grub/grub.conf
default=0
timeout=5
hiddenmenu
title CentOS6
root (hd0,0)
kernel /vmlinuz-2.6.32-220.el6.i686 ro root=/dev/mapper/vg_itpro-lv_root
initrd /initramfs-2.6.32-220.el6.i686.img
(注:vmlinuz-2.6.32-220.el6.i686和initramfs-2.6.32-220.el6.i686.img在/boot目录下,可通过echo命令将它们的名字追加到grub.conf文件中,再进行编辑。)
编辑完成后,重启,可以正常启动系统。
以上两种方法,在重启系统时,登录界面会出现如图P-02所示的信息,不过不影响系统正常使用,
如果将,
kernel /vmlinuz-2.6.32-220.el6.i686 ro root=/dev/mapper/vg_itpro-lv_root
这一行,加个“quiet”写成
kernel /vmlinuz-2.6.32-220.el6.i686 ro root=/dev/mapper/vg_itpro-lv_root quiet
或者更加完整的(这个肯定记不住,要从别处抄了~)
kernel /vmlinuz-2.6.32-220.el6.i686 ro root=/dev/mapper/vg_itpro-lv_root rd_LVM_LV=vg_itpro/lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto rd_LVM_LV=vg_itpro/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
则不会出现图示问题。
P-02
附:grub.conf原文件内容及其注释如下
[root@itpro ~]# 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 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/mapper/vg_itpro-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0 #默认引导的菜单条目,0为排在第一个的系统
timeout=5 #Grub菜单停留的时间,单位为秒
splashimage=(hd0,0)/grub/splash.xpm.gz #指定GRUB引导菜单的背景图片
hiddenmenu #隐藏Grub引导菜单,如果不想在启动时隐藏,则删掉此条目
title CentOS (2.6.32-220.el6.i686)
#引导条目的名称,通常以操作系统的名称作为标识,可以随意修改
root (hd0,0)
#root(hdX,Y),操作系统内核和引导文件所在的磁盘分区,X指linux的根分区在哪个硬盘上,Y指所安装的linux是在哪个区里
kernel /vmlinuz-2.6.32-220.el6.i686 ro root=/dev/mapper/vg_itpro-lv_root rd_LVM_LV=vg_itpro/lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto rd_LVM_LV=vg_itpro/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
#系统内核及boot命令用到的参数
initrd /initramfs-2.6.32-220.el6.i686.img
#系统引导程序,指定要引导哪个硬盘分区的映像
#kernel和initrd 中指定的文件都是相对于root中所设置的硬盘分区,
#即“/vmlinuz-2.6.32-220.el6.i686”和“/initramfs-2.6.32-220.el6.i686.img”的“/”不是表示根分区,而表示相对路径/boot,vmlinuz-2.6.32-220.el6.i686文件和nitramfs-2.6.32-220.el6.i686.img文件都在/boot目录下。