Skip to content
Retour au blog

Faire la majeure GISTRE sur macOS (Apple Silicon)

13 février 2025 · 7 min de lecture

macOSApple SiliconGISTREEPITA

J'ai écrit ces notes à l'origine pour la documentation interne de la majeure GISTRE à l'EPITA. GISTRE, c'est le bas niveau et la conception de plateformes : systèmes, infrastructure, embarqué. Beaucoup pensaient qu'il était impossible de suivre les cours et projets sur Mac. Je n'ai eu aucun blocage majeur — voici comment. Le contenu exact des projets évolue d'une promotion à l'autre, donc certains détails ci-dessous (comme les projets cités) ont pu changer depuis.

Introduction

Est-il possible de faire toute la majeure GISTRE sur Mac ? La réponse est oui (99,999999 % du temps). Il y a quelques exceptions, et je vais donner ici quelques astuces pour s'en sortir avec son Mac.

Architecture processeur

Il existe aujourd'hui sur le marché deux types de processeurs sur Mac : Intel et Apple Silicon (ARM).

J'ai fait la majeure sur un MacBook Pro 2020 avec un processeur Apple Silicon M1, sans plus de soucis que sur un processeur Intel. (Je suis passé sur un MacBook M5 Pro depuis, mais toute l'expérience décrite ici s'est faite sur ce M1.) En tant qu'étudiant GISTRE, j'ai pu faire tous les projets sur ce Mac, sauf un : le projet d'HTS. Il fallait recompiler le noyau OpenBSD sous x86_64, et l'émulation était trop lente — j'ai préféré utiliser un serveur SSH.

HTS mis à part, deux cas de figure s'offraient :

  • Le plus simple : les applications/binaires/toolchains étaient disponibles pour macOS (à minima pour x86_64, ou mieux encore pour Apple Silicon).
  • Le deuxième cas : elles n'étaient disponibles que sur les distributions Linux. Le projet VHDL demande une VM Windows pour Quartus, mais c'est un autre sujet.

Techniques

Voici maintenant quelques conseils pour réussir GISTRE sur macOS.

Natif

La première solution est d'utiliser macOS nativement avec les outils déjà intégrés. La plupart des logiciels sont compilés pour macOS (Intel et, de plus en plus, Apple Silicon). Si votre programme est déjà disponible sur macOS, vous n'avez rien à faire, tout fonctionne directement.

Homebrew

Homebrew est un gestionnaire de paquets très pratique pour installer des logiciels sur macOS. Plus d'infos sur le site officiel.

Attention

Homebrew met à jour toutes les dépendances lors de l'installation d'un nouveau paquet, ce qui peut casser des installations existantes — soyez vigilant.

Nix-darwin

Une alternative intéressante à Homebrew est Nix-darwin, qui permet d'utiliser la puissance de Nix pour gérer ses paquets de manière plus stable. Plus d'infos sur le site officiel.

Attention

Nix est plus complexe que Homebrew, mais il casse moins souvent les dépendances — de nombreux flakes/shells prêts à l'emploi existent pour les différents cours de la majeure.

Il semble qu'il soit possible de faire cohabiter Homebrew et Nix, mais je ne l'ai pas testé.

Émulation x86_64

Si vous avez un Mac Apple Silicon, les logiciels x86_64 ne fonctionneront pas nativement. Heureusement, il existe plusieurs solutions pour les exécuter.

Rosetta 2

Rosetta 2 est une couche de compatibilité permettant d'exécuter des applications x86_64 sur processeur ARM. Il est très performant, mais ne peut pas tout émuler — certains logiciels peuvent ne pas fonctionner. Je l'utilise au quotidien, avec très peu de pertes de performance sur mes applications x86_64.

Installation :

softwareupdate --install-rosetta --agree-to-license

Redémarrez votre Mac après l'installation.

La plupart des applications x86_64 se lancent automatiquement avec Rosetta 2. Si ce n'est pas le cas, vous pouvez forcer l'application à se lancer avec Rosetta 2 en faisant un clic droit sur l'application depuis Finder → Informations → Ouvrir avec Rosetta. Si l'option n'est pas présente, c'est que l'application est déjà en ARM.

Astuce

Faites une copie de votre application de terminal et activez Rosetta 2 pour la copie : vous aurez ainsi un terminal x86_64 et un terminal ARM. Testez arch pour vérifier lequel tourne où.

QEMU

QEMU est un émulateur de processeur, très performant, qui permet d'émuler un processeur x86_64 sur un processeur ARM.

Retour d'expérience

Performant mais plus complexe à configurer que Rosetta 2. Surtout utile pour exécuter des machines virtuelles.

Containers

Docker Desktop (natif)

Docker est un must-have pour exécuter des applications en conteneurs, sans impacter le reste du système.

Quand je n'arrive pas à faire tourner un programme nativement, je le fais tourner dans un container Docker. Je ne rentre pas ici dans les détails de l'utilisation de base de Docker, mais je vous conseille de vous renseigner sur le sujet. Voici un exemple de commande utile :

# --rm pour supprimer le container après l'arrêt
# -it pour avoir un terminal interactif (comme un terminal normal)
# -v pour monter un volume (ici le dossier courant), pour partager des fichiers entre le container et le host
# -p pour exposer un port (ici le port 8000) du container sur le host (host:container)
docker run -it --rm -v $PWD:/app -p 8000:8000 ubuntu:latest

Astuce

Pour éviter de retélécharger les dépendances à chaque build, utilisez une image personnalisée avec un Dockerfile.

Pour de l'embarqué, ce n'est pas la solution idéale, car le container n'a pas accès aux périphériques de la machine hôte. Pour le reste, c'est presque parfait.

Docker (émulation avec Rosetta 2)

Il est possible de faire tourner des containers x86_64 sur un processeur ARM avec Docker, en utilisant Rosetta 2.

Configuration :

  1. Allez dans Docker Desktop → General → Virtual Machine Options.
  2. Cochez Use Rosetta for x86_64/amd64 emulation on Apple Silicon.
  3. Appliquez et redémarrez Docker Desktop.

(Les menus de Docker Desktop sont parfois réorganisés d'une version à l'autre — cherchez un réglage équivalent si ce chemin ne correspond plus exactement.)

Exécution d'un conteneur x86_64 :

docker run --platform linux/amd64 -it --rm ubuntu:latest
docker build --platform linux/amd64 -t mon_image .

Vous aurez un warning à chaque fois que vous ferez tourner un container x86_64 (qui auparavant était une erreur), mais c'est normal.

Machines virtuelles

Si l'exécution native ou en conteneur ne fonctionne pas, une machine virtuelle peut être la solution.

VM ARM

Parmi les options possibles :

  • UTM (gratuit hors App Store)
  • VirtualBox (gratuit)
  • Parallels Desktop (payant, avec un tarif étudiant)
  • VMware Fusion (payant)

J'ai personnellement utilisé Parallels (VirtualBox et VMware ne supportaient pas ARM à l'époque) : c'est cher, mais son intégration sur Mac est bien faite.

Astuce

Windows 11 ARM (compatible avec Parallels) propose une alternative à Rosetta 2 pour les logiciels Windows x86_64 — performances correctes, sans plus. Exemple concret : Quartus, pour le cours de VHDL.

VM émulée

Options testées :

  • UTM (interface graphique pour QEMU)
  • QEMU (ligne de commande)
  • Parallels Desktop (intègre Rosetta 2)

UTM utilise QEMU avec une UI, pour éviter de se casser la tête avec la ligne de commande. Sur mes deux essais, les performances n'étaient pas au rendez-vous (une des deux VMs n'a jamais fini de démarrer), mais un camarade de promo a réussi à faire tourner un noyau Linux x86_64 avec UTM de manière fluide. L'association EpiMac a également écrit un article sur comment utiliser UTM pour faire tourner Linux x86_64 sur un Mac Apple Silicon : lien. Parallels pour l'émulation de VM x86_64 est correct.

À réserver aux VMs Linux : Windows 11 ARM fait déjà tourner les logiciels Windows x86_64 nativement (via son propre équivalent de Rosetta).

Pour aller plus loin

Asahi Linux

Asahi Linux est un projet open-source qui vise à porter Linux sur les Mac Apple Silicon. Très intéressant à suivre — le projet avance vite, vérifiez son état actuel au moment de votre lecture. L'association EpiMac a écrit un article sur le sujet : lien.

La débrouillardise

Si vous en arrivez là, c'est que vous êtes vraiment coincé (ou sur le projet OpenBSD). Dans les techniques de dernier recours, il y a le serveur SSH — le 0,000001 % du temps où rien ne marche et où vous avez besoin d'un Linux x86_64. N'oubliez pas non plus que la plupart des projets se font en groupe, donc vous pouvez toujours demander de l'aide à vos camarades.

Conclusion

Faire la majeure GISTRE sur macOS est tout à fait possible, que votre Mac soit Intel ou Apple Silicon. Entre solutions natives, émulation, conteneurs et VM, les options ne manquent pas pour faire fonctionner vos outils.

Si vous avez des questions, n'hésitez pas à me contacter.