UTM - máquina virtual para iOS y macOS
(github.com/utmapp)- UTM es un emulador de sistema y host de máquinas virtuales que funciona en iOS y macOS; está basado en QEMU y permite ejecutar Windows, Linux y otros sistemas en Mac, iPhone y iPad
- Con la emulación completa del sistema usando QEMU, maneja la MMU y los dispositivos, y soporta más de 30 procesadores, incluidos x86_64, ARM64 y RISC-V
- El modo gráfico VGA usa SPICE y QXL, y ofrece modo de terminal de texto, dispositivos USB y aceleración JIT basada en QEMU TCG
- Como frontend para macOS 11 e iOS 11+, permite crear, administrar y ejecutar VM en el dispositivo
- En macOS, soporta virtualización acelerada por hardware usando Hypervisor.framework y QEMU, y en macOS 12+ puede arrancar huéspedes macOS con Virtualization.framework
- UTM SE es una “edición lenta” que puede cargarse por sideload en iOS como una app normal sin jailbreak ni bypass de JIT; usa un threaded interpreter, más rápido que un intérprete tradicional pero más lento que JIT
- UTM/QEMU requiere generación dinámica de código (JIT) para obtener el máximo rendimiento, y en dispositivos iOS el JIT necesita jailbreak o métodos de bypass para versiones específicas de iOS
- UTM SE incluye solo las arquitecturas ARM, PPC, RISC-V y x86, con variantes de 32 y 64 bits para cada una, para optimizar tamaño y tiempo de compilación
- La guía de instalación de UTM y UTM SE para iOS está disponible en https://getutm.app/install/ y UTM para macOS en https://mac.getutm.app/
- Se distribuye bajo licencia Apache 2.0, pero usa varios componentes (L)GPL; al redistribuir, hay que considerar que el plugin de gstreamer se enlaza estáticamente y que parte del código proviene de qemu
1 comentarios
Opiniones de Hacker News
Hace unas semanas intenté instalar Windows 11 ARM con UTM en una M2 nueva con macOS Ventura, para reemplazar Fusion, y fue decepcionante.
Las herramientas de integración, como copiar/pegar o compartir archivos entre la máquina virtual y el host, no funcionaban, y los gráficos se rompían constantemente y a menudo terminaban en una pantalla gris.
No parecía haber forma de recuperarlo, así que tenía que reiniciar a la fuerza la máquina virtual, y las fechas de los drivers/herramientas auxiliares también figuraban como de 2012.
Como es un producto gratuito, no tengo derecho a exigir nada y de hecho volví a Fusion, pero desde la perspectiva de alguien que esperaba que una solución open source pudiera reemplazar a las máquinas virtuales comerciales, creo que todavía está difícil.
https://docs.getutm.app/guest-support/windows/#windows-xp-an...
Tampoco he visto errores gráficos, aunque no estoy tratando de jugar; solo uso apps de escritorio básicas.
Edit: Fusion 2023 Tech Preview [1] instala VMware Tools completo y soporta copiar/pegar.
UTM es excelente, y si agregan snapshots [1], creo que pasaría a ser mi recomendación por defecto. Hasta entonces, voy a seguir usando Parallels.
Como referencia, hay un administrador de snapshots no oficial [2].
1: https://github.com/utmapp/UTM/issues/5484
2: https://github.com/Metamogul/UTM-Snapshot-Manager
El problema más común era que la carpeta compartida desaparecía de pronto en la máquina virtual invitada, y con frecuencia tenía que usar soluciones alternativas para hacerla volver.
Luego VMWare Fusion tenía el mismo problema, y Parallels me pareció demasiado caro, así que me pasé a Lima.
Me alegra haber conocido Lima. También está basado en QEMU, permite levantar máquinas virtuales Linux fácilmente y trae compartición por red de fábrica.
Ahora hago todo mi desarrollo dentro de máquinas virtuales de Lima y no he tenido problemas. Si lo necesitara, podría reenviar la pantalla, pero por ahora una instancia headless me alcanza gracias a VSCode.
Podría ser tan simple como
cp -c.Aunque, si realmente fuera así, también parecería que ya lo habrían implementado.
clonefile, pero la implementación en curso estaba usando justo ese método.El mayor problema de UTM es que a algunas personas les funciona muy bien y a otras les funciona pésimo.
Si uno mira los hilos de esta página de arriba abajo, hay muchas frases del tipo “quiero usar UTM, pero no funciona o es tan lento que no se puede usar”, junto con muchas respuestas de “qué raro, a mí me funciona bien”.
En mi caso, UTM literalmente nunca funcionó bien. Intenté una instalación estándar de Ubuntu ARM en una Mac M1 de 2021 siguiendo la guía de https://docs.getutm.app/guides/ubuntu/ y falló; ahora solo veo una pantalla negra con un cursor parpadeando.
Lamentablemente, quienes logran que funcione bien casi no pueden dar soporte técnico útil a quienes no.
Incluso pagué 10 dólares por UTM en la Mac App Store, pero el único canal de soporte técnico es Discord, y allí había muchas respuestas tipo “jaja, a mí me funciona; es falta de habilidad”.
Si tuviera que recomendar algo, diría que vale la pena probar UTM. Si te gusta, puedes ahorrar mucho dinero; si, como a mí, no te funciona en absoluto, al final tendrás que pagar 100 dólares al año por Parallels. Parallels probablemente simplemente funcione.
Si Parallels no funciona, puedes hablar directamente con una empresa que tiene incentivos para que renueves la licencia y motivos para ayudarte a lograrlo.
Si configuras el disco de arranque de la máquina virtual por encima de cierto tamaño —y ni siquiera era un tamaño enorme, creo que algo como 30 GB~100 GB—, el arranque de la máquina virtual se vuelve muy lento.
Si lo haces suficientemente grande, directamente no arranca. Agregar un segundo disco de cualquier tamaño no provoca este bug.
En la empresa me dieron una MacBook Pro M1, pero hago todo el desarrollo en Linux. Linux ha sido mi entorno preferido desde fines de los 90.
El hardware de la MacBook Pro es bueno, pero macOS se siente lento y frustrante, así que mi productividad cae mucho.
Por eso ejecuto Fedora aarch64 en pantalla completa en UTM. Funciona bastante bien, y a menudo se me olvida que está corriendo sobre una Mac.
Eso sí, ojalá macOS no se metiera en el camino y no me sacara de vez en cuando del modo de pantalla completa.
Me adapté porque no quería perderme una duración de batería estable.
Tal vez en alguna parte haya una solución que permita mantener el modo de pantalla completa.
A veces alguna utilidad no soporta argumentos de línea de comandos a los que estoy acostumbrado, pero eso se parece más a una diferencia de versiones que a un problema Mac/Linux, y me ha pasado varias veces al moverme a otros equipos dentro de la empresa.
El mayor dolor de cabeza, aunque no es enorme, es la diferencia entre ARM y x86. De vez en cuando encuentro paquetes que no están soportados en ARM, pero cada vez es menos común.
UTM ha sido un hipervisor estable para mí durante los últimos 2 años, y en ese tiempo también recibió varias mejoras excelentes de funcionalidad.
Aun así, lo que más me gusta de UTM es que significa Universal Turing Machine. Me parece un nombre casi perfecto para un producto de virtualización.
Lo que no me gusta de Parallels y VMWare es que empujan demasiado la integración entre sistemas operativos. Por ejemplo, abrir ventanas de Windows desde macOS, o abrir documentos de macOS directamente en Windows.
Yo prefiero que la máquina virtual esté aislada del macOS principal. Por eso siempre tengo que hurgar en la configuración para encontrar qué hay que desactivar.
Sé que en la descripción del proyecto en GitHub aparece “for iOS”, pero me parece una expresión bastante engañosa.
Las opciones de instalación en iOS básicamente implican jailbreak, o un método imposible en las versiones recientes de CPU/iOS, o si no quedar en un estado semitethered en el que hay que volver a cargar/firmar la app cada pocos días.
https://docs.getutm.app/installation/ios/#summary
No hace falta reinstalar la app en sí; basta con renovar el certificado de firma.
Tengo ganas de que el sideloading se implemente en el EEE, porque será mucho más fácil.
Apple logró crear hardware que puede distribuir a más de 1.000 millones de personas, y aunque muchas de ellas tendrían algo que ganar con un jailbreak, nadie ha podido lograrlo.
Funciona también sin ese método, pero es el más lento de los tres modos de ejecución.
Si vas a correr una máquina virtual en Mac para un entorno de desarrollo, lo que quieres es OrbStack: https://orbstack.dev/
https://lima-vm.io/
https://github.com/abiosoft/colima
Me recomendaron Lima, y se parece un poco a WSL2 para macOS: https://lima-vm.io
No sé bien qué usa por dentro, pero a mí me funcionó muy bien.
colima es una capa montada sobre Lima que facilita configurar máquinas virtuales al estilo docker-machine/boot2docker.
UTM es excelente para usos básicos, pero su rendimiento es tan malo que no me pareció muy realista como herramienta principal para el trabajo diario.
En Mac no hay nada que supere a Parallels, y vale totalmente lo que cuesta.
Si la máquina virtual es aarch64, el rendimiento es sorprendentemente bueno, y puedo recomendar UTM con mucha confianza.