QEMU est un émulateur de système assez complet. Il est capable de simuler une architecture x86, et partiellement les architectures PPC, ARM et SPARC. Il prend aussi en charge l'émulation de plusieurs processeurs et périphériques matériels différents. Le CPU est émulé à l'aide de la traduction binaire. Cette méthode traduit le code natif d'un processeur (opcode) en fonctions logicielles compatibles avec le CPU qui est utilisé pour exécuter QEMU. Ces fonctions imitent les résultats comme si le code d'origine s'exécutait sur le processeur d'origine. De même, les périphériques matériels sont modélisés dans un logiciel pour fournir un environnement virtuel. Le résultat est que vous pouvez exécuter le code d'origine comme s'il s'exécutait sur la machine émulée. Par exemple, il est possible d'exécuter du code écrit pour le processeur ARM sur une machine Intel. L'émulation est extrêmement lente, car toute commande unique de l'opcode d'origine doit être traduite en une multitude de commandes afin d'émuler le résultat. La très bonne chose à propos de QEMU est que son architecture est conçue pour permettre la définition de nouveaux types de CPU et de nouveaux périphériques matériels. En résumé, Qemu est le couteau suisse de la virtualisation !
Etudier toute l'étendue des fonctionnalités de Qemu est quelque chose que l'on fait en général au fil du temps et en fonction des besoins. Les besoins de virtualisation sont toujours différents d'une machine virtuelle à une autre. Par exemple, mettre en oeuvre une machine virtuelle classique avec uniquement un disque dur (sans aucun adaptateur) est une chose, mais associer un deuxième disque dur ainsi qu'un adaptateur réseau en est une autre. L'instruction à écrire dans le «Terminal» peut s'avérer ardue. Dans cet article, je vous propose de voir ensemble la mise en oeuvre de Qemu et de d'utiliser ainsi les principales options pour la mise en oeuvre d'une machine virtuelle sous un environnement PowerPC de chez Apple.
Pour effectuer mes différents tests d'utilisation de Qemu, j'ai utilisé une machine sur laquelle était installé Mac Os X El Capitan 10.11.6. Toutes les mises à jour avaient été installées. Il m'a été impossible d'installer Qemu avec ce système car certains jeux d'instruction ne sont pas pris en compte avec la nouvelle version de Qemu. J'ai donc utilisé une machine avec Mac Os X Mojave.

image 001
Les informations du MacBook Pro.

Avant d'utiliser Qemu, il y a certains prérequis. Le premier est d'installer Xcode dans sa version pour Mojave à savoir la version 11.3.1. Il est possible de le télécharger gratuitement directement sur le site d'Apple après avoir créé un compte développeur. Le deuxième sera de télécharger «Command Line Tools 11.3.1» que l'on trouve à la même adresse et de l'installer. Les téléchargements seront disponibles à l'adresse suivante :

https://developer.apple.com/download/more/
On décompresse l'application Xcode et on place le fichier obtenu dans le dossier «Applications» du Mac. On exécute ensuite Xcode afin de valider le contrat de licence. On installe ensuite «Command line Tools».

image 002
L'application Xcode dans le dossier «Applications».

Le troisième prérequis sera d'installer «HomeBrew». il s'agit est un logiciel de gestion de paquets pour Mac OS écrit en Ruby. Son but est de simplifier l'installation de programmes. Cela nous permet d'installer et de mettre à niveau des bibliothèques et des outils de manière simple Il est donc recommandé pour sa simplicité d'utilisation et son intégration dans l'environnement Apple. Il s’installe par défaut à l’emplacement suivant :

/usr/local

Pour installer «HomeBrew», il suffit d’ouvrir le «Terminal» et d’exécuter la commande suivante. Lors de l’installation, on est amené à saisir le mot de passe de session :
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

image 003
Installation de «HomeBrew» avec le «Terminal».

Comme vous avez pu le constater, l'installation des prérequis prend beaucoupe de temps. Il aura fallu environ une bonne heure pour réaliser la totalité de l'installation. Il est maintenant possible d'installer Qemu, toujours à partir d'une fenêtre du «Terminal» avec la commande suivante :

brew install qemu

L'installation peut s'avérer longue. Il s'agit d'installer pas moins de 37 paquets. Qemu sera installer en dernier.

image 004
Installation de Qemu.

Qemu est installé dans le dossier suivant :

/usr/localCellar/qemu/4.2.0

image 006
Le dossier d'installation de Qemu.

Le dossier «bin» contient une multitude d'utilitaires. Chacun sert à l'émulation des principaux processeurs du marché actuel. On trouve encore dans ce dossier, des utilitaires dont un qui nous permettra de créer les disques durs virtuels. (qemu-img).

image 007
Le contenu du dossier «bin».

Une fois installé, je vous conseille de créer un dossier dans lequel seront stockés les différents fichiers de la machine virtuelle ainsi qu'un dossier nommé «Disc_Tiger», qui contiendra les fichiers ISO nécessaires à l'installation du système. Dans mon cas, il s'agira d'un dossier nommé «VM_Qemu» sur le bureau de mon ordinateur.

image 005
Les dossiers «VM_Qemu» et «Disc_Tiger» sur le bureau.

On se positionne maintenant dans ce nouveau dossier à l'aide de la commande suivante :

cd /Users/benoitsalado/Desktop/VM_Qemu

On crée un nouveau disque dur à l'intérieur de ce nouveau dossier avec la commande suivante :

qemu-img create -f raw -o size=10G MacOs_Tiger.img

il s'agit dans ce cas de créer un disque dur virtuel d'une taille de 10Go au format «Raw» (format qemu).

image 008
Création du disque dur virtuel.

Avant d'exécuter l'émulateur, il est important de disposer des fichiers d'installation sur la machine. Je copie donc les fichiers dans le dossier «Disc_Tiger» créé plus haut dans cet article. Le fichier ISO stocké a pour nom «DVD_Tiger_PPC.iso». Avec tous ces fichiers disponibles, on peut lancer l'émulateur PowerPc (qemu-system-ppc) associé à des options spécifiques :

qemu-system-ppc -L pc-bios -boot d -m 1024 -M mac99 -prom-env "auto-boot ?=true" -prom-env "boot-args=-v" -prom-env "vga-ndrv ?=true" -cpu g3 -drive file=/Users/benoitsalado/Desktop/VM_Qemu/MacOs_Tiger.img,format=raw,media=disk -drive file=/Users/benoitsalado/Desktop/Disc_Tiger/DVD_Tiger_PPC.iso,format=raw,media=cdrom

image 009image 010

image 011image 012
La machine virtuelle démarre.

Lors de l'installation, il ne faudra pas oublier d'exécuter l'utilitaire de disques afin de préparer le disque dur virtuel de la machine.

image 016
Préparation du disque dur lors de l'installation.

image 013
Installation de Os X 10.4 en cours...

Lorsque l'installation se terminera, il faudra penser à arrêter la machine virtuelle en quittant le «Terminal» sans quoi, la machine virtuelle redémarrera inlassablement sur le DVD ayant servi à l'installation. Donc, on arrête la machine virtuelle (cela peut être un peu long) de la manière suivante :

image 014
Arrêt de la machine virtuelle.

Si cela ne fonctionne pas, on n'hésite pas à quitter directement le «Terminal» et on relance la machine virtuelle après avoir modifié l'option "-boot" afin que la machine virtuelle puisse démarrer à partir du disque dur virtuel. Attention, le démarrage de la machine virtuelle peut s'avérer plus ou moins long.

qemu-system-ppc -L pc-bios -boot c -m 1024 -M mac99 -prom-env "auto-boot ?=true" -prom-env "boot-args=-v" -prom-env "vga-ndrv ?=true" -cpu g3 -drive file=/Users/benoitsalado/Desktop/VM_Qemu/MacOs_Tiger.img,format=raw,media=disk -drive file=/Users/benoitsalado/Desktop/Disc_Tiger/DVD_Tiger_PPC.iso,format=raw,media=cdrom

Au démarrage de la machine virtuelle, l'installation continue.

image 017image 018

image 019
Os X Tiger pour PowerPc virtualisé...

Comme on peut le constater, l'instruction écrite est complexe. Beaucoup d'options ont été utilisées.

-boot c ou -boot d

il s'agit de la seule option qui a été modifié entre les deux instructions. Elle permet de définir sur quel disque la machine doit démarrer (définie par l'option "drive file=" dans l'instruction). On remarque que dans l'instruction complète, l'option "Drive file=" est utilisée 2 reprises. La première portera le nom de "C" et la deuxième "D" et ainsi de suite. Il faut donc faire attention à l'ordre d'écriture des lecteurs dans l'instruction afin d'éviter toute confusion.

-m 1024

Cette fonction permet de spécifier la quantité de mémoire Ram à la machine virtuelle.

-M mac99

 Type de machine à émuler. L'option "mac99" permet d’avoir une machine des années 90 2000. L'option "g3beige" correspondra aux ordinateurs en plastique beige.

-prom-env "boot-args=-v"

Il s'agit du mode verbose ou mode ligne de commande. Si l'on enlève cette option, la machine virtuelle démarrera comme un Mac classique avec sa pomme et son fond gris uniquement.

-drive file

Cette option détermine les fichiers associés aux différents lecteurs virtuels.

Voilà pour un petit descriptif des différentes options utilisées dans les deux instructions. Je vous conseille de vous rendre sur le site de l'éditeur afin de télécharger la documentation complète de Qemu.

Je vous propose maintenant d'ajouter un deuxième disque dur de 5Go à notre machine virtuelle. Pour cela, on commence par créer un nouveau disque dur puis on ajoute une option "-drive file" supplémentaire. Cela nous donne l'instruction suivante :

qemu-system-ppc -L pc-bios -boot c -m 1024 -M mac99 -prom-env "auto-boot ?=true" -prom-env "boot-args=-v" -prom-env "vga-ndrv ?=true" -cpu g3 -drive file=/Users/benoitsalado/Desktop/VM_Qemu/MacOs_Tiger.img,format=raw,media=disk -drive file=/Users/benoitsalado/Desktop/VM_Qemu/MacOs_Tiger2.img,format=raw,media=disk -drive file=/Users/benoitsalado/Desktop/Disc_Tiger/DVD_Tiger_PPC.iso,format=raw,media=cdrom

Dès le démarrage de la machine virtuelle, un message vous informe de la présence d'un nouveau disque dur. Il faut imédiatement l'initialiser afin de pouvoir l'utiliser.

image 020
Le nouveau disque dur virtuel à initialiser.

image 021
Le nouveau disque dur virtuel initialisé.

Je poursuis la rédaction de cet article en ajoutant uniquement l'instruction comme par exemple l'utilisation d'une résolution d'écran de 1360x768 à l'ouverture de la session. Attention, si la résolution du bureau de Os X est différente, cette dernière sera utilisée par défaut. L'instruction sera la suivante :

qemu-system-ppc -L pc-bios -boot c -m 1024 -M mac99 -prom-env "auto-boot ?=true" -prom-env "vga-ndrv ?=true" -cpu g3 -drive file=~/Desktop/VM_Qemu/MacOs_Tiger.img,format=raw,media=disk -cdrom "" -g 1360x768x32

L'instruction suivante permet d'avoir à disposition un lecteur de disque optique sans contenu.

qemu-system-ppc -L pc-bios -boot c -m 1024 -M mac99 -prom-env "auto-boot ?=true" -prom-env "vga-ndrv ?=true" -cpu g3 -drive file=~/Desktop/VM_Qemu/MacOs_Tiger.img,format=raw,media=disk -cdrom ""

L'instruction suivante permettra d'activer le support USB et d'utiliser un clavier et une souris USB.

qemu-system-ppc -L pc-bios -boot c -m 1024 -M mac99,via=pmu -prom-env "auto-boot ?=true" -prom-env "vga-ndrv ?=true" -cpu g3 -drive file=~/Desktop/VM_Qemu/MacOs_Tiger.img,format=raw,media=disk -cdrom "" -device usb-kbd -device usb-mouse

L'instruction suivante gèrera l'interface réseau. Elle installera une carte PCI RTL8139 de chez Realtek Semiconductor Corp. le réseau utilisé sera le 192.168.0.0/24. La première adresse IP distribuée par le serveur DHCP sera l'adresse 192.168.1.250. Cette instruction affecte aussi une adresse mac différente.

qemu-system-ppc -L pc-bios -boot c -m 1024 -M mac99,via=pmu -prom-env "auto-boot ?=true" -prom-env "vga-ndrv ?=true" -cpu g3 -drive file=~/Desktop/VM_Qemu/MacOs_Tiger.img,format=raw,media=disk -cdrom "" -device usb-kbd -device usb-mouse -netdev user,id=mynet0,net=192.168.1.0/24,dhcpstart=192.168.1.250 -device rtl8139,netdev=mynet0,mac=00:0C:29:80:26:84

Lancement de la machine virtuelle en plein écran.

qemu-system-ppc -L pc-bios -boot c -m 1024 -M mac99,via=pmu -prom-env "auto-boot ?=true" -prom-env "vga-ndrv ?=true" -cpu g3 -drive file=~/Desktop/VM_Qemu/MacOs_Tiger.img,format=raw,media=disk -cdrom "" -device usb-kbd -device usb-mouse -netdev user,id=mynet0,net=192.168.1.0/24,dhcpstart=192.168.1.250 -device rtl8139,netdev=mynet0,mac=00:0C:29:80:26:84 -full-screen

Lorsque tous les réglages ont été effectués, il est possible d'enregistrer la configuration globale de l'instruction dans un fichier. Le résultat sera un fichier texte.

qemu-system-ppc -L pc-bios -boot c -m 1024 -M mac99,via=pmu -prom-env "auto-boot ?=true" -prom-env "vga-ndrv ?=true" -cpu g3 -drive file=~/Desktop/VM_Qemu/MacOs_Tiger.img,format=raw,media=disk -cdrom "" -device usb-kbd -device usb-mouse -netdev user,id=mynet0,net=192.168.1.0/24,dhcpstart=192.168.1.250 -device rtl8139,netdev=mynet0,mac=00:0C:29:80:26:84 -full-screen -writeconfig Mac_Os_Tiger.config

Pour utiliser ensuite ce fichier, on utilisera la commande suivante :

qemu-system-ppc -readconfig Mac_Os_Tiger.config

QEMU permet de créer un Macintosh virtuel sans trop de complexité pour un habitué des environnements UNIX. Cela m’a été pratique plusieurs fois pour faire fonctionner d'anciennes applications. Cependant, certaines entrées/sorties basiques en 2017 (son, réseau) ne sont pas, ou mal gérées. L’usage de périphériques externes (en ADB notamment) étant impossible, cela écarte la possibilité de faire fonctionner certains logiciels sous licence requérant un dongle externe. Je pense par exemple aux anciennes versions de Quark Xpress. J'utilise souvent Qemu afin de vérifier si mes fichiers ISO sont bootables ou non.


Documentation qemu-system-ppc