Emular sistema operativo x86_64 en macOS con procesador ARM usando Lima

0
385

Con la introducción en el mercado por parte de Apple de sus Mac con ARM, el paradigma del software ha cambiado mucho y se ha visto obligado a evolucionar. Pero en esta transición aún se necesita ejecutar aplicaciones x86_64 en los Mac con. En este tutorial usaremos la herramienta Lima en macOS con procesador ARM para arrancar un sistema operativo x86_64 emulado.

Índice de contenidos.

1. Introducción

Antes de entrar en materia, hay que entender la diferencia entre emular, virtualizar y traducir operaciones.

En la virtualización, la CPU ejecuta directamente las operaciones del sistema operativo usando el soporte nativo de la misma.

Por el contrario, con la emulación se pretende hacer creer a la CPU que está ejecutando código nativo, cuando en realidad está ejecutando código de otro entorno.

Por último, los Mac con ARM incluyen Rosetta 2, un software que intenta traducir las operaciones x86_64 a la arquitectura nativa de la CPU, en este caso a ARM.

En este tutorial vamos a emular un sistema operativo con Lima. Esta herramienta nos permite trabajar con QEMU de forma sencilla. Lima es una CLI que gestionará los sistemas operativos que queramos arrancar (no solo ARM) y nos dará una serie de herramientas como el acceso a los ficheros del sistema operativo anfitrión sin necesidad de copiarlos al sistema operativo emulado.

2. Entorno

El entorno en el que se han probado las herramientas explicadas en este tutorial es el siguiente:

  • Hardware: Portátil MacBook Pro 16′ 2021 (Apple M1 Max, 64 GB LPDDR5-6400, 2TB SSD).
  • Sistema Operativo: macOS Monterey 12.4
  • ZSH 5.8.1
  • Homebrew 0.11.0
  • Lima 4.15.3

3. Instalación y configuración

La instalación de Lima es muy sencilla y usaremos Homebrew para ello. Habrá que ejecutar los siguientes comandos en una terminal, dejando un sistema operativo x86_64 emulado arrancado:

Aparecerá un YAML que podrá ser modificado con el editor de texto por defecto de la terminal (en mi caso vi), donde habrá que cambiar los siguientes atributos del sistema operativo emulado:

Tras realizar los cambios y guardarlos, Lima empezará a arrancar y configurar el sistema operativo emulado.

4. Primeros pasos

Ahora que ya tenemos Lima instalado y ejecutando un sistema operativo x86_64 emulado vamos a ver qué opciones tenemos.

Para ejecutar un comando dentro del sistema operativo emulado ejecutamos lo siguiente:

Podemos acceder al sistema operativo emulado ejecutando $ lima y ver los ficheros del sistema operativo anfitrión:

Lima nos provee de una manera nativa de ejecutar contenedores dentro del sistema operativo emulado con nerdctl. Esta herramienta nos permite ejecutar comandos de Docker sin instalarlo, ya que usa el soporte nativo del sistema operativo. Tras ejecutar $ lima en el sistema operativo anfitrión, ejecutamos lo siguiente:

Para salir y apagar la máquina virtual ejecutamos lo siguiente:

5. Bonus: Instalar Docker dentro de Lima

Aunque Lima nos provee del soporte nativo de contenedores, podemos instalar Docker como en cualquier otro sistema operativo Linux de la siguiente manera:

Con esto tendremos instalado Docker dentro del sistema operativo emulado y podremos correr los contenedores que necesitemos.

Si el contenedor que corremos dentro de Lima mapea un puerto, este puerto será alcanzable en el sistema operativo anfitrión

6. Conclusiones

Lima no solo emula ARM, sino que permite correr otro tipo de sistemas operativos convirtiéndola en una alternativa a Virtual Box o Parallels.

Los Mac con ARM han abierto un mundo de posibilidades y han impulsado esta arquitectura, haciendo que el mercado no se quede anclado en x86_64. Pero estamos en un momento de transición en el que herramientas como Lima son bienvenidas.

Dejar respuesta

Please enter your comment!
Please enter your name here