Grub及MBR修复

简介:

1、grub.conf配置文件丢失

    首先说明:在grub命令提示符中所有类型的磁盘(不论是SATA还是SAS的)都被识别成以hd开头的设备(如 hd0),没有sda等等。

    当/boot/grub/grub.conf配置文件丢失后,系统重新启动时就找不到linux启动的菜单了,就会直接进入grub提示符界面,界面如下:

spacer.gifwKiom1fPsoDArGj9AAAc6qAHsms632.png

    这时可使用帮助命令help查看都有哪些命令可以使用。

    

    完整的恢复步骤如下:

wKioL1fPtviC8lvcAAAXml8lmRA425.png

    如果知道/boot目录在哪个磁盘分区可以省略第一步,直接使用root命令指定磁盘分区,如果不知道的话,可以使用find命令进行查找。

wKiom1fPs5ewm8SnAAAFrQ71O1s602.png

    输入find (hd0,0)代表从第一块磁盘的第一个分区,在输入时直接输入find (hd0,0)/vmlinuz,后面使用tab键进行补全,如果能补全,就代表在这个分区能找到内核文件。

    

    再使用root指定磁盘分区;


    然后指定内核并传递参数给内核文件,ro代表以只读方式,root=/dev/sda2中的/dev/sda2是根文件系统所在的分区;(因此装系统时要注意一下根文件系统所在分区的名称,如果是根文件系统在逻辑卷上,就要写逻辑卷分区的名称


    最后指定initrd文件,initrd是一个用内存来模拟磁盘的文件,是一个小型的根文件系统,其包含了  当前系统  的真正根文件系统的 驱动,有了这些驱动linux内核才能去挂载真正的根文件系统。


    kernel后面的内核文件名 和 initrd后面指定的文件都可以使用tab键进行自动补全

    

    前面几步设置好后使用boot命令启动。

    

    启动后,进入/boot/grub目录重新编写grub.conf文件,文件内容大致就是上面操作的几步,内容如下:

wKiom1fPv1KhLqHiAAAMJqBT4sc052.png

    其中default=0代表title如果有多个的话,默认选择第一个title的启动;timeout=3代表启动时在grub选择界面停留3秒,title后面的可以自己随便定义。编辑完保存好,下次启动就不会出现问题了。


    在上面的步骤中,若是kernel的参数 root= 这里指定的根文件系统所在分区的名称不正确的话,是会报错的,报错界面如下所示

wKioL1fPvT_yOaXkAAAWXBph0yc669.png

2、MBR的前446字节丢失(如果是中间64字节丢失,此方法不适用,中间64字节丢失是分区表被破坏)

    MBR总共有512字节,前446字节存放BootLoader程序,接下来的64字节存放分区表信息,最后2字节存放特殊标志。这里主要说明bootloader遭到破坏后如何修复。

    当bootloader遭到破坏后重新启动后的界面如下:

wKiom1fPwiHxmPYOAAASQzLnwZs583.png

    这时就要启动使用光盘紧急救援模式。

    挂载好光盘后,设置启动项从光驱启动,进入安装界面

wKioL1fPzt_xR1EeAAORxhvL0M4716.png

    选择Rescue installed system 

    回车后根据提示选择语言Lanaguage,键盘类型keyboard type,一般默认就行。然后到以下界面。

wKiom1fP0DTBFqtBAAAJ2i_bT8Y221.png

    这一步是否启用网络,如果需要启用,可以选Yes,进入界面进行IP等的配置,这里不启用。

    这里不用启用,选NO。进入下面的界面

wKiom1fP0hmSUPkmAAAn_DsXtj4949.png

    默认Continue即可,接下来几步默认即可,一直到下面这一步。

wKiom1fP0xvB-YeyAAAPuJU0YN0325.png

    这一步是在选择OK后,出现最下面的命令提示符,接下来就要进行操作了

wKioL1fP1ETwowlkAAA0xNBzHqU683.png

    第一步使用chroot /mnt/sysimage 切换到/mnt/sysimage目录所在的根文件系统,根文件系统会被挂载到此目录下,然后使用grub进入命令提示符,同样是使用root (hd0,0)指定磁盘分区,然后使用setup (hd0)直接开始进行恢复MBR,MBR不在任何分区,所有setup后面直接跟(hd0),直接指定磁盘即可。

    恢复成功后,使用quit退出grub命令提示符界面,再使用exit退出/mnt/sysimage目录所在的根文件系统,回到从光盘中加载的根文件系统中,重启系统后即可正常进入系统

wKiom1fP2R2hvhgaAAAEyvVSCOY267.png


3、grub目录丢失


    当/boot/grub目录丢失后,系统也不能进入系统,重启系统后报错如下:

wKioL1fP2mqT37HJAAACMhNXHLc690.png

这时仍然是进入紧急救援模式,具体步骤见上面的MBR丢失。

wKioL1fP43fw_36wAAAnSi9dees467.png

    进入到救援模式后,使用chroot切换到/mnt/sysimage所在根文件系统中,使用grub-install命令重新安装grub目录,grub-install --root-directory=/ /dev/sda2 这个命令中--root-directory= 应该格式boot目录的根目录——也就是根/    后面再指定根文件系统所在的磁盘设备,这里就算根文件系统所在的分区是逻辑卷,也不能使用逻辑卷名称;而是要像上面一样使用原始的设备名称/dev/sda2或/dev/sda1或/dev/sda,总之执行完grub-install命令后要能出现下面的(fd0) /dev/fd0和 (hd0) /dev/sda这样的行才算安装成功。

安装好后就可以看到/boot目录下已经有grub目录了。

    还有最后一步,要到grub目录中手动创建grub.conf文件,文件内容如下:

wKiom1fP-f7zGYxRAAANoNCIVCI335.png

    其中kernel那行如果根文件系统所在的分区是逻辑卷的话,就应该使用逻辑卷的名称,而不能像上面grub-install命令中那样使用/dev/sda2。如果是逻辑卷时应该像下面这样

wKioL1fP-3yC_G9wAAAa6SVhNIU755.png

    参数还使用了quiet selinux=0代表使用静默模式、关闭selinux。

    如果不关闭selinux时,启动时会报错如下

wKiom1fP-lbxkMc9AAAO5_xxo-U885.png



本文转自 f_066 51CTO博客,原文链接:http://blog.51cto.com/ganmu/1850556,如需转载请自行联系原作者

相关文章
|
机器学习/深度学习 Linux 决策智能
双系统出现grub rescue修复方法
双系统出现grub rescue修复方法
824 0
|
6月前
|
Linux
Linux MBR扇区故障 引导修复
Linux MBR扇区故障 引导修复
|
网络安全
记一次grub修复
/boot/grub/grub.conf被清空,系统启动就进入grub状态(centos 6.8)
记一次grub修复