Executando dd. Por que o recurso está ocupado?

32

Acabei de formatar o cartão microSD e gostaria de executar um ddcomando. Infelizmente, o ddcomando falha:

$ sudo dd bs=1m if=2016-02-26-raspbian-jessie-lite.img of=/dev/rdisk2
dd: /dev/rdisk2: Resource busy
$

Todos na internet dizem que preciso desmontar o disco primeiro. Claro, pode fazer isso e seguir em frente. Mas quero entender por que / o que exatamente no OS X está deixando o dispositivo ocupado ? Como faço para diagnosticar isso?

Até agora eu tentei:

  1. Listando arquivos abertos:

    $ lsof /dev/disk2
    $ lsof /dev/disk2s1
    $
    

    Além disso:

    $ lsof /Volumes/UNTITLED
    $
    
  2. Listando usuários que trabalham no arquivo:

    $ fuser -u /dev/disk2
    /dev/disk2: 
    $ fuser -u /dev/disk2s1 
    /dev/disk2s1:
    $
    

    Além disso:

    $ fuser -u /Volumes/UNTITLED
    $
    
  3. Verifique as mensagens do sistema:

    $ sudo dmesg | grep disk
    $
    

    Além disso:

    $ sudo dmesg | grep /Volumes/UNTITLED
    $
    

Meu ambiente

  1. Sistema operacional:

    Darwin Eugenes-MacBook-Pro-2.local 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64
    
  2. Informações sobre o meu microSD:

    diskutil list disk2
    /dev/disk2 (internal, physical):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:     FDisk_partition_scheme                        *31.9 GB    disk2
       1:                 DOS_FAT_32 UNTITLED                31.9 GB    disk2s1
    

PS Estou usando o OS X 10.11.

Atualização 22/3/2016 . Descobri isso. Voltei a executar o lsofe fuserde cima usando sudoe finalmente cheguei ao fundo do problema:

$ sudo fuser /Volumes/UNTITLED/
/Volumes/UNTITLED/: 62 282
$

E:

$ sudo lsof /Volumes/UNTITLED/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mds        62 root    8r   DIR    1,6    32768         2 /Volumes/UNTITLED
mds        62 root   22r   DIR    1,6    32768         2 /Volumes/UNTITLED
mds        62 root   23r   DIR    1,6    32768        10 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD
mds        62 root   25u   REG    1,6        0 999999999 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/journalExclusion
mds_store 282 root  txt    REG    1,6     3277        17 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexGroups
mds_store 282 root  txt    REG    1,6        8        23 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexCompactDirectory
mds_store 282 root  txt    REG    1,6      312        19 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexTermIds
mds_store 282 root  txt    REG    1,6     3277        29 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexGroups
mds_store 282 root  txt    REG    1,6     1024        35 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexCompactDirectory
mds_store 282 root  txt    REG    1,6      312        21 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexPositionTable
mds_store 282 root  txt    REG    1,6     8192        31 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexTermIds
mds_store 282 root  txt    REG    1,6     2056        22 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexDirectory
mds_store 282 root  txt    REG    1,6     8192        33 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexPositionTable
mds_store 282 root  txt    REG    1,6     8224        34 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexDirectory
mds_store 282 root  txt    REG    1,6       16        16 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexIds
mds_store 282 root  txt    REG    1,6    65536        48 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/reverseDirectoryStore
mds_store 282 root  txt    REG    1,6      704        24 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexArrays
mds_store 282 root  txt    REG    1,6    65536        26 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.directoryStoreFile
mds_store 282 root  txt    REG    1,6    32768        28 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexIds
mds_store 282 root  txt    REG    1,6    65536        36 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexArrays
mds_store 282 root  txt    REG    1,6    65536        38 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.directoryStoreFile
mds_store 282 root    5r   DIR    1,6    32768        10 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD
mds_store 282 root   17u   REG    1,6     8192        12 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/psid.db
mds_store 282 root   32r   DIR    1,6    32768        10 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD
mds_store 282 root   41u   REG    1,6       28        15 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/indexState
$

Pelo exposto acima, é fácil ver que os processos chamados mdse mds_storecriaram e estão mantendo muitos arquivos no volume.

gmile
fonte
Use of=/dev/rdisk2-o é muito mais rápido e não sobrecarrega o seu cartão SD.
Rui F Ribeiro
Olá @RuiFRibeiro! Sim, isso faz total sentido, eu esqueci rdiskquando escrevi isso.
gmile
O dispositivo está ocupado porque está montado automaticamente ...; desmonte, faça o seu dd, e ele será montado novamente assim que o dd terminar.
Rui F Ribeiro
@RuiFRibeiro Eu sei, isso faz sentido ... Mas há alguma outra indicação, além de ver /Volumes/UNTITLEDe saber que é montada automaticamente? Tipo, alguns logs ou, melhor ainda, algum processo responsável pela tomada do dispositivo?
gmile
1
O @RuiFRibeiro verifica que existem 2 processos atualmente mantendo o volume montado. O que eu perdi estava em execução lsofe fusercom privilégios de root. Depois de executar ambos sudo, imaginei processos chamados mdse mds_storecriados mais de uma dúzia de arquivos no volume.
gmile

Respostas:

51

Apple tribunal, Apple regras. Tente diskutil:

$ diskutil list
...

# if mounted somewhere
$ sudo diskutil unmount $device

# all the partitions (there's also a "force" option, see the manual)
$ sudo diskutil unmountDisk $device

# remember zip drives? this would launch them. good times!
$ sudo diskutil eject $device

(No caso de uma imagem de disco, o hdiutilcomando também pode ser interessante. Você também pode clicar em Disk Utility.app.)

agitar
fonte
Oi @thrig, obrigado. Sim, sou capaz de desmontar usando diskutil, não há problema com isso. O que estou fazendo aqui é que estou aprendendo a identificar problemas no sistema dizendo "Sim" a qualquer aviso que eu possa detectar. Quero saber por que "Recurso ocupado" está acontecendo em primeiro lugar, não como se livrar dele. Que processo exato no sistema operacional está fazendo isso acontecer?
Gmile 22/03
@gmile o kernel, tanto quanto eu sei, bloqueia dispositivos ocupados, então você precisa desmontar e ejetar qualquer partição e imagem para remover esse bloqueio do kernel.
thrig
ah, isso é interessante. Vou procurar no google o bloqueio do kernel agora. Talvez você tenha algum bom recurso em mente, onde eu possa ler sobre isso?
Gmile 22/03
9

A desmontagem das sub partições ajudou

/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *8.0 GB     disk2
   1:             Windows_FAT_16 wr_usb_efi              134.2 MB   disk2s1
   2:                      Linux                         1.1 GB     disk2s2
vgsprasad-mbp:~ vgsprasad$ diskutil umount /dev/disk2s1
Volume wr_usb_efi on disk2s1 unmounted
vgsprasad-mbp:~ vgsprasad$ diskutil umount /dev/disk2s2
disk2s2 was already unmounted
Shivaprasad
fonte
3
além da falta de formatação, o OP disse especificamente "Todos na Internet dizem que preciso desmontar o disco primeiro. Claro, posso fazer isso e seguir em frente. Mas quero entender por que / o que exatamente no OS X está deixando o dispositivo ocupado? "
Jeff Schaller
@ Jeff, eu tive o mesmo problema que o gmile, estava com o objetivo de escrever um .iso em um pendrive e o dd retornou dd: /dev/disk9: Resource busy. Quando me desmontei diskutil umount /dev/disk9s1, o dispositivo desapareceu da área de trabalho, mas o dispositivo /dev/disk9ainda estava montado, por isso ddnão funcionava como deveria. Portanto, o Mac OSX manteve o dispositivo ocupado, criando um atalho para o sistema de arquivos interno do pendrive.
Gustav