Intervju med Flar2, utvikler av ElementalX Kernel Part 1

Vi intervjuer flar2, utvikleren av ElementalX-kjernen og fordyper oss i emner som hans personlige liv, utviklingsarbeid og mer.

Jeg fikk nylig intervjue flar2, mannen bak den berømte ElementalX-kjernen, og hans enda mer populære ElementalX Kernel Manager-applikasjon. Han har gitt ut en versjon av kjernen for et stort utvalg enheter, inkludert OnePlus og Nexus-enheter.

I denne delen spør vi om flar2s tanker om flaskehalser i Android-ytelsen og mer om hans personlige liv! Du kan sjekke ut del 2 av dette intervjuet her.


Hei der! Introduser deg selv først og fremst før vi går ned til spørsmålene.

Mitt navn er Aaron Segaert, også kjent som flar2. De fleste kjenner meg som utvikleren av ElementalX-kjernen. Jeg har også noen apper.

Har du erfaring med datamaskiner og utvikling på forhånd? Som en grad i informatikk eller noe?

Jeg begynte med datamaskiner da jeg var veldig ung. Min første datamaskin var en Texas Instruments TI-99/4A. Jeg lærte å kode i BASIC og lagret programmene mine på et kassettbånd (ja, jeg er gammel). Så kjøpte familien vår en 286 IBM-klon, og jeg kom bort fra koding på det tidspunktet fordi dette var før Internett var viden kjent og jeg hadde ingen ressurser eller kjente til og med noen andre som hadde en datamaskin. Jeg begynte på informatikk på universitetet, men jeg droppet det første året. Jeg gikk egentlig aldri i timen fordi jeg var for opptatt med å ha det gøy og spille spillejobber med bandet mitt. Senere kom jeg tilbake til skolen og tok en doktorgrad i sosiologi. I løpet av min tid som student ble jeg interessert i Linux og åpen kildekode, men kom aldri inn i særlig seriøs programmering. Jeg bidro med småbiter her og der, men lagde stort sett bare manus og små programmer til egne formål. Jeg bygde sannsynligvis min første Linux-kjerne rundt 2002. På den tiden skrev jeg ikke min egen kode, jeg eksperimenterte bare med forskjellige patcher og byggealternativer for å øke ytelsen. Jeg var mer opptatt av å bygge datamaskiner, overklokke og generelt prøve å få maskinvare til å gjøre ting den ikke skulle.

Har noen annen utvikling enn Android-apputvikling og kjerneutvikling interessert deg?

Egentlig ikke, jeg har funnet gode verktøy tilgjengelig for nesten alt jeg har trengt å gjøre på datamaskiner. Grunnen til at jeg begynte å jobbe med kjerner og apper for Android er fordi jeg følte at det var behov for visse funksjoner og rom for forbedring av de eksisterende verktøyene. For eksempel laget jeg Button Mapper fordi jeg ønsket at hjemtasten på Samsung-telefoner skulle gjøre mer, og jeg likte ikke de omvendte baksiden og de siste tastene. Jeg laget DevCheck fordi andre systeminfo-apper ikke viste informasjonen jeg ønsket å se på en klar og kortfattet måte. ElementalX-kjernen legger til nye maskinvarefunksjoner og EX Kernel Manager kontrollerer disse funksjonene og legger til noen verktøy jeg bruker for å gjøre utviklingen enklere. Jeg liker å løse problemer, og det er en morsom utfordring å reversere ting eller legge til nye maskinvarefunksjoner til en telefon.

Hvordan kom du i kontakt med Android-utvikling, nærmere bestemt kjerneutvikling?

Jeg har alltid hatet mobiltelefoner og motstått dem i lang tid. Min kone og jeg delte en enkel flip-telefon med en minimal plan som hovedsakelig ble brukt til nødssituasjoner. I 2012 brant vi hjemme hos oss og var ute i nesten tre måneder. Alle verktøyene våre ble avbrutt, og vi bestemte oss for å ikke koble til fasttelefonen vår igjen, så vi fikk en smarttelefon, som var en LG P-noe tror jeg. Jeg innså at det var som en minidatamaskin og bestemte meg for at jeg trengte min egen minidatamaskin, så jeg kjøpte en HTC One V.

Siden jeg fikser og modder stort sett alt, oppdaget jeg umiddelbart XDA og fant ut at ikke bare Android-telefoner kjørte Linux, de kunne overklokkes. Jeg har vært Linux-bruker i lang tid, så jeg gaffel en av kjernene og ble hektet. Jeg fikk snart et billig Acer-nettbrett og begynte å rote med den maskinvaren og kjernen fordi jeg ville at den skulle ha USB OTG. Det viste seg at maskinvaren ikke var kapabel, men det var slik jeg begynte å lære mer om mobil maskinvare. Jeg ga aldri offentlig ut en kjerne for LG, Acer-nettbrettet eller One V, men bygde mine egne kjerner for hver og installerte tilpassede ROM-er, noe som var nødvendig på den tiden, siden Android ennå ikke var modent.

Jeg vokste snart ut av One V og byttet opp for en HTC One XL, og det var da ElementalX ble født.

Hva var målet for ElementalX i utgangspunktet, og hvordan har det endret seg de siste årene?

Målet med ElementalX har alltid vært å legge til nyttige maskinvarefunksjoner, uten å gå på akkord med stabilitet eller ytelse, og gi ut noe som folk kan stole på for å bare fungere. Jeg setter alltid stabilitet først fordi jeg trenger at telefonen min skal være pålitelig. Ingen tilfeldige omstarter eller ting som at kameraet ikke fungerer. Filosofien har holdt seg den samme opp gjennom årene. Jeg holder ting enkelt og legger til maskinvarefunksjoner som jeg synes er nyttige. Ting som vekkebevegelser, høy lysstyrkemodus, vibrasjonsjustering, lydkontroll, støtte for flere filsystemer, joysticker, etc.

Jeg jobber hardt for å holde kjernene mine oppdatert, enkle å installere og så bredt kompatible som mulig. Noen brukere er skuffet over at jeg ikke legger til mange patcher fra CAF eller oppstrøms Linux, men hovedmålet mitt er å levere et veldig stabilt produkt uten rare problemer. Mange av brukerne mine er ikke folk som legger ut mye på XDA, de er superbrukere som har et spesifikt behov tilfredsstilt av en tilpasset kjerne, eller folk som av og til liker å tukle med maskinvaren sin, men som ikke er hardcore flashaholics. Jeg vil at folk som ikke følger alle de siste Android-utviklingene skal kunne bruke ElementalX uten problemer.

Det er mange andre kjerner som eksperimenterer med oppstrøms patcher. I ElementalX bruker jeg et nøye utvalgt sett med patcher og optimaliseringer. I min karriere utenfor Android måler jeg ting som er vanskelig å måle og bruker bevis for å bygge politikk og gi råd. Jeg bruker de samme prinsippene for kjerneutvikling og bruker generelt ikke patcher med mindre det er en målbar fordel. Batterimonitoren i EX Kernel Manager er et eksempel på dette. Det tilbyr en måte å objektivt måle effekten av batterijusteringer og kjerneendringer. De flytende monitorene i DevCheck er et annet verktøy jeg bruker for utvikling, mest for å overvåke CPU frekvenser og temperaturer under forskjellige brukstilfeller som spill eller se på videoer eller nett surfing.

Hvordan har endringer i Android de siste årene påvirket arbeidet ditt?

Noen ganger er det vanskelig å håndtere de mange sikkerhetsendringene, men jeg forstår dem. Hvis jeg ikke tar feil, er Android nå mer utbredt enn Windows, noe som gjør det til et mål. Dårlige mennesker kommer til å bruke hvilken som helst vinkel de kan for å utnytte Android-brukere.

Å forhindre modifikasjon av systempartisjonen er åpenbart nøkkelen til å beskytte integriteten til en enhet. Jeg husker da HTC begynte å gjøre dette i 2012 eller 2013 og det virket som verdens undergang. På den tiden var det nødvendig å skrive til /system for root, redigering av build.prop, installering av privilegerte apper, fjerning av bloatware og praktisk talt alle populære modifikasjoner. Mange av tilpasningene på den tiden involverte ting som deodexing og modifisering av rammeverket. I lang tid var ingen kjernekilde tilgjengelig fra HTC, så jeg laget en kjernemodul for å deaktivere systemskrivebeskyttelse i lagerkjernen, som jeg først ble kjent som utvikler for. Men over tid, ettersom beskyttelse som sannhet ble en standard del av Android, tvunget det frem innovasjon og bedre løsninger som Chainfires systemløse rot og nå er det Magisk som gjør alt mulig systemløst.

En annen stor er SELinux, som fikk massevis av apper til å slutte å fungere. Mange brukere hatet det, og den dag i dag er det folk som kjører med SELinux i permissiv modus, noe som er en veldig dårlig idé. Jeg vil si at SELinux er den viktigste sikkerhetsfunksjonen til Android. For å gi et eksempel på viktigheten av SELinux, da jeg først fikk Pixel XL, var det ingen rot tilgjengelig, men Dirty Cow-utnyttelsen var å lage nyheter. Jeg var ivrig etter å starte kjerneutvikling, som betyr å søke gjennom eller endre sysfs-filer, som krever root. Jeg kompilerte et av Dirty Cow proof-of-concepts og var i stand til å kjøre kommandoer som root, men SELinux hindret meg i å gjøre noe interessant. Jeg måtte endre boot.img for å gjøre SELinux tillatt. Jeg kunne ha oppnådd full tilgang uten å endre kjernen, men det ville tatt mange, mange timer. Alt dette for å si, la SELinux håndheve, det er hovedforsvaret mot skadelig programvare. Lær å bruke sepolicy-inject for å endre spesifikke retningslinjer etter behov.

Da Nougat kom, ble i utgangspunktet nesten hele /sys og /proc usynlig for brukerapper. Root har alltid vært nødvendig for å gjøre endringer, men plutselig var root nødvendig bare for å lese /sys og /proc. Det er definitivt informasjon i disse filsystemene som kan brukes til å utnytte en enhet, så det var nødvendig å legge til begrensninger. Men det er også mye info som brukere skal kunne se. Hvorfor skal root kreves for å se gjeldende i/o-planlegger, eller GPU-frekvens, eller typen panelmaskinvare? Jeg måtte gjøre mange endringer i DevCheck for å håndtere dette, og mange brukere var forvirret over hvorfor informasjonen ikke lenger var tilgjengelig etter oppdatering til Nougat. Etter hvert ble noen av restriksjonene på sysfs-stier opphevet.

Bortsett fra det, fra et apputviklingsperspektiv, liker jeg de fleste API-endringene til Android, selv om de tvinger meg til å gjøre mange endringer i appene mine. Disse endringene er vanligvis til det bedre.


Sjekk ut del 2 av dette intervjuet!