码迷,mamicode.com
首页 > 其他好文 > 详细

详解CentOS 7系统中MBR引导扇区恢复方法

时间:2019-08-25 16:02:58      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:free   table   部分   字节   系统引导   标准   sys   code   其他   

MBR引导扇区介绍

MBR位于物理硬盘的第一个扇区(512字节),该扇区又称为主引导扇区(MBR扇区),除了包含系统引导程序的部分数据外,还包含整个硬盘的分区表记录。当主引导扇区发生故障时,将可能无法进入引导菜单,或者因无法找到正确的分区位置而无法加载系统,通过该硬盘引导主机时很可能进入黑屏状态。

MBR 扇区故障恢复

下面将通过示例介绍对MBR扇区进行备份、模拟破坏、修复的过程。由于 MBR 扇区中包含了整个硬盘的分区表记录,因此该扇区的备份文件必须存放到其他的存储设备中。

  • dd命令——用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换

  • 命令格式

    dd [if=<文件>][of=<文件>][bs=<字节数>][count=<区块数>][cbs=<字节数>][conv=<关键字>][ibs=<字节数>][obs=<字节数>][seek=<区块数>][skip=<区块数>][--help][--version]

  • 参数说明

    if=文件名:输入文件名,默认为标准输入。即指定源文件。

    of=文件名:输出文件名,默认为标准输出。即指定目的文件。

    bs=bytes:同时设置读入/输出的块大小为bytes个字节。

    count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

    cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

    conv=<关键字>,关键字

    ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

    obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

    seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

    skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

    --help:显示帮助信息

    --version:显示版本信息

1、首先,我们在虚拟机中添加一块新的硬盘,并重启Linux系统,识别硬盘,然后,将新添加的硬盘进行分区设置、格式化(创建文件系统)与挂载。

[root@localhost ~]# ls /dev             //查看是否识别新添加的硬盘
agpgart          input               rtc       tty12  tty34  tty56    vcs2
autofs           kmsg                rtc0      tty13  tty35  tty57    vcs3
block            log                 sda       tty14  tty36  tty58    vcs4
bsg              loop-control        sda1      tty15  tty37  tty59    vcs5
btrfs-control    lp0                 sda2      tty16  tty38  tty6     vcs6
bus              lp1                 sda3      tty17  tty39  tty60    vcsa
cdrom            lp2                 sda4      tty18  tty4   tty61    vcsa1
char             lp3                 sda5      tty19  tty40  tty62    vcsa2
console          mapper              sdb       tty2   tty41  tty63    vcsa3
...//省略部分内容...                      //系统识别新添加硬盘sdb
[root@localhost ~]# fdisk /dev/sdb      //进行分区管理
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x62f310d1 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkfs.xfs /dev/sdb1      //创建文件系统(格式化)
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /data               //创建挂载目录
[root@localhost ~]# mount /dev/sdb1 /data     //挂载sdb1
[root@localhost ~]# df -h                     //查看信息
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda2        20G  3.8G   17G   19% /
devtmpfs        898M     0  898M    0% /dev
tmpfs           912M     0  912M    0% /dev/shm
tmpfs           912M  9.1M  903M    1% /run
tmpfs           912M     0  912M    0% /sys/fs/cgroup
/dev/sda5        10G   37M   10G    1% /home
/dev/sda1       6.0G  174M  5.9G    3% /boot
tmpfs           183M  4.0K  183M    1% /run/user/42
tmpfs           183M   24K  183M    1% /run/user/0
/dev/sr0        4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb1        20G   33M   20G    1% /data           //成功挂载

2、将MBR引导扇区备份到第二块硬盘中。

[root@localhost ~]# dd if=/dev/sda of=/data/sda.mbr.bak bs=512 count=1
记录了1+0 的读入     //将MBR引导扇区复制到data目录中,文件名为sda.mbr.bak方便系统识别文件
记录了1+0 的写出
512字节(512 B)已复制,0.00222438 秒,230 kB/秒
[root@localhost ~]# ls /data  //查看目录中是否有创建的文件
sda.mbr.bak

3、模拟 MBR 扇区故障 。

[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入             //从zero中拿去文件覆盖MBR扇区
记录了1+0 的写出
512字节(512 B)已复制,0.000130793 秒,3.9 MB/秒
[root@localhost ~]# init 6   //重启服务器

技术图片

技术图片

4、下面我们来修复MBR引导扇区,由于 MBR 扇区被破坏以后,就无法再从该硬盘启动系统,所以需要使用其他硬盘中的操作系统进行引导,或者直接使用 CentOS 系统的安装光盘进行引导。不管使用哪种方式,目的都是相同的——获得一个可以执行命令的 Shell 环境,以便从备份文件中恢复 MBR 扇区中的数据。 首先,我们需要在VMware 15虚拟机光驱中添加CentOS 7镜像文件,并使光驱处于连接状态,使Linux系统启动时可以识别(和我们安装Linux系统时相同方式),然后重启虚拟机,在读条界面点击ESC键,进入BOOT模式选择从光驱启动。

技术图片

技术图片

技术图片

5、选择从光驱启动后进入系统安装引导界面,这个时候我们选择最下面的一个选项疑难问题解决,回车,进入界面,然后选择第二个选项诊断CentOS 7系统,加载进入界面后输入1选择进入基本镜像模式,这个时候我们就会进入shell终端模式,我们就可以通过命令来进行修复操作。

技术图片

技术图片

技术图片

技术图片

技术图片

6、通过命令模式输入命令将备份的扇区信息恢复到sda中,然后重启系统,看是否可以正常开启系统。

技术图片

技术图片

技术图片

通过上面的操作完成了MBR引导扇区的恢复,希望可以帮助到大家!!!

详解CentOS 7系统中MBR引导扇区恢复方法

标签:free   table   部分   字节   系统引导   标准   sys   code   其他   

原文地址:https://blog.51cto.com/14473285/2432406

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!