Exécution dd. Pourquoi la ressource est-elle occupée?

32

Je viens de formater la carte microSD et je voudrais exécuter une ddcommande. Malheureusement, la ddcommande échoue:

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

Tout le monde sur Internet dit que je dois d'abord démonter le disque. Bien sûr, peut le faire et passer à autre chose. Mais je veux comprendre pourquoi / quoi exactement dans OS X rend l'appareil occupé ? Comment puis-je diagnostiquer cela?

Jusqu'à présent, j'ai essayé:

  1. Liste des fichiers ouverts:

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

    Également:

    $ lsof /Volumes/UNTITLED
    $
    
  2. Liste des utilisateurs travaillant sur le fichier:

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

    Également:

    $ fuser -u /Volumes/UNTITLED
    $
    
  3. Vérifiez les messages système:

    $ sudo dmesg | grep disk
    $
    

    Également:

    $ sudo dmesg | grep /Volumes/UNTITLED
    $
    

Mon environnement

  1. Système opérateur:

    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. Informations sur ma 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 J'utilise OS X 10.11.

Mise à jour 22/3/2016 . Deviner. J'ai relancé le lsofet fuserdepuis le haut à l'aide de sudo, et j'ai finalement atteint le fond du problème:

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

Et:

$ 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
$

De ce qui précède , il est facile de voir que les processus appelés mdset mds_storeont créé et sont tiennent beaucoup de fichiers sur le volume.

gmile
la source
L'utiliser of=/dev/rdisk2est tellement plus rapide, et pas si pénible pour votre carte SD.
Rui F Ribeiro
Salut @RuiFRibeiro! Ouais, ça a du sens, j'ai oublié rdisken écrivant ça.
gmile
L'appareil est occupé car il est monté automatiquement ...; vous le démontez, faites votre DD, et il sera à nouveau monté automatiquement dès que le DD sera terminé.
Rui F Ribeiro
@RuiFRibeiro Je sais, cela a du sens ... Mais y a-t-il une autre indication, à part voir /Volumes/UNTITLEDet savoir qu'il est monté automatiquement? Comme, certains journaux, ou mieux certains processus responsables de la prise de l'appareil?
gmile
1
@RuiFRibeiro s'avère qu'il y a actuellement 2 processus contenant le volume monté. Ce qui me manquait, c'était de courir lsofet fuseravec les privilèges root. Après avoir exécuté les deux avec sudo, j'ai pensé que les processus étaient appelés mdset mds_storecréés sur une douzaine de fichiers sur le volume.
gmile

Réponses:

51

Cour d'Apple, règles d'Apple. Essayez 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

(Dans le cas d'une image disque, la hdiutilcommande peut également être intéressante. Vous pouvez également cliquer autour Disk Utility.app.)

branler
la source
Salut @thrig, merci. Oui, je peux démonter en utilisant diskutil, pas de problème avec ça. Ce que je fais ici, c'est que j'apprends à identifier les problèmes dans le système en disant «Oui» à tout avertissement que je peux repérer. Je veux savoir pourquoi la «ressource occupée» se produit en premier lieu, pas comment s'en débarrasser. Quel processus exact dans le système d'exploitation rend cela possible?
gmile
@gmile le noyau, pour autant que je sache, verrouille les périphériques occupés, vous devez donc démonter et éjecter toute partition et image pour supprimer ce verrou du noyau.
thrig
oh, c'est intéressant. Je vais google pour le verrouillage du noyau maintenant. Peut-être avez-vous une bonne ressource en tête où je pourrais lire à ce sujet?
gmile
9

Le démontage des sous-partitions a aidé

/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
la source
3
à part le formatage manquant, l'OP a spécifiquement dit: "Tout le monde sur Internet dit que je dois d'abord démonter le disque. Bien sûr, je peux le faire et continuer. Mais je veux comprendre pourquoi / quoi exactement dans OS X rend le périphérique occupé? "
Jeff Schaller
@Jeff J'ai rencontré le même problème que gmile, je visais à écrire un .iso sur une clé USB, et dd est revenu dd: /dev/disk9: Resource busy. Lorsque je l'ai démonté diskutil umount /dev/disk9s1, l'appareil a disparu du bureau, mais il /dev/disk9était toujours monté et ddne pouvait donc pas fonctionner comme il se doit. Mac OSX a donc gardé l'appareil occupé en créant un raccourci vers le système de fichiers interne de la clé USB.
Gustav