Ошибка «Ресурс занят» при использовании `dd` для копирования img диска на SD-карту

31

Я скачал Raspbian wheezy со страницы загрузок Raspberry Pi и следил за вики-страницей RPI Easy SD Card Setup .

Я отформатировал SD-карту и cdотредактировал ее в папку, содержащую файл Raspbian img, но когда я запускаю sudo dd if=2013-07-26-wheezy-raspbian.img of=/dev/disk2s1 bs=1m, получаю вывод:

dd: /dev/disk2s1: Resource busy

Я попробовал это снова /dev/disk2в качестве выходного файла, но получаю ту же ошибку. Я не уверен, что я делаю неправильно / почему IMG не копируется.

Это (соответствующий) вывод $ 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

А также $ df -h:

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

И это то, что я вижу в 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
источник
это должно быть помечено OSX или подобным
Andre Holzner

Ответы:

43

Я нашел свой ответ в следующем разделе вики ; я такой глупый. Я обнаружил, что решение не вдавалось в подробности о том, какие сообщения или сообщения об ошибках вы видите, и подумал, что может быть полезно иметь точное сообщение об ошибке "googleable". Я также обнаружил, что инструкции немного неясны (особенно в шаге 8/9; я не был уверен, нужно ли оставлять раздел не подключенным), поэтому я попытался перефразировать некоторые из них:

[это предполагает, что ваша SD-карта уже отформатирована]

  1. Запустите, df -hчтобы найти раздел SD-карты, который будет в шаблоне /dev/diskns1, где nявляется целым числом. В данном случае это так /dev/disk2s1(два других - внешние жесткие диски USB). И да, я знаю, я дал ему странное имя ...

    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. Размонтировать раздел:

    ysim:/Volumes/Elements 1/Operating Systems/Raspberry Pi$ sudo diskutil unmount /dev/disk2s1
    Volume YQFORKLIFT on disk2s1 unmounted
    
  3. Убедитесь, что он был размонтирован / больше не отображается при запуске df -h(в противном случае это является причиной Resource busyошибки выше - см. Здесь ).

    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. Пока он еще не смонтирован , запустите sudo dd bs=1m if=/path/to/extracted/raspberry-pi-img.img of=/dev/rdiskn, заменив nна Nin /dev/diskNs1из шага 1. Убедитесь, что записали в /dev/rdiskN(диск) и NOT /dev/diskNs1 (раздел), что вызывает Resource busyошибку.

    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. SD-карта теперь перемонтирована и названа 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
источник
3
Супер полезно спасибо. Я должен был использовать sudo diskutil unmountDisk /dev/disk2вместо этого (что на самом деле является единственным шагом, который мне нужно было сделать для повторного запуска команды dd)
geotheory
Я просто размонтировал том, а затем использовал ddrescue / dd прямо на диске, и он работал просто отлично. Я не думаю, что другие шаги действительно необходимы.
RoyS
Не могли бы вы объяснить, почему он говорит /dev/rdisk2вместо /dev/disk2? Откуда rвзялся?
oschlueter