如何使用Cygwin从SD存储卡复制图像


30

长话短说,我正在Windows 7计算机上工作,我想从SD卡上剥离图像(从Raspberry Pi备份卡)。我正在尝试使用Cygwin,但没有取得太大的成功。

检查/dev目录,看起来我的SD卡显示为sddsdd1。但是,当我运行以下命令时:

dd if=/dev/sdd of=RPi.img

我得到以下内容:

dd:打开'/ dev / sdd':权限被拒绝

我在Mac和Linux下使用dd都没有问题,使用类似的语法。Cygwin我想念什么?


你试过了dd if=/dev/sdd1 of RPi.img吗?
克鲁格

如果这样做,我只会从4 GB SD存储卡中获得一个〜59 MB的文件。基本上,当您将卡插入读取器中时,我只会得到Windows“看到”的卡部分。这不是完整的图像。
2013年

您可以使用Linux机器还是Linux LiveCD来代替Windows?
克鲁格

虚拟Linux机器似乎看不到SD存储卡(尝试过VMware Player和VirtualBox),因为我在笔记本电脑上使用内置读取器。然后最重要的是...。我的笔记本电脑中也没有CD刻录机。:)我在家中有一台可以使用的Mac,我只是想找到一种适合我目前情况的东西。...并弄清楚是否有可能。好像cygwin应该起作用了。
2013年

4
我发现我也可以使用'cat / proc / partitions'来获取连接的SD存储卡的名称。
2013年

Answers:


27

您得到Permission denied错误,因为您没有root。在Cygwin的语境下听起来很奇怪,但是很流行。

当您id在正常启动的Cygwin Shell中查询状态()时,会得到类似以下内容:

$ id
uid=1001(user) gid=545(Users) groups=545(Users),555(Remote Desktop Users),513(None)
$ dd if=/dev/sda bs=1000 count=1 | wc -c
dd: opening `/dev/sda': Permission denied
0

在Windows 7下,进入rootCygwin 的窍门是启动提升的会话,即右键单击Cygwin图标,然后选择以管理员身份运行。现在您仍然不是root自己,但至少属于root的组:

$ id
uid=1001(user) gid=545(Users) groups=545(Users),0(root),544(Administrators),555(Remote Desktop Users),513(None)

现在,dd您可以从Un * x开始使用它了:

$ dd if=/dev/sda bs=1000 count=1 | wc -c
1+0 records in
1+0 records out
1000 bytes (1.0 kB) copied, 0.00104424 s, 958 kB/s
1000

非常有趣,而且可行。谢谢!虽然此方法和USB Image Tool都提供了解决方案,但我将接受此答案,因为它与我的最初问题更直接相关。
2013年

我不是root的成员。有什么改变吗?
Pysis

1
@Pysis:直到今天的更新,我仍然可以通过当前的cygwin版本(CYGWIN_NT-6.1-WOW 2.7.0(0.306 / 5/3)2017-02-12 13:13 i686 Cygwin)成为root用户。也许SO上的stackoverflow.com/q/4090301可能对您有帮助?
mpy

看来我有cygwin1.dll(cygcheck)的2.6.1 。我没有得到“ 0(根)”,但是得到了“ 114(本地帐户和管理员组的成员)”,“ 544(管理员)”和“ 405504(高强制级别)”,而不是“ 401408( Windows 10 Pro x64位系统上)。上下文是我想要运行的fdisk,但是这似乎仍然无济于事,尽管我可能已经能够运行其他具有特权访问权限的工具,例如dd在块设备流文件上,但这只是很好奇。
Pysis

@Pysis:这可能与W10有关吗?-不幸的是,我只能推测是因为我仅使用W7。
mpy

11

我最近不得不在Windows上将一个USB驱动器克隆到另一个。我的驱动器是带有其他软件的多重启动,因此我不想只复制FS上的所有文件。DD是一个明确的选择,但是我不是在Linux上,因此我需要做一些事情才能使其正常工作。

我安装了cygwin,并执行了以下操作。

首先,我必须弄清楚我的f:卷是什么/ dev / sdX设备。为此,请在cygwin中运行此命令。(提示:请确保您使用admin privs启动cygwin。*右键单击cygwin并单击“以管理员身份运行”)

    cat /proc/partitions
which should output:
   8 0 3813383838 sda
   8 1       4031 sda3 C:\
   8 15  30588303 sdb 
   8 15  30588303 sdb1 E:\
   8 21  30530020 sdc
   8 22  30530020 sdc1 F:\

等等...在这里,您可以清楚地看到我将我的F:驱动器克隆到我的E:驱动器的过程,我将发出以下命令。

实际上,还有一个步骤,您必须找到设备的根目录。查找具有您设备大小的sd *。这很容易,因为大小众所周知,例如8GB,16GB,32GB扩展为字节,如上所示。

dd if=/dev/sdc of=/dev/sdb bs=8M

我的图像是32gb ..,我不想只是坐下来等待光标闪烁。.我想看看进度,所以我在cygwin中安装了“ pv”。

dd if=/dev/sdc | pv | dd of=/dev/sdb bs=8M

现在,如果要将拇指驱动器复制到映像,请执行以下操作。

dd if=/dev/sdX | pv | dd of=/cygdrive/c/Users/Myname/Desktop/mythumbdrive.img bs=8M

希望这可以帮助


2

会不会像USB图像工具吗?
还是您坚持使用Cygwin?...


无需坚持使用Cygwin。当显示SD记忆卡时,该工具有点奇怪(有时信息会消失,但也许是Windows在做一些事情),但它似乎可以正常运行,而且速度非常快。我的计算机上有一个4 GB的文件,大小与我预期的大小相同。我想我会把它与实际的“ dd”命令的版本进行比较以确保。如果看起来不错,我会接受您的回答。谢谢!
2013年

好吧,文件不匹配,但这可能是我的错。我想我在抓取第一个映像后就启动了RPi,没有考虑它。好吧,至少我现在有想要的备份,并且我有一个工具可以在Windows下正常工作。最坏的情况是我开车回家并使用一台健全的计算机/操作系统。:)
GrandAdmiral

2

我在Windows的dd上取得了成功,我相信这是重写而不是端口。它是开源的,不依赖Cygwin。

我特别喜欢该dd --list命令,该命令列出了所有磁盘设备以及足够的信息以标识我想要的磁盘设备。


1

HDD Raw Copy Tool可以复制SD卡。如果在保存对话框中选择“原始图像(dd图像)”,则它将与使用dd生成的图像相同。您也可以还原图像。

我知道这不是通过cygwin完成的,但我个人不信任通过访问原始设备来实现。


您在哪里可以选择保存原始图像?我看到可以在其中选择源(​​SD存储卡)和目标(HDD)的地方,但是只有一个开始按钮。由于不清楚下一步将发生什么,我退出了该程序。
2013年

首先,双击驱动器,然后在下一个屏幕上,双击“文件”选项,您可以在其中选择保存图像的位置。
yuikonnu

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.