Aller au contenu principal
Accueil

Navigation principale

  • News
  • Émulateurs
  • Forum
  • Bestofs
  • Dossiers
Menu du compte de l'utilisateur
  • Se connecter

Fil d'Ariane

  1. Accueil
  2. Le grimoire de l'émulation sur Mac

Compiler son OpenBios pour Qemu sur macOS

Par sky, 13 février, 2018
Obsolète
Émulateurs
QEMU

Attention : cet article est dédié aux utilisateurs avancés. Il ne s'agit absolument pas d'un passage clé pour faire fonctionner Qemu.

Si vous avez suivi le précédent article sur l'installation et le lancement de Qemu, vous avez certainement noté la facilité relative pour lancer Mac OS 9. Mais derrière cette facilité, se trouvent un certain nombre de mécanismes qui ont été packagés via Brew.

En particulier, pour fonctionner l'émulateur nécessite une rom, un bios permettant de répondre aux appels du système à la machine virtuelle. Alors que Sheepshaver, entièrement dédié à Mac OS 9 a besoin d'une ROM extraite d'un Mac, Qemu permettant d'émuler de nombreuses machines, fonctionne grâce à OpenBios.

 

Qu'est ce qu'OpenBios ?


OpenBios est un firmware virtuel permettant de lancer de nombreux systèmes en émulation. Alors que les firmwares des machines sont en général protégé par les constructeurs, le but d'OpenBios est de fournir une implémentation libre accessible à tous et adaptée à l'émulation afin de remplacer les ROMs des constructeurs lors de la mise en place de machines virtuelles.

 

Pourquoi compiler sa version d'OpenBios ?


Lors de l'installation de Qemu, celui-ci intégre une version de l'OpenBios. Ainsi pour un lancement rapide de l'émulateur, vous n'avez pas à vous en soucier. Ce sont même 3 versions qui sont disponibles: Une version PPC, celle qui nous a intéressé, mais aussi une version SPARC 32bit et une autre version SPARC 64bit.

sky@macpro % ls -l /usr/local/Cellar/qemu/2.11.0/share/qemu | grep openbios
-rw-r--r--   1 sky  admin   754936 13 déc 18:29 openbios-ppc
-rw-r--r--   1 sky  admin   382048 13 déc 18:29 openbios-sparc32
-rw-r--r--   1 sky  admin  1593408 13 déc 18:29 openbios-sparc64

Si la version fournie reste assez récente en date du 17 octobre 2017, OpenBios est un projet vivant qui continue d'évoluer, permettant par exemple le support de Mac OS X sur Qemu. Il peut donc être intéressant d'installer la dernière version de temps en temps pour profiter du support des fonctionnalités les plus récentes.

Compiler sa propre version permet d'utiliser la dernière version du firmware et comme la dernière version compilée disponible date de Mai 2013, il faut le compiler par soit même.

Version de l’OpenBios fourni avec Qemu 2.11 disponible sur Brew

 

Quelles sont les difficultés à compiler la dernière version d'OpenBios ?


En soit il n'y a aucune difficulté, il s'agit d'une simple compilation de code. La difficulté vient du fait que nos Mac sont désormais équipés de processeurs Intel x86 64bits, et que le bios, pour faire fonctionner Mac OS 9 doit être compilé en code PowerPC, le format des processeurs Apple de l'époque.

Vous devrez posséder les outils de développement en ligne de commande pour compiler les sources. Malheureusement ni ceux-ci ni XCode au complet ne permettent de cross-compiler du code pour PowerPC. Il faudra donc installer un cross-compilateur.

 

Compiler OpenBios


Finalement, démarrons la compilation de notre OpenBios. Et commençons par installer un cross-compilateur qui permettra la création du firmware PPC.

A noter que ce cross-compilateur est livré tel quel, sans support ni garantie de succès, et qu'il est de votre propre responsabilité de l'utiliser.

Téléchargez le fichier.

Décompressez le fichier.

Renommez le fichier décompressé en ajoutant .img à la fin : AWOS-CC.img
(Cela permet de rendre le fichier reconnaissable par macOS comme une image disque.)

Montez l'image disque et démarrer l'installation.

Sélectionnez "PowerPC Support" et "i386 Support" dans les options. Vous pouvez ajouter le support de SPARC si vous le souhaitez, mais dans mon cas cela ne me sera pas utile.

Installation du Cross-Compilateur PowerPC

 

Complétez l'installation.

Il faut ensuite mettre les chemins des compilateurs installés dans son PATH.

Selon l'article original d'OpenFirmware, les chemins devraient être

/usr/local/ppcelfgcc/bin
/usr/local/i386elf/i386elf/bin

mais l'emplacement de l'installation semble varier selon les machines, il est donc préférable de trouver manuellement les fichiers pour les ajouter dans le PATH. Pour ma part, ils se trouvent dans les dossiers

/usr/local/ppcelf/ppcelf/bin
/usr/local/i386elf/i386elf/bin

Une fois que vous avez trouvé les chemins vers les compilateurs, ajoutez les à votre PATH, soit de manière temporaire

export PATH=$PATH:/usr/local/ppcelf/ppcelf/bin
export PATH=$PATH:/usr/local/i386elf/i386elf/bin

soit de manière définitive si vous souhaitez y avoir accès de nouveau dans le futur sans vous préoccuper du chemin.

Vous pouvez taper les commandes suivantes pour vérifier que l'installation est un succès

i386-elf-gcc --version 
ppc-elf-gcc --version 

avec comme réponse

sky@macpro % ppc-elf-gcc --version                         
ppc-elf-gcc (GCC) 4.2.3
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

si vous obtenez quelque chose du genre

sky@macpro % ppc-elf-gcc --version 
zsh: command not found: ppc-elf-gcc

c'est qu'il faut revoir vos chemins.

Nous sommes prêts à attaquer la compilation du bios, ou presque :)

Créons un dossier dans lequel nous allons télécharger puis compiler les sources. Pour un raison pratique, j'ai choisi de mettre ce dossier à coté de mes disques virtuels de Mac OS 9 dédiés à Qemu

cd ~/Documents/qemu/
mkdir openBios
cd openBios

puis téléchargeons fcode, une suite d'outils nécessaires à la compilation de notre objectif final. Les sources se trouvent sur gihub et grâce à l'outil Git, l'installation va être très simple

git clone https://github.com/openbios/fcode-utils.git
cd fcode-utils
make
make install

avec comme résultat

make install
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C toke install
mkdir -p /usr/local/bin
cp toke /usr/local/bin/toke
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C detok install
mkdir -p /usr/local/bin
cp detok /usr/local/bin/detok
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C romheaders install
mkdir -p /usr/local/bin

revenons dans notre dossier

cd ..

puis téléchargeons les sources de l'OpenBios (enfin!), toujours depuis Git

git clone https://github.com/openbios/openbios.git

puis entrons dans le dossier

cd openbios

pour continuer, il faut modifier le fichier Makefile avec votre éditeur de texte préféré, pour commenter la ligne 32

"CFLAGS+= -Werror"

avec un # en début de ligne

#"CFLAGS+= -Werror"

enregistrons et quittons l'éditeur.

Édition du Makefile pour l'adapter à la compilation sur macOS

Et finalement lançons la compilation de notre firmware :

CROSS_COMPILE=ppc-elf- ./config/scripts/switch-arch ppc && make build-verbose

qui devrait se terminer par

LINK  openbios-qemu.elf
GEN   openbios-qemu.elf.syms
STRIP openbios-qemu.elf

Votre firmware fraichement compilé se trouve dans le dossier

obj-ppc/openbios-qemu.elf

Comme je préfère ne pas toucher à l'installation automatique de Qemu par Brew, et que je souhaite toujours, et simplement, avoir accès au bios, si d'aventure je compile de nouvelles versions, je fais un alias que je mets dans le dossier principal

cd ~/Documents/qemu/
ln -s openBios/openbios/obj-ppc/openbios-qemu.elf

Et maintenant je peux lancer mon Mac OS 9 sur Qemu avec la dernière version du firmware. Pour cela il faut modifier légèrement la commande pour y indiquer le bios que l'on souhaite utiliser

qemu-system-ppc -bios openbios-qemu.elf -boot c -m 256 -M mac99 -prom-env "auto-boot?=true" -prom-env  "boot-args=-v" -drive file=MacOS9-fr.img,format=raw,media=disk -drive file=Shared.img,format=raw,media=disk -device usb-mouse -device usb-kbd

Dès l'ouverture de l'émulateur, à l'affichage du bios, vous devriez avoir la version qui s'affiche à la date du jour.

Version de l'OpenBios compilé par nos soins


Sources :

  • OpenBios sur OpenFirmware
  • Page spécifique à macOS

PS: Peut-être êtes-vous désormais prêt à tenter de mettre QEmu en réseau ?

Dossiers

  • Compiler et lancer DobieStation sur macOS
  • Débuter avec MAME sur macOS - Partie 1 - Introduction
  • Débuter avec MAME sur macOS - Partie 2 - Installation et configuration
  • Débuter avec MAME sur macOS - Partie 3 - La mémoire du jeu vidéo
  • Interview de Brad Oliver
  • L'interpréteur pour jouer nativement
  • Manipuler les images disques sous OSX (iso, dmg, bin, cue, et autres)
  • Neo Geo Arcade Stick Pro
  • Relancer ses applications OSX 32bits avec Virtualbox
  • Sigles et Abréviations
  • Bandai Pippin by Apple
  • BasiliskII et Mac OS 7/8 en 68k
  • Brad Oliver Interview (English)
  • Brancher sa manette avec ou sans fil sur macOS (Bluetooth, USB, PS3/PS4, Xbox/360/One, Wii)
  • Bungie - Le triste coup de maître de Microsoft
  • Compilation d'émulateurs (MAME)
  • Compiler son OpenBios pour Qemu sur macOS
  • DeSmuME, un émulateur de Nintendo DS
  • DosBox - Tutoriel
  • Débuter avec MAME sur macOS - Partie 4 - Aller plus loin avec les lignes de commande
  • Débuter avec MAME sur macOS - Partie 5 - Réglages graphiques
  • Débuter avec MAME sur macOS - Partie 5b - Simuler l'affichage d'un écran cathodique
  • Débuter avec MAME sur macOS - Partie 5b - Simuler l'affichage d'un écran cathodique
  • Débuter avec MAME sur macOS - Partie 6 - Vérification simple des ROMs
  • Débuter avec MAME sur macOS - Partie 7 - Vérification avancée des ROMs
  • Débuter avec MAME sur macOS - Partie 8 - Tri des ROMs par genres et catégories
  • Découvrir l'émulation sur macOS avec OpenEmu
  • Démarrer avec Redream
  • Emulation Playstation sous OSX
  • Emulation antérieure à MacOS X (sur MacOS 7/8/9)
  • GnGeo - Installation et utilisation
  • Graver des jeux Homebrew pour Dreamcast
  • Guest PC, le test
  • Guide pour débutant en émulation sur MacOS Classic (Mac OS 8 et Mac OS 9)
  • Guide pour débutants en émulation sur Mac OS X
  • Initiation à l'émulation d'un Amiga avec FS-UAE
  • Installation d'une RetroPie
  • Installer MacOS 9.2.2 sur QEMU
  • Installer PCSX2
  • Internet sur OS7, OS8 et OS9 via Basilisk et Sheepshaver
  • Jouer à Diablo nativement sur macOS
  • Jouer à Red Alert nativement sur macOS
  • Jouer à Rollercoaster Tycoon 2 nativement sur macOS
  • L'installation d'émulateurs sur iOS
  • La naissance de l'Amiga
  • Les applications Windows sur macOS avec Wine (WineBottler, Wineskin Winery, PlayOnMac et CrossOver)
  • Les multi-machines (Mess, Mednafen, Retroarch, OpenEmu etc.)
  • Les vieux OS de Microsoft sous OSX
  • Mettre Mac OS 9 en réseau à travers Qemu ou SheepShaver
  • Mini vMac
  • OpenMSX - tutoriel
  • PCSX, tutoriel sur son utilisation
  • Parallels Desktop, un émulateur Windows "NextGen"
  • PearPC ou un Mac OS X PPC sous Intel
  • Présentation de Darwine
  • Qu'est-ce que l'émulation ?
  • Quel logiciel pour jouer sur MAME ?
  • Réaliser une compilation de SBI pour Dreamcast
  • SNK ou l'arcade à la maison
  • ScummVM - Tutoriel
  • SheepShaver : Un Mac dans votre Mac
  • SheepShaver : quelques astuces
  • Tous les chemins mènent aux ROMs
  • USB Overdrive : mode d'emploi
  • Utilisation du terminal
  • Utiliser rsync pour mettre à  jour sa collection de ROMs MAME.
  • Virtualbox et nos anciens Mac OS X
  • Yabause - Installation
  • dosbox.conf, le fichier de configuration DOSBox
  • Émulation : Explication de la nomenclature des ROMs
  • Émulation Dreamcast, tutoriel pour lxdream.

contenu connexe

  • Sideloading : Installer Delta sur iOS avec AltServer

    NES, Super Nintendo
  • Débuter avec MAME sur macOS - Partie 8 - Tri des ROMs par genres et catégories

    Arcade, Amstrad CPC
  • Débuter avec MAME sur macOS - Partie 8 - Tri des ROMs par genres et catégories

    Arcade
  • Compiler et lancer DobieStation sur macOS

    PlayStation 2
  • Relancer ses applications OSX 32bits avec Virtualbox

    IBM PC, Windows
Flux RSS

Menu secondaire

  • Accueil
  • Credits
  • Liens
  • Rechercher un émulateur