Accueil du site > Technique en vrac > SheepShaver sur un Linux Récent

SheepShaver sur un Linux Récent

octobre 2011

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.run

L’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"
EndSection

Compiler 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-devel

Pour 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=0

Puis 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.conf

Puis on modifie la ligne concernée pour ressembler à celle-ci :

vm.mmap_min_addr = 0

Une 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        # F2

En 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 [3]. 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) [4].

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).

Notes

[1] Qui n’est autre que celui de BasiliskII

[2] J’ai bien trouvé une version des sheep_net.c qui compilait mais le module résultant ne se chargeait pas.

[3] Qui n’est autre que celui de BasiliskII

[4] J’ai bien trouvé une version des sheep_net.c qui compilait mais le module résultant ne se chargeait pas.