1、查看系统中的/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_test-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.i686)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.i686 ro root=/dev/mapper/vg_test-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_test/lv_swap SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rd_LVM_LV=vg_test/lv_root rhgb quiet
initrd /initramfs-2.6.32-431.el6.i686.img
2、模拟故障
删除boot目录下的grub相关文件:
重启之后报错:
3、修复故障
开机进入救援模式:
操作之前将根切换至之前的系统:
创建光盘挂载目录,并挂载光盘,安装kerner包,会生成/boot目录以及内核及initramfs :
修复grub,首先要查看一下自己的磁盘分区情况,以确认grub安装在那个磁盘上:
从上图可以看到/boot 安装在/dev/sda1分区。
为第一块磁盘安装grub引导:
确认grub目录已经生成,后面会用到:
此时仍然在救援模式,编辑/boot/grub/grub.conf文件
sh-4.1#vi /boot/grub/grub.conf
default=0
timeout=5
hiddenmenu
title linux
root (hd0,0)
kernel /vmlinuz-2.6.32.-431.el6.x86_64 ro root=/dev/mapper/vg_test-lv_root
initrd /initramfs-2.6.32-431.el6.x86_64.img
:x
保存并退出。然后重启,可以正常进入系统。
进入系统之后查看/boot/grub/grub.conf文件:
参数解释:
- chroot /mnt/sysimage 进入系统真实系统下
- df -h 观察发现 / 挂载到逻辑卷上 /dev/mapper/vg_test-lv_root
- grub-install /dev/sda 在根(/)挂载磁盘生成grub目录。绝大多数情况下,根和/boot在一个磁盘
- default=0 默认进入第一个引导系统
- timeout=5 5秒后自动进入启动界面
- hiddenmenu 隐藏菜单
- title linux 标签
- root (hd0,0) boot目录在(hd0,0)分区上
- kernel /vmlinuz-2.6.32.-431.el6.x86_64 ro root=/dev/mapper/vg_test-lv_root 【若硬盘和分区很多,推荐使用UUID】
- 或 kernel /vmlinuz-2.6.32-696.e16.x86_64 ro root=UUID=XXXXX \\指明内核文件,ro为只读挂载,root指定根分区(可以是分区或者逻辑卷,或者指定根分区的UUID),rhgb为启动过程图形化显示的参数,quiet为显示内核启动过程的参数
- initrd /initramfs-2.6.32-696.e16.x86_64.img 指明ramfs文件
4、临时编辑/boot/grub/grub.conf文件解决故障
可以在救援模式编辑/boot/grub/grub.conf文件,也可以临时编辑启动文件
/boot/grub/grub.conf
boot回车启动。可以正常进入系统。
注:
- grub> root (hd0,0) #是说根分区在第一块硬盘的第一个分区上。(hd0,1)是说根分区在第一块硬盘的第二个分区上
- grub> kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_test-lv_root #指明内核路径和根分区
- grub> initrd /boot/initramfs-2.6.32-431.el6.x86_64.img #指明initramfs 路径启动系统加载驱动
- grub> boot #启动上面指定的系统,如果是reboot就等于重启整个系统了,刚才的设置就失效了
此时已经可以引导系统启动了,但是还没有grub.conf文件,可以在系统启动后编写一个grub.conf文件即可。 否则重启系统后就无法正常开机了,除非在grub界面指定内核和驱动文件的路径
编写grub.conf文件: