Linux untuk macOS M1: apa yang dilakukan tim Asahi Linux pada Januari-Februari 2021

Pengenalan penerjemah

Beberapa waktu lalu , HabrΓ© sudah pernah menulis tentang proyek Asahi Linux .





Singkatnya, ini adalah upaya untuk menjalankan linux di Mac baru dengan arsitektur M1.





2 bulan telah berlalu sejak dimulainya proyek, dan para pengembang telah menyiapkan laporan tentang pekerjaan yang telah diselesaikan , yang, selain daftar selesai dan belum selesai, memungkinkan Anda untuk sedikit dijiwai dengan esensi pekerjaan campuran dari seorang insinyur sistem dan mesin mundur.





Mereka menulis report yang lumayan besar, jadi terjemahannya akan muncul di beberapa bagian.





Laporan perkembangan

Saya senang mempersembahkan laporan kemajuan pertama tentang Asahi Linux! Dalam laporan ini, dalam gambar dan kemiripan buku pedoman Dolphin , kami akan berbicara setiap bulan tentang apa yang terjadi dengan kami.





Menambahkan dukungan Linux ke SoC baru bukanlah tugas yang mudah. Saya harap laporan ini memberi Anda gambaran tentang berapa banyak yang diperlukan untuk menjalankan Linux pada perangkat baru.





Awalnya, saya berencana membuat dua laporan berbeda untuk Januari dan Februari, tetapi perkembangannya berjalan dengan sangat cepat sehingga saya memutuskan untuk membuat satu laporan untuk kedua bulan tersebut.





Kotak kecil tentang terminologi

Dalam laporan ini, Anda akan menemukan istilah AArch64, ARM64, dan ARMv8-A.





AArch64 adalah set instruksi ARM 64-bit;





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