Martin Povišer je český programátor, který se zapojil do snah zprovoznit operační systém Linux na počítačích Mac s čipy Apple Silicon postavenými na architektuře ARM. Čip M1 dal Applu oproti Intelu několik zásadních výhod včetně vysokého výkonu, velmi dlouhé výdrže na baterii a v některých případech i chodu bez aktivního chlazení.
Linux má zabudovanou podporu 64bitového ARMu, lze z něj tedy vycházet. Přesto je na projektu hodně práce. Vznikla komunita Asahi Linux, která se snaží jednotlivé části dát dohromady. Povišer se konkrétně zaměřil na vývoj zvukového ovladače.
„Podpora zvuku na těchto počítačích je otázkou spolupráce několika linuxových ovladačů. Zatím jsem sestavil funkční prototypy všech ovladačů, abych získal podporu přehrávání na Macu mini M1 (s podporou vestavěného reproduktoru i konektoru pro sluchátka, ale bez HDMI). První z ovladačů (ten nejmenší) se již dostává do upstreamu,“ informuje Povišer na svém GitHubu. V rozhovoru pro Lupu nastiňuje některé další detaily.
Proč jste se pustil do psaní zvukového Linux ovladače pro Apple Silicon?
Především bych rád jednoho dne sám provozoval Linux na počítači s M1 nebo odvozeným čipem. Také mi to připadá jako zajímavá výzva. Původně jsem jen s nadšením sledoval Hectora Martina, který vede vývoj Asahi Linuxu (snaha portovat Linux na Apple Silicon – poznámka redakce), jak mu jde práce od ruky (jeho videa jsou na YouTube). Hector někdy svoji práci, a to jak reverzní inženýrství hardwaru, tak psaní ovladačů pro Linux, vysílá živě přes YouTube. To mě inspirovalo. Jednoho dne jsem to už nevydržel, pořídil si Mac mini na experimentování a začal se v hardwaru rýpat.
Prvně jsem si dal za cíl oživit integrovaný reproduktor. Má to tři hlavní důvody. Zvuk na M1 byla oblast, kterou do té doby nikdo nezkoumal. Dále podpora audia je stěžejní pro všední používání počítače. A za třetí mám s audiem, nebo spíš s digitálním signálovým zpracováváním, nějaké zkušenosti. Když jsem reproduktor v experimentální podobě oživil, jal jsem se napsat prototyp linuxového ovladače, který teď rozšiřuji.
Je vaše práce součástí Asahi Linuxu?
Ano, ale nutno říct, že mým cílem i cílem dalších, co pod vlajkou Asahi Linux na portování pracujeme, je protlačit naše změny do kanonických vydání linuxového jádra. Nechceme jen vytvořit fork, který nutně zastará, jakmile se o něj přestaneme starat.
Jak daleko jsou práce na Asahi Linuxu? A jak daleko jste s vývojem vy?
Port ještě není připraven pro běžné uživatele. Základní podpora běhu na M1 už se dostala do linuxových vydání. Teď ale pokračuje práce na ovladačích, ty jsou v různých fázích vývoje. Pokud si nainstalujete kernel včetně úprav, na kterých se ještě pracuje, ale jež už jsou publikovány k testování, můžete získat s přivřením oka použitelný desktop.
Vím o některých lidech, kteří takto pod Linuxem na M1 pracují. Podpora ale zatím zcela chybí například pro Thunderbolt, externí grafický výstup (vyjma HDMI na Mac mini), akcelerovanou grafiku nebo uspávání. Na druhou stranu už je pro akcelerovanou grafiku v pokročilé fázi userspace ovladač, který se prozatím vyvíjí pod macOS, a jakmile se k němu dodělá ovladač do jádra, půjde použít pod Linuxem. Za to patří zásluhy Alysse Rosenzweig.
Co se audia týče, ovladač, jak je zatím publikován, podporuje audiovýstup na Mac mini a potom na MacBoocích s M1 umí výstup přes jack.
Při psaní ovladače jste využil reverzní inženýrství. Jak jste postupoval?
Ano, využil jsem reverzní inženýrství. Nemáme technickou dokumentaci, o kterou bychom se mohli při psaní ovladačů opřít. Musíme si v podstatě na všechno přijít sami. Máme na to ale celkem mocné softwarové nástroje, které používáme v režimu, že počítač s M1 připojíme k dalšímu počítači, ze kterého vzdáleně řídíme experimentování.
Detaily ovládání hardwaru pak zjistíme jednak metodou pokus/omyl a druhak tím, že operační systém od Apple spustíme ve virtuálním stroji. Z toho mu sice necháme volný přístup k většině hardwaru, jako kdyby běžel mimo virtuální stroj, můžeme však ony přístupy sledovat.
V neposlední řadě lze informace získat dekompilací softwaru od Applu, to se ale snažíme používat minimálně. Vedle rozhraní uvnitř čipu M1, které si většinou Apple navrhl pro sebe, jsou tu rozhraní dalších komponent uvnitř počítače. Některé z komponent navrhli výrobci pro Apple na míru, potom k nim není veřejná dokumentace. Můžeme ale rozhraní porovnávat s veřejně známými součástkami stejného výrobce. To se například pro audiopodporu až na výjimku osvědčilo.
Jaký při psaní ovladače volíte postup?
Prvně píšu jakýsi demonstrační ovladač, který běží z jiného počítače a sahá na hardware zprostředkovaně. Na tom si ověřím, že moje chápání dotčených rozhraní je správné. Jinak je psaní ovladačů jako jakékoliv jiné, jen zdroj informací se liší.
Využíváte linuxové komponenty, které už mají podporu ARMu?
Ano, stavíme na obecné podpoře pro 64bitové platformy ARM v linuxovém jádře.
Je zvuková komponenta součástí M1 SoC, nebo je postavená bokem?
Pro zvukový vstup a výstup má M1 integrované periferie, jak je u takových SoC asi obvyklé. Tyto periferie po vhodné sběrnici komunikují s vnějším čipem, který zajišťuje samotné zachytávání a generování analogových signálů. Hádám, že na těchto periferiích u M1 ve výsledku není nic výjimečného.
Zajímavé snad může být jen to, že poslední řada MacBook Pro vydaná loni má režim vyšší výstupní voltáže pro vysokoimpedanční sluchátka. To se ale ani tolik neváže k čipu M1, jako spíš k tomu vnějšímu čipu, který pro Apple dodala firma Cirrus Logic. I to je něco, co plánujeme podporovat pod Linuxem.
Do jaké míry je Apple Silicon otevřený? Je možné spouštět custom kernel, ale co dál?
Možnost zavést neoficiální operační systém do svých počítačů Apple navrhl záměrně. Říká se, že je to primárně pro spouštění upravených verzí macOS. Mně by se jako vysvětlení líbilo, že je to pro Apple strategické z pohledu nabírání talentu na vývoj, totiž že vývojáři budou raději pracovat na neuzamčené platformě. Ale nevím, jak blízko to má k realitě. Nad to, že nám tu možnost Apple výslovně nezatrhl, nám nijak nepomáhá. Snad jen jsou náznaky, jako když nedávno Apple udělal změnu v zavádění operačních systémů, která pro macOS je bezvýznamná, ale nám se hodí.
Jak nízko si na hardware dokážete „sáhnout“?
Ve chvíli, kdy v bootovacím řetězci nastoupí libovolný operační systém, dostaneme stejnou kontrolu nad hardwarem, jakou má macOS. Jsou oblasti hardwaru, jež software, který na počítači běží před zavedením operačního systému, zamkne. Co vím, je to stejné v případě zavedení oficiálního vydání macOS. Mimochodem, M1 má spoustu koprocesorů, na kterých běží firmware, a macOS k některému z hardwaru přistupuje skrze ně. Alespoň některé z těchto koprocesorů lze obejít a přistupovat k hardwaru napřímo, zatím se to ale nikde neukázalo jako žádoucí.
Lze při nasazení Linuxu na M1 očekávat stejnou výdrž baterie jako u macOS? Nebo se zde projeví výhoda úzkého propojení hardwaru a softwaru, čímž je Apple známý?
Čekám, že ze začátku bude výdrž pod Linuxem o něco horší, ale časem se rozdíl bude stahovat.
U výkonu je to jak?
Syrový výkon by měl být identický. Je jen otázkou, jak se Linux popasuje s rozdělováním úloh mezi výkonnější a slabší procesory, ze kterých se M1 skládá.
Na GitHubu máte čtyřicet sponzorů. Lze si jako open source vývojář tímto způsobem rozumně vydělat?
Kampaň na GitHub Sponsors jsem otevřel nedávno a složil se mi tam podstatný příjem. Nemůže to konkurovat odměně za podobnou práci v běžné práci, na druhou stranu nejde o to samé. Sponzorství má v tuhle chvíli velký vliv na to, kolik času je pro mě rozumné na portování na M1 strávit.