Intervjuu Flar2-ga, ElementalX Kerneli 1. osa arendajaga

Intervjueerime ElementalX tuuma arendajat flar2 ja süveneme sellistesse teemadesse nagu tema isiklik elu, arendustöö ja palju muud.

Hiljuti sain intervjueerida flar2-d, meest kuulsa ElementalX tuuma ja tema veelgi populaarsema ElementalX Kernel Manageri rakenduse taga. Ta on välja andnud oma tuuma versiooni paljude seadmete jaoks, sealhulgas OnePlus ja Nexuse seadmed.

Selles osas küsime flar2 mõtteid Androidi jõudluse kitsaskohtade kohta ja rohkem tema isikliku elu kohta! Saate vaadata selle intervjuu 2. osa siin.


Tere! Enne küsimuste juurde asumist tutvustage end kõigepealt.

Minu nimi on Aaron Segaert, tuntud ka kui flar2. Enamik inimesi tunneb mind kui ElementalX tuuma arendajat. Mul on ka paar rakendust.

Kas teil oli eelnevaid kogemusi arvutite ja arendusega? Nagu arvutiteaduse kraad või midagi?

Arvutitega alustasin juba väga noorena. Minu esimene arvuti oli Texas Instruments TI-99/4A. Õppisin BASICus kodeerima ja salvestasin oma programmid kassetile (jah, ma olen vana). Siis ostis meie pere 286 IBM-i klooni ja ma pääsesin sel hetkel kodeerimisest, sest see oli varem Internet oli laialt tuntud ja mul ei olnud mingeid ressursse ega isegi teadnud kedagi teist, kellel oleks a arvuti. Alustasin arvutiteadusega ülikoolis, kuid kukkusin esimesel kursusel välja. Ma ei käinud kunagi tundides, sest olin liiga hõivatud oma bändiga lõbutsemise ja kontsertide mängimisega. Hiljem läksin tagasi kooli ja omandasin doktorikraadi sotsioloogias. Üliõpilasena tundsin huvi Linuxi ja avatud lähtekoodiga, kuid ei hakanud kunagi tõsiselt tegelema programmeerimisega. Ma panustasin siin-seal väiksemaid tükke, kuid enamasti tegin lihtsalt skripte ja väikeseid programme enda tarbeks. Tõenäoliselt ehitasin oma esimese Linuxi kerneli 2002. aasta paiku. Sel ajal ma ei kirjutanud oma koodi, vaid katsetasin jõudluse suurendamiseks erinevaid plaastreid ja ehitusvalikuid. Mulle meeldis rohkem arvutite ehitamine, kiirendamine ja üldiselt püüdsin riistvara teha asju, mida see ei peaks tegema.

Kas mõni muu arendus peale Androidi rakenduste arendamise ja kerneli arendamise on teid huvitanud?

Tegelikult mitte, ma olen leidnud häid tööriistu peaaegu kõige jaoks, mida mul on vaja arvutites teha. Põhjus, miks ma hakkasin Androidi tuumade ja rakendustega töötama, on see, et tundsin, et olemasolevate tööriistade jaoks on vaja teatud funktsioone ja arenguruumi. Näiteks tegin Button Mapperi, kuna tahtsin, et Samsungi telefonide koduklahv teeks rohkem, ja mulle ei meeldinud tagurpidi tagasi ja hiljutised klahvid. Tegin DevChecki, kuna teised süsteemiteabe rakendused ei näidanud teavet, mida tahtsin näha selgelt ja lühidalt. ElementalX kernel lisab uusi riistvarafunktsioone ja EX Kernel Manager juhib neid funktsioone ja lisab mõned tööriistad, mida ma arenduse hõlbustamiseks kasutan. Mulle meeldib probleeme lahendada ja asjade pöördprojekteerimine või telefoni uute riistvarafunktsioonide lisamine on lõbus väljakutse.

Kuidas puutusite kokku Androidi arendusega, täpsemalt kerneli arendamisega?

Ma vihkasin alati mobiiltelefone ja pidasin neile pikka aega vastu. Mu naine ja mina jagasime lihtsat klapp-telefoni minimaalse plaaniga, mida kasutati peamiselt hädaolukordadeks. 2012. aastal oli meie kodus tulekahju ja olime peaaegu kolm kuud väljas. Kõik meie kommunaalteenused katkesid ja me otsustasime lauatelefoni uuesti mitte ühendada, nii et saime nutitelefoni, mis oli minu arvates LG P-tüüp. Sain aru, et see on nagu miniarvuti ja otsustasin, et vajan oma miniarvutit, mistõttu ostsin HTC One V.

Kuna ma nokitsen ja modin peaaegu kõike, avastasin kohe XDA ja avastasin, et Androidi telefonid ei tööta mitte ainult Linuxiga, vaid neid saab ülekiirendada. Olen Linuxi kasutaja olnud pikka aega, nii et hargitasin ühe tuuma ja jäin konks. Varsti sain odava Aceri tahvelarvuti ja hakkasin selle riistvara ja tuumaga jamama, sest tahtsin, et sellel oleks USB OTG. Selgus, et riistvara ei olnud võimeline, kuid nii hakkasin mobiilse riistvara kohta rohkem õppima. Ma ei avaldanud kunagi avalikult LG, Aceri tahvelarvuti ega One V kernelit, vaid ehitasin igaühe jaoks oma tuumad ja installisin kohandatud ROM-id, mis olid tol ajal vajalikud, kuna Android polnud veel küps.

Kasvasin peagi One V-st välja ja vahetasin HTC One XL-i vastu ning siis sündis ElementalX.

Mis oli ElementalXi eesmärk algselt ja kuidas see on viimastel aastatel muutunud?

ElementalX-i eesmärk on alati olnud lisada kasulikke riistvarafunktsioone, ilma et see kahjustaks stabiilsust või jõudlust, ning anda välja midagi, millest inimesed võivad sõltuda. Sean alati stabiilsuse esikohale, sest mul on vaja, et mu telefon oleks töökindel. Ei mingeid juhuslikke taaskäivitusi ega asju, nagu kaamera ei tööta. Filosoofia on aastate jooksul jäänud samaks. Hoian asjad lihtsana ja lisan riistvarafunktsioone, mida pean kasulikuks. Sellised asjad nagu äratusžestid, suure heledusega režiim, vibratsiooni reguleerimine, heli juhtimine, rohkemate failisüsteemide tugi, juhtkangid jne.

Ma töötan kõvasti selle nimel, et hoida oma tuumad ajakohasena, hõlpsasti paigaldatavad ja võimalikult laialt ühilduvad. Mõned kasutajad on pettunud, et ma ei lisa palju plaastreid CAF-ist ega ülesvoolu Linuxist, kuid minu põhieesmärk on pakkuda väga stabiilset toodet ilma veidrate probleemideta. Paljud minu kasutajad ei ole inimesed, kes postitavad palju XDA-sse, nad on võimsad kasutajad, kellel on teatud vajadus rahuldatud kohandatud kerneli poolt või inimesed, kellele meeldib aeg-ajalt oma riistvara kallal nokitseda, kuid kes pole kõvad flashahoolikud. Ma tahan, et inimesed, kes ei järgi Androidi uusimaid arendusi, saaksid ElementalX-i probleemideta kasutada.

On palju muid kerneleid, mis katsetavad ülesvoolu plaastritega. ElementalX-is kasutan hoolikalt valitud plaastrite ja optimeeringute komplekti. Oma karjääris väljaspool Androidi mõõdan asju, mida on raske mõõta, ja kasutan poliitika koostamiseks ja nõu andmiseks tõendeid. Rakendan samu põhimõtteid kerneli arendamisel ja üldiselt ei kasuta plaastreid, kui sellest pole mõõdetavat kasu. EX Kernel Manageri akumonitor on selle näide. See pakub võimalust objektiivselt mõõta aku näpunäidete ja kerneli muudatuste mõju. DevChecki ujuvad monitorid on veel üks tööriist, mida kasutan arendamiseks, peamiselt protsessori jälgimiseks sagedused ja temperatuurid erinevatel kasutusjuhtudel, nagu mängimine või videote või veebi vaatamine sirvimine.

Kuidas on viimaste aastate muudatused Androidis teie tööd mõjutanud?

Mõnikord on paljude turvamuudatustega raske toime tulla, kuid ma mõistan neid. Kui ma ei eksi, on Android nüüd laialdasemalt kasutusel kui Windows, mistõttu on see sihtmärk. Halvad inimesed kasutavad Androidi kasutajate ärakasutamiseks kõiki võimalusi.

Süsteemi partitsiooni muutmise vältimine on ilmselt seadme terviklikkuse kaitsmise võtmeks. Mäletan, kui HTC 2012. või 2013. aastal seda tegema hakkas ja tundus, et see on maailmalõpp. Sel ajal oli vaja kirjutada / system'i juurkasutamiseks, faili build.prop redigeerimiseks, privilegeeritud rakenduste installimiseks, bloatware eemaldamiseks ja praktiliselt kõigi populaarsete modifikatsioonide eemaldamiseks. Paljud tolleaegsed kohandused hõlmasid selliseid asju nagu deodekseerimine ja raamistiku muutmine. Pikka aega polnud HTC-st saada ühtegi kerneli allikat, mistõttu tegin tuumamooduli, et keelata süsteemi kirjutuskaitse aktsiatuumas, mille arendajana sain esmakordselt tuntuks. Kuid aja jooksul, kui sellised kaitsed nagu tõepärasus said Androidi standardseks osaks, sundis see uuendusi ja veelgi paremaks lahendused nagu Chainfire'i süsteemitu juur ja nüüd on olemas Magisk, mis teeb igasuguseid asju süsteemitu.

Teine suur on SELinux, mille tõttu lakkasid paljud rakendused töötamast. Paljud kasutajad vihkasid seda ja siiani on inimesi, kes töötavad SELinuxiga lubavas režiimis, mis on väga halb mõte. Ütleksin, et SELinux on Androidi kõige olulisem turvafunktsioon. SELinuxi olulisuse näitel võib öelda, et kui ma Pixel XL-i esimest korda hankisin, ei olnud root saadaval, kuid Dirty Cow'i ärakasutamine avaldas uudiseid. Tahtsin innukalt alustada kerneli arendamist, mis tähendab sysfs-failide otsimist või muutmist, mis nõuab juurjuurdepääsu. Koostasin ühe kontseptsiooni Dirty Cow tõestustest ja suutsin käivitada käske root-vormingus, kuid SELinux takistas mul midagi huvitavat tegemast. Pidin faili boot.img muutma, et muuta SELinux lubatavaks. Ma oleksin võib-olla saavutanud täieliku juurdepääsu ilma tuuma muutmata, kuid see oleks võtnud palju-palju tunde. Seda kõike öeldes, jätke SELinuxi jõustamine, see on peamine kaitseliin pahavara vastu. Õppige kasutama sepolicy-injecti konkreetsete poliitikate muutmiseks vastavalt vajadusele.

Kui Nougat tuli, muutusid peaaegu kõik /sys ja /proc kasutajarakendustele nähtamatuks. Root on alati olnud muudatuste tegemiseks vajalik, kuid äkki oli root vajalik lihtsalt /sys ja /proc lugemiseks. Kindlasti on neis failisüsteemides infot, millega saab mõnda seadet ära kasutada, seega oli vaja piiranguid lisada. Kuid on ka palju teavet, mida kasutajad peaksid nägema. Miks peaks praeguse i/o ajakava või GPU sageduse või paneeli riistvara tüübi nägemiseks olema juurkasutaja? Selle lahendamiseks pidin DevCheckis palju muudatusi tegema ja paljud kasutajad olid segaduses, miks teave ei olnud pärast Nougatile värskendamist enam saadaval. Lõpuks tühistati osa sysfsi teede piiranguid.

Peale selle meeldib mulle rakenduste arendamise vaatenurgast enamik Androidi API muudatusi, kuigi need sunnivad mind oma rakendustes palju muudatusi tegema. Need muutused on tavaliselt paremuse poole.


Vaadake selle intervjuu 2. osa!