12 puntos por GN⁺ 2023-12-31 | 2 comentarios | Compartir por WhatsApp

¿Por qué son diferentes las VM de Apple Silicon?

  • Ejecutar máquinas virtuales (VM) de macOS en Macs con Apple Silicon puede no parecer popular, pero ha sido durante mucho tiempo uno de los objetivos importantes para Apple.
  • Al usar software de virtualización en Macs de la serie M, se puede ver qué tan diferente es de virtualizar macOS y otros sistemas operativos en Macs Intel.
  • Explica por qué la virtualización es importante y cómo llegó a cambiar tanto.

Los tres pilares de Apple Silicon

  • En la WWDC de junio de 2020, Craig Federighi presentó los tres pilares de Apple Silicon: apps universales que corren en ambas arquitecturas, Rosetta 2 que traduce código de Intel a instrucciones Arm, y la virtualización.
  • Incluso antes de que Apple lanzara el Developer Transition Kit, Andreas Wendker demostró una versión preliminar de Parallels Desktop ejecutando Linux como invitado, pero no hubo ninguna mención de Windows.

Los inicios de la virtualización

  • En los primeros tiempos de la virtualización, se distinguía entre hipervisores de tipo 1, que corren directamente sobre el hardware, y los de tipo 2 (hosted), donde primero corre el sistema operativo principal sobre el hardware y encima de este corre el hipervisor.
  • En computadoras de escritorio, son más comunes los productos de virtualización de tipo 2 como VMware Fusion, Parallels Desktop y Oracle VirtualBox.

Soporte de hardware y virtualización

  • Cuando existe soporte de hardware para el hipervisor, es más fácil ejecutar sistemas operativos invitados sin modificar.
  • Se puede usar el conjunto de funciones VT-x de Intel o la virtualización AArch64 de los CPU Arm.
  • Los problemas de soporte de dispositivos pueden resolverse dentro del framework de virtualización o por el propio software de virtualización.

Lo particular de los chips Apple Silicon

  • Todos los dispositivos de hardware en los chips Apple Silicon son distintos de sus equivalentes en las Macs Intel.
  • Incluso si Apple hubiera querido documentarlos por completo para uso externo, el esfuerzo de ingeniería necesario para soportar los dispositivos de una Mac Intel habría sido demasiado costoso para terceros.
  • Por eso, no era viable esperar que alguien construyera software de virtualización completo empezando solo con un hipervisor, y también habría sido difícil alcanzar el alto rendimiento que esperan Apple y sus usuarios.

Drivers Virtio y virtualización

  • En cambio, Apple construyó drivers Virtio integrando el soporte de dispositivos directamente en macOS.
  • Virtio es un estándar que ofrece una capa de abstracción para dispositivos de I/O: cuando el sistema operativo invitado intenta abrir un archivo, esto se pasa al paradriver frontend de almacenamiento Virtio, y desde ahí interactúa con el dispositivo de almacenamiento a través del driver backend de Virtio.
  • Crear una app de virtualización consiste en configurar y abrir los dispositivos Virtio necesarios, para que el invitado, Virtio y el host se encarguen del trabajo.

La elección de Virtio por parte de Apple

  • La elección de Virtio por parte de Apple estuvo influida porque Linux ya tenía buen soporte para Virtio, aunque en ese momento macOS no lo tenía.
  • Los ingenieros de Apple construyeron soporte para Virtio en macOS durante los años previos al lanzamiento de Monterey.
  • La implementación de Virtio en macOS incluye extensiones que soportan teclado y dispositivos apuntadores, portapapeles compartido ('Spice') y gráficos de alto rendimiento mediante soporte para Metal y GPU.

Ventajas del modelo Virtio

  • En el modelo Virtio, es el sistema operativo el que proporciona el soporte, lo que reduce los costos de desarrollo para proveedores como VMware y Parallels, y disminuye el valor comercial de sus productos.
  • Apple decide qué hardware y qué funciones soporta la virtualización en Apple Silicon.

El futuro de la virtualización y su flexibilidad

  • Al ejecutar versiones anteriores de macOS en una VM, los usuarios pueden seguir usando apps solo para Intel incluso después de que el macOS actual deje de soportar Rosetta 2.
  • También se puede ejecutar software que no sea compatible con la versión mínima de macOS en una Mac con Apple Silicon.
  • Usando Linux o macOS, los desarrolladores pueden desplegar paquetes ligeros de VM como Docker.

La opinión de GN⁺

  • La virtualización en Macs con Apple Silicon adopta un enfoque distinto al de la virtualización tradicional basada en Intel, y parece formar parte de la estrategia de Apple para reforzar la integración entre hardware y software.
  • La virtualización a través de Virtio ofrece a los desarrolladores una solución rentable y permite optimizar el rendimiento bajo el control de Apple.
  • El avance de la tecnología de virtualización abre la posibilidad de ofrecer a largo plazo entornos de software diversos para los usuarios de Macs con Apple Silicon, especialmente útil para soportar aplicaciones y sistemas antiguos.

2 comentarios

 
molla 2024-01-02

La parte sobre el futuro de la virtualización se ve un poco extraña.
Que la virtualización sea posible no significa automáticamente que pueda ser compatible con los sistemas existentes. Al final, en algún punto hay que traducir las instrucciones x86 a instrucciones arm.
Si esto no lo soporta el HW o el SO (¿Rosetta?), al final no queda otra que emularlo en la capa de la VM, y en ese caso la caída de rendimiento es muy severa.
Incluso ahora se puede instalar Linux para x86 en una Mac Apple Silicon, pero el rendimiento es absurdamente lento. (Creo que fue el año pasado: necesitaba binarios para x86, intenté instalarlo para compilar y lo abandoné de inmediato.)

 
GN⁺ 2023-12-31
Opinión de Hacker News
  • Windows depende de muchas funciones basadas en Hyper-V, y al activarlo Windows no arranca directamente, sino que se inicia Hyper-V y el sistema principal de Windows se ejecuta dentro de una VM con privilegios.
  • Hay quienes buscan información sobre el estado actual de la virtualización de Windows/Linux x86-64 en Apple Silicon, y lamentan que el artículo no mencione aplicaciones importantes relacionadas con esto.
  • Hay quien desearía que todos los usuarios de sistemas operativos iniciaran sesión en una VM aislada del sistema operativo, para que así los usuarios pudieran conservar la propiedad de sus computadoras Apple.
  • Como macOS solo puede ejecutar dos VM al mismo tiempo, si quieres usar una Mac mini como servidor de compilación, conviene comprar el modelo más barato.
  • Alguien quería usar una VM de MacOS con Parallels para desarrollo, pero no puede iniciar sesión con su Apple ID, lo que limita su uso.
  • Hay confusión sobre por qué Docker funciona rápidamente en la plataforma Linux/amd64 con un rendimiento casi nativo, mientras que una VM x86 en UTM es mucho más lenta.
  • Se pregunta cuál es el avance de la capa virtio para Windows, quién la está desarrollando y si es probable que funcione en un futuro cercano.
  • Se menciona un driver escrito por Rusty Russell, y se recomienda seguirlo en Twitter porque comparte ideas muy profundas sobre desarrollo de software.
  • Hay dudas sobre si todas las VM comerciales de escritorio (VMWare Fusion/Parallels/UTM/Vimy) usan ahora el modelo virtio y, en teoría, si todas deberían comportarse de forma similar con Windows ARM64.
  • Durante cerca de un año, alguien ha intentado encontrar una forma de crear una VM de Qemu en un chip Apple Silicon M2 con un solo comando, pero ha tenido dificultades, aunque en x86-64 ejecutar Alpine Linux + Sway WM en Qemu desde macOS o AsahiLinux es relativamente sencillo.