Haastattelu Developer eng.stk: n kanssa Osa 1: Origins and Kernel Development

click fraud protection

Haastattelimme äskettäin blu_spark-ytimen kehittäjää eng.stk: tä. Tässä osassa kysymme häneltä hänen alkuperästään ja kehitystyöstään.

Sain äskettäin tilaisuuden haastatella XDA: n vanhempi jäsentä eng.stk, blu_spark-ytimen kehittäjä. Se on saatavilla useille laitteille foorumeillamme, mukaan lukien Nexus 5, OnePlus 3/T ja OnePlus 5T. Tässä osassa kysymme eng.stk: ltä hänen kehityksensä alkuperää ja kuinka hän kehittää blu_spark-ytimen.


Joten ensin esittele itsesi ja ytimesi. Miten ytimenne eroaa kilpailijoista? Mikä on ytimen muutosten suunnittelufilosofiasi ja miten teet ne?

Olen eng.stk ja olen ollut XDA: ssa vuodesta 2010. Suurin osa teistä tuntee minut code_blue- ja blu_spark-projekteistani :)

Aloitin XDA: ssa kirjoittamalla joitain skriptejä ja sekalaisia ​​työkaluja, kehyshakkereita. Olen myös tehnyt paljon teemoja... Täällä ollessani olen myös tehnyt suoraa yhteistyötä joissakin projekteissa, kuten Purity ROM, Universal Kernel Manager, Kernel Adiutor ja viime aikoina Magisk ja WireGuard
mainitakseni muutaman. Olen tehnyt viime aikoina myös TWRP-töitä (etenkin OnePlus-laitteilla), Magisk-moduuleita ja muita työkaluja/hakkereita [jotka ovat] hyödyllisiä ydinprojektini elinkaaren aikana (jotkut asiat menivät XDA-portaaliin, jos muistan oikein). blu_spark-ytimestä alkoi tulla paitsi ydin, myös monipuolinen kokemus ytimen, työkaluketjujen, palautuksen, teeman, työkalujen, komentosarjojen jne. välillä. Mutta ydintyö on se, mistä nautin eniten ja mikä ajaa minua.

Nautin aina hakkeroinnista ja koodin/skriptien rakentamisesta, kun minulla oli mahdollisuus (elektronisten lelujen purkaminen ja peruskoodaus serkkuni Commodore 64:ssä oli hauskaa). Minulle koodaus ei ole keino saavuttaa päämäärä, vaan vain työkalu, kuten jotkut muutkin, tietyn tarkoituksen saavuttamiseksi. Suurin osa vakavammista asioistani ja työni perusteista tehtiin, kun löysin Linuxin teini-iässä / 20-luvun alussa. Myöhemmin, jossain yliopisto-aikoina, Android oli minulle looginen seuraava askel: todellakin puuhailijan unelma, jossa laitteistolla tai ohjelmistolla voi pelata paljon.

Parhaat sanat kuvaamaan blu_sparkia ovat optimointi ja vakaus. Sitä käyttävät ihmiset tietävät, että he voivat luottaa siihen. Ytimen koontiversioni ovat jokseenkin 'takkuisia' siten, että minulla on tapana olla poistamatta joitakin saatavilla olevia asioita laatikosta, vaan pidän kaiken valinnaisena, jotta ihmiset voivat valita. En halua lisätä liikaa tavaraa, vaan muutan tai lisään vain sitä, mikä on mielestäni paras kullekin tietylle alalle. Prosessorin taajuusohjain, IO-aikataulu, verkkoprotokollat, tiedostojärjestelmät jne. tai säädä joitain virittimiä tietyille parametreille tai ylävirtaan joitain ohjaimia parhaan mahdollisen tuloksen saavuttamiseksi. Rakennan myös mittatilaustyönä valmistettuja työkaluketjuja (Linaro, mahtava ote GCC: stä), pääasiassa saadakseni parhaan hyödyn arkkitehtuurista.

Bottom line, useimmat ihmiset tietävät, että he ovat blu_sparkissa siitä hetkestä lähtien, kun he flash-laitteen ytimen. Etsin jatkuvasti uusia asioita ja tapoja tarjota paras mahdollinen käyttökokemus. Turvallisesti.

Kerro meille blu_active-kuvernööristäsi! Mikä se on, mitä se tekee ja miksi se on erityinen?

Tiedän, että ihmiset sekoittavat joskus blu_activen ja blu_sparkin. blu_active on vain pieni osa verrattuna kaikkeen muuhun [työhöni], jota teen.

Prosessorin ohjain tekee periaatteessa päätökset prosessorin taajuuksien nostamisesta tai laskemisesta järjestelmän tarpeiden mukaan. Kuvernöörissä on ollut useita muutoksia ja mutaatioita sen alkamisen jälkeen. Kuten kaikki muukin, tarvitsin jotain, joka täytti tarpeeni. Se perustuu suosikkikuvernööriini, interaktiiviseen kuvernööriin. Aluksi laitoin siihen vain alkupään juttuja, mutta sitten aloin lisäämään jotain muuta tavaraa, kuten CAF-päivityksiä tai logiikkaa, jonka olin nähnyt muissa kuvernööreissä ja joita pidin hyödyllisinä. Lisäsin myös HMP-yhteensopivuuden ja joitain muita herkkuja.

Uusin iteraatio perustuu Googlen Linux 4.4 Android -haaraan, jossa on myös joitain alkupään ja CAF-korjauksia, mutta paljon kevyempi kuin ennen. Käytä yksinkertaisesti sitä, mitä sinulla on, ja poista se, mitä sinulla ei ole. Yritän aina saada paremman akun kuin varastoasetuksissa vähentäen kulumista samalla kun yritän parantaa suorituskyky (todellisen elämän esitys, jonka tunnet silmilläsi ja sormillasi, ei synteettisellä työkalut).

Jossain vaiheessa halusin yksinkertaisen viritettävän, jotta ihmiset voisivat leikkiä suorituskyvyllä yksinkertaisella tavalla. Näin Fastlane syntyi :). Logiikka on jossain määrin samanlainen kuin Honda VTEC: n toimintatapa: pelaa ajoituksella annetusta kynnysarvosta. Joten yksinkertaisella kytkimellä ja muuttuvalla kynnysarvolla ihmiset voisivat saada suorimman ja aggressiivisemman suorittimen taajuuden skaalauksen. Saattaa sen sisään ennemmin tai myöhemmin järjestelmän kuormituksen mukaan, ohittaen kohdekuormitukset. Se on täysin yhteensopiva HMP: n kanssa, ja sitä voidaan säätää klusterikohtaisesti ihmisten tarpeiden mukaan, hienosäätää jokaiselle laitteelle, jossa se toimii.

Mistä sisäänrakennetuista mekanismeista tai parannuksista pidät tai et pidä OEM-valmistajista? eli Qualcommin syöttötehostin.

Jotkut käyttäjätilan tehosteet ja muut viritettävät HAL: it (Hardware Abstraction Layers), kovakoodatut puitteet jne. voivat joskus olla ärsyttäviä. Tietenkin ytimen kehittäjien tiedetään kiertävän joitain niistä. Nexus 5:ssä esimerkiksi useimmat meistä pääsivät eroon mpdecisionista ja saivat mukautetun hotplugin - meillä oli tuolloin käytössä blu_plug. Joissakin muissa laitteissa oli huono lämmönhallinta ja mukautettu lämmönsäätö sysfillä lämpötilatasoille, lieventämistaajuudelle jne. Joillakin uudemmilla laitteilla on kovia akkukäytäntöjä, ytimien irrottamista ja muuta "matalalla tasolla", mikä ei tuonut todellista hyötyä laitteen käytölle. Itse asiassa se jopa pilasi joskus käyttökokemusta, joten CTL- ja BCL-teknologioita oli kesytettävä.

Muistan myös salauksen poistamisen laitteista, kun se oli asia, kaikki muutokset SELinux-iteraatioissa toivat muutoksia, jotka saivat aikaisemmat hakkerit toimimaan eri tavalla... Jotkut viimeaikaiset Android-tietoturvamuutokset ovat jatkuva haaste. Näitä ovat AVB (jotkut osat tunnetaan useimmiten nimellä dm-verity). Jotkut muut muutokset ovat tehneet rajoituksia virittäville ja sysf-paikoille, jotka jouduttiin siirtämään, koska meillä ei ole pääsyä samoihin paikkoihin, joita meillä oli aiemmin. Suurin osa näistä rajoituksista koskee enemmän varastossa olevia ROM-levyjä (joissa teen suurimman osan työstäni), tavallisesti se tasoittaa tietä ja helpottaa mukautettuja ROM-levyjä (joissa rajoitukset ovat alhaisemmat).

Viimeaikaisissa SoC: issa, kuten Qualcomm Snapdragon 820 ja 835, jotkut OEM-valmistajat ovat lisänneet käyttäjätilasta joitain tehosteita, jotka ovat tervetulleita ja korjaavat järjestelmän kuolleita kulmia. Kaikki OEM-materiaalit eivät ole huonoja. Mitä tulee ytimen lähdekoodiin, mitä puhtaampi ja dokumentoidumpi lähde on, sitä parempi.

Mitä muita ominaisuuksia haluat sisällyttää? Kuten edistynyt värinhallinta ja niin edelleen.

En tavallisesti sisällytä mukaan asioita, joita en henkilökohtaisesti käytä tai joista en pidä sitä hyödyllisenä. Asioita, joista pidän, blu_activen lisäksi sisältää arkkitehtuurin optimoinnit ja korjaukset, kryptojuttujen päivitykset, IO-aikataulut ja muut tallennus-/tiedostojärjestelmäherkkuja, KCAL, USB-pikalataus, tärinän voimakkuus, akun/ilmoitusten LED-ohjaus, Wakelock-estäjä, WireGuard, jne. Rakennan aina mukautetulla työkaluketjulla, kuten sanoin aiemmin.

Mitä testausmenetelmiä käytät ytimellesi? Käytätkö käyttäjäraportteja, vertailuarvoja tai muita mukautettuja rutiineja?

Omistan jokaisen puhelimen, jota varten kehitän, joten kaikki muutokset testataan aina minun kanssani. Koska ajelen joka päivä jokaisella laitteella pitkän aikaa, kaiken, mikä ei mielestäni sovi minulle, ei pitäisi kelpaa kenellekään muulle. Kun julkaisen koontiversion julkisesti, sitä on jo testattu paljon minulta ja muilta ihmisiltä, ​​joiden antavan hyödyllistä palautetta. Tiedän, että joskus jotkut käyttäjät kyllästyvät siihen, että kaikki asiat toimivat jatkuvasti niin kuin pitääkin, mutta arvostan ennen kaikkea vakautta: asetun aina ensisijaisesti käyttäjän kenkiin.

Ajan asioita tosielämän käyttötapaukseen, en synteettisiin testeihin. Tällainen ohjelmisto on tehty ihmisille, ei koneille back officessa. Lähtökohta on aina parempi kuin osakekokemus, kaikilla rintamilla, mutta en todellakaan arvosta viimeisintä Antutu-ennätystä niin paljon. Ytimeni voidaan virittää tällaiseen vertailukohtaan, mutta se ei ole päätavoitteeni. Arvostan joitain suoria vertailuarvoja, kuten esimerkiksi IO-tallennustestausta. Ne voivat tarjota nopean tavan vahvistaa esimerkiksi joitain äskettäin tehtyjä muutoksia.

Teen testaukseni varastossa olevilla ROM-levyillä, jotta minulla on vakaa lähtökohta asioille. Teen mukautettuja koontiversioita mukautetuille ROM-levyille, mutta räätälöityjen ROM-levyjen haihtuvuuden vuoksi, joihin on lisätty lisäominaisuuksia, iltakirjoja ja jopa joidenkin ominaisuuksien toteutusero, on mahdotonta kattaa niitä kaikkia ja antaa asianmukaista tukea kaikille, valitettavasti.

Rakennan joskus myös beta-versioita testatakseni jotain erityistä tai kun käynnistän beta-ROM-versioita tai kehittäjien esikatseluita. Tein sen Nexus- ja OnePlus-laitteilla, ihmiset haluavat joskus testata asioita :)


Katso osa 2: F2FS, EAS ja vinkkejä pyrkiville ydinkehittäjille