grub损坏一般有两种情况:第一、安装双系统时,后安装的系统把先安装的系统的MBR删除了。第二、误操作将grub文件删除了。
不管怎样都需要进入到救援模式,详细请看CentOS通过光盘启动救援数据
(1).安装双系统后,MBR引导记录损坏
我们使用命令先模拟环境"dd if=http://www.likecs.com/dev/zero of=http://www.likecs.com/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重启。修改硬盘启动项高于光盘启动项,等待修复完成即可。