使用多分区DMG恢复SD卡


4

我有一个安装在SD卡上的Linux发行版。在冗长的安装完成后,我使用Mac的内置磁盘实用程序创建了所有分区的DMG备份。恢复映像目前大小为865.5MB,似乎包含正确的信息。

我目前正在尝试将此映像还原到另一张SD卡上,以确保恢复过程能够正常运行。为了执行此操作,我进入了还原选项卡下的磁盘实用程序并输入了相应的字段。在选择SD卡托架作为目标时,我选择了DMG恢复文件作为源。所有似乎都工作,因为磁盘管理器提示我是否可以完全擦除SD卡以及我的root权限密码。然而,我的胜利很短暂,因为它很快就向我显示了这个错误:Recovery Error: Could not validate source - Invalid argument。我猜测源是不正确的,所以我尝试打开DMG并提供虚拟驱动器作为源。但是同样的错误仍然存​​在。

由于这张卡包含三个分区,其中一个是可祝福的可引导分区,我想看看是否有任何方法可以让我的Mac为我生成这些分区。由于磁盘实用程序使用分区存档整个SD卡,我认为有一种方法可以通过其他方式恢复它。


磁盘工具的完整日志:

2013-01-23 19:02:27 -0500: Restore Disk
2013-01-23 19:02:27 -0500:  Source: “Raspbian.dmg”
2013-01-23 19:02:27 -0500:  Destination: “APPLE SD Card Reader Media”
2013-01-23 19:02:27 -0500:  Erase Destination: Yes
2013-01-23 19:02:27 -0500:  Erase “APPLE SD Card Reader Media” and copy the contents of “Raspbian.dmg” to it.
2013-01-23 19:02:27 -0500: 
2013-01-23 19:02:27 -0500: Starting Restore…
2013-01-23 19:02:27 -0500: Validating target...
2013-01-23 19:02:27 -0500: done
2013-01-23 19:02:27 -0500: Validating source...
2013-01-23 19:02:27 -0500: Could not detect format of volume on device ""
2013-01-23 19:02:27 -0500: Could not validate source - Invalid argument
2013-01-23 19:02:27 -0500: Could not validate source - Invalid argument
2013-01-23 19:02:27 -0500: 

您创建的DMG的格式是什么?HFS +?
Thorgrim 2013年

@Thorgrim Disk Description : Apple UDIF read-only compressed (zlib)分区映射方案是主引导记录。这个dmg还包含3个分区。FAT32,linux-swap和linux分区类型,我忘了名字(而苹果不承认)。希望这会有所帮助,如果没有,或者您需要更多信息,请发布另一条评论。谢谢回复。
jakebird451 2013年

Answers:


7

使用dd命令行工具。

  • 安装SD
  • 使用“磁盘工具”:选择SD卡的顶层和“获取信息”。请注意“磁盘标识符”(示例disk13)
  • 卸下SD上的所有音量(如果已安装),但不要取出SD卡。这很重要,因为dd如果它检测到任何已安装的卷,则会失败。

在终端:

  • 如果您不在管理员帐户中,请使用“su(管理员帐户名)”获取管理员权限
  • sudo dd if=/path/to/DMG/file of=/dev/(disk identifier from above) bs=16k

然后等待很长时间才能完成操作。在我最近对CF卡执行的4 GB拷贝中,花了21分钟才完成。

最终将获得3行描述记录输入和输出以及字节复制。例:

243528+1 records in
243528+1 records out
3989970432 bytes transferred in 1278.252950 secs (3121425 bytes/sec)

在我的情况下,我一直在将.img文件复制到CF卡,希望它对DMG来说也是如此


5
专业提示:在命令运行的任何时候按Ctrl+ Tdd以获得快速状态报告load: 1.82 cmd: gdd 17747 uninterruptible 0.05u 3.81s 15730+0 records in 15730+0 records out 257720320 bytes (258 MB) copied, 179.779 s, 1.4 MB/s
Mathias Bynens 2013年

我似乎无法得到bs = ?? 对。应该是什么号码(我用什么数据来计算bs数?)

3
使用此命令可以更快地编写图像:sudo dd if = path_of_your_image.dmg = / dev / rdiskn bs = 1m(记住diskn之前的“r”,bs = 1m)
Andrei Radulescu

所以dd支持.dmg图像,真的吗?
Sarge Borsch 2015年

@Sarge dd并不关心它复制的内容,但它的成功并不意味着读取数据的另一端将知道如何处理它。
J.Money 2016年

2

刚刚找到了一个适合我的解决方案:

  • 首先,您需要将.dmg图像转换为原始图像:

    hdiutil convert foo.dmg -format UDTO -o bar.img
    
  • 这将创建一个带.cdr扩展名的文件,但它是一个原始图像。因此,您可以将文件扩展名更改为.img

    mv bar.img.cdr bar.img
    
  • 最后,您可以使用以下方法将图像复制到SD卡dd

    sudo dd bs=2048 if=bar.img  of=/dev/rdiskX
    

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.