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文件:
