Translator's introduction
Some time ago , HabrΓ© already wrote about the Asahi Linux project .
In short, this is an attempt to run linux on a new Mac with M1 architecture.
2 months have passed since the start of the project, and the developers have prepared a report on the work done , which, in addition to the list of done and not done, allows you to get a little imbued with the essence of the work of the mixture of a system engineer and a reverse engine.
They wrote a rather big report, so its translation will appear in parts.
Progress report
I am glad to present you the first progress report on Asahi Linux! In these reports, in the image and likeness of the Dolphin playbook , we will talk monthly about what is happening with us.
Adding Linux support to a new SoC is not an easy task. I hope these reports give you a sense of how much it takes to get Linux running on a brand new device.
Initially, I planned to make two different reports for January and February, but the development is proceeding at such an accelerated pace that I decided to make one report for both months.
Small box on terminology
In this report, you will come across the terms AArch64, ARM64, and ARMv8-A.
AArch64 is a 64-bit ARM instruction set;
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 , ?
, , , . β ?β 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. , !
< >