Intervjujemo flar2, razvijalca jedra ElementalX in se poglobimo v teme, kot so njegovo osebno življenje, razvojno delo in drugo.
Nedavno sem imel intervju s flar2, človekom, ki stoji za slavnim jedrom ElementalX in njegovo še bolj priljubljeno aplikacijo ElementalX Kernel Manager. Izdal je različico svojega jedra za široko paleto naprav, vključno z OnePlus in naprave Nexus.
V tem delu sprašujemo o mislih flar2 o ozkih grlih pri delovanju Androida in več o njegovem osebnem življenju! Lahko se odjaviš 2. del tega intervjuja tukaj.
Živijo! Preden se lotimo vprašanj, se najprej predstavite.
Moje ime je Aaron Segaert, znan tudi kot flar2. Večina ljudi me pozna kot razvijalca jedra ElementalX. Imam tudi nekaj aplikacij.
Ali ste že imeli izkušnje z računalniki in razvojem? Kot diploma iz računalništva ali kaj podobnega?
Z računalniki sem se začel ukvarjati že kot zelo mlad. Moj prvi računalnik je bil Texas Instruments TI-99/4A. Naučil sem se kodirati v BASIC-u in svoje programe shranil na kaseto (ja, star sem). Potem je naša družina kupila IBM-ov klon 286 in takrat sem se oddaljil od kodiranja, ker je bilo to prej internet je bil splošno znan in nisem imel nobenih virov ali celo poznal koga drugega, ki bi imel računalnik. Začel sem študirati računalništvo na univerzi, a sem padel v prvem letniku. Nikoli nisem hodil v razred, ker sem bil preveč zaposlen z zabavo in igranjem nastopov s svojo skupino. Kasneje sem se vrnil v šolo in doktoriral iz sociologije. Med študijem sem se začel zanimati za Linux in odprto kodo, vendar se nikoli nisem lotil resnega programiranja. Tu in tam sem prispeval manjše delčke, večinoma pa sem naredil samo skripte in majhne programe za lastne namene. Verjetno sem okoli leta 2002 zgradil svoje prvo jedro Linuxa. Takrat nisem pisal lastne kode, le eksperimentiral sem z različnimi popravki in možnostmi gradnje za povečanje zmogljivosti. Bolj sem se ukvarjal s sestavljanjem računalnikov, overclockingom in na splošno skušanjem strojne opreme narediti stvari, ki jih ne bi smela.
Vas zanima še kakšen razvoj razen razvoja aplikacij za Android in razvoja jedra?
Pravzaprav ne, našel sem dobra orodja, ki so na voljo za skoraj vse, kar sem moral narediti na računalnikih. Razlog, da sem začel delati na jedrih in aplikacijah za Android, je ta, da sem čutil, da obstaja potreba po določenih funkcijah in prostor za izboljšave obstoječih orodij. Na primer, naredil sem Button Mapper, ker sem želel, da tipka Domov na telefonih Samsung naredi več, in mi ni bilo všeč obrnjena tipka za nazaj in nedavno. Naredil sem DevCheck, ker druge aplikacije za informacije o sistemu niso prikazale informacij, ki sem jih želel videti, na jasen in jedrnat način. Jedro ElementalX dodaja nove funkcije strojne opreme in EX Kernel Manager nadzoruje te funkcije in doda nekaj orodij, ki jih uporabljam za lažji razvoj. Rad rešujem probleme in zabaven izziv je vzvratni inženiring stvari ali dodajanje novih funkcij strojne opreme v telefon.
Kako ste prišli v stik z razvojem Androida, natančneje z razvojem jedra?
Vedno sem sovražila mobilne telefone in se jim dolgo upirala. Z ženo sva si delila osnovni preklopni telefon z minimalnim paketom, ki se je uporabljal predvsem v nujnih primerih. Leta 2012 smo imeli doma požar in smo bili zunaj skoraj tri mesece. Vsi naši pripomočki so bili prekinjeni in odločili smo se, da ne bomo ponovno priključili stacionarnega omrežja, zato smo dobili pametni telefon, ki je bil LG P-nekaj, mislim. Ugotovil sem, da je kot mini računalnik, in odločil sem se, da potrebujem svoj mini računalnik, zato sem kupil HTC One V.
Ker premlevam in spreminjam skoraj vse, sem takoj odkril XDA in ugotovil, da telefoni Android ne poganjajo samo Linuxa, ampak jih je mogoče tudi pospešiti. Že dolgo uporabljam Linux, zato sem razcepil eno od jeder in bil zasvojen. Kmalu sem dobil poceni tablico Acer in se začel ukvarjati s to strojno opremo in jedrom, ker sem hotel, da ima USB OTG. Izkazalo se je, da strojna oprema ni bila zmožna, a tako sem se začel učiti več o mobilni strojni opremi. Nikoli nisem javno izdal jedra za LG, tablični računalnik Acer ali One V, ampak sem zgradil lastna jedra za vsakega in namestil prilagojene ROM-e, ki so bili takrat potrebni, saj Android še ni bil zrel.
Kmalu sem prerasel One V in zamenjal za HTC One XL in takrat se je rodil ElementalX.
Kakšen je bil prvotni cilj za ElementalX in kako se je to spremenilo v zadnjih letih?
Cilj ElementalX je bil vedno dodati uporabne funkcije strojne opreme, ne da bi pri tem ogrozili stabilnost ali zmogljivost, in izdati nekaj, na kar se ljudje lahko zanesejo, da bo delovalo. Vedno postavljam stabilnost na prvo mesto, ker potrebujem, da je moj telefon zanesljiv. Brez naključnih ponovnih zagonov ali stvari, kot je nedelovanje kamere. Filozofija je skozi leta ostala enaka. Stvari ohranjam preproste in dodajam funkcije strojne opreme, ki se mi zdijo koristne. Stvari, kot so poteze za bujenje, način visoke svetlosti, prilagoditev vibriranja, nadzor zvoka, podpora za več datotečnih sistemov, igralne palice itd.
Trdo delam, da so moja jedra posodobljena, enostavna za namestitev in čim širše združljiva. Nekateri uporabniki so razočarani, ker ne dodam veliko popravkov iz CAF ali prejšnjega Linuxa, vendar je moj glavni cilj zagotoviti zelo stabilen izdelek brez čudnih težav. Mnogi moji uporabniki niso ljudje, ki veliko objavljajo na XDA, so izkušeni uporabniki, ki imajo zadovoljene posebne potrebe z jedrom po meri ali ljudje, ki se občasno radi poigravajo s svojo strojno opremo, vendar niso zagrizeni flashaholiki. Želim, da ljudje, ki ne sledijo vsem najnovejšim razvojem Androida, lahko brez težav uporabljajo ElementalX.
Obstaja veliko drugih jeder, ki eksperimentirajo s popravki navzgor. V ElementalX uporabljam skrbno izbran nabor popravkov in optimizacij. V svoji karieri zunaj Androida merim stvari, ki jih je težko izmeriti, in uporabljam dokaze za oblikovanje politike in svetovanje. Ista načela uporabljam pri razvoju jedra in na splošno ne uporabljam popravkov, razen če ni merljive koristi. Primer tega je monitor baterije v upravitelju jedra EX. Ponuja način za objektivno merjenje učinka nastavitev baterije in sprememb jedra. Plavajoči monitorji v DevChecku so drugo orodje, ki ga uporabljam za razvoj, večinoma za spremljanje procesorja frekvence in temperature med različnimi primeri uporabe, kot je igranje iger ali gledanje videoposnetkov ali spleta brskanje.
Kako so spremembe Androida v zadnjih nekaj letih vplivale na vaše delo?
Včasih se je težko soočiti s številnimi varnostnimi spremembami, vendar jih razumem. Če se ne motim, je Android zdaj bolj razširjen kot Windows, zaradi česar je tarča. Slabi ljudje bodo uporabili kakršenkoli kot, da bi izkoristili uporabnike Androida.
Preprečevanje spreminjanja sistemske particije je očitno ključno za zaščito celovitosti naprave. Spomnim se, ko je HTC leta 2012 ali 2013 začel s tem in se je zdelo, da bo konec sveta. Takrat je bilo pisanje v /system potrebno za root, urejanje build.prop, nameščanje privilegiranih aplikacij, odstranjevanje bloatware-a in praktično vseh priljubljenih načinov. Številne prilagoditve v tistem času so vključevale stvari, kot sta deodeksiranje in spreminjanje okvira. Dolgo časa pri HTC-ju ni bil na voljo izvor jedra, zato sem izdelal modul jedra za onemogočanje sistemske zaščite pred pisanjem v osnovnem jedru, po katerem sem najprej postal znan kot razvijalec. Toda sčasoma, ko so zaščite, kot je verity, postale standardni del Androida, je to prisililo v inovacije in boljše rešitve, kot je brezsistemski koren Chainfire, zdaj pa je tu še Magisk, ki počne vse vrste stvari brezsistemsko.
Še en velik je SELinux, zaradi katerega je ogromno aplikacij prenehalo delovati. Mnogi uporabniki so ga sovražili in še danes obstajajo ljudje, ki uporabljajo SELinux v permisivnem načinu, kar je zelo slaba ideja. Rekel bi, da je SELinux najpomembnejša varnostna funkcija Androida. Če navedem primer pomembnosti SELinuxa, ko sem prvič dobil Pixel XL, ni bilo na voljo korenskega sistema, toda izkoriščanje Dirty Cow je prinašalo novice. Želel sem začeti z razvojem jedra, kar pomeni iskanje po ali spreminjanje datotek sysfs, kar zahteva root. Zbral sem enega od dokazov konceptov Dirty Cow in lahko izvajal ukaze kot root, vendar mi je SELinux preprečil, da bi naredil kar koli zanimivega. Moral sem spremeniti boot.img, da je SELinux postal permisiven. Morda bi dosegel popoln dostop brez spreminjanja jedra, vendar bi trajalo veliko, veliko ur. S tem povem, pustite SELinux uveljavljanje, to je glavna obrambna linija pred zlonamerno programsko opremo. Naučite se uporabljati sepolicy-inject za spreminjanje določenih pravilnikov po potrebi.
Ko se je pojavil Nougat, sta sprva skoraj vsa /sys in /proc postala nevidna za uporabniške aplikacije. Root je bil vedno potreben za spreminjanje, a nenadoma je bil root potreben zgolj za branje /sys in /proc. V teh datotečnih sistemih zagotovo obstajajo informacije, ki jih je mogoče uporabiti za izkoriščanje naprave, zato je bilo treba dodati omejitve. Obstaja pa tudi veliko informacij, ki bi jih uporabniki morali videti. Zakaj bi bil potreben root za ogled trenutnega razporejevalnika vhodov/izhodov, frekvence GPE ali vrste strojne opreme plošče? V DevCheck sem moral narediti veliko sprememb, da sem se spopadel s tem, in veliko uporabnikov je bilo zmedenih, zakaj informacije po posodobitvi na Nougat niso bile več na voljo. Sčasoma so bile nekatere omejitve na poteh sysfs odpravljene.
Razen tega mi je z vidika razvoja aplikacij všeč večina sprememb API-ja za Android, čeprav me prisilijo, da naredim veliko sprememb v svojih aplikacijah. Te spremembe so običajno na bolje.
Oglejte si 2. del tega intervjuja!