dd - 备份MBR /分区表和第一个分区

时间:2014-07-09 16:20:55

标签: linux bash dd

我已经获得了一张3.8GB SD卡图像,用于闪存到4GB SD卡,用于在RaspBerry PI开发板上启动自定义版本的Raspian OS。它有一个第一个主分区,FAT32,它包含一个引导加载程序,另一个分区是一个包含操作系统的自定义类型。

我可以在SD卡上启动PI,并在其上部署此图像,在电路板运行时修改其内容,然后关闭电路板。

在我修改卡片内容时,我想创建自己的磁盘映像。这将是involve backing up the MBR,我将尝试通过:

dd if=/dev/sda of=~/Desktop/mbr.raw bs=512 count=1

然后我可以通过以下方式将每个分区一次备份到一个单独的文件中:

dd if=/dev/sda1 of=~/Desktop/sda1.raw bs=1m
dd if=/dev/sda2 of=~/Desktop/sda2.raw bs=1m

有没有办法将这些文件连接成单个图像,或者安全地编写脚本dd以便首先将所有内容提取到单个文件中?引导加载程序和操作系统分区的大小将来可能会发生变化,但它们始终是连续的。

2 个答案:

答案 0 :(得分:3)

使用这样的子shell:

(dd if=/dev/sda1 bs=1m; dd if=/dev/sda2 bs=1m) > ~/Desktop/sda1+2.raw

或者,如果你想要那里的512字节MBR(可能不是最好的主意),你可以这样做:

(dd if=/dev/sda bs=512 count=1; dd if=/dev/sda1 bs=1m; dd if=/dev/sda2 bs=1m) > ~/Desktop/MBR+sda1+2.raw

答案 1 :(得分:2)

最后,我做了以下工作:

  1. 使用fdisk -l /dev/sdc列出SD卡上的所有分区。注意块大小(通常为512)和" count" (即:第一个分区占用的块数)
  2. 将变量blks定义为count+1
  3. 发出命令:dd if=/dev/sdc of=~/my_image.img bs=512 count=${blks}