Error de "recurso ocupado" al usar `dd` para copiar el disco img a la tarjeta SD

31

He descargado Raspbian wheezy de la página de descargas de Raspberry Pi y siguiendo la página wiki RPi Easy SD Card Setup .

Formateé la tarjeta SD y la cdedité en la carpeta que contiene el archivo img Raspbian, pero cuando ejecuto sudo dd if=2013-07-26-wheezy-raspbian.img of=/dev/disk2s1 bs=1m, este es el resultado que obtengo:

dd: /dev/disk2s1: Resource busy

Lo intenté nuevamente con /dev/disk2el archivo de salida, pero aparece el mismo error. No estoy seguro de qué estoy haciendo mal / por qué no se está copiando el img.

Esta es la salida (relevante) de $ diskutil list:

/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *32.5 GB    disk2
   1:             Windows_FAT_32 YQFORKLIFT              32.5 GB    disk2s1

Además de $ df -h:

ysim:~$ df -h
Filesystem      Size   Used  Avail Capacity  Mounted on
...
/dev/disk2s1    30Gi  1.7Mi   30Gi     1%    /Volumes/YQFORKLIFT

Y esto es lo que veo en System Profiler -> Card Reader :

Built in SD Card Reader:

  Vendor ID:    0x05ac
  Product ID:   0x8403
  Revision: 1.00
  Serial Number:    000000009833

SDHC Card:

  Capacity: 32.48 GB (32,479,641,600 bytes)
  Removable Media:  Yes
  BSD Name: disk2
  Partition Map Type:   MBR (Master Boot Record)
  S.M.A.R.T. status:    Not Supported
  Volumes:
YQFORKLIFT:
  Available:    32.47 GB (32,465,321,984 bytes)
  Capacity: 32.48 GB (32,475,447,296 bytes)
  Writable: Yes
  File System:  MS-DOS FAT32
  BSD Name: disk2s1
  Mount Point:  /Volumes/YQFORKLIFT
3cheesewheel
fuente
esto debería estar etiquetado con OSX o similar
Andre Holzner

Respuestas:

43

Encontré mi respuesta en la siguiente sección de la wiki ; tonto de mí. Sin embargo, descubrí que la solución no entraba en detalles sobre qué tipo de mensajes de error se ven y pensé que podría ser útil tener el mensaje de error exacto "googleable". También encontré las instrucciones un poco confusas (especialmente alrededor del paso 8/9; no estaba seguro de si la partición debía dejarse desmontada), así que traté de reformular algunas de ellas:

[esto supone que su tarjeta SD ya ha sido formateada]

  1. Ejecute df -hpara ubicar la partición de la tarjeta SD, que estará en el patrón /dev/diskns1, donde nhay un número entero. En este caso, es /dev/disk2s1(los otros dos son discos duros USB externos). Y sí, sé que le di un nombre extraño ...

    ysim:/Volumes/Elements 1/Operating Systems/Raspberry Pi$ df -h
    Filesystem      Size   Used  Avail Capacity  Mounted on
    /dev/disk0s2   233Gi  125Gi  108Gi    54%    /
    devfs          114Ki  114Ki    0Bi   100%    /dev
    map -hosts       0Bi    0Bi    0Bi   100%    /net
    map auto_home    0Bi    0Bi    0Bi   100%    /home
    /dev/disk1s1   466Gi  351Gi  115Gi    76%    /Volumes/Elements
    /dev/disk3s1   466Gi  276Gi  189Gi    60%    /Volumes/Elements 1
    /dev/disk2s1    30Gi  1.7Mi   30Gi     1%    /Volumes/YQFORKLIFT
    
  2. Desmontar la partición:

    ysim:/Volumes/Elements 1/Operating Systems/Raspberry Pi$ sudo diskutil unmount /dev/disk2s1
    Volume YQFORKLIFT on disk2s1 unmounted
    
  3. Compruebe que se ha desmontado / que ya no aparece cuando ejecuta df -h(de lo contrario, eso es lo que causa el Resource busyerror anterior; consulte aquí ).

    ysim:/Volumes/Elements 1/Operating Systems/Raspberry Pi$ df -h
    Filesystem      Size   Used  Avail Capacity  Mounted on
    /dev/disk0s2   233Gi  125Gi  108Gi    54%    /
    devfs          114Ki  114Ki    0Bi   100%    /dev
    map -hosts       0Bi    0Bi    0Bi   100%    /net
    map auto_home    0Bi    0Bi    0Bi   100%    /home
    /dev/disk1s1   466Gi  351Gi  115Gi    76%    /Volumes/Elements
    /dev/disk3s1   466Gi  276Gi  189Gi    60%    /Volumes/Elements 1
    
  4. Mientras que todavía está sin montar , correr sudo dd bs=1m if=/path/to/extracted/raspberry-pi-img.img of=/dev/rdiskn, reemplazando ncon el Nen /dev/diskNs1el paso 1. Asegúrese de escribir a /dev/rdiskN(el disco) y NO /dev/diskNs1 (la partición), que es otra cosa que causa el Resource busyerror.

    ysim:/Volumes/Elements 1/Operating Systems/Raspberry Pi$ sudo dd bs=1m if=2013-07-26-wheezy-raspbian.img of=/dev/rdisk2
    1850+0 records in
    1850+0 records out
    1939865600 bytes transferred in 151.663501 secs (12790590 bytes/sec)
    
  5. ¡La tarjeta SD ahora se vuelve a montar y se nombra boot!

    ysim:/Volumes/Elements 1/Operating Systems/Raspberry Pi$ df -h
    Filesystem      Size   Used  Avail Capacity  Mounted on
    /dev/disk0s2   233Gi  125Gi  108Gi    54%    /
    devfs          115Ki  115Ki    0Bi   100%    /dev
    map -hosts       0Bi    0Bi    0Bi   100%    /net
    map auto_home    0Bi    0Bi    0Bi   100%    /home
    /dev/disk1s1   466Gi  351Gi  115Gi    76%    /Volumes/Elements
    /dev/disk3s1   466Gi  276Gi  189Gi    60%    /Volumes/Elements 1
    /dev/disk2s1    56Mi   18Mi   37Mi    34%    /Volumes/boot
    
3cheesewheel
fuente
3
Super útil gracias. Tuve que usar sudo diskutil unmountDisk /dev/disk2en su lugar (que de hecho es el único paso que tuve que tomar para volver a ejecutar el comando dd)
geotheory
Acabo de desmontar el volumen y luego usé el ddrescue / dd directamente en el disco, y funcionó bien. No creo que los otros pasos sean realmente necesarios.
RoyS
¿Podría explicar por qué dice en /dev/rdisk2lugar de /dev/disk2? ¿De dónde rviene el?
Oschlueter