Apple onthulde vorig jaar zijn eerste System-on-a-Chip-ontwerp van desktopklasse, de Apple M1, gebaseerd op dezelfde ARM-architectuur als de meeste smartphones en tablets. Hoewel Linux jarenlang goed heeft gewerkt op ARM-apparaten (zoals de Raspberry Pi), is de hardware van Apple sterk aangepast en vereist specifieke softwareondersteuning. Gelukkig zijn we nu een stap dichter bij het draaien van Linux op Apple Silicon.
Asahi Linux heeft gewerkt om “een gepolijste Linux-ervaring” naar Apple Silicon Macs te brengen en heeft zijn code naar het Linux-project gestuurd voor opname in de officiële Linux-kernel. Het eerste werk van de groep is samengevoegd in de Linux SoC-codebase en zal waarschijnlijk aankomen als onderdeel van de aanstaande Linux 5.13-update.
Het is opwindend om te zien dat de eerste ondersteuning voor de nieuwe hardware van Apple in de Linux-kernel arriveert, slechts een paar maanden nadat de eerste hardware werd verzonden, maar het sleutelwoord daar is ‘initieel’. Terwijl Linux technisch opstart op M1, zijn we nog ver verwijderd van het aansluiten van een Live USB-drive en het klikken op een installatieknop. De huidige code bevat ondersteuning voor basisfunctionaliteit op laag niveau, zoals symmetrische multiprocessing via draaitabellen, IRQ-afhandeling , seriële verbindingen en een framebuffer. Linux kan opstarten vanaf een opdrachtprompt, maar niet veel anders – er is nog niet eens volledige grafische ondersteuning.
Hoewel de officiële kernelondersteuning voor M1-hardware in een gestaag tempo vordert, zijn sommige mensen erin geslaagd om met verschillende hacks dichter bij een echte desktopervaring te komen. Corellium, een ontwikkelingsbedrijf dat gespecialiseerd is in ARM-virtualisatie, was in staat om een bruikbare Ubuntu-desktop te maken op de M1 Mac Mini . Het meeste werk van Corellium wordt echter niet naar de Linux-kernel gestuurd.
Corellium schreef in een blogpost over hoe de architectuur van de M1 verschilt van andere ARM-ontwerpen . “De bootloader, traditioneel iBoot genoemd, laadt een uitvoerbaar objectbestand in een formaat genaamd Mach-O, optioneel gecomprimeerd en verpakt in een ondertekend ASN.1-gebaseerd wrapperformaat genaamd IMG4. Ter vergelijking: normale Linux op 64-bits ARM begint als een platte binaire afbeelding. ” De groep zei verder: “Alsof dat nog niet genoeg was, ontwierp Apple hun eigen interruptcontroller, de Apple Interrupt Controller (AIC), die niet compatibel is met een van de belangrijkste ARM GIC-standaarden. En dat niet alleen: de timer-interrupts – normaal verbonden met een reguliere per-CPU-interrupt op ARM – worden in plaats daarvan doorgestuurd naar de FIQ, een onduidelijk architectonisch kenmerk, dat vaker werd gezien in de oude 32-bit ARM-dagen. ”
De M1-chipset van Apple wordt momenteel geleverd op de MacBook Air, MacBook Pro en Mac Mini. Het is een 5nm-chip met in totaal acht kernen: vier krachtige kernen en vier energiezuinige kernen. Er is ook een Neural Engine voor machine learning-taken, evenals een acht-core GPU. Apple beloofde dat de M1 betere prestaties zou leveren dan de voorheen gebruikte Intel-CPU’s terwijl hij slechts ongeveer een vierde van de stroom zou gebruiken, en latere praktijktests ondersteunden die beweringen. Gelukkig ondersteunt de M1 het opstarten van niet-ondertekende / aangepaste kernels volledig, dus het draaien van Linux vereist geen beveiligingsexploitaties die later zouden kunnen worden gepatcht.
Apple’s eigen macOS is al een geweldig besturingssysteem, maar desktop Linux als optie zou een sterk verkoopargument kunnen zijn voor sommige potentiële kopers van MacBook en Mac Mini. Apple heeft in de loop der jaren kritiek gekregen omdat het sommige aspecten van macOS had vergrendeld of platformonafhankelijke standaarden had verlaten ten gunste van propriëtaire alternatieven. MacOS ondersteunt bijvoorbeeld nog steeds niet de platformonafhankelijke Vulkan API voor grafische afbeeldingen, alleen de eigen Metal API van het bedrijf .