Batalia pentru Linux pe laptopuri cu ARM64: mai dureaza?


Salvatorul nostru ARM64

Visez de multi ani asta:

Laptopuri ale caror baterie se masoara in zile nu in ore. Conectate tot timpul si indeajuns de puternice cat sa iti faci treaba cu ele. Complet liber, pe varf de munte sau jos pe plaja.

Si in sfarsit se intampla ... dar totusi: ce tare ar fi sa poata rula si Linux.

Salut! Asta e prima poveste din aventura cu laptopul meu cu Snapdragon 8cx Gen 2 pe care am reusit sa bootez linux. Desigur de la boot-up la facut ceva util pe el, e drum lung. Dar dupa un an inca sunt optimist.

Oh, si in genul asta de chenar o sa vorbesc cu tine, mai la per-tu daca-mi permiti.

Enjoy.

Suportul pentru Linux? Da, sigur ...

Sau cum mai zic eu: Sunet? Pe linux? Ai innebunit?

Chipuri proprietare. Arhitecturi din ce in ce mai complexe. Si developeri cu spirit de hackeri. Asa se da lupta. Hackeri vs Big Corps. Zici ca suntem la inceput de anii 2k din nou.

More chips = more problems

Un procesor mai vechi, but you get the picture

Arhitecturile la aceste laptopuri cu ARM64 isi trag inspiratia din telefoanele si tabletele noastre de zi cu zi. Keyword-ul aici este offloading-ul. Procesorul da mai departe taskurile de specialitate la chipurile-aghiotante, iar sub-chipurile stiu sa comunice si intre ele. Inca un layer de complexitate!

Procesorul specializat pentru power management controleaza pe restul sa vada daca careva isi depaseste felia alocata. Always-on, nu-i o gluma. Astea chiar n-au somn!

Firmware-ul bata-l vina

Fiecare chip/sub-chip vine pe gen acum cu firmware-ul lui de la producator si sunt puse pe o partitie speciala, ascunsa dupa partitia de boot. Daca le pierzi, iti brickuiesti sigur device-ul.

Asta pentru ca toate aceste device-uri cu ARM64 sunt tratate ca si SOC (System On Chip) nu ca si uhmm calculatoare de sine statatoare pe care poti sa bagi ce vrei tu. Bagi ce vrea OEM-ul, nu ce vrei tu.

Ce e interesant este ca Qualcomm chiar da kituri de dezvoltare pentru developeri care arata foarte asemanator cu kiturile de arduino sau raspberry pi. Acele kituri sunt defapt singurele lucruri de care se pot lega curajosii developeri deobicei ca sa inteleaga cum functioneaza acele sisteme.

WARNING! It is not currently possible to recover these devices if something horrible happens

#aarch64-laptops: avertisment pentru incepatori din partea comunitatii cele mai active pe aceasta parte

"One more thing" ... adica inca un standard

Pana acum avem multe chipuri, cu firmware proprietar, livrate pe device direct. It gets worse. Interfata intre firmware si OS este intr-un fel proprietara si ea. Sa explic.

Felul cum stie Windowsul ce firmware sa apeleze in functie de chip, este printr-o interfata numita ACPI. Ei bine ACPI sta intre firmware si OS. OS-ul apeleaza prin ACPI functiile firmware-ului. Asta inseamna ca de multe ori firmware-ul trebuie sa suporte OS-ul.

Istoric vorbind ACPI-ul nu trebuia sa ajunga in asa hal, el fiind conceput la inceput strict din perspectiva power-management-ului si pentru a da cateva hinturi OS-ului pe ce platforma ruleaza.

Acum specificatia are vreo 1k pagini daca vrei sa o citesti. Poate de-asta OEM-urile nu-l respecta in totalitate.

Acum, nu stiu daca va asteptati sau nu: dar nu toate firmware-urile prin ACPI de pe arm64 suporta Linux. Iar, pentru ca un firmware sa existe separat de configuratia dispozitivului, in Linux s-a inventat DTS-ul (Device Tree Syntax). Acestea descriu total sau partial dispozitivul, se incarca la boot si trimit kernelului pentru ca acesta sa stie ce driver sa incarce pentru fiecare sistem.

DTS-urile, in stil Linux caracteristic, sunt elegante, bine gandite, dar si mai greu putin de implementat. Nu toti au stomacul sau know-how-ul sa-si desfaca laptopul bijuterie si sa lege electrozii la el ca sa-si dea seama cum functioneaza.

Defapt, aveam de mult asta, doar ca era inutilizabil ...

Quote de la dictatorul nostru preferat Linus Torvalds care s-a alaturat revolutiei arm64 si a facut release-ul la 5.19 de pe un macbook. Not bad!

On a personal note, the most interesting part here is that I did the release (and am writing this) on an arm64 laptop. It's something I've been waiting for for a _loong_ time, and it's finally reality, thanks to the Asahi team. We've had arm64 hardware around running Linux for a long time, but none of it has really been usable as a development platform until now.

#lkml: anunt release linux kernel 5.19

Defapt asta insumeaza foarte bine toata situatia cu Linuxul pe dispozitive arm64. De-abia acum se desgheata lucrurile si incep sa se vada progrese mari.

Gratie hackerilor de android care au avut know-how-ul cu chipseturile, gratie hackerilor de console video care stiu cum sa bage orice soft pe ele prin metode inovative, gratie lor avem ceva util acum.

In fine, dar de ce e interesant?

E ca vestul salbatic acum. Apple a lansat provocarea si Qualcomm/Microsoft le raspund. Intre timp, hackerii de pe Linux tot ciocanesc ca sa prinda din urma si nu va mai trece mult timp sa vedem suport Linux peste tot.

Device-urile sunt super quirky; vorbim aici de foldables, cu stylus-uri, senzori amprente, modemuri 5g, sd carduri ca si stocare, touch screen-uri, senzori de miscare, chipuri ultra-secure de recunoastere faciala, chipuri de ML, you name it they have it.

Developmentul e foarte quick-and-hacky, se experimenteaza si testeaza foarte mult. Contribuitorii deseori lucreaza orbi si ca sa faca ceva modifica subansamble intregi din kernel. Nu am mai vazut de mult asta si sunt foarte entuziasmat.

Gata cu vorba, hai la treaba

Asta a fost prima parte. Nu am pornit cu gandul sa o scriu, dar imi place sa dau context lucrurilor.

In urmatoarele parti vom explora cum faci bring-up la Linux pe un laptop cu arm64:

- compilarea kernelului
- creerea unei imagini bootabile cu kernelul custom
- mecanismul de testare pe dispozitiv
- mecanisme de debugging
- instalarea unui distro

Pe mai tarziu.

Floris

Floris

Codez in transee. Programarea nu-i o arta, e un sport de contact.