Nedavno smo intervjuvali eng.stk, razvijalca jedra blu_spark. V tem delu ga sprašujemo o njegovem izvoru in razvojnem delu.
Pred kratkim sem dobil priložnost opraviti intervju s starejšim članom XDA inž.stk, razvijalec jedra blu_spark. Na voljo je v številnih napravah na naših forumih, vključno z Nexusom 5, OnePlus 3/T in OnePlus 5T. V tem delu sprašujemo eng.stk o njegovem začetku razvoja in o tem, kako razvija jedro blu_spark.
Torej najprej predstavite sebe in svoje jedro. Kako se vaše jedro razlikuje od konkurence? Kakšna je vaša filozofija oblikovanja za spremembe jedra in kako se jih lotite?
Sem eng.stk in na XDA sem prisoten od leta 2010. Večina vas me pozna po mojih projektih code_blue in blu_spark :)
Na XDA sem začel s pisanjem nekaj skriptov in raznih orodij, vdorov v okvire. Naredil sem tudi veliko tem... Med mojim časom tukaj sem tudi neposredno sodeloval pri nekaterih projektih, kot so Purity ROM, Universal Kernel Manager, Kernel Adiutor in nedavno Magisk in WireGuard če naštejem samo nekatere. Zadnje čase delam tudi nekaj TWRP (zlasti na napravah OnePlus), modulih Magisk in drugih orodjih/hekah [ki so] uporabni v življenjskem ciklu mojih projektov jedra (nekaj stvari je šlo na portal XDA, če se spomnim pravilno). Jedro blu_spark je začelo postajati ne le jedro, ampak vsestranska izkušnja med jedrom, verigami orodij, obnovitvijo, temami, orodji, skripti itd. Toda delo z jedrom je tisto, v čemer najbolj uživam in me žene.
Vedno sem užival v vdiranju in gradnji kode/skriptov, ko sem imel priložnost (razstavljanje elektronskih igrač in osnovno kodiranje na bratrančevem Commodore 64 je bilo zabavno). Zame kodiranje ni sredstvo za dosego cilja, ampak samo orodje, kot nekatera druga, za doseganje določenega namena. Večina mojih resnejših stvari in temeljev mojega dela je bilo narejenih, ko sem med adolescenco/zgodnjimi dvajsetimi odkril Linux. Kasneje, nekje v času univerze, je bil Android logičen naslednji korak zame: sanje kovača, kjer bi se lahko veliko igrali s strojno ali programsko opremo.
Najboljši besedi za opis blu_spark sta optimizacija in stabilnost. Ljudje, ki ga uporabljajo, vedo, da se nanj lahko zanesejo. Moje zgradbe jedra so nekoliko "na zalogo" na način, da nekaterih stvari, ki so na voljo, ne odstranim takoj iz škatle, pri čemer ostane vse izbirno, tako da lahko ljudje izbirajo. Ne maram dodajati preveč stvari, samo spremenim ali dodam tisto, kar se mi zdi najboljše za posamezno področje. Gonilnik frekvence procesorja, razporejevalnik IO, omrežni protokoli, datotečni sistemi itd. ali prilagodite nekatere nastavljive možnosti za nekatere dane parametre ali nastavite nekatere gonilnike navzgor za najboljši možni rezultat. Gradim tudi po meri izdelane orodne verige (od Linaro, super prevzem GCC), predvsem zato, da iz arhitekture izvlečem najboljše.
Pod črto, večina ljudi ve, da so na blu_spark od trenutka, ko zaženejo jedro v napravi. Vedno iščem nove stvari in načine za najboljšo možno UX. Varno.
Povejte nam o svojem guvernerju blu_active! Kaj je, kaj počne in zakaj je poseben?
Vem, da ljudje včasih zamenjujejo blu_active z blu_spark. blu_active je le majhen del v primerjavi z vsem ostalim [delom], ki ga opravljam.
Guverner CPE v bistvu sprejema odločitve o zvišanju ali nižanju frekvenc CPE glede na potrebe sistema. Guverner je imel od začetka več sprememb in mutacij. Kot vse drugo, kar počnem, sem potreboval nekaj, kar je izpolnilo moje potrebe. Temelji na mojem najljubšem guvernerju, interaktivnem guvernerju. Na začetku sem vanj samo dodal nekaj stvari navzgor, potem pa sem začel dodajati nekaj drugih stvari, kot so posodobitve CAF ali logika, ki sem jo videl pri drugih regulatorjih in se mi zdijo uporabne. Dodal sem tudi združljivost s HMP in nekatere druge dobrote.
Najnovejša različica temelji na Googlovi veji Linux 4.4 Android, z nekaterimi popravki navzgor in CAF, vendar je veliko vitkejši kot prej. Preprosto v celoti izkoristite tisto, kar imate, odstranite tisto, česar nimate. Vedno poskušam dobiti boljšo baterijo kot z osnovnimi nastavitvami, zmanjšam porabo, hkrati pa poskušam izboljšati zmogljivost (resnična zmogljivost, tista, ki jo otipaš z očmi in prsti, ne s sintetiko orodja).
V nekem trenutku sem želel preprosto nastavljivo možnost, da bi se ljudje lahko igrali z zmogljivostjo na preprost način. Tako je nastal Fastlane :). Logika je nekoliko podobna načinu delovanja Honda VTEC: igrajte se s časi od danega praga. S preprostim preklopom in spremenljivo vrednostjo praga bi lahko ljudje imeli bolj neposredno in agresivno skaliranje frekvence procesorja. Zaradi tega vstopi prej ali slej glede na obremenitev sistema, mimo ciljnih obremenitev. Popolnoma je združljiv s HMP in ga je mogoče prilagoditi za posamezno gručo glede na potrebe ljudi, natančno nastavljeno za vsako napravo, na kateri deluje.
Kateri vgrajeni mehanizmi ali popravki so vam všeč/ne všeč, ki jih ponujajo proizvajalci originalne opreme? tj. povečanje vnosa Qualcomm.
Nekatera povečanja uporabniškega prostora in druge nastavljive možnosti, ki so nastavljene v HAL-ih (plasti abstrakcije strojne opreme), trdo kodiranih okvirih itd., so lahko včasih moteče. Seveda je znano, da se razvijalci jedra izogibajo nekaterim od teh. Na Nexusu 5 se nas je na primer večina znebila mpdecision in dobila hotplug po meri - takrat smo imeli blu_plug. Nekatere druge naprave so imele slabo toplotno upravljanje in toplotni nadzor po meri s sysfs za temperaturne ravni, frekvenco blaženja itd. Nekatere novejše naprave imajo nekaj strogih pravilnikov o bateriji, odklopu jeder in drugih stvareh na "nizkih ravneh", ki niso resnično povečale uporabe naprave. Pravzaprav je včasih celo pokvaril uporabniško izkušnjo, zato je bilo treba ukrotiti tehnologiji CTL in BCL.
Spomnim se tudi odstranitve šifriranja v napravah, ko je bilo to nekaj, vse spremembe, ki so jih ponovitve SELinuxa uvedle spremembe, zaradi katerih so prejšnji vdori delovali na drugačen način... nekatere nedavne varnostne spremembe Androida so stalen izziv. Ti vključujejo AVB (nekateri deli večinoma znani kot dm-verity). Nekatere druge spremembe so omejile mesta nastavljivih in sysfs, ki jih je bilo treba premakniti, ker nimamo dostopa do istih mest, kot smo jih imeli prej. Večina teh omejitev je pomembnejših za standardne ROM-e (pri katerih opravim večino svojega dela), običajno utira pot in olajša delo, ko gre za ROM-e po meri (kjer so omejitve nižje).
V nedavnih sistemih na čipu, kot sta Qualcomm Snapdragon 820 in 835, so nekateri proizvajalci originalne opreme dodali nekaj izboljšav iz uporabniškega prostora, ki so dobrodošle in se spopadajo s slepimi pegami v sistemu, niso vse stvari proizvajalcev originalne opreme slabe. Ko gre za izvorno kodo jedra, čim čistejša in bolj dokumentirana je izvorna koda, tem bolje.
Katere druge funkcije želite vključiti? Kot je napredni nadzor barv itd.
Običajno ne vključim stvari, ki jih osebno ne uporabljam ali se mi ne zdijo koristne. Stvari, ki jih rad počnem, poleg blu_active vključujejo optimizacije in popravke arhitekture, posodobitve kripto stvari, razporejanje IO in drugo dodatki za shranjevanje/datotečni sistem, KCAL, hitro polnjenje USB, moč tresljajev, nadzor LED za baterijo/obveščanje, blokatorji Wakelock, WireGuard, itd. Vedno gradim z orodno verigo za izdelavo po meri, kot sem rekel prej.
Kakšno metodologijo testiranja uporabljate za svoje jedro? Ali uporabljate uporabniška poročila ali primerjalne teste ali katere koli druge rutine po meri?
Vsak telefon, za katerega razvijam, sem lastnik, zato so vse spremembe vedno preizkušene. Ker dnevno vozim vsako napravo dlje časa, karkoli se mi zdi, da ni primerno zame, ne bi smelo biti primerno za nikogar drugega. Ko javno objavim gradnjo, sem jo že veliko testiral jaz in nekateri drugi ljudje, ki jim zaupam, da bodo zagotovili koristne povratne informacije. Vem, da se nekateri uporabniki včasih dolgočasijo, ker vse stvari nenehno delujejo, kot je treba, vendar cenim predvsem stabilnost: vedno se postavim v kožo uporabnika.
Stvari vodim v smeri resničnega primera uporabe, ne sintetičnih testov. Ta vrsta programske opreme je narejena za ljudi, ne za stroje v zaledni pisarni. Začetna točka je vedno boljša od izkušenj z delnicami, na vseh frontah, vendar najnovejše visoke ocene Antutu v resnici ne cenim toliko. Moja jedra je mogoče nastaviti na to vrsto meril uspešnosti, vendar to ni moj končni cilj. Cenim nekatera primerjalna merila, ki so bolj neposredna, kot je na primer testiranje pomnilnika IO. Omogočajo lahko hiter način za uveljavitev nekaterih nedavno opravljenih sprememb, na primer.
Preizkušam z osnovnimi ROM-i, da imam lahko stabilno osnovo za stvari. Delam gradnje po meri za prilagojene ROM-e, vendar zaradi nestanovitne narave prilagojenih ROM-ov z dodanimi dodatki, nočnimi zabavami in celo razlike v implementaciji nekaterih funkcij, nemogoče jih je pokriti vse in zagotoviti ustrezno podporo vsem, na žalost.
Prav tako včasih sestavim različice beta, da preizkusim nekaj posebnega ali ko zaženem različice ROM-ov Beta ali predogled za razvijalce. To sem naredil na napravah Nexus in OnePlus, ljudje včasih radi preizkusijo stvari :)
Oglejte si 2. del: F2FS, EAS in nasveti za ambiciozne razvijalce jedra