SheepShaver est le principal émulateur open source de vieux Macs sur des machines x86. Le problème est que le code source n’ayant pas été mis à jour, même une compilation ne permet pas d’avoir un émulateur fonctionnel, sur une Linux récent.
Après avoir essayé, sans succès, de nombreuses astuces aussi verbeuses qu’approximativement documentées, je n’ai eu d’autre solution que d’en trouver une par moi-même.
Machine virtuelle
Puisque SheepShaver se compilait correctement sur d’ancienne versions de Linux, il m’a paru logique d’installer une ancienne version Linux. Le but étant de disposer d’un Mac sur mon bureau Linux, le multi-boot Linux (ancienne et nouvelle version), suggéré ici ou là, ne répond pas au cahier des charges.
Ma solution à consisté à utiliser un virtualiseur adapté au fonctionnement dans l’environnement de bureau. SheepShaver tourne alors sur une machine Linux virtuelle. Le système Mac (Classic) tourne sur l’émulateur. Il y a donc bien deux environnements virtuels emboîtés. Cela peut sembler compliqué mais c’est, au contraire, très pratique. D’une part, les exigences système de SheepShaver sont cantonnées dans une machine virtuelle dédiée à cette seule tâche. D’autre part, votre Mac (virtuel) se déplace aussi facilement qu’une machine virtuelle.
J’ai donc créé une machine virtuelle x86 32 bits sur Virtualbox. J’y ai installé Ubuntu 8.04.
Quelques petits ajustements sont nécessaires afin de peaufiner l’intégration de ma machine virtuelle :
installer les « guest addtions »
éditer /etc/X11/xorg.conf
L’installation des guest additions est standard :
depuis le menu de la machine virtuelle, demander l’installation (monte une image de CD sur le bureau)
depuis une console, lancer le script d’installation.
sudo /media/cdrom/VBoxLinuxAdditions-x86.runL’intervention sur le fichier xorg.conf revient à ajouter une ligne dans la section device pour qu’elle ressemble à ce qui suit :
Section "Device"
Identifier "Configured Video Device"
Driver "vboxvideo"
EndSectionCompiler SheepShaver
Le plus propre est de compiler SheepShaver depuis les sources originaux. La page officielle explique comment récupérer le code source, via subversion. S’ARRÊTER APRÈS LA RÉCUPÉRATION.
Si vous ne passez pas votre vie à compiler, vous aurez certainement besoin d’installer de paquets de base qui ont été oubliés dans les tutos
sudo apt-get install linux-kernel-headers linux-kernel-develPour la suite des opération, il vaut mieux se reporter à un tutoriel indiquant quels sont les applications et bibliothèques indispensables pour compiler SheepShaver.
Lancer SheeShaver
À partir de point, nous travaillons sur la machine virtuelle Linux.
En l’état, SheepShaver devrait planter en affichant un message d’erreur. C’est du à un problème de protection mémoire que l’on va régler.
Dans une console on tape la commande suivante :
sudo sysctl -w vm.mmap_min_addr=0Puis on relance SheepShaver afin de s’assurer que le problème est réglé.
On règle le problème définitivement modifiant un fichier de configuration :
sudo nano /etc/syscl.confPuis on modifie la ligne concernée pour ressembler à celle-ci :
vm.mmap_min_addr = 0Une fois enregistrée, la modification sera prise en compte à chaque redémarrage de la machine virtuelle.
Clavier azerty
Comme d’habitude, l’informatique est internationale, surtout en anglais. Pour changer de clavier, SheepShaver hérite des fichiers de configuration keycodes de BasiliskII.
Un contributeur francophone propose un tel fichier, tout préparé, sous la forme d’une archive zip.
Mais, pas de chance, on ne peut pas les utiliser en l’état. On peut essayer mais on risque de recevoir un message d’avertissement et de rester avec un clavier qwerty, votre fichier keycodes étant ignoré.
L’astuce consiste alors à remplacer le début du fichier (après les commentaires) pour qu’il ressemble à ça :
#
# X.Org
#
The X.Org Foundation
9 53 # Esc
67 122 # F1
68 120 # F2En gros, remplacer d’éventuelles instructions savantes du style "sdl x11" et/ou "sdl dga" par le texte "The X.Org Foundation". C’est très bête, mais ça fonctionne...
Le réseau
Bien que la machine virtuelle Linux soit parfaitement intégrée au réseau, je ne suis pas parvenu à exploiter les possibilités réseaux de Mac OS.
En pratique, je n’ai pas réussi à compiler le module réseau (sheep_net) de SheepShaver [1]. Cette impossibilité découle de ce qu’Ubuntu 8.04 est encore trop récent pour cette partie du code de SheepShaver.
Un fonctionnement sans réseau étant suffisant pour l’objectif que je m’étais fixé, je n’ai pas poursuivi plus loin mes investigations. Mais, partant de cette base, il ne doit pas être trop compliqué de parvenir à faire fonctionner le réseau. Deux pistes s’ouvrent…
Dans le fatras des contributions portant sur la manière de faire SheepShaver, il doit être possible de faire le tri, en se concentrant sur le problème de réseau. Le but serait alors de trouver un patch des sources de SheepShaver réglant le problème d’incompatibilité avec les noyau Linux d’Ubuntu 8.04 (hardy) [2].
Si cette solution s’avère trop compliquée à mettre en œuvre, on doit pouvoir éviter le problème de compatibilité en reprenant la procédure, avec une version encore plus ancienne d’Ubuntu (ou d’une distribution Linux avec laquelle vous êtres à l’aise).
Asdrad TORRES