AmiCachy: convirtiendo un PC moderno en un Amiga

Los que me conocéis sabéis que el Amiga es una de esas historias que no se me acaban nunca. La RadyKal Party del 98, el Blixel, los cacharreos con cross-compilación… siempre acabo volviendo. Y es que hay cosas que uno no supera: nunca he terminado de aceptar que mi Amiga se quedara en una caja en el trastero mientras yo usaba un PC con Linux para todo. Sí, el Amiga está ahí, funciona, pero seamos honestos: uno no puede vivir con un 68040 en pleno 2026. O sí, pero hay que ser muy bravucón.

El caso es que llevaba tiempo dándole vueltas a una idea: ¿y si pudiera encender un PC y que arrancara directamente como un Amiga? No un Linux con un emulador dentro de un escritorio dentro de una ventana. No. Algo que al encenderlo fuera un Amiga. Sin escritorio Linux, sin barra de tareas, sin gestor de ventanas. Enchufas, arrancas, y estás en el Workbench. Como si el hardware fuera nativo.

Pues eso es AmiCachy.

¿Por qué CachyOS?

La primera decisión importante fue elegir la distribución base. Podría haber tirado de Debian o Ubuntu, que es lo que conozco de toda la vida, pero aquí el objetivo es exprimir hasta el último ciclo de reloj. CachyOS es un fork de Arch Linux que compila sus paquetes y kernels específicamente para procesadores x86-64-v3 (AVX2) y x86-64-v4 (AVX-512). Además usa el planificador BORE, que está optimizado para latencia en lugar de throughput. Para una máquina cuyo único trabajo es emular un Amiga, esto marca una diferencia real.

Y sí, también desactivo las mitigaciones de Spectre y Meltdown en el kernel. Antes de que nadie se lleve las manos a la cabeza: esto es un appliance dedicado a emulación retro, no un servidor expuesto a internet. El tradeoff de seguridad por ese 10-15% extra de rendimiento tiene todo el sentido en este contexto. Pero entiendo que chirríe un poco, a mí también me chirría cuando lo escribo ;-)

La arquitectura: Linux invisible

La clave de AmiCachy es que Linux está ahí debajo pero no se ve. El flujo de arranque es este:

Enciendes el PC, aparece un splash de Plymouth con temática Amiga (nada de mensajes del kernel desfilando por la pantalla), systemd-boot te presenta los perfiles disponibles y arranca. El sistema hace autologin en una TTY, ejecuta un script llamado amilaunch.sh que lee el perfil seleccionado del kernel y lanza directamente Amiberry sobre Cage, un compositor Wayland en modo kiosco.

¿Por qué Cage? Porque es lo mínimo necesario para darle a Amiberry acceso directo al KMS del kernel. No hay escritorio, no hay compositor intermedio, no hay nada que se ponga en medio. La cadena es: Kernel → Cage → Amiberry. Punto. Cualquier cosa adicional añade latencia, y en emulación retro la latencia es el enemigo.

Seis perfiles de arranque

Al encender la máquina, systemd-boot ofrece varios perfiles:

  • Classic 68K: el Amiga de toda la vida, un 500 o un 1200 emulado con Amiberry.
  • PPC Nitro: AmigaOS 4.1 emulado con QEMU-PPC y prioridad de planificación en tiempo real. Sí, he puesto un
    1
    chrt -f 52
    ahí, que básicamente le dice al kernel «este proceso va antes que todo lo demás, no me lo interrumpas». El bestia de mí.
  • Dev Station: un modo híbrido con el compositor Labwc donde conviven VS Code y Amiberry en ventanas lado a lado, con carpetas compartidas. Para los que quieran desarrollar para Amiga con herramientas modernas.
  • Instalador: un asistente gráfico hecho con PySide6 (Qt6 para Python) con detección de hardware, particionado y una slideshow mientras se instala.
  • Try Live: dos modos de demostración en live para probar sin instalar nada.

Todo esto se selecciona al arranque. No hay que tocar configuraciones, no hay que abrir terminales. Eliges, arrancas y estás dentro.

El menú Early Startup: un guiño al original

Los amigueros de verdad recordaréis que en el Amiga original, si mantenías pulsadas ciertas teclas durante el arranque, accedías al Early Startup Control, un menú de configuración de hardware. Pues en AmiCachy, si pulsas F5 durante el boot, aparece un menú de configuración con estética Amiga implementado en Python. Es un detalle tonto, pero de esos que te sacan una sonrisa cuando funcionan :-)

Amiberry compilado a medida

Amiberry es el corazón de todo esto. Es el mejor emulador de Amiga que existe para Linux, y en AmiCachy se compila desde los fuentes con optimizaciones específicas para la CPU del host: LTO, OpenGL, soporte DBUS para control remoto, socket IPC para futura integración con VS Code, y los CFLAGS ajustados a x86-64-v3. El sistema detecta automáticamente si tu procesador soporta AVX2 y ajusta todo en consecuencia. Si no, siempre puedes generar una ISO genérica con el flag

1
--generic
.

Además, le he aplicado un parche propio para corregir un problema con el canal alfa en OpenGL. La solución original iteraba píxel a píxel por CPU, y la he sustituido por una llamada a

1
glColorMask
que hace lo mismo en la GPU de un plumazo. De esas optimizaciones que parecen poca cosa pero que luego se notan.

El flujo de desarrollo: iterar rápido sin morir en el intento

Una de las cosas que más me costó resolver fue cómo iterar rápido. Reconstruir la ISO entera cada vez que cambias algo tarda más de diez minutos, y eso mata cualquier flujo de trabajo. La solución fue montar un sistema con una VM persistente en formato qcow2: editas los ficheros, ejecutas

1
dev_vm.sh sync
(5 segundos), luego
1
dev_vm.sh boot
(10 segundos) y ya estás probando. Con acceso SSH por el puerto 2222 y log serie para depuración. Esto cambió completamente la velocidad de desarrollo.

Las ISOs se construyen con Docker y mkarchiso, así que puedes generar la imagen desde cualquier distribución Linux sin necesitar un host Arch. Eso fue importante para mí, porque no quería obligar a nadie a instalar CachyOS solo para poder compilar el proyecto.

El código, en GitHub

AmiCachy está publicado en GitHub: https://github.com/FreeMEM/AmiCachy. Es un proyecto joven, todavía en desarrollo activo y sin releases oficiales, pero ya arranca, ya emula, y ya se puede iterar sobre él. Si eres amiguero y te pica la curiosidad, échale un vistazo. Y si te animas a probarlo o a contribuir, mejor que mejor.

La verdad es que este proyecto es el que más ilusión me hace de todos los que tengo entre manos. Hay algo especial en coger un PC moderno con un procesador que haría llorar de emoción a Jay Miner y conseguir que arranque directamente en un Workbench, como si el tiempo no hubiera pasado. Bueno, como si no hubiera pasado pero con un par de órdenes de magnitud más de potencia ;-D

Iré contando los avances. De momento, si alguien necesita una excusa para desempolvar sus ROMs y sus discos ADF, aquí tiene una bastante buena.

Deja una respuesta

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