3 puntos por GN⁺ 2023-09-02 | 1 comentarios | Compartir por WhatsApp
  • 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

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

    • Copiar/pegar definitivamente funciona. Lo uso todo el día yendo y viniendo. Habría que verificar si instalaste las herramientas SPICE.
      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.
    • Uso UTM como un wrapper de QEMU bastante bueno, y si se lo trata así, es excelente.
    • Me pregunto si copiar/pegar y las carpetas compartidas funcionan en Fusion con una máquina virtual Windows ARM. La última vez que revisé, VMware Tools todavía no soportaba esas funciones.
      Edit: Fusion 2023 Tech Preview [1] instala VMware Tools completo y soporta copiar/pegar.
      1. https://customerconnect.vmware.com/downloads/get-download?do...
    • No sorprende. Es porque OpenGL no funciona. Considerando que hoy muchas apps usan OpenGL, eso lo vuelve bastante poco útil.
    • Conectarse con la herramienta MS RDP podría dar una mejor experiencia.
  • 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

    • He mantenido el hábito de desarrollar dentro de máquinas virtuales en vez de hacerlo en el sistema real, y usé UTM durante bastante tiempo para correr una máquina virtual ARM64 Linux en una MacBook Pro M1, pero los problemas con el intercambio de archivos me siguieron molestando.
      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.
    • APFS ya soporta snapshots copy-on-write para todo tipo de archivos. Supongo que la función de snapshots de UTM sería una envoltura sobre eso.
      Podría ser tan simple como cp -c.
      Aunque, si realmente fuera así, también parecería que ya lo habrían implementado.
    • Iba a decir que había logrado simular con éxito una forma limitada de snapshots usando clonefile, pero la implementación en curso estaba usando justo ese método.
    • Me pregunto si soporta emulación de TPM y ansible/vagrabt.
  • 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.

    • Probé la Debian más reciente descargada del sitio web y, salvo por un problema extraño, no tuve inconvenientes.
      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.
    • También está VirtualBox.
  • 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.

    • Definitivamente voy a estar atento a Fedora Asahi Linux.
    • La experiencia de pasar de Linux a macOS termina siendo adaptarse y tolerar los problemas de macOS, o arreglarlos con soluciones de terceros hasta que sean soportables. A veces uno termina haciendo un poco de ambas cosas.
      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.
    • Me da curiosidad qué cosas concretas hacen que baje tu productividad. Si abro una terminal bash en Mac, siento que es casi igual que Linux.
      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.
    • Me interesa saber cuánto crees que se pierde en rendimiento al usarlo así. Si no es mucho, parece una buena solución.
    • Dicen que Asahi Fedora sale en unos días. Hay esperanza.
  • 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.

    • Parallels tiene una sola opción en la pestaña de seguridad llamada “Isolate VM from macOS”. Desactiva toda la integración mutua.
    • Me acuerdo de cuando instalé Parallels. Cada vez que hacía doble clic en un archivo, seguía intentando abrirlo con Notepad de Windows.
  • 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

    • Si tienes una cuenta de desarrollador de Apple, puedes hacer sideloading de una app que dura 1 año. Yo la uso así.
    • Antes probé una app llamada reprosion, que permite manejar la firma desde el dispositivo iOS e incluso automatizarla. La usé para instalar un jailbreak semitethered, y el límite es de 7 días.
      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.
    • Si uno piensa que “el jailbreak no es posible en entornos modernos”, es impresionante.
      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.
    • Si el objetivo es solo hacer sideloading de apps, el método semitethered podría verse incluso como menos sospechoso que un jailbreak.
      Funciona también sin ese método, pero es el más lento de los tres modos de ejecución.
    • Tengo muchas ganas de ver cómo va a funcionar el sideloading en la UE. Espero que lo implementen bien.
  • Si vas a correr una máquina virtual en Mac para un entorno de desarrollo, lo que quieres es OrbStack: https://orbstack.dev/

    • Cuando termine la beta, para uso comercial costará 8 dólares al mes por desarrollador.
    • Creo que para la mayoría de los casos de uso, Lima y Colima son suficientes.
      https://lima-vm.io/
      https://github.com/abiosoft/colima
    • Para una herramienta que presume sus ventajas con frases como la siguiente, llama la atención la falta de soporte para vagrant:

      Para cualquier caso de uso, OrbStack ofrece funciones que simplifican tu flujo de trabajo y te ayudan a moverte más rápido

    • Me pregunto si con esto se pueden crear configuraciones de red complejas. Mi mayor queja con UTM es que solo permite poner una interfaz de red en una máquina virtual.
  • 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.

    • Al crear una máquina virtual, puedes elegir entre QEMU o Virtualization.framework.
      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 estás corriendo una máquina virtual x86 en Apple Silicon, coincido en que el rendimiento es desastroso. Estoy bastante seguro de que esto se debe más a un problema de QEMU que a UTM.
      Si la máquina virtual es aarch64, el rendimiento es sorprendentemente bueno, y puedo recomendar UTM con mucha confianza.