Cómo usar Cygwin para copiar una imagen de una tarjeta de memoria SD

30

Para resumir, estoy trabajando en una máquina con Windows 7 y me gustaría quitar la imagen de una tarjeta SD (copia de seguridad de la tarjeta desde una Raspberry Pi ). Estoy tratando de usar Cygwin , pero no tengo mucho éxito.

Al examinar el /devdirectorio, parece que mi tarjeta SD se muestra como sddy sdd1. Sin embargo, cuando ejecuto el siguiente comando:

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

Me sale lo siguiente:

dd: apertura '/ dev / sdd': permiso denegado

He usado dd en una Mac y bajo Linux sin ningún problema, usando una sintaxis similar. ¿Qué me estoy perdiendo con Cygwin?

Gran Almirante
fuente
Has intentado dd if=/dev/sdd1 of RPi.img?
Kruug
Si hago eso, solo obtengo un archivo de ~ 59 MB de la tarjeta de memoria SD de 4 GB. Básicamente, solo obtengo la parte de la tarjeta que Windows "ve" cuando inserta la tarjeta en el lector. No es la imagen completa.
GrandAdmiral
¿Podría usar una máquina Linux o un LiveCD de Linux en lugar de intentarlo en Windows?
Kruug
Las máquinas virtuales Linux no parecen ver la tarjeta de memoria SD (probé VMware Player y VirtualBox) porque estoy usando el lector interno en la computadora portátil. Luego, para colmo ... tampoco tengo una grabadora de CD en la computadora portátil. :) Tengo una Mac en casa que puedo usar, solo estaba tratando de encontrar algo que funcionara con mi situación actual ... y averiguar si era posible. Parecía que Cygwin debería haber funcionado.
GrandAdmiral
44
Descubrí que también puedo usar 'cat / proc / partitions' para obtener el nombre de la tarjeta de memoria SD adjunta.
Gran Almirante

Respuestas:

27

Obtienes el Permission deniederror, porque no lo eres root. Eso suena extraño en el contexto de Cygwin, pero da en el blanco.

Cuando consulta su estado ( id) en un shell Cygwin normalmente iniciado, obtendrá algo así:

$ 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

En Windows 7, el truco para convertirse rooten Cygwin es comenzar la sesión elevada , es decir, hacer clic derecho en el icono de Cygwin y elegir Ejecutar como administrador . Ahora todavía no eres él rootmismo, sino al menos en rootel grupo:

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

Y ahora, ddfunciona como estás acostumbrado desde 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
mpy
fuente
Muy interesante, y eso funciona. ¡Gracias! Si bien este método y USB Image Tool proporcionan una solución, aceptaré esta respuesta porque está más directamente relacionada con mi pregunta inicial.
Gran Almirante
No soy miembro de root de esta manera. ¿Ha cambiado algo?
Pysis
1
@Pysis: todavía puedo convertirme en root de esta manera con la versión actual de cygwin ( CYGWIN_NT-6.1-WOW 2.7.0 (0.306 / 5/3) 2017-02-12 13:13 i686 Cygwin ) a partir de la actualización de hoy. ¡Quizás stackoverflow.com/q/4090301 en SO podría ser de ayuda para usted?
mpy
Parece que tengo 2.6.1 de cygwin1.dll ( cygcheck). No obtengo "0 (raíz)", pero obtengo "114 (Cuenta local y miembro del grupo Administradores"), "544 (Administradores)" y "405504 (Nivel obligatorio alto)" en lugar de "401408 ( Nivel obligatorio medio) "en mi sistema Windows 10 Pro x64-bit. El contexto es que quería ejecutar fdisk, pero eso todavía parece no ayudar, aunque es posible que haya podido ejecutar otras herramientas con acceso privilegiado, como dden un archivo de flujo de dispositivo de bloque, solo curioso aquí.
Pysis
@Pysis: ¿Puede que esto tenga que ver con W10? - Desafortunadamente, solo puedo especular ya que solo uso W7.
mpy
11

Recientemente tuve que clonar una unidad USB a otra en Windows. Mi disco es un arranque múltiple con software adicional, así que no quería copiar todos los archivos en el FS. DD era una opción clara, pero no estaba en Linux, así que había algunas cosas que tenía que hacer para que funcionara.

Tenía Cygwin instalado e hice lo siguiente.

Primero tuve que averiguar qué dispositivo / dev / sdX era mi volumen f:. Para hacerlo, ejecuta este comando en cygwin. (SUGERENCIA: asegúrese de iniciar cygwin con privilegios de administrador .. * Haga clic derecho en cygwin y "Ejecutar como administrador")

    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:\

etc ... Aquí puede ver claramente para mí clonar mi unidad F: a mi unidad E: emitiría el siguiente comando.

Hay un paso más en realidad, debes encontrar la raíz de tu dispositivo. Busque un SD * que tenga el tamaño de su dispositivo. Esto sería fácil ya que el tamaño debería ser bien conocido, como 8GB, 16GB, 32GB expandidos como bytes, como se muestra arriba.

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

Mi imagen era de 32 gb ... y no quería simplemente sentarme y esperar con un cursor parpadeante ... Quería ver el progreso, así que instalé "pv" en cygwin.

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

Ahora, si desea copiar la memoria USB a una imagen, haga lo siguiente.

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

Espero que esto ayude

Jaime
fuente
2

¿Algo como la herramienta de imagen USB ?
¿O insistes en usar Cygwin? ...

nik
fuente
No hay insistencia en usar Cygwin. Esa herramienta era un poco extraña al mostrar la tarjeta de memoria SD (a veces la información desaparecía, pero tal vez eso era que Windows estaba haciendo algo), pero parecía funcionar y era REALMENTE RÁPIDO. Tengo un archivo de 4 GB en mi computadora que es del tamaño que esperaba. Creo que lo diferiré con una versión del comando 'dd' real solo para asegurarme. Si eso se ve bien, aceptaré tu respuesta. ¡Gracias!
GrandAdmiral
Bueno, los archivos no coincidían, pero eso podría ser mi culpa. Creo que arranqué el RPi después de tomar la primera imagen, sin pensarlo. Bueno, al menos tengo la copia de seguridad que quería ahora y tengo una herramienta para experimentar en el futuro que funciona en Windows. En el peor de los casos, conduciré a casa y usaré una computadora / SO sana. :)
GrandAdmiral
2

He tenido éxito con dd para Windows , que creo que es una reescritura en lugar de un puerto. Es de código abierto y no depende de Cygwin.

Me gustó especialmente el dd --listcomando, que enumeraba todos los dispositivos de disco junto con suficiente información para identificar el que quería.

RomanSt
fuente
1

HDD Raw Copy Tool puede hacer copias de una tarjeta SD. Si selecciona "Imagen sin formato (imagen dd)" en el cuadro de diálogo Guardar, será idéntico a los creados con dd. También puedes restaurar imágenes.

Sé que no se hace a través de cygwin, pero personalmente no confiaría en que acceda a dispositivos sin formato.

Yuikonnu
fuente
¿Dónde obtienes la opción de guardar una imagen sin formato? Vi dónde podía seleccionar la fuente (tarjeta de memoria SD) y el destino (HDD), pero luego solo había un botón de inicio. Como no estaba claro qué iba a pasar después, salí del programa.
GrandAdmiral
Primero hace doble clic en su unidad, luego en la siguiente pantalla hace doble clic en la opción "Archivo" donde puede elegir dónde guardar la imagen.
yuikonnu
0

Veo que RaspberryPi.org ahora recomienda Win32 Disk Imager para escribir imágenes en tarjetas de memoria SD. También leerá imágenes de la tarjeta, así que lo estoy probando ahora.

Gran Almirante
fuente
Me niego a tocarlo ya que hay informes de que está destrozando el disco de su sistema. Rara, pero depende del hardware y no voy a arriesgarme.
tjmoore