Desde Linux David Naranjo  

Corellium anuncia su port de Linux a chips M1

Corellium ha presentado una versión de Linux adaptada para ejecutarse en las nuevas computadoras Apple equipadas con el chip M1, la variante del kernel de Linux compatible con el chip Apple M1 se publica bajo la licencia GPLv2, y se han enviado parches para su inclusión en el kernel principal.

Corellium tiene una amplia experiencia en la migración de Linux a chips de Apple utilizados en dispositivos móviles como el iPhone. En la etapa inicial de la migración, se alentó a los testers de que muchos de los componentes del Apple M1 se basan en tecnologías que ya utiliza Apple en otros SoC.

Pero en el proceso de escritura de controladores, quedó claro que no todo es tan simple y el chip Apple M1 incluye muchas soluciones no estándar. El soporte de Linux para los SoC ARM de 64 bits se basa en bloques comunes e interfaces de firmware, pero el Apple M1 apenas usa soluciones típicas.

Por ejemplo, en los SoC ARM convencionales, la activación de los núcleos de la CPU se realiza a través de la interfaz PSCI (Power State Coordination Interface) proporcionada por el firmware y en Apple M1 requiere la manipulación del registro MMIO.

En esta etapa, los desarrolladores de Corellium se adelantaron al proyecto Asahi Linux, fundado por Héctor Martin para portar Linux a sistemas con el chip Apple M1, que hasta ahora se ha limitado a la ingeniería inversa y a experimentar con un gestor de arranque. Sin embargo, el objetivo clave de Asahi Linux no es solo arrancar Linux, sino brindar soporte completo para los mecanismos de administración de energía y usar las capacidades de la GPU Apple M1, que usa un conjunto específico de instrucciones.

Los parches de Corellium se limitan a proporcionar arranque y soporte para características específicas de chips M1 relacionadas con el modo SMP, temporizadores, interrupciones, manejo de estado inactivo e inicialización.

Los representantes de Asahi Linux dieron la bienvenida al lanzamiento de los parches de Corellium y expresaron su voluntad de brindar asistencia de revisión por pares para acelerar la adopción en la corriente principal del kernel de Linux.

Además, también se ha dicho que Alyssa Rosenzweig (de Collabora que desarrolla el controlador Panfrost GPU Mali) ha publicado un segundo informe sobre ingeniería inversa y desarrollo de controladores de código abierto para la GPU Apple M1.

En la etapa actual, se ha preparado un prototipo inicial del controlador, que puede dibujar triángulos usando la GPU. Para GPU M1, los primeros sombreadores de vértices y fragmentos también están codificados a mano. El controlador del kernel IOKit se utiliza para interactuar con la GPU.

El Apple M1 también utiliza su propio controlador de interrupciones AIC (Apple Interrupt Controller), que en su mayor parte es incompatible con los ARM GIC estándar y un mecanismo diferente para vincular interrupciones desde un temporizador. Además, para organizar la interacción entre varios procesadores, se utilizan registros separados que controlan IPI (interrupciones entre procesadores).

Para arrancar en una computadora Mac Mini M1 con un chip Apple M1, se prepara una imagen rootfs lista para usar, construida sobre la base de la compilación Ubuntu para Raspberry Pi.

Para instalar, se debe copiar la imagen a una unidad USB, conectar esta unidad al puerto USB-C e iniciar la computadora en modo 1TR (SO de recuperación), manteniendo presionado el botón de Encendido mientras se inicia. Después de que aparezca la línea de comando, debe ejecutar el script linuxsetup.sh, que instalará el kernel y configurará el entorno.

Aquí es cuando Linux comenzará a ejecutarse, mientras que para devolver macOS, debe ejecutar el comando «bputil -n» en modo 1TR.

La compilación preparada es compatible con USB, I2C y DART, se sugiere utilizar un adaptador USB externo para la red, mientras que la aceleración de hardware de gráficos y los periféricos extendidos aún no son compatibles. La compatibilidad con Bluetooth requiere la escritura de un nuevo controlador debido al uso de un protocolo basado en PCIe no estándar.

Fuente: https://corellium.com

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.