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

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系统,识别硬盘,然后,将新添加的硬盘进行分区设置、格式化(创建文件系统)与挂载。

[[email protected] ~]# 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
[[email protected] ~]# 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.
正在同步磁盘。
[[email protected] ~]# 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
[[email protected] ~]# mkdir /data               //创建挂载目录
[[email protected] ~]# mount /dev/sdb1 /data     //挂载sdb1
[[email protected] ~]# 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引导扇区备份到第二块硬盘中。

[[email protected] ~]# 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/秒
[[email protected] ~]# ls /data  //查看目录中是否有创建的文件
sda.mbr.bak

3、模拟 MBR 扇区故障 。

[[email protected] ~]# 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/秒
[[email protected] ~]# init 6   //重启服务器

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

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

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

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

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

时间: 2024-12-11 13:15:46

详解CentOS 7系统中MBR引导扇区恢复方法的相关文章

Linux常见故障-------MBR引导扇区恢复

本次给大家介绍的是Linux常见故障其中的MBR引导扇区. ----------------故障概述-------------- 基本概述在Linux系统的启动过程中,涉及MBR主引导记录.GRUB启动菜单.系统初始化配置文件等各方面,其中任何一个环节出现故障都可能会导致系统启动的失常,因此一定要注意做好相关文件的备份工作. 完整的开机引导流程 开机自检:也称加电自检(POST,Power On Self Test). 指计算机系统,接通电源,(BIOS程序)的行为,包括对CPU.系统主板.基本

详解CentOS 7中PXE高效批量网络装机与kickstart无人值守技术

PXE高效批量网络装机 服务器的批量部署 规模化:同时装配多台服务器 自动化:安装系统.配置各种服务 远程实现:不需要光盘.U盘等安装介质 关于PXE网络 PXE 预启动执行环境,在操作系统之前运行 可用于远程安装,构建无盘工作站 服务端 运行DHCP服务,用来分配地址.定位引导程序 DHCP 自动分配IP地址 定位引导文件 运行TFTP服务器,提供引导程序下载 TFTP 简单文件传输协议 使用UDP协议 端口号69号 优点:高效率 缺点:容量小 用于存放:引导程序pxelinux.0(sysl

详解CentOS配置和管理web服务-Apache

详解CentOS配置和管理web服务-Apache 家住海边喜欢浪:zhang789.blog.51cto.com 目录 1.web介绍 2.web历史和工作原理 3.http请求流程 4.关于Apache 5.Apache服务器软件安装使用 6.符号链接和虚拟目录 7.页面重定向 8.Apache日志文件 9.Apache安全配置 10.虚拟主机 10.1.基于IP 10.2.基于域名 10.3.基于端口 web服务器配置和管理 http协议简介 http协议,全称HyperText Tran

详解Centos默认磁盘分区

对于有经验的Linux系统管理员,在安装系统之前都会对系统的分区进行规划:针对这一需求,下面就通过默认的Centos分区与大家分享一些关于Linux系统的知识.Linux系统的磁盘命名规范:硬盘类型标记:第一个SCSI磁盘记为/dev/sda,第二个SCSI磁盘记为/dev/sdb:第一个SATA磁盘记为/dev/hda,第二个为/dev /hdb,以此类推.硬盘分区标记:Linux系统中,每一个磁盘的各个分区编号是从1开始的,例如,第一个SCSI磁盘的第一个分区为/dev/sda1,第二分区为

Tomcat详解及SNS系统的部署实现

前言:Tomcat是基于java研发的一个web容器,即web服务器,下面我们先简单介绍下Java 一 .Java 1.Java简介 Java是由Sun Micorsystems公司于1995年5月推出的Java面向对象程序设计语言(简称Java语言)和Java平台的总称.用Java实现的HotJava浏览器使得Java被广泛应用起来. 2.Java特点 Java语言是面向对象的语言,以数据为中心来组织程序的,包括数据+方法,方法存放于类中 自身具有API(应用程序编程接口)与ABI(应用程序二

详解C和C++中的const关键字

在讲下面的内容之前,要先看看这篇文章const.static变量的存储位置 一.C中的const 作用:(1)可以定义const常量,具有不可变性. (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患. (3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改. 同宏定义一样,可以做到不变则已,一变都变! (4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性. 还是上面的例子,如果在函数体内修改了i,编译器就会报错: (5) 可以节省空间,避免不必要的内存

CentOS 6系统中/boot恢复被删除的/boot分区 简单介绍

在CentOS 6系统中,因为不小心或操作失误导致boot分区被删除, 遇到这种情况是否能够恢复被删除的boot分区呢? 1.首先利用centos6镜像进入linux rescue救援模式. 2.启动sshd服务,查看eth0获取的ip地址,然后用ssh secure shell 连接. SSH Secure Shell 3.2.9 (Build 283) Copyright (c) 2000-2003 SSH Communications Security Corp -  http://www

Scala 深入浅出实战经典 第60讲:Scala中隐式参数实战详解以及在Spark中的应用源码解析

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/IVN4EuFlmKk/优酷:http://v.youku.com/v_show/id_

详解volatile在C++中的作用

volatile的介绍 volatile类似于大家所熟知的const也是一个类型修饰符.volatile是给编译器的指示来说明对它所修饰的对象不应该执行优化.volatile的作用就是用来进行多线程编程.在单线程中那就是只能起到限制编译器优化的作用.所以单线程的童鞋们就不用浪费精力看下面的了. 没有volatile的结果 如果没有volatile,你将无法在多线程中并行使用到基本变量.下面举一个我开发项目的实例(这个实例采用的是C#语言但不妨碍我们讨论C++).在学校的一个.Net项目的开发中,