Catégories
Émulation & Virtualisation

Émuler un PowerMac G3 / G4 et Mac OS X PPC avec Qemu

Qemu est un logiciel libre de machines virtuelles, qui permet en gros de faire tourner à peu près n’importe quoi. C’est sa capacité à émuler un processeur PowerPC qui m’intéresse particulièrement, puisqu’il permet d’installer Mac OS 9 et toutes les versions de Mac OS X PPC (ou presque) de 1999 à 2007 dans des machines virtuelles sur un Mac récent. Et c’est exactement ce que je compte faire ici. Ce n’est pas plus utile que d’installer toutes les versions de Mac OS X / macOS pour processeur Intel dans VirtualBox, mais c’est tout aussi marrant… Et tout aussi intéressant pour se remémorer l’histoire de macOS.

Qemu PPC peut émuler un PowerMacintosh G3 beige ou un PowerMac G4 AGP. La version émulée de ce dernier est une sorte d’hybride, puisqu’il peut aussi avoir un processeur G3 et un port ADB. Les versions de Mac OS compatibles sont les suivantes :

  • Mac OS 9.0.4 (nécessite au minimum Mac OS Rom en version 5.2.1)
  • Mac OS 9.1
  • Mac OS 9.2
  • Mac OS X Server 1.2v3 (pas de réseau)
  • Mac OS X DP2
  • Mac OS X DP3
  • Mac OS X DP4
  • Mac OS X Kodiak (Public Beta)
  • Mac OS X 10.0 Cheetah
  • Mac OS X 10.1 Puma
  • Mac OS X 10.2 Jaguar
  • Mac OS X 10.3 Panther
  • Mac OS X 10.4 Tiger
  • Mac OS X 10.5 Leopard

Rendons à César ce qui ne m’appartient pas, cet article est une libre interprétation de l’ébauche de guide sur Emaculation.com et de la documentation officielle de Qemu PPC.

  1. Installer Qemu-system-ppc
  2. Obtenir une image disque de la version de Mac OS X à installer
  3. Configurer une machine virtuelle sous Mac OS X 10.5 Leopard, 10.4 Tiger, 10.3 Panther, 10.2 Jaguar, Mac OS 9.2 et Mac OS 9.1
  4. Brève explication des paramètres
  5. Configurer une machine virtuelle sous Mac OS X 10.1 Puma, 10.0 Cheetah, 10.0 Public Beta et Mac OS 9.0.4
  6. Configurer une machine virtuelle sous Mac OS X DP4 & DP3
  7. Configurer une machine virtuelle sous Mac OS X Server 1.2v3 & Mac OS X DP2
  8. Réglages fins et ajustements cosmétiques

Installer Qemu-system-ppc

Qemu est un logiciel libre dont le développement est très actif, et il y a plein d’endroits où s’en procurer des versions diverses… à commencer par le site web officiel du projet. On peut compiler les sources soi-même si on est masochiste, ou l’installer via Homebrew (brew install qemu). Pour ma part j’ai préféré installer la version PPC officielle maintenue sur Emaculation, la Mecque de l’émulation sur Mac, à cette adresse : https://www.emaculation.com/forum/viewtopic.php?f=34&t=8848&p=52102#p52102. On obtient l’application compilée, les bibliothèques nécessaires et les fichiers de configuration directement dans une archive Zip. La dernière version stable est toujours en tête du premier post (version 4.2 pour macOS Catalina à l’heure où j’écris ces lignes), et les dernières versions expérimentales sont toujours en tête du deuxième post (version 5.0). Pour cet article, j’utilise la version 5.0 qui fonctionne à merveille, et apporte le support du son qui manque cruellement à la 4.2.

Qemu-system-ppc n’est pas une application « notariée », et Gatekeeper va faire son boulot et la bloquer. Il y a un petit script à lancer avant la première utilisation pour contourner ce blocage. Il suffit de suivre les instructions dans le fichier ReadMe. Ça donne le ton, pour utiliser Qemu il faut un peu mettre les mains dans le cambouis.

Qemu s’utilise via le Terminal, avec la commande qemu-system-ppc suivie des paramètres de la machine virtuelle. Pour éviter de tout taper à chaque lancement, les paramètres peuvent être enregistrés dans un fichier texte sous la forme d’un script Bash, avec l’extension .command, qu’il suffit de double-cliquer pour lancer la machine. Le fichier qemu.command qu’on trouve dans l’archive téléchargée est un example de PowerMac virtuel sous Mac OS 9.2.2.

Obtenir une image disque de la version de Mac OS X à installer

La plupart des versions PPC de Mac OS 9 et de Mac OS X sont disponibles sur l’indispensable Macintosh Garden. Qemu reconnaît les images disque aux formats .img, .dmg, .cdr et .toast.

Lorsqu’elles existaient, j’ai utilisé avec plus ou moins de succès les images disque que j’avais sauvegardées il y a bien longtemps à partir de mes vieux DVDs et CDs d’installation. J’aurais même pu démarrer directement la machine virtuelle depuis le CD-Rom inséré dans le lecteur optique de mon Mac, mais je n’ai pas essayé.

Configurer une machine virtuelle sous Mac OS X 10.5 Leopard, 10.4 Tiger, 10.3 Panther, 10.2 Jaguar, Mac OS 9.2 et Mac OS 9.1

J’utilise l’exemple de Mac OS X 10.4 Tiger ci-dessous, mais tous ces systèmes s’installent avec les mêmes paramètres. On fera varier la quantité de mémoire vive allouée à la machine virtuelle en fonction des besoins. Pour être réaliste et coller aux configurations de l’époque, j’ai pour ma part alloué 512 MB de Ram à Leopard et Tiger, 256 MB à Panther et Jaguar, et 128 MB à Mac OS 9. Dans tous les exemples ci-dessous je pars du principe que les images des disques d’installation et des disques durs sont dans le même dossier que Qemu. Le nom et le format des images disque téléchargées depuis le web seront sans doute différents !

  • Créer une image disque vierge avec l’utilitaire qemu-img. Ouvrir le Terminal, naviguer dans le dossier de Qemu et saisir la commande suivante :
    ./qemu-img create -f raw -o size=10G Tiger.img
  • Ouvrir son éditeur de texte favori, et créer un ficher Tiger.command dans le dossier de Qemu.
  • Coller le code suivant dans le fichier :
#!/bin/bash
cd "$(dirname "$0")"

./qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu -m 1024 \
-prom-env 'auto-boot?=true' -prom-env 'boot-args=-v' -prom-env 'vga-ndrv?=true' \
-drive file="Mac OS X 10.4.6.dmg",format=dmg,media=cdrom \
-drive file="Tiger.img",format=raw,media=disk \
-netdev user,id=network01 -device sungem,netdev=network01 \
-device VGA,edid=on
  • Enregistrer le fichier Tiger.command, et le rendre exécutable :
    chmod +x Tiger.command
  • Double-cliquer le fichier Tiger.command pour lancer Qemu et démarrer le PowerMac virtuel sur l’image disque d’installation de Mac OS X 10.4 Tiger.
Installation de Mac OS X 10.4 Tiger
  • L’installation se déroule comme sur un vrai Mac, mais il est nécessaire de formater et partitioner le disque dur virtuel en faisant un détour par Utilitaire de disques (Menu Utilitaires) avant de lancer l’installation.
Formatage du disque dur virtuel dans Qemu
  • À la fin de l’installation, la machine virtuelle redémarre… sur le disque d’installation. Il faut l’éteindre et modifier le fichier Tiger.command avec l’argument -boot c à la place de -boot d pour démarrer sur le disque dur plutôt que sur le disque optique. Si l’on n’en a plus besoin, on peut retirer le disque optique du lecteur en supprimant la ligne -cdrom "Mac OS X 10.4.6.dmg" \.
  • Au prochain lancement, la machine virtuelle démarrera sur son propre disque dur et on pourra configurer Tiger.

Brève explication des paramètres

  • #!/bin/bash dit à macOS qu’il s’agit d’un script Bash.
  • cd "$(dirname "$0")" définit le dossier courant comme chemin pour Qemu.
  • ./qemu-system-ppc lance Qemu-system-ppc avec tous les paramètres suivants.
  • -L pc-bios indique à Qemu le dossier pc-bios qui contient les fichiers nécessaires à son fonctionnement.
  • -boot d dit à Qemu de démarrer sur un CD/DVD ; -boot c démarrerait sur un disque dur.
  • -M mac99,via=pmu définit le modèle de Mac à émuler, en l’occurrence le PowerMac G4 (AGP Graphics) de 1999, ou PowerMac3,1. Les autres options possibles sont :
    • -M mac99
    • -M mac99,via=pmu-adb
    • -M g3beige
      Il n’est pas particulièrement facile de deviner quelle option fonctionne pour quel système… C’est pour ça qu’il y a des forums !
  • -m 1024 définit la quantité de mémoire (en mégaoctets) de la machine virtuelle.
  • -prom-env 'auto-boot?=true' démarre automatiquement la machine. 'auto-boot?=false' permettrait de modifier les paramètres à l’invite de commande de l’openbios avant de lancer le démarrage.
  • -prom-env 'boot-args=-v' dit à Mac OS X de démarrer en mode verbose, ce qui est fort utile pendant l’installation pour diagnostiquer un éventuel problème. Ce paramètre peut être supprimé par la suite pour démarrer « comme un vrai Mac ».
  • -prom-env 'vga-ndrv?=true' charge le pilote vga.ndrv qui permet le changement de résolution graphique à la volée.
  • -drive file="Mac OS X 10.4.6.dmg",format=dmg,media=cdrom définit le chemin de l’image disque insérée dans le lecteur de CD/DVD. En l’occurrence, le fichier Mac OS X 10.4.6.dmg est dans le même dossier que Qemu-system-ppc. Noter les guillemets parce que le nom de fichier contient des espaces ; avec une image au format .iso, .cdr ou .img, on mettra format=raw. Lorsqu’on démarre sur un CD/DVD, il doit être déclaré avant le ou les disques durs dans le fichier de configuration.
  • -drive file="Tiger.img",format=raw,media=disk définit le chemin de l’image disque du disque dur de la machine virtuelle ; on peut définir des disques durs supplémentaires à la suite (trois au total).
  • -netdev user,id=network01 -device sungem,netdev=network01 paramètre le réseau par défaut et donne accès à internet et au réseau local à la machine virtuelle.
  • -device VGA,edid=on permet de choisir des résolutions graphiques supplémentaires depuis la machine virtuelle.

Configurer une machine virtuelle sous Mac OS X 10.1 Puma, 10.0 Cheetah, 10.0 Public Beta et Mac OS 9.0.4

Mac OS 9.0 et les premières versions de Mac OS X sont particulièrement sélectives et n’apprécient pas la manière dont Qemu émule l’USB. Le système démarre, mais on se retrouve avec un clavier et une souris non fonctionnels. En utilisant les paramètres ./qemu-system-ppc -L pc-bios -boot c -M mac99 (sans « via=pmu »), Qemu émule un clavier et une souris ADB, et tout fonctionne. Quelques spécialités :

Mac OS X Public Beta

La Bêta publique de Mac OS X est sortie le 13 septembre 2000, et a expiré le 14 mai 2001, deux mois après la sortie de Mac OS X 10.0 Puma. Si on l’installe aujourd’hui sur un Mac compatible ou sur Qemu, le système vérifiera la date et ne se lancera pas.

Mac OS X Public Beta : Cette version bêta de Mac OS X a expiré.

Comme je l’ai appris à mes dépens sur le forum d’Emaculation, il faut « débrancher le câble réseau » avec le paramètre -net none à la place de -netdev user,id=network01 -device sungem,netdev=network01 avant de commencer l’installation, et régler l’horloge interne de la machine virtuelle sur une date comprise entre le 13.09.2000 et le 14.05.2001 avec le paramètre -rtc base="2000-09-14",clock=vm. Après l’installation, on peut désactiver la synchronisation automatique de l’horloge réseau dans les préférences système et « rebrancher le câble réseau » avec -netdev user,id=network01 -device sungem,netdev=network01.

Mac OS 9.0.4

Qemu n’est pas compatible avec la version « boîte » de Mac OS 9.0.4. Il nécessite le fichier Rom en version 5.2.1 minimum, qu’on ne trouve a priori que sur la version spécifique de Mac OS 9.0.4 pour le PowerMac G4 Cube. La version US de ce CD est disponible sur le Macintosh Garden, mais je n’ai trouvé la version française nulle part sur les internets, malgré des recherches intensives. Si quelqu’un a ça, je suis preneur !

Configurer une machine virtuelle sous Mac OS X DP4 & DP3

Les « Developper Previews » de Mac OS X sont pointilleuses, et ne se laissent pas installer si facilement… Leurs CD d’installation sont prévus pour démarrer sur Mac OS 9, et si l’on ne fait pas gaffe on se retrouve vite bloqué avec Qemu qui ne sait pas sur quelle partition démarrer. Le formatage du disque dur pose aussi des problèmes.

  • formater l’image de disque dur virtuel de destination en HFS+ depuis une machine virtuelle sous Mac OS 9.2 avant de démarrer l’installation ;
  • Démarrer sur le CD d’installation virtuel avec les paramètres suivants :
./qemu-system-ppc -L pc-bios -boot d -M g3beige -cpu G3 -m 128 \
-prom-env 'auto-boot?=true' -prom-env 'boot-device=hd:9,\\:tbxi' -prom-env 'vga-ndrv?=true' \
-drive file="Mac OS X DP4.cdr",format=raw,media=disk \
-drive file="dp4.img",format=raw,media=disk \
-netdev user,id=network01 -device sungem,netdev=network01 \
-device VGA,edid=on

On démarre virtuellement sur un CD (-boot d), mais le disque d’installation est déclaré comme un disque dur. Et avec le paramètre -prom-env 'boot-device=hd:9,\\:tbxi' on choisit la partition OS X du disque d’installation pour ne pas se retrouver bloqué sur OS 9.

  • Après l’installation, modifier le paramètre de démarrage avec boot -c et supprimer la ligne du disque d’installation.
  • DP4 plante à l’extinction ou au démarrage, il faut forcer Qemu à quitter.

Configurer une machine virtuelle sous Mac OS X Server 1.2v3 & Mac OS X DP2

Mac OS X Server 1.2v3

  • formater l’image de disque dur virtuel de destination en HFS+ depuis une machine virtuelle sous Mac OS 9.2 avant de démarrer l’installation ; chez moi l’installation a fonctionné sur une image disque au format .img (raw), mais pas sur une image au format .qcow2 (voir ci-dessous). Par contre j’ai pu convertir l’image disque au format .qcow2 par la suite sans problème.
  • Démarrer sur le CD d’installation avec les paramètres suivants :
./qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu-adb -m 256 -net none -prom-env "auto-boot?=true"  -prom-env "boot-args=-v" \
 -cdrom "Mac OS X Server 1.2v3.toast" -hda server12v3.img

On démarre sur OS 9, c’est normal.

  • Ouvrir Drive Setup dans le dossier Utilities du CD et formater le disque de destination en Mac OS Server UFS (dans Custom Setup).
  • Lancer l’installation de Mac OS X Server, qui plantera lamentablement immédiatement ou presque.
  • Quitter Qemu et relancer la machine virtuelle avec les paramètres suivants. La première partie de l’installation se lance. Quitter Qemu lorsqu’elle est terminée.
./qemu-system-ppc -L pc-bios -boot d -M g3beige -cpu G3 -m 256 -prom-env "boot-args=-v" -prom-env 'boot-device=cd:9,\\:tbxi' -net none \
-hda server12v3.img -cdrom "Mac OS X Server 1.2v3.toast"
  • Relancer Qemu avec les paramètres suivants pour démarrer sur le disque dur et non plus sur le CD. L’installation se poursuit.
./qemu-system-ppc -L pc-bios -boot c -M g3beige -cpu G3 -m 256 -prom-env "boot-args=-v" -prom-env "auto-boot?=true" -net none \
 -hda server12v3.img -cdrom "Mac OS X Server 1.2v3.toast"
  • À la fin de l’installation, forcer Qemu à quitter et relancer la machine virtuelle avec les mêmes paramètres pour démarrer sur le disque dur et configurer le système.

Mac OS X DP2

La procédure est la même que pour Mac OS X Server 1.2v3, mais le disque d’installation refuse le démarrage sous OS 9 pour formater le disque et sélectionner la partition de démarrage. Il faut donc démarrer sur le CD d’installation de Mac OS X Server 1.2v3 pour cette première étape, et ensuite choisir le CD d’installation de DP2.

Réglages fins et ajustements cosmétiques

Pour aller un peu plus loin et rendre l’expérience de ces vieux système la plus réaliste possible…

Modifier la résolution d’écran de la machine virtuelle

Le paramètre -prom-env 'vga-ndrv?=true' permet de modifier la résolution d’écran à la volée. Il suffit de modifier la résolution dans les Préférences Système (ou les Tableaux de bord) de la machine virtuelle.

Dans les rares cas où ça ne fonctionne pas (je n’ai par exemple pas trouvé l’option dans Mac OS X DP2…), on peut indiquer à Qemu la résolution à utiliser avec le paramètre -g en spécifiant des résolutions standard (p. ex. -g 1440x900x16 pour une résolution de 1440×900 en millions de couleurs).

Insérer des CD ou des images disque

Si un CD est monté, il faut d’abord l’éjecter. Ensuite on peut en insérer un autre en choisissant change ide1-cd0 dans le menu Machine. J’ai constaté que ça ne fonctionnait pas toujours, sans doute pour une question de format d’image disque, mais je ne suis pas sûr d’avoir compris pourquoi.

Une alternative est de passer à la vue « Monitor » (Menu View > compact-monitor0) et de taper eject ide1-cd0 puis change ide1-cd0 /chemin/vers-le/fichier-image.iso.

Mises à jour

Aussi étonnant que ça puisse paraître, les serveurs de mise-à-jour d’Apple fonctionnent encore pour Leopard (2007) et Tiger (2005). Le prochain qui parle d’obsolescence programmée se prendra un coup de PowerBook G3 dans les gencives !

Il est par contre plus difficile de « mettre à jour » les versions précédentes. Les mises à jour combinées sont disponibles sur le Macintosh Garden, et les images disques peuvent être montées comme CD dans Qemu.

Environnement Classic

L’expérience des premières versions de Mac OS X ne serait pas complète sans la joie de faire fonctionner Classic, cette couche de compatibilité qui permet de faire tourner les applications pour le Mac OS classique dans Mac OS X jusqu’à 10.4 Tiger. Classic fonctionne bien dans Qemu. Il suffit de copier le Dossier Système et le dossier Applications (Mac OS 9) d’une installation de Mac OS 9 au premier niveau du disque dur d’une installation de Mac OS X, et de sélectionner le Dossier Système dans les Préférences Système.

Classic dans Mac OS X 10.4 Tiger : Internet Explorer

Convertir une image disque « raw » en image dynamique QCOW2

Les images disque brutes ou « raw » (fichier.img) prennent autant de place que le disque dur virtuel qu’elles contiennent, même si celui-ci n’est pas ou peu rempli. Si ma machine virtuelle a un disque dur virtuel de 80 GB mais que son système et quelques documents ne prennent que 15 GB, l’image disque prendra 80 GB sur le disque de l’hôte et on perd 65 GB. Qemu a son propre format d’images disque « dynamiques », le Qcow2. Une image à ce format ne prend sur le disque de l’hôte que la place effectivement utilisée par des données sur le disque virtuel. Dans l’exemple ci-dessous l’image disque au format Qcow2 prendra 15 GB sur le disque de l’hôte, et le disque de la machine virtuelle indiquera toujours 65 GB disponibles.

L’utilitaire qemu-img peut convertir une image disque brute ou « raw » (fichier.img) en image dynamique au format QCOW2 avec la commande suivante :

qemu-img convert -f raw -O qcow2 /chemin/vers/l'image.img /chemin/vers/l'image.qcow2

Par contre macOS permet de monter les images .img dans le Finder de l’hôte, ce qui est bien pratique pour transférer des fichiers. Ce n’est pas le cas des images au format Qcow2.

Réseau

Par défaut le réseau fonctionne et les machines ont accès à internet ainsi qu’au réseau local (en tapant manuellement l’adresse IP de la machine). On peut bricoler différents paramètres pour rendre les machines virtuelles « visibles » sur le réseau local et les faire communiquer entre elles, mais je n’en ai pas eu l’utilité pour le moment.

Parlons-en!