Monter et éjecter un disque dur sur le Mac via le terminal
Sur Mac, depuis le Système 6 (et peut être même avant), il suffit de brancher un disque dur ou d'insérer un disque amovible, pour qu'il apparaisse dans le Finder. Pour le déconnecter, rien de plus simple, il suffit de faire un drag'n drop du disque vers la corbeille.
Dans le cas d'un serveur, ou d'un média center, ou plus généralement d'un Mac distant, nous n'avons pas toujours accès au Finder pour effectuer les éjections, ou pour lancer Utilitaire de disque pour monter un disque récalcitrant.
L'utilisation des lignes de commande, à distance, est alors la meilleure solution pour effectuer ces tâches.
Mais commençons par voir les volumes montés, via le terminal, il suffit de lister les dossiers qui se trouvent dans /Volumes
ls -l /Volumes
sur mon Mac, j'ai le résultat suivant :
drwxrwxr-x 23 root admin 850 Jan 29 20:23 Data
lrwxr-xr-x 1 root wheel 1 Mar 13 22:55 MacPro -> /
drwxr-xr-x 37 root wheel 1326 Jul 26 2018 Stockage
drwxrwxr-x 14 root admin 544 Mar 17 09:33 TimeMachine
Pour commencer, j'ai le volume MacPro qui est la partition système. Puis j'ai trois disques connectés, et qui sont actuellement montés.
Les actions de montage et de démontage des disques se feront grâce à la commande diskutil, que nous avions déjà vue à plusieurs reprises, lors de la création d'une partition Recovery, de l'utilisation de smartmontools, ou encore de la création d'une carte de boot pour Raspberry Pi via le terminal.
Regardons déjà la liste des disques connectés au Mac.
diskutil list
avec pour résultat
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk3 1000.0 GB disk0s2
/dev/disk1 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *2.0 TB disk1
1: EFI EFI 209.7 MB disk1s1
2: Apple_HFS TimeMachine 1.5 TB disk1s2
3: Apple_HFS Data 499.9 GB disk1s3
/dev/disk2 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk2
1: EFI EFI 209.7 MB disk2s1
2: Apple_HFS Stockage 999.3 GB disk2s2
3: Apple_Boot Recovery HD 650.0 MB disk2s3
/dev/disk3 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +1000.0 GB disk3
Physical Store disk0s2
1: APFS Volume MacPro 616.1 GB disk3s1
2: APFS Volume Preboot 22.0 MB disk3s2
3: APFS Volume Recovery 519.0 MB disk3s3
4: APFS Volume VM 3.2 GB disk3s4
Le disque /dev/disk0 est le plus complexe, il s'agit du disque principal du Mac, qui contient un volume virtuel en APFS, le nouveau système de fichier de macOS. Le contenu de ce volume est accessible depuis le disque virtuel /dev/disk3 (synthesized).
Nous retrouvons ensuite les volumes TimeMachine et Data sur le disque physique /dev/disk1.
Et nous avons le volume nommé Stockage qui se trouve sur le disque physique /dev/disk2.
S'il y avait un disque externe connecté, il serait marqué comme /dev/diskX (external, physical).
Pour démonter un volume, il suffit d'utiliser la commande diskutil avec la sous-commande unmount et l'identifiant de notre volume qui se trouve dans la colonne la plus à droite.
Par exemple pour démonter Stockage
diskutil unmount /dev/disk2s2
Si cela a fonctionné, vous obtiendrez le message
Volume Stockage on disk2s2 unmounted
Si le disque est utilisé par un processus, la commande vous renverra l'erreur suivante
Volume Stockage on disk2s2 failed to unmount: dissented by PID 273 (/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Support/mds_stores)
vous indiquant le processus qui utilise le disque, et empêche le démontage, ici une application système : mds_stores.
Il est possible de forcer le démontage pour passer outre
diskutil unmount force /dev/disk2s2
avec pour résultat
Volume Stockage on disk2s2 force-unmounted.
Une fois le volume démonté, il est possible de remonter, via la commande
diskutil mount /dev/disk2s2
Le résultat espéré est
Volume Stockage on /dev/disk2s2 mounted
Si vous souhaitez monter tous les volumes d'un disque, vous pouvez utiliser la commande
diskutil mountDisk /dev/disk2
Ici, il ne faut plus donner l'identifiant du volume, mais bien du disque.
Pour le démontage, c'est identique
diskutil unmountDisk /dev/disk2
et il est, ici aussi, possible de forcer le démontage en rajoutant le mot-clé "force".
Si votre disque n'apparait pas dans la liste des disques, ou vous renvoie une erreur
Volume on disk2 timed out waiting to mount
ou encore
Volume on disk2s2 failed to mount
il est possible de votre disque ait un soucis.
La commande diskutil permet aussi de reformatter, d'effacer ou de redimensionner un volume. Si l'on regarde bien, Utilitaire de disque n'est, en fait, qu'une interface graphique à la commande diskutil.