macOS Sierra: dd to USB es muy lento y parece que no puede usar /dev/rdisk

(txs a todos por su ayuda y sugerencias, pero suspendo esto por ahora mientras busco mis errores de formato en esa SD. Si no puedo hacer que eso funcione, hay pocas razones para esperar ddque funcione, incluso si otras personas han encontrado problemas similares haciendo esto en osx).

Estoy intentando, como root, escribir en micro SD para cargar un Linux de Raspberry Pi:

W$dd bs=1m if=/Users/jluc/Downloads/2017-01-11-raspbian-jessie.img of=/dev/disk2

Esto es sumamente lento, ha estado funcionando durante 8-9 horas y no ha escrito mucho cuando lo elimino -9.

301989888 bytes transferred in 23103.442503 secs (13071 bytes/sec)

Ahora, en escritos como Solución: dd demasiado lento en Mac OS X , recomienda usar /dev/rdisk , porque se trata de manera diferente.

Pero cada vez que uso /rdiskN en lugar de /diskN , obtengo:

dd: /dev/rdisk2: Input/output error

Esto está en Sierra, pero funcionó en Yosemite, si no recuerdo mal.

INSTALACIÓN DE IMÁGENES DEL SISTEMA OPERATIVO EN MAC OS menciona la posibilidad de que /rdisk no funcione y le recomienda usar /disk en su lugar.

¿Lo que da? ¿Es esto algo nuevo con Sierra en comparación con las versiones anteriores?

actualización: probé la sugerencia según @oa y sigue obteniendo el mismo error.

La búsqueda `` me dio esto: https://stackoverflow.com/questions/37232109/how-to-fix-bad-dd-img-write-to-sdcard . Ahora, esa publicación es sobre un archivo img que es demasiado grande para la SD. Tengo una imagen de 4,1 Gb y este es un archivo de 32 Gb, por lo que no se aplicaría.

Pero... lo que he notado es que diskutil listtiene varias cosas para ese disco.

jluc@node_modules$ diskutil list /dev/disk2
/dev/disk2 (external, physical):
#:                       TYPE NAME                    SIZE         IDENTIFIER
 0:     FDisk_partition_scheme                        *32.1 GB    disk2
 1:             Windows_FAT_32 boot                    66.1 MB    disk2s1
 2:                      Linux                         32.0 GB    disk2s2

¿Ves cómo la primera partición, el arranque FAT32, muestra @ 66.MB?

Mirando un poco más:

jluc@node_modules$ df -h | egrep "disk2|Filesystem"
Filesystem                          Size   Used  Avail Capacity iused      ifree %iused  Mounted on
 /dev/disk2s1                        63Mi   21Mi   42Mi    33%     512          0  100%   /Volumes/boot

Entonces, me pregunto si no es que /dev/disk2 no se interpreta como que tiene solo 60 MB debido al arranque y, por lo tanto, recibo un error de capacidad. Intentaré reparticionarlo primero.

¿Cuál es la clasificación de velocidad de escritura de su micro SD? Algunos están severamente restringidos sin importar qué sistema o tamaño de bloque elija.
Clase 10. Lo curioso es... Usé exactamente la misma SD antes, pero usando El Capitan o Yosemite (no estoy seguro de qué computadora portátil usé) como mac OS. Ah... un poco más de información. La razón por la que tengo que volver a crear la imagen es que yo (que tonto), hacía un rm -rf pi3tiempo que había montado el pi3 usando sshfs. Entonces, básicamente, estoy rm -f /en el pi3 mientras corro. Al darme cuenta, desconecté el pi3 para detener el daño.
No se puede "interpretar como si tuviera solo 60 MB". ddno tiene conocimiento de la estructura del disco y no le importa; simplemente copia bloques en bruto. De hecho, no importa si la tarjeta está formateada o no.
@Milliways. Sí, eso también lo habría esperado. Pero como mencioné más abajo, recibo errores de formato, por lo que podría haber destruido la SD. ¿Cómo? Estoy seguro de que rm -rf /es muy destructivo, especialmente uno interrumpido a mitad de camino al desconectarse. pero hardware-destructivo??? Instalaré Linux en mi computadora portátil y veré si puedo obligarlo a reformatear toda la SD de alguna manera. si eso funciona, volveré a osx y dd, solo porque quiero que esto funcione en osx. Si no, nueva SD.
@JLPeyret Puede intentar formatear, pero esto también escribe bloques sin procesar, por lo que es poco probable que haga alguna diferencia.

Respuestas (2)

Instalé la misma imagen anoche en un RPi3.

Primero debe desmontar el disco. Luego puede escribir en el disco usando sudo.

diskutil unmountDisk /dev/rdisk2
sudo dd bs=1m if=~/Downloads/your_image.img of=/dev/rdisk2
diskutil unmountDisk /dev/disk2

También estoy en macOS Sierra.

Intenté exactamente eso. Mismo problema. Sé que no hay nada malo con tu comando. Pero algo está fallando en la SD, el adaptador o la Mac.
¿Qué error obtienes exactamente con el comando anterior? ¿El mismo 'dd: /dev/rdisk2: error de entrada/salida'?
en realidad, recibo errores de formato en el propio disco. así que podría tener una SD corrupta de alguna manera. si ese resulta ser el caso, eliminaré o actualizaré esta pregunta según sea necesario.
Lo más probable es que ni siquiera funcione si todavía está montado. La razón por la que esta respuesta es correcta es que usa rdisk2 en lugar de disk2: rdisk2 es la versión sin procesar según: daoyuan.li/solution-dd-too-slow-on-mac-os-x

¡Esto funciona para mi! Te puede interesar el script que uso, que puede copiar imágenes y copias de seguridad comprimidas.

Incluye comprobaciones para evitar que sobrescriba inadvertidamente algo más y desmonta automáticamente la tarjeta SD.

Debe personalizar el script con el disco y la imagen .

#!/bin/bash
# script to restore backup to Pi SD card
# 2016-10-24

DSK='disk3'

# Image name (no ext)
IMG='ubuntu-standard-16.04-server-armhf-raspberry-pi'

# Check for sensible disk
export PTYPE=$(diskutil list  /dev/$DSK | awk '/GUID_partition_scheme/ {print $2}; /Apple/ {print $2}; /Windows_NTFS/ {print $2}' )
if [ "$PTYPE" ]; then
    echo "Disk not a SD Card - Contains "$PTYPE
    exit
elif [ ! /dev/$DSK ]; then
    echo "/dev/$DSK not found"
    exit
fi

echo Ensure SD partitions are unmounted!
diskutil unmountDisk /dev/$DSK

# Check if image exists - else try to uncompress
if [ -s $IMG.img ]; then
echo $IMG.img exists
elif [ -s $IMG.img.gz ]; then
echo Uncompressing $IMG.img.gz
echo Ctl+T to show progress!
time  gunzip -k $IMG.img.gz
fi

echo please wait - This takes some time
echo Ctl+T to show progress!
time sudo dd if=$IMG.img of=/dev/r$DSK bs=1m

exit
¿Qué velocidades obtiene con este script y cómo se compara con la velocidad teórica de los medios SD en cuestión?
@bmike Se tarda menos de 15 minutos en copiar una imagen de 8 GB. En realidad no lo he cronometrado por un tiempo. Esto es alrededor de 32 MB/seg. No hay nada especial en el guión, simplemente normal dd. Cuando no usaba crudo podía tomar muchas horas.
¡Gracias! Eso está a la par con mis experiencias: de 15 a 20 minutos para escribir sistemas en ese rango. Ser específico ayudará a las personas a saber que están viendo lo que ven los demás.