grub損壞一般有兩種情況:第一、安裝雙系統時,后安裝的系統把先安裝的系統的MBR刪除了。第二、誤操作將grub文件刪除了。
不管怎樣都需要進入到救援模式,詳細請看CentOS通過光盤啟動救援數據
(1).安裝雙系統后,MBR引導記錄損壞
我們使用命令先模擬環境"dd if=/dev/zero of=/dev/sda bs=446 count=1"
1)CentOS6系統
進入到救援模式后,先使用chroot /mnt/sysimage進入到實根下,接着使用grub-install /dev/sda修復MBR引導記錄,最后exit退出實根,並使用reboot重啟。
重啟時注意將光盤引導啟動項低於硬盤啟動項。然后等待修復重啟即可
2)CentOS7系統
與CentOS6系統基本一致,只是修復命令使用的是grub2-install /dev/sda。
(2).誤刪除grub文件。
1)CentOS6系統
使用命令"rm -rf /boot/grub/"模擬誤刪除grub文件。重啟后顯示如下界面
再次重啟,使用光盤引導進入救援模式。使用chroot /mnt/sysimage進入到實根下,接着使用grub-install /dev/sda修復。
不過CentOS6能生成配置文件grub.conf,所以需要手動編輯。我們需要先使用ls /boot/獲取系統映射名、內核名稱與虛擬系統名稱(如下圖)。這里我們可以看到系統映射名為System.map-2.6.32-642.el6.x86_64,內核名稱vmlinuz-2.6.32-642.el6.x86_64,虛擬系統名稱initramfs-2.6.32-642.el6.x86_64.img。
再使用df -h看一下根目錄在哪里,我這里是/dev/mapper/vg_centos6-lv_root。
再使用cat /boot/grub/device.map看一下第一塊硬盤對應什么,我這里sda對應hd0
下面就可以開始寫配置文件了,vim /boot/grub/grub.conf開始編輯文件。配置內容如下
保存退出。exit退出實根,reboot重啟。修改硬盤啟動項高於光盤啟動項,然后等待修復完成即可。
注意:配置文件里內核和虛擬系統為什么是/開頭,而不是/boot/開頭,是因為root (hd0,0)這個參數,設置了grub根為第一塊硬盤的第一個分區,我們這里就是/boot/。
2)CentOS7系統
使用命令"rm -rf /boot/grub2/"模擬誤刪除grub文件。重啟后顯示如下所示界面
再次重啟,使用光盤引導進入救援模式。使用chroot /mnt/sysimage進入到實根下,接着使用grub2-install /dev/sda修復。
接着生成配置文件,這里比CentOS6要簡單很多,直接使用命令grub2-mkconfig -o /boot/grub2/grub.cfg即可。
exit退出實根,reboot重啟。修改硬盤啟動項高於光盤啟動項,等待修復完成即可。