Si vous êtes un ancien utilisateur de Macintosh, il y a de fortes chances que vous ayez quelques images au format DMG qui traînent quelque part, sur un vieux disque dur ou sur des CD.

Jusqu’ici, la seule méthode pour monter une image disque DMG consistait à convertir l’image DMG en ISO (avec dmg2iso), puis monter la partition HFS+ de l’image ISO (avec le module noyau hfsplus). C’est un processus fastidieux et qui nécessite les privilèges root, mais qui a le mérite d’exister ; si vous êtes curieux, je vous invite à lire cette question sur Ask Ubuntu.

J’ai découvert récemment l’utilitaire darling-dmg qui permet de monter des images DMG très simplement sous Linux. darling-dmg se présente sous la forme d’un pilote FUSE (Filesystem in UserSpacE, système de fichier en espace utilisateur) : plutôt que de créer un module noyau pour implémenter le système de fichier, un pilote FUSE est un programme qui est exécuté par l’utilisateur. Cela ouvre la porte à des systèmes de fichiers farfelus, comme par exemple GmailFS qui permettait d’utiliser sa boîte Gmail comme un espace de stockage, mais cela permet aussi de limiter les kernel panics quand le pilote plante, ce qui arrive parfois avec le module hfsplus…

darling-dmg est un sous-projet du projet Darling. Ce projet à pour vocation de permettre aux linuxiens de faire tourner des applications compilées pour Mac OS X, un peu à la manière de Wine.

Installation de darling-dmg

Étant donné que le projet darling-dmg est très récent, il n’y a pas encore de paquets disponibles dans la majeure partie des distributions. La compilation des sources ne nécessite que l’installation des paquets suivants :

  • FUSE (fuse sur Debian et Fedora)
  • Fichier de développement pour FUSE (libfuse-dev sur Debian, fuse-devel sur Fedora)
  • CMake (cmake sur Debian et Fedora)
  • git (git sur Debian et Fedora)
  • Outils de compilation C (build-essential sur Debian, @development-tools sur Fedora)

Il faut ensuite exécuter ces commandes pour télécharger les sources, et les compiler :

git clone https://github.com/darlinghq/darling-dmg
cd darling-dmg
cmake .
make
sudo make install

Monter une image disque avec darling-dmg

Monter une image avec darling-dmg est un jeu d’enfants. Dans l’exemple suivant je veux monter l’image disque « Install OS X El Capitan.dmg » dans le dossier « /tmp/ElCapitan » (qui me servira donc de point de montage) :

$ mkdir /tmp/ElCapitan
$ darling-dmg "Install OS X El Capitan.dmg" /tmp/ElCapitan
Using partition #0 of type Apple_HFS
Everything looks OK, disk mounted
$ ls /tmp/ElCapitan
'Install OS X El Capitan.app'/ Library/ System/ usr/
$ fusermount -u /tmp/ElCapitan

Vous noterez ici l’usage de la commande fusermount (un utilitaire fourni avec fuse) pour démonter l’image. J’aurais pu utiliser umount à la place, mais j’aurais eu besoin de passer en root (spécifique à la commande umount).

Conclusion

On est loin de la simplicité enfantine du montage d’images disque dans Mac OS X qui s’effectue d’un double-clic, mais darling-dmg à le mérite d’être facile à retenir de tête contrairement. On regrettera cependant l’absence de gestion de l’écriture qui est pour l’instant l’exclusivité du module noyau hfsplus…