https://en.wikipedia.org/wiki/Master_boot_record
https://www.cyberciti.biz/faq/howto-copy-mbr/
https://www.cyberciti.biz/faq/linux-clearing-out-master-boot-record-dd-command/
https://wiki.archlinux.org/index.php/Partitioning

要复制MBR,只需使用dd命令。dd命令也适用于所有Linux发行版和其他类UNIX操作系统。
主引导记录(MBR)是512字节的引导扇区,它是硬盘的分区数据存储设备的第一扇区。
MBR总大小: 446 + 64 + 2 = 512

  • 446 bytes - Bootstrap(446 or ...)
  • 64 bytes - 分区表(4 x 16)
  • 2 bytes - 签名(2)

使用$ mbr.backup.file的446字节仅覆盖或恢复/dev/XYZ MBR的引导代码。
使用$ mbr.backup.file的512字节会覆盖或恢复/dev/XYZ 完整MBR(包含引导代码和驱动器的分区表)。

=============
==== dd 命令备份磁盘MBR
$ sudo dd if=/dev/sda of=/tmp/bksdambr.bak bs=512 count=1
dd命令备份恢复MBR;
$ sudo dd if=/tmp/bksdambr.bak of=/dev/sda bs=512 count=1

将备份恢复到任何sdb:命令将保留分区模式,仅恢复446字节的Bootstrap。
$ sudo dd if=/tmp/bksdambr.bak of=/dev/sdb bs=446 count=1
or 或者使用复制的方式
$ sudo dd if=/dev/sda of=/dev/sdb bs=446 count=1

仅还原分区表,跳过mbr
$ sudo dd if=/tmp/bksdambr.bak of=/dev/sda bs=66 skip=446 count=1

==== sfdisk 命令备份主分区表和扩展分区表
它创建一个可以在文本编辑器中读取的文件,或者sfdisk可以使用此文件来还原主分区表或扩展分区表。
要备份分区表/dev/sda,请输入:
$ sudo sfdisk -d /dev/sda > /tmp/sda.bak

要还原,请输入:命令将还原扩展分区。
$ sudo sfdisk /dev/sda < /tmp/sda.bak

==== 完整的操作,比如双硬盘

通过fdisk -l命令能看到2快硬盘,分别是:
$ sudo fdisk -l
Disk /dev/sdb: 223.6 GiB, 240057409536 bytes, 468862128 sectors
Disk model: OCZ-TRION100 (SSD 240Gb固态硬盘)
...
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: WDC WD10JPVT-60A (HDD 1T机械硬盘)
...
$

分别备份MBR和扩展分区架构
1. 备份 SSD(/dev/sdb) 的 MBR
$ sudo dd if=/dev/sdb of=/tmp/bkSSDmbr.bak bs=512 count=1
$ sudo sfdisk -d /dev/sdb > /tmp/bkSSD.sfdisk
2. 备份 HDD(/dev/sda) 的 MBR
$ sudo dd if=/dev/sda of=/tmp/bkHDDmbr.bak bs=512 count=1
$ sudo sfdisk -d /dev/sda > /tmp/bkHDD.sfdisk
注:这里备份文件没有使用(/dev/sda)这样的设备号,原因是使用不同的系统登录,这2个sda和sdb可能会互换。

恢复MBR和扩展分区架构,比如恢复机械硬盘
$ sudo dd if=bkHDDmbr.bak of=/dev/sda
$ sudo sfdisk /dev/sda < bkHDD.sfdisk

==== 删除 MBR...
Option #1: Command to delete mbr including all partitions
Open a terminal and type the following command command to delete everything:
$ sudo dd if=/dev/zero of=/dev/sdc bs=512 count=1

Option #2: Command to delete mbr only
The following command will erase mbr, but not your partitions:
$ sudo dd if=/dev/zero of=/dev/sdc bs=446 count=1
============

https://wiki.archlinux.org/index.php/Partitioning_(简体中文)
https://wiki.archlinux.org/index.php/Partitioning
https://wiki.archlinux.org/index.php/Partitioning#GUID_Partition_Table
https://en.wikipedia.org/wiki/Master_boot_record

查看提取的引导记录

https://blog.csdn.net/mao0514/article/details/51218522

用dd if=/dev/sdc of=/tmp/mbr.bin bs=446 count=1 提取出。

用hexdump -C /tmp/mbr.bin 查看

Linux 系统下使用dd命令备份还原MBR主引导记录的更多相关文章

  1. 【转载】在Linux系统下用dd命令制作ISO镜像U盘启动盘

    #### 将U盘插入USB接口 #umount /dev/sdb* #dd if=/iso存放路径/XXX.iso of=/dev/sdb bs=1M ##### [转载]在Linux系统下用dd命令 ...

  2. 在Linux系统下用dd命令制作ISO镜像U盘启动盘

    http://os.51cto.com/art/201510/494762.htm 首先在 Linux 系统中打开终端,确认 U 盘路径: sudo fdisk -l 使用 dd 命令,格式如下: s ...

  3. Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程

    Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程 二 18 奶牛 Linux, Ubuntu, Windows 1,885 views查看评论 最近奶牛一直在折腾linux下的gru ...

  4. Linux系统下利用wget命令把整站下载做镜像网站

    Linux系统下利用wget命令把整站下载做镜像网站 2011-05-28 18:13:01 | 1次阅读 | 评论:0 条 | itokit  在linux下完整的用wget命令整站采集网站做镜像 ...

  5. Linux系统下的shutdown命令用于安全的关闭/重启计算机

    Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提 ...

  6. 【Linux】---Linux系统下各种常用命令总结

    在Linux系统下,“万物皆文件”,之所以强调在强调这个概念,是因为很多人已经习惯了win系统下找找点点得那种方式和思维,因此总是会觉得linux系统下很多指令既复杂又难记.其实都是一样得东西,只是w ...

  7. 在Mac OS X系统下 用dd命令将iso镜像写入u盘

    一. Mac下将ISO写入U盘可使用命令行工具dd,操作如下: 1.找出U盘挂载的路径,使用如下命令:diskutil list2.将U盘unmount(将N替换为挂载路径):diskutil unm ...

  8. 电源管理ACPI、及APM、GNU/Linux系统下的相应命令使用

    /*********************************************************************  * Author  : Samson  * Date   ...

  9. 云服务器 ECS Linux 系统下使用 dig 命令查询域名解析

    云服务器 ECS Linux 系统可以使用通常自带的 dig 命令来查询域名解析情况.本文对此进行简要说明. 查询域名 A 记录 命令格式: dig <域名> 比如,查询域名 www.al ...

随机推荐

  1. Java基础学习-注释的概述和分类

    /*     注释:用于解释说明程序的文字          分类:             单行://             多行:/**/       作用:解释说明程序,提高程序的阅读性 */ ...

  2. P3346 [ZJOI2015]诸神眷顾的幻想乡

    思路 注意到叶子节点(度数为1)只有20个,可以分别以这20个节点为根,把所有子串插入SAM中,统计最后的本质不同的子串个数 所以就是广义SAM了 然后注意要判断一下有无重复插入 代码 #includ ...

  3. LeetCode--018--四数之和(java)

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...

  4. HDU - 1061-快速幂签到题

    快速幂百度百科:快速幂就是快速算底数的n次幂.其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高. HDU - 1061 代码实现如下: import java.util.Sc ...

  5. yii2解决资源插件路径不对应问题

    //本人ubuntu系统 composer self-update //升级到最新 //官网找到最新下面的这行执行. composer global require "fxp/compose ...

  6. dedecmsv5.7 前台模版里输出变量

    如何在PHP文件查询出来的数据赋值给前端页面展示出来? 例如: PHP文件:agency.php require_once(dirname(__FILE__) . '/../../include/co ...

  7. React文档(十七)非受控组件

    大多数情况下,我们建议使用受控组件(也就是用React的state来控制表单元素的value值)来实现表单.在一个受控组件里,表单数据被React组件处理.另一种方案就是非控制组件,这样的话表单数据就 ...

  8. vue实现tab切换功能

    最近用vue做一个页面的tab功能,经过一查找资料,没用路由,也没用动态组件,完美实现了tab切换功能,效果如下 下面是代码实现,这是模板 <article id="example&q ...

  9. spark获取时间

    在spark 中获取时间用到java.util.{Calendar,Date} 以及java.text.SimpleDateFormat来对时间输出格式作规范 首先先导入包 import java.t ...

  10. a*b高精度数组算法

    #include<stdio.h> #include<string.h> int main() { ]={},b[]={},c[]={},len1=,len2=; ],str2 ...