Bien que Mac OS 9 soit officiellement mort il y a plus d’une quinzaine d’années, il est parfois utile d’avoir une machine virtuelle à disposition pour -par exemple- récupérer des données provenant d’un vieux Mac. Pendant longtemps, SheepShaver a été l’émulateur de choix pour avoir une machine virtuelle sous Mac OS 9. Malheureusement, il est un peu bogué, et en raison de choix techniques douteux pour l’adressage mémoire, on est obligé de bidouiller sérieusement la configuration du système d’exploitation hôte (malheureusement sans garantie de résultat).

J’ai découvert récemment que QEMU, un logiciel qui permet d’émuler des systèmes informatiques, permet depuis quelques années d’émuler un Macintosh PowerPC. Cet article montre comment on peut mettre en place en moins d’une dizaine de minutes une machine virtuelle Mac OS 9 avec QEMU.

Installer QEMU

QEMU existe en une multitude de versions, chacune couvrant une architecture particulière, par exemple MIPS, Intel x86, ARM, et bien d’autres. Dans notre cas, nous voulons émuler une machine à base de processeur PowerPC, donc nous devons installer le paquet qemu-system-ppc (qui est disponible dans les dépôts Fedora et Debian Sid).

Un support d’installation pour Mac OS 9

Le choix de la version de Mac OS 9 est important : les versions avant la 9.0.4 ne fonctionnement pas correctement (cf. le wiki QEMU). Nous avons choisi d’installer la version 9.1.

Je me suis procuré un rip d’un CD d’installation de Mac OS 9.1 sur le site « abandonware » Macintosh Garden (fiche téléchargement). Il faut éviter autant que possible les CD pressés pour une machine particulière, car ils peuvent poser des soucis de compatibilité dans l’émulateur.

Création du disque dur virtuel

Placez-vous dans le répertoire dans lequel vous voulez créer une machine virtuelle. A l’aide de la commande qemu-img, on crée une image disque :

qemu-img create -f raw -o size=6G qemuhdd.raw

Cette image fera 6 Go, et sera au format « brut » (ie. aucune compression). Je n’ai pas encore eu l’occasion d’essayer de créer des images disque au format qcow2, ce qui permettrait potentiellement d’économiser en espace disque grâce à de la compression.

Création du script de lancement de la machine virtuelle

Dans votre éditeur texte (ou IDE) de prédilection, vous devrez créer un script bash pour lancer la machine virtuelle. Ce script s’appuiera sur la commande qemu-system-ppc. Voici le mien :

#!/bin/sh

qemu-system-ppc -M mac99 -m 256 -boot c -cpu G3 -net none -drive file=qemuhdd.raw,format=raw -cdrom Mac\ OS\ 9.1.toast -g 1024x768

Je me permets d’expliquer (et justifier) les arguments utilisés :

  • -M mac99 : Type de machine à émuler. mac99 permet d’avoir une machine « New World », g3beige une machine « Old World » ;
  • -m 256 : Quantité de mémoire vive en mégaoctets ;
  • -boot c : Périphérique de démarrage. c sera le disque dur virtuel, d sera le CD-ROM virtuel ;
  • -cpu G3 : Type de CPU. Suivant la version de Mac OS (8, 9 ou X), il faut choisir entre G3 et G4 ;
  • -net none : Interface réseau utilisée. En l’occurence aucune, mais il semble possible d’en configurer une fonctionnelle (cf. le wiki QEMU) ;
  • -drive file=qemuhdd.raw,format=raw : Fichier utilisé en disque dur virtuel et son format ;
  • -cdrom Mac\ OS\ 9.1.toast : Fichier utilisé en tant que CD-ROM virtuel ;
  • -g 1024×768 : Résolution de l’écran émulé. Attention : changer la résolution peut très facilement nuire au bon démarrage de la machine, voire créer des artefacts graphiques, en particulier si la résolution verticale ou horizontale n’est pas un multiple de 8 (cf. la mailing-list du développement de QEMU).

Une fois le script copié dans un fichier, et certains arguments adaptés à votre cas, n’oubliez pas de marquer le fichier comme exécutable :

chmod +x lanceurqemuppc.sh

Premier démarrage et installation de Mac OS 9 dans la machine virtuelle

Modifiez l’argument -boot à la valeur « d » pour booter sur le CD-ROM virtuel, puis exécutez le script que vous venez de créer.

Une fenêtre devrait s’ouvrir, et au bout de quelques dizaines de secondes, Mac OS devrait démarrer. Pour « capturer » la machine virtuelle, cliquez à l’intérieur de la fenêtre. Pour quitter la capture, il faut faire la combinaison Ctrl+Alt+G.

Une fois le CD booté complètement, ouvrez-le dans le Finder, puis dans le dossier Utilities, ouvrez Drive Setup. Cliquez sur <not initialized> (notre disque dur virtuel), et cliquez sur le bouton « Initialize… », puis validez l’opération de formatage par le bouton Initialize. Cela a pour effet de formater le disque dur virtuel que nous avons créé dans l’étape précédente pour y installer Mac OS 9.

Retournez à la racine du CD-ROM dans le Finder, et lancez « Mac OS Install » pour installer Mac OS 9. A titre indicatif, une installation de Mac OS 9 pèse dans les 300 Mo. L’installation dure dans mon cas environ 5 minutes sur une machine bi-coeur récente et dotée d’un SSD.

Démarrer sa machine virtuelle

Vous devez remettre à la normale l’argument -boot à la valeur « c » pour démarrer depuis le disque dur. Vous pouvez ensuite démarrer la machine virtuelle à partir du script de lancement, comme lors de son installation.

Il est important de noter qu’il ne faut pas redémarrer mais éteindre puis relancer la machine virtuelle : redémarrer cause son blocage sur un écran noir.

Echanger des fichiers entre la machine virtuelle et son hôte (sous Linux)

Pour échanger des fichiers entre l’hôte et l’invité, je monte le disque dur virtuel (machine virtuelle éteinte bien entendu !). Pour ce faire, il faut disposer des outils nécessaires pour lire et écrire sur des volumes HFS.

Pour monter l’image disque sous Linux, il suffit de créer un dossier qui nous servira de point de montage, et de monter l’image disque avec mount :

mkdir /tmp/os9vm

sudo mount -t hfs qemuhdd.raw /tmp/os9vm

Vous pourrez ainsi accéder au contenu du disque dur virtuel dans /tmp/os9vm.

Il est important de noter ici que j’utilise une image brute. Une image dans un autre format ne pourrait être montée directement sans passer par une étape de conversion, avec qemu-img par exemple.

Le verdict

QEMU permet de créer un Macintosh virtuel sans trop de complexité (pour un habitué des environnements UNIX et simili-UNIX). Cela m’a été pratique plusieurs fois pour récupérer des fichiers contenus à l’intérieur d’installateurs destinés à Mac OS 9, ou faire tourner de vieux logiciels.

A présent, est-ce que ça dispense l’achat d’un vieux Mac d’occasion ? Au-delà du plaisir de détenir une machine physique, il y a pas mal d’aspects sur lesquels la virtualisation de Macintosh avec QEMU est incomplète. Certaines entrées/sorties basiques en 2017 (son, réseau) sont pas, ou mal gérées. L’usage de périphériques externes (en ADB notamment) étant impossible, cela écarte l’utilisation de certains logiciels sous license requiérant un dongle externe (par exemple des vieilles version de Quark Xpress).