Apple Silicon: ¿Adiós a la limitación de VMs?

Fuentes: Apple Silicon and Virtual Machines: Beating the 2 VM Limit

Este artículo de khronokernel.com explora una limitación frustrante en las máquinas virtuales (VM) de Apple Silicon: macOS solo permite ejecutar un máximo de dos VM de macOS simultáneamente. Esta restricción se basa en una cláusula de la licencia de Apple que limita el uso de copias adicionales de macOS en entornos virtuales para desarrollo, pruebas o uso personal no comercial. El artículo detalla cómo un administrador de macOS descubrió que esta limitación no está codificada directamente en el código de usuarios de Virtualization.framework, sino que se implementa en el kernel XNU, la base del sistema operativo macOS, específicamente en el código cerrado relacionado con hv_vm_*.

La investigación reveló que Apple utiliza una variable llamada hv_apple_isa_vm_quota dentro del kernel para controlar el número de VM activas. Inicialmente, se encontró que esta variable se incrementaba y decrementaba al crear y destruir VMs. Lo más importante es que el artículo descubrió que se puede anular esta limitación pasando un argumento de línea de comandos hv_apple_isa_vm_quota= al kernel durante el arranque. Sin embargo, en las versiones de lanzamiento de macOS, Apple ha implementado una verificación de integridad del sistema (SIP) que impide el uso de este argumento, requiriendo una alternativa.

El artículo describe dos opciones para superar esta limitación: 1) arrancar un kernel de desarrollo de macOS (que no tiene la verificación SIP) o 2) modificar el kernel de lanzamiento para eliminar la verificación SIP. El artículo opta por la primera opción, guiando al lector a través del proceso de creación de una “colección de kernel de desarrollo” utilizando el Kit de Depuración de Kernel (KDK) de Apple. Esto implica descargar el KDK correspondiente a la versión de macOS que se está utilizando, crear una imagen de kernel de desarrollo y configurar el sistema para arrancar desde esa imagen. El proceso incluye comandos específicos para crear la colección de kernel, y luego, al arrancar en modo de recuperación, deshabilitar SIP, permitir argumentos de arranque personalizados y configurar el argumento hv_apple_isa_vm_quota= para superar la limitación de dos VM. El artículo advierte que este proceso requiere precaución y que las actualizaciones del sistema operativo pueden requerir la repetición de estos pasos.