UTM - Machine virtuelle pour iOS et macOS
(github.com/utmapp)- UTM est à la fois un émulateur système et un hôte de machine virtuelle fonctionnant sur iOS et macOS. Basé sur QEMU, il permet d’exécuter Windows, Linux et d’autres systèmes sur Mac, iPhone et iPad.
- Grâce à l’émulation complète du système avec QEMU, il gère la MMU, les périphériques, etc., et prend en charge plus de 30 processeurs, dont x86_64, ARM64 et RISC-V.
- Le mode graphique VGA utilise SPICE et QXL, avec prise en charge du mode terminal texte, des périphériques USB et de l’accélération JIT basée sur QEMU TCG.
- Son frontend pour macOS 11 et iOS 11+ permet de créer, gérer et exécuter des VM directement sur l’appareil.
- Sur macOS, il prend en charge la virtualisation accélérée matériellement via Hypervisor.framework et QEMU, et permet de démarrer des invités macOS avec Virtualization.framework à partir de macOS 12+.
- UTM SE est une « slow edition » pour iOS qui peut être sideloadée comme une application classique, sans jailbreak ni contournement JIT. Elle utilise un threaded interpreter, plus rapide qu’un interpréteur traditionnel mais plus lent que le JIT.
- UTM/QEMU nécessite la génération dynamique de code (JIT) pour offrir les meilleures performances, et sur les appareils iOS, le JIT requiert un jailbreak ou une méthode de contournement propre à certaines versions d’iOS.
- UTM SE n’inclut que les architectures ARM, PPC, RISC-V et x86, avec des variantes 32 bits et 64 bits pour chacune, afin d’optimiser la taille et le temps de compilation.
- Les instructions d’installation de UTM et UTM SE pour iOS sont disponibles sur https://getutm.app/install/, et UTM pour macOS est proposé sur https://mac.getutm.app/.
- Le projet est distribué sous licence Apache 2.0, mais utilise plusieurs composants sous licence (L)GPL ; il faut aussi tenir compte du fait que les plugins gstreamer sont liés statiquement et qu’une partie du code provient de qemu en cas de redistribution.
1 commentaires
Avis sur Hacker News
Il y a quelques semaines, sur un nouveau M2 avec macOS Ventura, j’ai essayé d’installer Windows 11 ARM avec UTM pour remplacer Fusion, et j’ai été déçu
Les outils d’intégration comme le copier/coller ou le partage de fichiers entre la machine virtuelle et l’hôte ne fonctionnaient pas, et l’affichage se corrompait sans arrêt avant de souvent basculer sur un écran gris
Il ne semblait y avoir aucun moyen de récupérer la situation, donc je devais redémarrer de force la machine virtuelle, et les pilotes/outils auxiliaires étaient aussi datés de 2012
Comme c’est un produit gratuit, je n’ai pas le droit d’exiger quoi que ce soit, et je suis effectivement retourné à Fusion, mais en tant que personne qui espérait voir une solution open source remplacer les solutions commerciales de virtualisation, je pense que ce n’est pas encore ça
https://docs.getutm.app/guest-support/windows/#windows-xp-an...
Je n’ai pas non plus vu de bug graphique, mais je ne cherche pas à jouer : je n’utilise que des applis de bureau basiques
Correction : Fusion 2023 Tech Preview [1] installe VMware Tools au complet et prend en charge le copier/coller
UTM est excellent, et si une fonction de snapshots est ajoutée [1], je pense que j’en ferai ma recommandation par défaut. D’ici là, je continuerai à utiliser Parallels
À noter qu’il existe un gestionnaire de snapshots non officiel [2]
1: https://github.com/utmapp/UTM/issues/5484
2: https://github.com/Metamogul/UTM-Snapshot-Manager
Le problème le plus fréquent était que le dossier partagé disparaissait soudainement de la VM invitée, et qu’il fallait souvent recourir à des contournements pour le faire revenir
Ensuite, VMWare Fusion avait le même problème, et Parallels me paraissait trop cher, donc je suis passé à Lima
Je suis content d’avoir découvert Lima. C’est aussi basé sur QEMU, cela permet de lancer facilement des VM Linux et le partage réseau est fourni par défaut
Aujourd’hui, je fais tout mon développement dans des VM Lima, et je n’ai pas eu de problème. Je pourrais aussi rediriger l’affichage si nécessaire, mais pour l’instant, grâce à VSCode, une instance headless me suffit
Cela pourrait être aussi simple que
cp -cCela dit, si c’était vraiment le cas, on pourrait penser que ce serait déjà implémenté
clonefile, mais l’implémentation en cours utilise justement cette méthodeLe plus gros problème d’UTM, c’est qu’il fonctionne très bien pour certains et horriblement pour d’autres
Si l’on parcourt ce fil de haut en bas, on voit à la fois beaucoup de messages du type « je veux utiliser UTM, mais il ne fonctionne pas ou il est trop lent pour être utilisable » et des réponses du genre « bizarre, chez moi ça marche »
Dans mon cas, UTM n’a littéralement jamais fonctionné correctement. Sur un Mac M1 de 2021, j’ai essayé une installation standard d’Ubuntu ARM en suivant le guide https://docs.getutm.app/guides/ubuntu/, et ça a échoué ; pour l’instant, je ne vois qu’un écran noir avec un curseur clignotant
Malheureusement, les personnes chez qui ça marche peuvent rarement apporter une aide technique concrète à celles chez qui ça ne marche pas
J’ai même payé 10 dollars pour UTM sur le Mac App Store, mais le seul canal de support technique est Discord, où l’on trouve beaucoup de réactions du genre « lol chez moi ça marche, problème de compétence »
Ma recommandation : UTM vaut le coup d’être essayé. Si ça vous convient, vous pouvez économiser pas mal d’argent ; si, comme moi, ça ne marche pas du tout, vous finirez par payer Parallels 100 dollars par an. Parallels a de bonnes chances de fonctionner tout simplement
Et si Parallels ne marche pas, vous pouvez parler directement à une entreprise qui a intérêt à vous faire renouveler votre licence, et donc une motivation à vous aider à réussir
Si l’on définit le disque de démarrage de la VM au-delà d’une certaine taille — pas énorme, il me semble que c’était autour de 30 à 100 Go — le démarrage de la VM devient très lent
Si on le met assez grand, elle ne démarre plus du tout. Ajouter un second disque, quelle que soit sa taille, ne déclenche pas ce bug
Au travail, on m’a fourni un MacBook Pro M1, mais je développe entièrement sous Linux. Depuis la fin des années 90, Linux est mon environnement de prédilection
Le matériel du MacBook Pro est bon, mais macOS est lourd et frustrant, ce qui plombe beaucoup ma productivité
Du coup, je lance Fedora aarch64 en plein écran dans UTM. Ça fonctionne plutôt bien, et j’oublie souvent que je suis sur un Mac
J’aimerais juste que macOS ne vienne pas s’en mêler et ne me fasse pas parfois sortir du mode plein écran
J’ai fini par m’adapter parce que ce serait dommage de se priver d’une autonomie aussi fiable
Il existe peut-être quelque part une solution pour rester en mode plein écran
Il arrive qu’un utilitaire ne prenne pas en charge des arguments de ligne de commande familiers, mais c’est davantage une différence de version qu’un problème Mac/Linux, et je l’ai déjà rencontré plusieurs fois en passant à d’autres machines dans la même entreprise
Le plus gros souci, sans être énorme, est la différence entre ARM et x86. On tombe parfois sur des paquets non pris en charge sur ARM, mais c’est de plus en plus rare
UTM a été pour moi un hyperviseur fiable ces deux dernières années, et il a reçu entre-temps plusieurs excellentes améliorations de fonctionnalités
Cela dit, ce que je préfère dans UTM, c’est que le nom signifie Universal Turing Machine. Pour un produit de virtualisation, c’est presque le nom parfait
Ce que je n’aime pas dans Parallels et VMWare, c’est qu’ils poussent trop loin l’intégration entre systèmes d’exploitation. Par exemple, ouvrir des fenêtres Windows depuis macOS, ou ouvrir directement des documents macOS dans Windows
Je préfère que mes machines virtuelles restent isolées de mon macOS principal. Je dois donc toujours fouiller dans les réglages pour trouver quoi désactiver
Je sais que la description du projet GitHub indique « for iOS », mais je trouve que c’est une formulation assez trompeuse
Les options d’installation sur iOS reposent essentiellement soit sur le jailbreak, soit sur une méthode impossible avec les CPU/versions iOS récents, soit sur un mode semi-tethered où il faut recharger/resigner l’app tous les quelques jours
https://docs.getutm.app/installation/ios/#summary
Il n’est pas nécessaire de réinstaller l’app elle-même, il suffit de renouveler le certificat de signature
Quand le sideloading sera mis en œuvre dans l’EEE, ce sera beaucoup plus simple, donc j’ai hâte
Apple a réussi à fabriquer du matériel pouvant être distribué à plus d’un milliard de personnes, et même si beaucoup d’entre elles auraient quelque chose à gagner avec le jailbreak, personne n’y est parvenu
Ça fonctionne aussi sans cette méthode, mais c’est la plus lente des trois façons de lancer l’app
Si vous faites tourner une machine virtuelle sur Mac pour un environnement de développement, ce qu’il vous faut, c’est OrbStack : https://orbstack.dev/
https://lima-vm.io/
https://github.com/abiosoft/colima
On m’a recommandé Lima, qui ressemble un peu à WSL2 pour macOS : https://lima-vm.io
Je ne sais pas très bien ce qu’il utilise en interne, mais chez moi ça a très bien fonctionné
colima est une couche au-dessus de Lima, qui permet de configurer facilement une machine virtuelle dans le style docker-machine/boot2docker
UTM est excellent pour les usages de base, mais ses performances étaient trop mauvaises pour en faire réellement mon outil principal au quotidien
Sur Mac, rien ne bat Parallels, et il vaut largement son prix
Si la machine virtuelle est en aarch64, les performances sont étonnamment bonnes, et je peux vivement recommander UTM