Linux 5.13 tendrá soporte inicial para la CPU Apple M1
A principios de año Héctor Martin (también conocido como Marcan) anuncio su interés de realizar el trabajo de poder portar el Kernel de Linux para que se ejecute en computadoras Mac equipadas con el nuevo chip ARM de Apple, el M1.
Para esta tarea Héctor Martin lanzo una campaña de financiación en Patreon con lo cual todos aquellos interesados en el proyecto o apoyar a Héctor, realizaron sus donaciones para que pudiera portar a Linux para la nueva serie Apple M1. Con ello el proyecto inició oficialmente y Marcan lo llamó Asahi Linux y creó el sitio web oficial y los repositorios de código.
Héctor tiene una amplia experiencia en la adaptación de Linux para sistemas inusuales, por ejemplo, es conocido por portar Linux a Nintendo Switch/Wii, Microsoft Kinect y Sony PlayStation 3/4 (incluido él fue uno de los acusados en la sensacional demanda de Sony por elusión de la protección en PlayStation 3).
Y ahora en noticias más recientes Héctor Martin ha propuesto para ser incluido en el kernel de Linux el primer conjunto de parches preparados para la adaptación de Linux para computadoras Mac equipadas con el chip ARM Apple M1 utilizados por el proyecto de Asahi Linux.
Estos parches ya han sido aprobados por el mantenedor de la rama Linux SoC y aceptados en la base de código Linux-next, sobre cuya base se forma la funcionalidad del kernel 5.13. Técnicamente, Linus Torvalds puede bloquear la entrega de los cambios propuestos, pero este desarrollo se considera poco probable.
Han pasado cinco meses desde que probamos el primer hardware Apple M1, y nos ha costado cada día de ese tiempo llegar a un entorno de arranque completamente básico «casi adecuado para la depuración».
Es imposible adivinar cuánto tardarán los desarrolladores de Asahi en realizar ingeniería inversa en la GPU del M1 y producir un controlador de código abierto de calidad. Incluso ahora no es imposible que dejen de hacerlo por completo; o por alguna razón, su trabajo podría no ser aceptado en la fase inicial.
Los parches incluyen soporte para componentes SoC M1 que no son GPU, como controlador de interrupciones, temporizador, UART, SMP, funciones de E/S y MMIO. La ingeniería inversa de la GPU aún no está completa, el framebuffer y el soporte de la consola a través del puerto serie se proporcionan para organizar la salida en parches.
De los dispositivos, se declara la compatibilidad con la computadora Apple Mac mini, que se utiliza como plataforma de referencia en el proyecto Asahi Linux (se encuentran disponibles instrucciones detalladas de instalación).
Se está desarrollando un adaptador de hardware abierto por separado para simplificar la conectividad y la depuración de la consola en serie. En su forma actual, debido al uso por parte de Apple en sus equipos de comandos personalizados USB-PD, la forma más sencilla de acceder a la consola es conectarse a otra computadora en base al chip M1 de Apple mediante el cable USB C. El método más complejo es crear una unión sobre la base del microcontrolador Arduino, el chip FUSB30 y el adaptador UART-TTL.
El proyecto también preparó el gestor de arranque m1n1, que hace posible cargar el kernel de Linux y el entorno mínimo del sistema en computadoras Mac con una CPU Apple M1. Apple en computadoras con CPU M1 en modo normal permite cargar kernels que no están firmados digitalmente sin necesidad de jailbreak.
Esta característica permite a los desarrolladores experimentar con nuevos kernels XNU pero existen dificultades al intentar arrancar otros sistemas porque Apple usa su propio protocolo de arranque y un formato de árbol de dispositivos diferente.
El gestor de arranque m1n1 propuesto por el proyecto Asahi Linux actúa como una capa que permite utilizar el árbol de dispositivos estándar y el protocolo de arranque estándar utilizado en el kernel de Linux para ARM64. En el futuro, se planea que m1n1 agregue la capacidad de llamar a U-Boot y GRUB para organizar un proceso de arranque típico, similar al que se usa en otras plataformas ARM64.