Andrea Palmatè ha publicado nuevos detalles sobre la adaptación del kernel de AmigaOS 4 a la arquitectura ARMv7 de la Raspberry Pi 2. El trabajo se centra en trasladar el núcleo del sistema sin alterar el funcionamiento de la versión PowerPC, utilizada en equipos como AmigaOne X5000, Sam460 y A1222.
El kernel gestiona la memoria, las interrupciones, el temporizador y la planificación de tareas, además de cargar los módulos iniciales del Kickstart y transferir el control a exec. Para mantener la compatibilidad con PowerPC, el desarrollador comprueba que los objetos compilados para esa arquitectura permanezcan idénticos tras introducir los cambios específicos para ARM.
La adaptación ha requerido implementar los vectores de excepción, la MMU, el controlador de interrupciones y el temporizador de ARM. Las pruebas también han permitido detectar diferencias entre el emulador QEMU y el hardware real, así como errores relacionados con las estructuras de datos compartidas.
Otro reto ha sido el cargador de módulos, que extrae objetos ELF almacenados en un archivo ZIP denominado initrd. Durante el desarrollo se descubrió que el espacio utilizado por este archivo podía ser sobrescrito por el heap del kernel. La solución consiste en reservar su memoria y reorganizar el heap para evitar conflictos, aunque esto puede suponer perder hasta 32 MB de RAM aprovechable.
También se ha implementado Reschedule(), la función de exec que permite ceder el procesador a otra tarea preparada de la misma prioridad. Las pruebas detectaron un error que provocaba cesiones innecesarias, ya corregido. En paralelo, se ha trabajado en la versión PowerPC para incorporar mecanismos de planificación entre núcleos.
En el apartado gráfico, el kernel solicita a la GPU VideoCore un framebuffer mediante la interfaz mailbox. La resolución se ha ampliado de 640 × 480 a 1280 × 720, con espacio reservado para tres pantallas. Además, el límite de módulos admitidos ha pasado de 32 a 160, igualando el de la versión PowerPC.
Los resultados son significativos: el kernel arranca tanto en QEMU como en una Raspberry Pi 2 real y alcanza la pantalla de Workbench a 1280 × 720. Sin embargo, todavía quedan tareas pendientes. El soporte multinúcleo no está implementado en ARM, no existe un controlador USB host para utilizar teclado y ratón, y el volumen del sistema sigue limitado a una imagen de 4 MB cargada en RAM. Para admitir imágenes mayores será necesario mejorar el cargador de módulos.
El desarrollador destaca la importancia de automatizar las comprobaciones entre arquitecturas, utilizar las trazas del emulador y añadir diagnósticos desde las primeras fases del arranque. Su artículo permite seguir de cerca los avances y los obstáculos técnicos de esta adaptación de AmigaOS 4 a ARM.

Magnífica noticia, este es el camino a seguir, en mi opinión. Esperemos que llegue a buen puerto y termine convirtiéndose en algo oficial.