Linux dd 命令

2018-01-22|Categories: External cmd, Linux|

备份MBR

MBR全称是Master Boot Record,译为主引导记录,又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区(sector 0),总共512字节,备份这512字节就是备份MBR。

# `bs=512`:可以省略,因为`ibs`和`obs`的默认值都是512字节
$ dd if=/dev/sda of=/tmp/mbr-centos6 bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00327784 s, 156 kB/s

$ file /tmp/mbr-centos6
/tmp/mbr-centos6: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, 
boot drive 0x80, 1st sector stage2 0x849fe, GRUB version 0.94; 
partition 1: ID=0x83, active, starthead 32, startsector 2048, 1024000 sectors; 
partition 2: ID=0x83, starthead 221, startsector 1026048, 20480000 sectors; 
partition 3: ID=0x83, starthead 254, startsector 21506048, 16384000 sectors; 
partition 4: ID=0x5, starthead 254, startsector 37890048, 4052992 sectors, 
code offset 0x48

备份分区表

分区表同样存放在MBR,位于boot loader(446字节)之后的64字节:

# `skip=446`:读取时,跳过前446字节,也就是boot loader
$ dd if=/dev/sda of=/tmp/partition-table bs=1 count=64 skip=446

$ ls -l /tmp/partition-table
-rw-r--r--. 1 root root 64 Jan 21 17:58 /tmp/partition-table

$ file /tmp/partition-table
/tmp/partition-table: 8086 relocatable (Microsoft)

破坏GRUB Legacy Stage 1.5

GRUB Legacy Stage 1.5存放在引导磁盘第一个扇区之后、第一个分区之前的位置,包含/boot目录所在分区的文件系统的驱动,根据驱动类型的不同,在CentOS 6上Stage 1.5大约占用23-29个扇区e2fs驱动占用27个扇区)。若要破坏,对扇区写入0即可。

注意:以下操作将导致计算机无法启动!

# `bs=512`:可以省略,因为`ibs`和`obs`的默认值都是512字节
# `count=26`:总共读取、写入26个扇区(1个扇区 = 512字节)
# `seek=1`:写入时,跳过第1个扇区,也就是MBR

dd if=/dev/zero of=/dev/sda bs=512 count=26 seek=1

Leave A Comment