A crowdfunded project has launched that aims to to port Linux to Apple’s new Arm-based silicon Macs.
Hector Martin, a Tokyo-based IT security consultant by day and hacker by night, has kicked off what he is calling the Asahi Linux project.
Martin’s Asahi Linux project aims to create “a remix of Arch Linux ARM that is designed to include bleeding-edge M1 support and convenient installation instructions.”
“Any Arch Linux users should feel right at home,” Martin said.
SEE: Hiring Kit: Computer Hardware Engineer (TechRepublic Premium)
Martin announced the crowdfunding project in December and officially launched the project this week after reaching the $4,000 per month target he wanted to begin serious work on the Linux port for Apple’s M1 – the first release of Apple’s Arm-based silicon system-on-chips (SoC) for Macs.
The project is being developed in the open with contributions regularly pushed to GitHub.
The Asahi project today also announced it had gained the help of Alyssa Rosenzweig, a developer who’s been working on Panfrost, a free and open-source graphics stack for Arm Mali GPUs used in Android devices. Arm Mali GPUs have been “historical thorns in Linux’s side, due to the closed nature of the official drivers,” Rosenzweig explained.
Apple’s GPU, which is part of the M1 SoC, poses the same problem for the Asahi Linux project as Mali did for Linux, Rosenzweig says in a blogpost detailing the M1 GPU hurdles she’s cleared to date.
“This custom Apple GPU has neither public documentation nor open-source drivers. Some speculate it might descend from PowerVR GPUs, as used in older iPhones, while others believe the GPU to be completely custom,” writes Rosenzweig.
She’s following the same processes she used to reverse engineer Mali GPUs for Panfrost, but has found there are “some macOSisms that need to be translated”.
“While the standard Linux/BSD system calls do exist on macOS, they are not used for graphics drivers. Instead, Apple’s own IOKit framework is used for both kernel and userspace drivers, with the critical entry point of IOConnectCallMethod, an analogue of ioctl.”