Emular sistema operativo x86_64 en macOS con procesador ARM usando Lima

0
1047

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:

$ brew install lima
$ limactl start
(elegir "Open an editor to override the configuration")

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:

arch: "x86_64"
memory: "16Gib" (o el valor que mejor se ajuste)
disk: "50Gib" (o el valor que mejor se ajuste)

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:

$ lima uname -a
Linux lima-default 5.15.0-37-generic #39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

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

$ ls 
file
$ lima
$ ls
file

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:

$ nerdctl image ls
REPOSITORY    TAG    IMAGE ID    CREATED    PLATFORM    SIZE    BLOB SIZE

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

$ exit
$ limactl stop 

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:

$ lima
$ curl -fsSL https://get.docker.com | sh
$ sudo usermod -aG docker $USER
$ newgrp docker

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.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad