3 points par GN⁺ 2023-09-02 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2023-09-02
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

    • Le copier/coller fonctionne clairement. Je l’utilise toute la journée dans les deux sens. Il faut vérifier que les outils SPICE sont bien installés
      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
    • J’utilise UTM comme un très bon wrapper QEMU, et pris comme ça, il est excellent
    • Je me demande si le copier/coller et les dossiers partagés fonctionnent dans Fusion avec une VM Windows ARM. La dernière fois que j’ai vérifié, VMware Tools ne prenait pas encore ces fonctions en charge
      Correction : Fusion 2023 Tech Preview [1] installe VMware Tools au complet et prend en charge le copier/coller
      1. https://customerconnect.vmware.com/downloads/get-download?do...
    • Ce n’est pas surprenant. C’est parce que OpenGL ne fonctionne pas. Vu le nombre d’apps qui utilisent OpenGL aujourd’hui, cela le rend assez peu utile
    • Se connecter avec les outils MS RDP pourrait offrir une meilleure expérience
  • 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

    • J’ai gardé l’habitude de développer dans une machine virtuelle plutôt que sur le système réel, et j’ai longtemps utilisé UTM pour faire tourner une machine virtuelle ARM64 Linux sur un MacBook Pro M1, mais les problèmes de partage de fichiers m’ont constamment embêté
      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
    • APFS prend déjà en charge les snapshots en copie à l’écriture pour tous les types de fichiers. La fonction de snapshots d’UTM sera sans doute une couche autour de cette capacité
      Cela pourrait être aussi simple que cp -c
      Cela dit, si c’était vraiment le cas, on pourrait penser que ce serait déjà implémenté
    • J’allais dire que j’avais réussi à simuler une forme limitée de snapshot avec clonefile, mais l’implémentation en cours utilise justement cette méthode
    • Je me demande s’il prend en charge l’émulation TPM et ansible/vagrabt
  • Le 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

    • J’ai essayé la dernière version de Debian téléchargée depuis le site web et, à part un problème étrange, je n’ai pas eu de souci
      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
    • Il y a aussi VirtualBox
  • 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

    • Je vais clairement garder un œil sur Fedora Asahi Linux
    • Passer de Linux à macOS revient au final soit à supporter les problèmes de macOS et s’y adapter, soit à les rendre supportables avec des solutions tierces. On finit parfois par faire un peu des deux
      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
    • Je suis curieux de savoir ce qui, concrètement, fait baisser ta productivité. Sur Mac, avec un terminal bash, j’ai l’impression que c’est presque pareil que Linux
      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
    • Je me demande quelle perte de performances tu observes avec cette utilisation. Si elle n’est pas importante, ça ressemble à une bonne solution
    • Asahi Fedora est annoncé pour dans quelques jours. Il y a de l’espoir
  • 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

    • Dans Parallels, il existe une option unique dans l’onglet des réglages de sécurité, « Isolate VM from macOS ». Elle désactive toutes les intégrations mutuelles
    • Je me souviens de l’époque où j’avais installé Parallels. À chaque double-clic sur un fichier, il essayait sans cesse de l’ouvrir avec Notepad sous Windows
  • 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

    • Avec un compte développeur Apple, on peut sideload une app valable pendant un an. C’est comme ça que je l’utilise
    • J’avais essayé autrefois une app appelée reprosion, qui permet de gérer la signature directement sur l’appareil iOS et même de l’automatiser. Je l’utilisais pour installer un jailbreak semi-tethered, avec une limite de 7 jours
      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
    • Quand on pense que « le jailbreak est impossible sur les environnements récents », c’est impressionnant
      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
    • Si l’objectif se limite au sideloading d’apps, le mode semi-tethered peut même paraître moins louche que le jailbreak
      Ça fonctionne aussi sans cette méthode, mais c’est la plus lente des trois façons de lancer l’app
    • J’ai vraiment envie de voir comment fonctionnera le sideloading dans l’UE. J’espère qu’il sera bien implémenté
  • 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/

    • Une fois la bêta terminée, l’usage commercial coûtera 8 dollars par développeur et par mois
    • Pour la plupart des cas d’usage, Lima et Colima suffisent selon moi
      https://lima-vm.io/
      https://github.com/abiosoft/colima
    • Pour un outil qui met en avant ses avantages avec une formule comme celle-ci, l’absence de prise en charge de vagrant se remarque

      Quel que soit votre cas d’usage, OrbStack fournit des fonctionnalités qui simplifient votre workflow et vous aident à avancer plus vite

    • Je me demande si l’on peut créer avec ça des configurations réseau complexes. Mon plus gros reproche à UTM, c’est qu’on ne peut attribuer qu’une seule interface réseau à une machine virtuelle
  • 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é

    • Lors de la création d’une machine virtuelle, on peut choisir entre QEMU et Virtualization.framework
      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 l’on fait tourner une machine virtuelle x86 sur Apple Silicon, je suis d’accord que les performances sont désastreuses. Je suis convaincu que c’est davantage un problème de QEMU qu’une faute d’UTM
      Si la machine virtuelle est en aarch64, les performances sont étonnamment bonnes, et je peux vivement recommander UTM