Emular sistema operativo x86_64 en macOS con procesador ARM usando Lima

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

Text
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 (
    Text
    Apple M1 Max

    , 64 GB LPDDR5-6400, 2TB SSD).

  • Sistema Operativo: macOS Monterey
    Text
    12.4
  • ZSH
    Text
    5.8.1
  • Homebrew
    Text
    0.11.0
  • Lima
    Text
    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

Text
$ 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

Text
$ 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.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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

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

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos. Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación. Somos expertos en Java/Java EE

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

22/06/2026

Juan Antonio Jiménez Torres

Vamos a instrumentalizar un SDD para un microservicio bancario. En este artículo sobre SDD - Spec Driven Development, instrumentalizado sobre OpenSpec vamos a construir una PoC de algo más serio que una tabla periódica. Un microservicio bancario muy simplificado que gestione cuentas y permita hacer transferencias

16/06/2026

Juan Antonio Jiménez Torres

Este es el segundo artículo sobre SDD, Spec Driven Development, instrumentalizado sobre OpenSpec. Pero esta vez nos acercaremos usando softwere gratuito. Por un lado OpenCode en lugar de ClaudeCode y usando el modelo gratuito Gemma4 de Google en lugar de otros de pago.

08/06/2026

Juan Antonio Jiménez Torres

Aprenderemos sobre SDD – Spec Driven Development instrumentalizado sobre OpenSpec. Haremos un primer acercamiento usando ClaudeCode con Sonnet, para luego, en un artículo posterior pasarnos a la versión gratuita de OpenCode con Gemma4