使用dd将磁盘img复制到SD卡时出现“资源繁忙”错误


31

我已经从Raspberry Pi下载页面下载了Raspbian wheezy,并按照RPi Easy SD Card Setup Wiki页面进行下载。

我格式化了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

应该用OSX或类似的东西标记
Andre Holzner

Answers:


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,并替换为步骤1中nNin /dev/diskNs1。请确保写入/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
    

3
超级有帮助的感谢。我不得不sudo diskutil unmountDisk /dev/disk2改用(实际上这是我重新运行dd命令所需采取的唯一步骤)
geotheory 2014年

我只是卸载了卷,然后直接在磁盘上使用ddrescue / dd,它工作得很好。我认为其他步骤确实没有必要。
RoyS

您能解释为什么它说的/dev/rdisk2不是/dev/disk2吗?哪里r来的?
oschlueter
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.