Linux pour macOS M1: ce que l'équipe Asahi Linux a fait en janvier-février 2021

Présentation du traducteur

Il y a quelque temps , Habré a déjà écrit sur le projet Asahi Linux .





En bref, il s'agit d'une tentative d'exécuter Linux sur un nouveau Mac avec une architecture M1.





2 mois se sont écoulés depuis le début du projet, et les développeurs ont préparé un rapport sur le travail effectué , ce qui, en plus de la liste des réalisations et des non-réalisations, vous permet de vous imprégner un peu de l'essence du travail de le mélange d'un ingénieur système et d'un moteur inversé.





Ils ont rédigé un rapport assez volumineux, donc sa traduction apparaîtra en plusieurs parties.





Rapport d'Ă©tape

Je suis heureux de vous présenter le premier rapport d'étape sur Asahi Linux! Dans ces rapports, à l'image et à la ressemblance du livre de jeu Dolphin , nous parlerons chaque mois de ce qui se passe avec nous.





L'ajout de la prise en charge de Linux à un nouveau SoC n'est pas une tâche facile. J'espère que ces rapports vous donneront une idée de ce qu'il faut pour faire fonctionner Linux sur un tout nouvel appareil.





Au départ, j'avais prévu de faire deux rapports différents pour janvier et février, mais le développement avance à un rythme tellement accéléré que j'ai décidé de faire un rapport pour les deux mois.





Petite boîte sur la terminologie

Dans ce rapport, vous rencontrerez les termes AArch64, ARM64 et ARMv8-A.





AArch64 est un jeu d'instructions ARM 64 bits;





ARM64 â€“ Linux 64- ARM.





ARMv8-A  ARM, AArch64.





, , , “64- ARM”.





Asahi Linux , : Apple Apple Silicon .





, , -, :  kmutil configure-boot , -Apple .





, ,   – !





Apple Silicon Mac- , . , embedded (, Android , , iOS ), . , Apple , Intel Mac, .





, , Apple Silicon Mac- ? GUI , Boot Picker , ?





, , SSD, .





, , , . “ ?” Apple, .





Apple Silicon Mac .   iOS , , .





64- ARM : UEFI + ACPI( Windows Linux) ARM64 Linux boot protocol + DeviceTree  ( , U-Boot ). Asahi Linux, , , Apple Silicon Mac.





UEFI&ACPI , ARM . UEFI Forum. x86 , , ARM SoC, . , SoC , , . ACPI – , ACPI embedded , Windows. .





embedded ARM Linux DeviceTree, . , Android. DeviceTree , ACPI, , , ACPI .





DeviceTree , Linux, , , Linux. , Asahi Linux DeviceTree.





, Apple DeviceTree Apple Silicon, Apple Device Tree! ? : DeviceTree OpenFirmware, PowerPC, .





, , ADT embedded Linux , , : DeviceTree, , . , , . Linux macOS PowerPC Mac-, , Linux Apple ARM. , , Linux- Apple-, .





, Apple device tree, , , m1n1 – Apple Silicon . – Apple , , Linux.





m1n1 Linux (cat m1n1.macho initrd.bin devicetree.dtb Image.gz > m1n1-kernel.macho



), Mac kmutil



, Linux. Linux m1n1, :  





  • , .. chicken bit,





  • , iBoot ( Apple) : , framebuffer(, )





  • MMU. , , .





  • Apple Asahi Linux :)





  • watchdog timer. -, , .





  • , : Linux, DeviceTree () initramfs radmisk , , .





  • , chicken bits, spin-table ( - ), Linux.





  • ADT (Apple Device Tree) DeviceTree. , iBoot : , framebuffer, Linux random generator, . m1n1 , spin-table cmd .





  • Linux, - , .





, spin-table? Linux on ARM DeviceTree. , , : spin-table PSCI.





Spin-table – CPU (spinning). , Linux (), , . . : , . . , , - .





PSCI () – ARM ( ) . , EL3 (secure firmware or TrustZone), VM , EL2 ( EL1).





, ARM . , protection ring:  https://en.wikipedia.org/wiki/Protection_ring





-, , , . ring 0   , 1-2 , 3 – .





ARM :





, .  





, EL2 EL3 – ARMv8 CPU, , M1 EL3 . EL2 , VM Linux , Linux EL2, .





PSCI , .





, PSCI . , power management,   , . ( !).





, .





, , , devicetree, , UEFI!





ARM64 UEFI+DeviceTree, “ ”, GRUB . , m1n1 , ?





, , U-Boot. U-Boot Linux – U-Boot m1n1 – UEFI GRUB Linux.





, , Asahi Linux :





m1n1-> U-boot -> GRUB -> Linux





Apple-specific , :





  • SecureROM M1 SoC iBoot1 NOR flash .





  • iBoot1 SSD, , – Asahi Linux / m1n1 iBoot1





  • iBoot2, , , firmware , apple device tree, Mach-O ( m1n1)





  • m1n1 ADT, Linux (Flattened Device Tree), U-boot





  • U-boot, SSD, UEFI, devicetree m1n1





  • GRUB UEFI , , . , , grub-mkconfig /etc/default/grub.





  • -, Linux , DeviceTree, m1n1.





! -, embedded ( UEFI , ).





DragonBoard410c (Qualcomm ):





PBL->SBL->QSEE->QHEE->LK->U-boot->GRUB->Linux





, iBoot2 ( Apple, ), “macOS” iBoot2 , , mac ( macOS ). , , , , .





Linux m1n1, Mark Kettenis U-Boot OpenBSD.





, m1n1 , Linux. , !





< >








All Articles