【问题标题】:dd - Backup MBR/partition table and first partitiondd - 备份 MBR/分区表和第一个分区
【发布时间】:2014-08-30 18:56:16
【问题描述】:

我获得了一个 3.8GB 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 脚本以首先将它们的所有内容提取到一个文件中?引导加载程序和操作系统分区的大小将来可能会发生变化,但它们将始终是连续的。

【问题讨论】:

    标签: linux bash dd


    【解决方案1】:

    使用这样的子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
    

    【讨论】:

    • 我尝试了两者中的后者,但是当我尝试将输出文件写回SD卡时,它无法识别。
    • 我不太喜欢将 MBR 和分区混合在一个文件中的想法。如果您从原始文件的前面读取 MBR 并先将其放回驱动器,然后再将其余部分放在驱动器上,怎么样? dd if=file.raw of=/dev/sd? bs=512 count=1 后跟 dd if=file.raw of=/dev/sd?1 bs=512 iseek=1
    • 我会采用第一个建议,使用单独的 MBR。
    • 我会尽快尝试的。谢谢!
    【解决方案2】:

    最后,我做了以下工作:

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

    【讨论】:

    • 谢谢,但为什么要在count 中添加1
    • 因为他想要第一个分区(count 块)和 MBR(1 块)。
    猜你喜欢
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 2020-08-17
    • 2015-09-14
    • 2019-11-22
    相关资源
    最近更新 更多