Boot loader是计算机操作系统开机启动的引导文件,一旦boot loader出了问题,则计算机就无法正常启动,这时候,大家可能都会选择重装系统来解决问题,但是对于Centos这种用于服务器的操作系统来说,可不是说能够随随便便就可以重新装一次系统的,接下来,小编带你来看看Centos中的几种恢复boot loader的方法。(本次实验我们以Centos 6版本为例)

这篇文章主要在于介绍恢复boot loader的方法,就不在详细介绍mbr的分区结构,以及boot loader在系统启动中的重要位置了。如有疑问,可以参考以下链接。

磁盘分区中的MBR: http://jk6627.blog.51cto.com/12002684/1957816

两种恢复方法:

1、从提前备份的mbr文件中,使用dd命令将boot loader恢复。

2、使用grub-install工具进行修复。


下面就行实验详细介绍:

方法一、使用dd命令将备份的boot loader恢复。

当然,如果你来看着篇文章,可能你想必是没有进行备份,但是,还请允许我介绍一下这方法,以便你在今后的操作中能够及时备份,并且能通过这个方法轻松恢复。

在开始之前,我们先来备份一下MBR中的BootLoaderboot loader存在于磁盘首部的446字节中,所以我们可以只备份这446个字节,如果你想将整个MBR全部备份下来,那更好,将分区表也备份下来了,不过这里我们只备份前446字节:

Centos之boot-loader恢复攻略!_Centos

 

我们接下来就行boot loader破坏,不过大家生产环境中可不要这么做,这里的破坏只是为了试验用,请大家不要随便模仿。备份的文件千万不要还放在本地计算机上,如果一旦启动不了,我们还怎么通过备份恢复,当然,尽管方法是有,但是还是建议不要讲备份放在本地计算机。我们就走一次逆行,将备份还放到本地计算机,来进行实验。(但是建议,大家还是把备份的文件放到远程计算机上)

破坏boot loader:dd if=/dev/zero of=/dev/sda bs=1 count=446

Centos之boot-loader恢复攻略!_Centos_02

Boot loader破坏后我们的系统再次启动就不能正确的找到内核的位置,也就起不来了,现象如下所示:

Centos之boot-loader恢复攻略!_Centos_03

任何的操作都是需要进入系统中才可以进行,我们也可以将硬盘拆下来放到另一台计算机上进行修复。这里我们通过进入光盘系统的修复模式来进行。

我们需要将光盘挂载,并且确保光盘已经连接,如果是虚拟机的话,我们来进行查看确保。

Centos之boot-loader恢复攻略!_Centos_04

 

开机进入本机的BIOS界面,在启动项里找到CD/DVD选项,将开机启动项置为从光盘启动。如果是物理机的话需要找到物理机品牌进入BIOS的按钮,如果是虚拟机的话我们就选择在开机前,选择进入固件,如下图所示:

Centos之boot-loader恢复攻略!_Centos_05

 

Centos之boot-loader恢复攻略!_Centos_06

保存退出后,开机启动,这时候会进入,光盘引导界面,我们选择进入救援模式,一步一步跟着小编走:

    Centos之boot-loader恢复攻略!_Centos_07

    Centos之boot-loader恢复攻略!_Centos_08

    Centos之boot-loader恢复攻略!_Centos_09

    Centos之boot-loader恢复攻略!_Centos_10

    Centos之boot-loader恢复攻略!_Centos_11

    Centos之boot-loader恢复攻略!_Centos_12

    Centos之boot-loader恢复攻略!_Centos_13

    Centos之boot-loader恢复攻略!_Centos_14

    Centos之boot-loader恢复攻略!_Centos_15

进行到上图所示,我们已经成功的进入了救援模式,进入到了光盘系统的根目录,并且获得了shell命令提示符。

进入后,我们需要切根,就是运行chroot /mnt/sysp_w_picpath/这条命令,因为就如救援模式后,我们其实是在光盘系统的根目录,而我们本地的系统根目录是被默认挂载到了/mnt/sysp_w_picpath/目录下,所以我们需要进入本地根目录更方便的操作。

如图运行:chroot /mnt/sysp_w_picpath/ 虽然没有任何的提示,但我们已经换了一片天了。

Centos之boot-loader恢复攻略!_Centos_16

这个时候我们可以进行恢复了,小编在刚才的备份中,悄悄将备份的文件放到了/tmp目录下,我们使用dd命令将boot loader恢复到/dev/sda中,一般如果我们不做特别的修改,默认的MBR是在/dev/sda磁盘下的。

Centos之boot-loader恢复攻略!_Centos_17


Centos之boot-loader恢复攻略!_Centos_18

 

Centos之boot-loader恢复攻略!_Centos_19

好了这个时候多执行几次sync这个命令确保写入完成。我们就可以退出本地根进行重启了。(注意:使用exit退出本地根,再进行重启。)

 

方法二、使用grub-install工具进行神修复

使用第二种方法与第一种方法是有一定得区别,但是还是有一些相似的。如果你在没有重启系统的情况下,发现系统的boot loader破坏了,可以直接在本地安装grub-install工具(安装命令:yum install grub-install,执行grub-install /dev/sda进行恢复。

除了上述的你自己发现的情况下不能正常启动了,我们还是得进入救援模式进行恢复,这种方法就不适用于将磁盘插到别的计算机上进行恢复了。

进入救援模式的方法还跟方法一的操作一样,请小伙伴们去参考方法一种进入救援模式的方法,这里小编就不啰嗦了。进入救援模式后,我们必须要切根,所以为什么方法一中小编执意让大家切根,虽然方法一不进行切根也能完成,但是,养成进救援模式就切根的好习惯是没有错的。如果不切根这个命令是没有办法执行的。

Centos之boot-loader恢复攻略!_Centos_20

查看损坏的boot loader:

Centos之boot-loader恢复攻略!_Centos_21

执行:grub-install /dev/sda  稍等片刻就好。

Centos之boot-loader恢复攻略!_Centos_22


再次查看被破坏的bootloader 已经成功修复。

Centos之boot-loader恢复攻略!_Centos_23

同样exit退出,reboot重启,恢复完成!

Centos之boot-loader恢复攻略!_Centos_24

成功启动展示:

Centos之boot-loader恢复攻略!_Centos_25

知识小扩展grub-install 这个命令不仅仅可以修复被破坏的boot loader,还强大到可以修复/boot/grub/目录下被破坏的启动重要文件,这些重要文件是开机启动过程中引导启动阶段1阶段1.5和阶段2的相关配置文件。有兴趣的同学可以进行实验验证一下,但是!特别声明,该命令不能回复/boot/grub/grub.conf和以.xmp.gz结尾的文件。