Ecriture / Lecture NTFS sur MacOS High Sierra 10.13.(1,2,3 et 4) Mojave et ses déclinaisons et aussi macOS Catalina (10.15):
Nouvel utilisateur de MacBook pro (Je ne le suis plus depuis presqu'un an) avec El capitan, je me suis retrouvé confronté à un sérieux et étrange problème. Il m'était impossible de copié des données de mon MacBook sur mes disques dures externe en format NTFS (système de fichier de Microsofts).Alors question:
1- comment est-ce possible au 21è siècle (Apple m'épate de jour en jour)?
2- comment y remedier?
Nous alons simplement chercher à repondre à la seconde question car je ne veux pas savoir "quel est le sex des anges".
Pour ce faire, deux solutions s'offrent à nous :
1 - Installer l'application payante Paragon NTFS version 15 (si vous avez assez de sou), plutôt bien foutu.
2 - Et la seconde solution c'est l'installation et la configuration de OSXFUSE et NTFS 3G.
L'installation de paragon (simple à réaliser) n'est pas abordée dans ce billet. Un tour sur le site de l'éditeur nous en donne plus de détails.
Alors revenons à nos moutons!
Qu'est ce que c'est NTFS 3G et comment installe - t -on OSXFuse et NTFS 3G pour resoudre notre problème?
NTFS 3G:
-------
NTFS 3G est un pilote open source pour NTFS utilisant le système de fichier de FUSE supporté par tous les sysytèmes d'exploitation compatible UNIX dont MacOS ( et oui c'est un unix like au même titre que linux).
NTFS 3G sert juste d'interface à OSXFUSE pour faire le travail. Il est issue du projet Tuxera NTFS qui est payant et intègre des outils ou fonctions supplémentaires permettant de formater en NTFS et d'analyser les disques durs externes.
On y va:
Il import de savoir que nous avons des préréquits à remplir.:
Il s'agit du command line tools for Xcode, qui se trouve dans l'AppStore et de Homebrew (dont nous avons parlé dans un précédent article).
Ainsi, Command Line tools for Xcode s'install en tapant dans le terminal
xcode-select --install
Puis On install Homebrew en entrant dans le terminal
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Une fois Homebrew installé, il faut installer son extension Homebrew cask, toujours dans le terminal:
brew install brew-cask
On installe par la suite osxfuse et ntfs-3g (la version la plus récente) respectivement, dans le terminal
brew cask install osxfuse
puis
brew install ntfs-3g
[Pas nécessaire sous macOS Catalina: Désactivation de SIP]
L'on doit ensuite désactiver le System Integrity Protection (SIP) de votre macOS. Comme son nom l'indique c'est le système de sécurité mise en place par Apple à l'image de UAC de Microsoft Windows; sans quoi nous ne pourrons pas poursuivre avec les commandes avenir.
Pour désactiver le SIP, il faut redémarrer en Recovery Mode c'est - à - dire on redémarre la machine en maintenant les touches "Cmd + R".
Une fois en recovery mode, on clique sur le menu utilitaires (utilities) puis "console" pour afficher la console.
Dans le terminal, la commande csrutil status doit indiquer enable (actif) en suite la commande csrutil disable permet de le (SIP) désactiver.
En suite csrutil status permet de savoir si c'est effectif ou pas (on devrait donc avoir "disabled").
Il ne nous reste plus qu'a redémarrer donc la machine, cette fois-ci en mode normal et l'on peut y vérifier le status de csrutil en entrant dans le terminal "csrutil status".
Si le résultat n'est pas "disabled" alors on reprend le processus.
[Avant macOS Catalina: Début MAJ]
Une fois que le System Integrity Protection est désactivé, l'on doit dire au macOS de monter automatiquement les périphériques NTFS que l'on y connecte (Disque dur Externe, ...) en modifiant les fichiers NTFS par défaut de MacOS. Pour cela:
- On renomme le fichier d'origine mount_ntfs en mount_ntfs.orginal par: sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original
- On pointe notre fichier installé par ntfs-3g qui se trouve dans /usr/local/sbin/ vers celui qu'on vient de renommer afin que macOS le prenne en compte en lieu et place de l'original en y créant un lien symbolique sudo ln -s /usr/local/sbin/mount_ntfs /sbin/mount_ntfs
Nous finissons notre travail par réactiver le SIP, sécurité oblige. La commande csrutil enable
permet de le faire aisément.
[Sous macOS Catalina 10.15.x : MAJ]
Avec Catalina le fichier /sbin/mount_ntfs est un fichier system protégé car il est en lecture seule. En effet la commande sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original
nous donne un message du genre: mv: rename /sbin/mount_ntfs to /sbin/mount_ntfs.original: Read-only file system
Pour remédier à cela nous allons faire plusieurs choses:
- Déterminer notre user ID: id -u le miens donne 501 ; et notre group ID: id -g le miens donne 20
Etant donné que Catalina monte le système de ficher en lecture seul (message ci-dessus) nous allons y remédier en le rendant accessible (modifiable) avec la commande: sudo mount -uw /
/!\ Cette commande est annulée au redémarrage. Nous allons faire toutes nos modifications avant cela.
Nous pouvons à présent modifier le fichier mount_ntfs:
sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original
sudo touch /sbin/mount_ntfs
sudo chmod 0755 /sbin/mount_ntfs
sudo chown 0:0 /sbin/mount_ntfs
sudo nano /sbin/mount_ntfs
La dernier ligne nous permet d'ouvrir le nouveau fichier mount_ntfs en mode édition avec nano (éditeur de texte par défaut sous toutes les distributions unix-like)
Ici nous allons ouvrir le fichier /usr/local/sbin/mount_ntfs créé par l'installation de ntfs-3g et copier le contenu que nous allons coller dans le terminale où nano nous attend. Chez moi, le contenu à copier est :
#!/bin/bash
VOLUME_NAME="${@:$#}"
VOLUME_NAME=${VOLUME_NAME#/Volumes/}
USER_ID=501
GROUP_ID=20
if [ `/usr/bin/stat -f %u /dev/console` -ne 0 ]; then
USER_ID=`/usr/bin/stat -f %u /dev/console`
GROUP_ID=`/usr/bin/stat -f %g /dev/console`
fi
/usr/local/opt/ntfs-3g/bin/ntfs-3g \
-o volname="${VOLUME_NAME}" \
-o local \
-o negative_vncache \
-o auto_xattr \
-o auto_cache \
-o noatime \
-o windows_names \
-o user_xattr \
-o inherit \
-o uid=$USER_ID \
-o gid=$GROUP_ID \
-o allow_other \
"$@" >> /var/log/mount-ntfs-3g.log 2>&1 Ce code est coller dans le terminal (mount_ntfs est ouvert avec nano). Il faut enregistrer avec les touches "Ctrl+X" et "Y". C'est fini
[Sous macOS Catalina 10.15.x : Fin MAJ]
On redémarre enfin notre machine et le tour est joué, nos disques durs externes peuvent recevoir des fichiers depuis notre MacOs.
Une petite précision tout de même, comparativement à NTFS-3G, PARAGON-NTFS est 2 à trois fois plus rapide.
J'espère que cela répondra à vos besoins, n'hésiter pas pour les questions et commentaires.
Portez -vous bien et à très bientôt pour un autre tutoriel.