一、基础知识介绍
1.MBR概念
MBR(Main Boot Record),即主引导记录,是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。通常,我们将包含MBR引导代码的扇区称为主引导扇区。因为在这一扇区中,引导代码占有绝大部分的空间,故而习惯将该扇区称为MBR扇区(简称MBR)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。
2.主引导扇区的组成
主引导扇区由三个部分组成(共占用512个字节)
(1):主引导程序即主引导记录(MBR)(占446个字节)
MBR可以在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。
(2):磁盘分区表项(DPT,Disk Partition Table)
由四个分区表项构成(每个16个字节)。
负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。
(3):结束标志(占2个字节)
其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。
3.主引导分区的读取流程
系统开机或者重启时主引导扇区的读取流程如下所述。
(1):BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
(2):读取主引导记录(MBR)。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
(3):检查0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示“NO ROM BASIC”然后死机。
(4):当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处,然后继续执行。
(5):根据MBR中的引导代码启动引导程序。
事实上,BIOS不仅检查0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,往往还对磁盘是否有写保护、主引导扇区中是否存在活动分区等进行检查。如果发现磁盘有写保护,则显示磁盘写保护出错信息;如果发现磁盘中不存在活动分区,则显示类似如下的信息“Remove disk or other media Press any key to restart”。
二、修复MBR扇区故障
1.MBR故障原因
(1):病毒、木马等造成的破坏
(2):错误的分区操作,磁盘读写错误操作
2.故障现象
(1):找不到引导程序,启动中断
(2):无法加载操作系统,开机后黑屏
3.解决思路
(1):提前备份好文件
(2):通过RHEL6.5光盘进行到急救模式
(3):从备份文件中恢复
三、修复具体步骤
1.在关机状态下添加一块新硬盘:虚拟机-->硬盘-->添加-->选择硬盘-->下一步
如下图,硬盘添加成功
2.启动主机进入Linux系统,并对新硬盘进行分区
(1):查看硬盘分区情况:fdisk -l
(2):对新硬盘进行分区:fdisk /dev/sdb
1>:对磁盘进行分区
2>:建立一个主分区,一个扩展分区
3>:建立两个逻辑分区
3.建立新硬盘的文件系统(即格式化文件系统)
(1):查看sdb磁盘的列表信息
(2):对磁盘进行格式化
4.挂载硬盘
(1):创建挂载点
(2):挂载分区
5.备份MBR扇区数据
dd if=/dev/sda of=/sdb1/sda.mbr.bak bs=512 count=1
if指定操作内容,of指定操作对象,bs指定写入字节数,count指定次数
6.模拟MBR扇区被破坏的故障
dd if=/dev/zero of=/dev/sda bs=512 count=1
7.然后重启计算机,此时硬盘已经损坏,如果没有光盘引导,则系统一直处于如下状态,不能启动。
8.进入急救模式来修复MBR扇区故障
(1):先关闭计算机-->虚拟机-->电源-->打开电源时进入固件(F)-->选择Boot-->将光盘放在第一位
(2):选择第三条进入急救模式
(3):选择English-->确认
(4):选择us-->确认
(5):选择OK
(6):选择No
(7):选择Skip
(8):选择Shell Start shell-->选择Ok
(9):查看/dev/sdb硬盘和/dev/sda硬盘
能看到sdb1分区,看不到sda设备,因为sda设备的MBR被破坏
(10):将之前拷贝的文件重新写回来
9.重启计算机,发现可以正常启动计算机,说明修复了MBR扇区故障