Interviu cu Flar2, dezvoltatorul ElementalX Kernel Part 1

Intervievăm flar2, dezvoltatorul kernel-ului ElementalX și analizăm subiecte precum viața lui personală, munca de dezvoltare și multe altele.

Recent am ajuns să-l intervievez pe flar2, omul din spatele celebrului kernel ElementalX și al aplicației sale și mai populare ElementalX Kernel Manager. El a lansat o versiune a nucleului său pentru o gamă largă de dispozitive, inclusiv OnePlus și dispozitivele Nexus.

În această parte, întrebăm despre părerile lui Flar2 despre blocajele de performanță Android și mai multe despre viața lui personală! Puteți verifica partea 2 a acestui interviu aici.


Hei acolo! Prezentați-vă în primul rând înainte de a trece la întrebări.

Numele meu este Aaron Segaert, cunoscut și sub numele de flar2. Majoritatea oamenilor mă cunosc ca dezvoltatorul nucleului ElementalX. Am și câteva aplicații.

Ai avut vreo experiență cu computere și dezvoltare înainte? Ca o diplomă în informatică sau ceva?

Am început cu computerele când eram foarte tânăr. Primul meu computer a fost un Texas Instruments TI-99/4A. Am învățat să codific în BASIC și mi-am salvat programele pe o casetă (da, sunt bătrân). Apoi familia noastră a cumpărat o clonă IBM 286 și am scăpat de codificare în acel moment, pentru că asta a fost înainte Internetul era cunoscut pe scară largă și nu aveam resurse și nici măcar nu cunoșteam pe altcineva care avea un calculator. Am început informatica la universitate, dar am renunțat în primul an. Nu am fost niciodată la cursuri pentru că eram prea ocupat să mă distrez și să cânt la concerte cu trupa mea. Mai târziu m-am întors la școală și am obținut un doctorat în sociologie. În timpul meu ca student, am devenit interesat de Linux și open source, dar nu m-am apucat de programare serioasă. Am contribuit cu fragmente minore ici și colo, dar mai ales am făcut doar scripturi și programe mici pentru propriile mele scopuri. Probabil că am construit primul meu kernel Linux în jurul anului 2002. În acel moment, nu îmi scriam propriul cod, doar experimentam cu diferite patch-uri și construiam opțiuni pentru a crește performanța. Eram mai interesat de construirea de computere, de overclock și, în general, de a încerca să fac hardware-ul să facă lucruri pe care nu trebuia să le facă.

V-a interesat vreo dezvoltare în afară de dezvoltarea de aplicații Android și dezvoltarea nucleului?

Nu chiar, am găsit instrumente bune disponibile pentru aproape tot ce am avut nevoie să fac pe computere. Motivul pentru care am început să lucrez la nuclee și aplicații pentru Android este pentru că am simțit că este nevoie de anumite funcții și loc de îmbunătățire a instrumentelor existente. De exemplu, am făcut Button Mapper pentru că am vrut ca tasta acasă de pe telefoanele Samsung să facă mai mult și nu mi-au plăcut tastele inversate și cele recente. Am făcut DevCheck deoarece alte aplicații de informații de sistem nu au afișat informațiile pe care am vrut să le văd într-un mod clar și concis. Nucleul ElementalX adaugă noi caracteristici hardware, iar EX Kernel Manager controlează aceste caracteristici și adaugă câteva instrumente pe care le folosesc pentru a ușura dezvoltarea. Îmi place să rezolv probleme și este o provocare distractivă să fac obiecte de inginerie inversă sau să adaugi noi funcții hardware la un telefon.

Cum ați intrat în contact cu dezvoltarea Android, în special dezvoltarea kernel-ului?

Întotdeauna am urât telefoanele mobile și le-am rezistat mult timp. Soția mea și cu mine am împărțit un telefon flip de bază cu un plan minim care a fost folosit în principal pentru situații de urgență. În 2012, am avut un incendiu la noi acasă și am stat aproape trei luni. Toate utilitățile noastre au fost întrerupte și am decis să nu ne reconectam telefonul fix, așa că am primit un smartphone, care era un LG P - ceva cred. Mi-am dat seama că era ca un mini-computer și am decis că am nevoie de propriul meu mini-computer, așa că mi-am cumpărat un HTC One V.

Deoarece modific și modific aproape totul, am descoperit imediat XDA și am constatat că nu numai că telefoanele Android rulau Linux, ci și puteau fi overclockate. Sunt un utilizator Linux de mult timp, așa că am bifurcat unul dintre nuclee și am fost cuplat. Am primit curând o tabletă Acer ieftină și am început să mă încurc cu acel hardware și kernel pentru că am vrut să aibă USB OTG. Se pare că hardware-ul nu era capabil, dar așa am început să învăț mai multe despre hardware-ul mobil. Nu am lansat niciodată public un nucleu pentru LG, tableta Acer sau One V, dar mi-am construit propriile nuclee pentru fiecare și am instalat ROM-uri personalizate, care erau necesare în acele vremuri, deoarece Android nu era încă matur.

Curând am depășit One V și am schimbat pentru un HTC One XL și atunci s-a născut ElementalX.

Care a fost obiectivul pentru ElementalX inițial și cum s-a schimbat asta în ultimii ani?

Scopul ElementalX a fost întotdeauna să adauge funcții hardware utile, fără a compromite stabilitatea sau performanța, și să lanseze ceva de care oamenii se pot baza doar pentru a lucra. Întotdeauna pun stabilitatea pe primul loc pentru că am nevoie ca telefonul meu să fie de încredere. Fără reporniri aleatorii sau lucruri precum camera care nu funcționează. Filosofia a rămas aceeași de-a lungul anilor. Păstrez lucrurile simple și adaug caracteristici hardware pe care le consider utile. Lucruri precum gesturile de trezire, modul de luminozitate ridicată, reglarea vibrațiilor, controlul sunetului, suport pentru mai multe sisteme de fișiere, joystick-uri etc.

Lucrez din greu pentru a-mi menține kernel-urile la zi, ușor de instalat și cât mai compatibil posibil. Unii utilizatori sunt dezamăgiți de faptul că nu adaug o mulțime de patch-uri de la CAF sau din amonte Linux, dar scopul meu principal este să livrez un produs foarte stabil, fără probleme ciudate. Mulți dintre utilizatorii mei nu sunt oameni care postează mult pe XDA, sunt utilizatori puternici care au o anumită nevoie satisfăcută de un nucleu personalizat sau de oameni cărora le place ocazional să-și schimbe hardware-ul, dar nu sunt hardcore flashaholici. Vreau ca oamenii care nu urmăresc toate cele mai recente dezvoltări Android să poată folosi ElementalX fără probleme.

Există o mulțime de alte nuclee care experimentează cu patch-uri din amonte. În ElementalX, folosesc un set atent selectat de patch-uri și optimizări. În cariera mea în afara Android, măsoară lucruri greu de măsurat și folosesc dovezi pentru a elabora politici și pentru a oferi sfaturi. Aplic aceleași principii pentru dezvoltarea nucleului și, în general, nu folosesc patch-uri decât dacă există un beneficiu măsurabil. Monitorul bateriei din EX Kernel Manager este un exemplu în acest sens. Oferă o modalitate de a măsura în mod obiectiv efectul modificărilor bateriei și al modificărilor nucleului. Monitoarele plutitoare din DevCheck sunt un alt instrument pe care îl folosesc pentru dezvoltare, mai ales pentru monitorizarea procesorului frecvențe și temperaturi în diferite cazuri de utilizare, cum ar fi jocurile sau vizionarea de videoclipuri sau web navigare.

Cum v-au afectat munca schimbările din ultimii ani la Android?

Uneori este dificil să faci față numeroaselor schimbări de securitate, dar le înțeleg. Dacă nu mă înșel, Android este acum mai utilizat decât Windows, ceea ce îl face o țintă. Oamenii răi vor folosi orice unghi pentru a exploata utilizatorii Android.

Prevenirea modificării partiției sistemului este, în mod evident, cheia pentru protejarea integrității unui dispozitiv. Îmi amintesc când HTC a început să facă asta în 2012 sau 2013 și părea că era sfârșitul lumii. La acea vreme, scrierea în /system era necesară pentru root, editarea build.prop, instalarea de aplicații privilegiate, eliminarea bloatware-ului și practic fiecare mod popular. Multe dintre personalizările de la acea vreme implicau lucruri precum deodexarea și modificarea cadrului. Multă vreme, nu a fost disponibilă nicio sursă de kernel de la HTC, așa că am creat un modul de kernel pentru a dezactiva protecția la scriere a sistemului în nucleul stoc, pentru care am devenit mai întâi cunoscut ca dezvoltator. Dar, de-a lungul timpului, pe măsură ce protecțiile precum Verity au devenit o parte standard a Android, a forțat inovația și mai bine soluții precum rădăcina fără sistem a Chainfire și acum există Magisk care face tot felul de lucruri fără sistem.

Un alt mare este SELinux, care a făcut ca o mulțime de aplicații să nu mai funcționeze. Mulți utilizatori l-au urât și până în prezent există oameni care rulează cu SELinux în modul permisiv, ceea ce este o idee foarte proastă. Aș spune că SELinux este cea mai importantă caracteristică de securitate a Android. Pentru a da un exemplu despre importanța SELinux, când am primit prima dată Pixel XL, nu era disponibil root, dar exploit-ul Dirty Cow făcea știri. Eram nerăbdător să încep dezvoltarea kernel-ului, ceea ce înseamnă căutarea sau modificarea fișierelor sysfs, ceea ce necesită root. Am compilat una dintre dovada-de-concept de Dirty Cow și am putut rula comenzi ca root, dar SELinux m-a împiedicat să fac ceva interesant. A trebuit să modific boot.img pentru a face SELinux permisiv. S-ar putea să fi obținut acces complet fără a modifica nucleul, dar ar fi durat multe, multe ore. Toate acestea pentru a spune, lăsați SELinux în vigoare, este principala linie de apărare împotriva programelor malware. Învață să folosești sepolicy-inject pentru a schimba politicile specifice după cum este necesar.

Când a apărut Nougat, inițial aproape toate /sys și /proc au devenit invizibile pentru aplicațiile utilizatorilor. Root a fost întotdeauna necesar pentru a face modificări, dar dintr-o dată root a fost necesar pur și simplu pentru a citi /sys și /proc. Cu siguranță există informații în acele sisteme de fișiere care pot fi folosite pentru a exploata un dispozitiv, așa că a fost necesar să adăugați restricții. Dar există și o mulțime de informații pe care utilizatorii ar trebui să le poată vedea. De ce ar trebui să fie necesar root pentru a vedea programatorul curent de i/o, sau frecvența GPU-ului sau tipul de hardware al panoului? A trebuit să fac o mulțime de modificări la DevCheck pentru a face față acestui lucru, iar mulți utilizatori au fost confuzi cu privire la motivul pentru care informațiile nu mai erau disponibile după actualizarea la Nougat. În cele din urmă, unele dintre restricțiile privind căile sysfs au fost ridicate.

În afară de asta, din perspectiva dezvoltării aplicațiilor, îmi plac majoritatea modificărilor API-ului pentru Android, chiar dacă mă obligă să fac multe modificări în aplicațiile mele. Aceste schimbări sunt de obicei în bine.


Vezi partea 2 a acestui interviu!