Erro "Recurso ocupado" ao usar `dd` para copiar img de disco para cartão SD

31

Fiz o download do Raspbian wheezy na página de downloads do Raspberry Pi e depois da página da wiki RPi Easy SD Card Setup .

Formatei o cartão SD e cdedi para a pasta que contém o arquivo img Raspbian, mas quando executo sudo dd if=2013-07-26-wheezy-raspbian.img of=/dev/disk2s1 bs=1m, esta é a saída que recebo:

dd: /dev/disk2s1: Resource busy

Tentei novamente com /dev/disk2o arquivo de saída, mas obtive o mesmo erro. Não sei ao certo o que estou fazendo de errado / por que o img não está sendo copiado.

Esta é a saída (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

Bem como $ df -h:

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

E é isso que vejo em 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
fonte
esta deve ser marcado com OSX ou similar
Andre Holzner

Respostas:

43

Encontrei minha resposta na próxima seção do wiki ; bobo eu. Descobri que a solução não entrava em muitos detalhes sobre que tipo de mensagem de erro você vê, e achei que seria útil ter a mensagem de erro exata "googleable". Também achei as instruções pouco claras (especialmente na etapa 8/9; não tinha certeza se a partição precisava ser desmontada), então tentei reformular algumas delas:

[isso pressupõe que seu cartão SD já tenha sido formatado]

  1. Execute df -hpara localizar a partição do cartão SD, que estará no padrão /dev/diskns1, onde né um número inteiro. Nesse caso, é /dev/disk2s1(os outros dois são discos rígidos USB externos). E sim, eu sei que dei um nome estranho ...

    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. Desmonte a partição:

    ysim:/Volumes/Elements 1/Operating Systems/Raspberry Pi$ sudo diskutil unmount /dev/disk2s1
    Volume YQFORKLIFT on disk2s1 unmounted
    
  3. Verifique se ele foi desmontado / não aparece mais quando você executa df -h(caso contrário, é isso que causa o Resource busyerro acima - veja aqui ).

    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. Embora ainda seja desmontado , executar sudo dd bs=1m if=/path/to/extracted/raspberry-pi-img.img of=/dev/rdiskn, substituindo ncom o Nno /dev/diskNs1do passo 1. Certifique-se de escrever para /dev/rdiskN(o disco) e NOT /dev/diskNs1 (a partição), que é uma outra coisa que faz com que o Resource busyerro.

    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. O cartão SD está agora montado e nomeado 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
fonte
3
Super útil obrigado. Eu tive que usar sudo diskutil unmountDisk /dev/disk2em vez (que é na verdade o único passo que eu precisava fazer para re-executar o comando dd)
geotheory
Acabei de desmontar o volume e, em seguida, usei o ddrescue / dd diretamente no disco, e funcionou perfeitamente. Não acho que os outros passos sejam realmente necessários.
Roys
Você poderia explicar por que diz em /dev/rdisk2vez de /dev/disk2? De onde rvem isso?
oschlueter 18/10