Intervju s programerom eng.stk 1. dio: Porijeklo i razvoj kernela

click fraud protection

Nedavno smo intervjuirali eng.stk, developera blu_spark kernela. U ovom dijelu pitamo ga o njegovom podrijetlu i razvojnom radu.

Nedavno sam dobio priliku intervjuirati starijeg člana XDA eng.stk, programer blu_spark kernela. Dostupan je na mnogim uređajima na našim forumima, uključujući Nexus 5, OnePlus 3/T i OnePlus 5T. U ovom dijelu pitamo eng.stk o njegovim počecima razvoja i kako razvija blu_spark kernel.


Prvo, predstavite sebe i svoju jezgru. Po čemu se vaš kernel razlikuje od konkurencije? Koja je vaša filozofija dizajna za promjene kernela i kako ih provodite?

Ja sam eng.stk i na XDA sam od 2010. Većina vas me zna po mojim code_blue i blu_spark projektima :)

Počeo sam na XDA-u pisanjem nekih skripti i raznih alata, hakiranja okvira. Također sam napravio mnogo tema... Tijekom svog vremena ovdje također sam izravno surađivao na nekim projektima kao što su Purity ROM, Universal Kernel Manager, Kernel Adiutor i nedavno Magisk i WireGuard da spomenemo samo neke. U zadnje vrijeme radim i na TWRP-u (posebno na OnePlus uređajima), Magisk modulima i drugim alatima/hackovima [koji su] korisni tijekom životnog ciklusa mojih kernel projekata (neke su stvari išle na XDA Portal ako se sjećam ispravno). blu_spark kernel počeo je postajati ne samo kernel, već sveobuhvatno iskustvo između kernela, alatnih lanaca, oporavka, temiranja, alata, skripti itd. Ali rad na kernelu je ono u čemu najviše uživam i ono što me pokreće.

Uvijek sam uživao hakirati i graditi neki kod/skripte kad sam imao priliku (rastavljanje elektroničkih igračaka i osnovno kodiranje na Commodoreu 64 mog rođaka bilo je zabavno). Za mene kodiranje nije sredstvo za postizanje cilja, već samo alat poput nekih drugih za postizanje definirane svrhe. Većina mojih ozbiljnijih stvari i temelji mog rada bili su gotovi kada sam otkrio Linux tijekom moje adolescencije/ranih dvadesetih. Kasnije, negdje tijekom sveučilišnog razdoblja, Android je bio logičan sljedeći korak za mene: pravi san petljara, gdje se s hardverom ili softverom može puno igrati.

Najbolje riječi za opisivanje blu_spark su optimizacija i stabilnost. Ljudi koji ga koriste znaju da se na njega mogu osloniti. Moje nadogradnje kernela su pomalo 'zalihe' na način da ne uklanjam neke stvari koje su dostupne iz kutije, držeći sve opcijsko tako da ljudi mogu birati. Ne volim dodavati previše stvari, samo mijenjam ili dodajem ono što smatram najboljim za svako polje. CPU freq driver, IO planer, mrežni protokoli, datotečni sustavi itd. ili ugađanje nekih podesivih za neke zadane parametre ili uzvodno neke upravljačke programe za najbolji mogući ishod. Također izrađujem lance alata izrađene po narudžbi (od Linara, sjajan pogled na GCC), uglavnom kako bih izvukao najbolje iz arhitekture.

Zaključak, većina ljudi zna da su na blu_sparku od trenutka kad flashiraju kernel na uređaju. Uvijek tražim nove stvari i načine da pružim najbolji mogući korisnički doživljaj. sigurno.

Recite nam nešto o svom blu_active guverneru! Što je to, čemu služi i zašto je poseban?

Znam da ljudi ponekad brkaju blu_active s blu_spark. blu_active je samo mali dio u usporedbi sa svim ostalim [poslom] koji radim.

CPU regulator u osnovi donosi odluke o povećanju ili snižavanju CPU frekvencija, u skladu s potrebama sustava. Guverner je imao nekoliko promjena i mutacija od početka. Kao i sve drugo što radim, trebalo mi je nešto što ispunjava moje potrebe. Temelji se na mom omiljenom guverneru, interaktivnom guverneru. Na početku sam samo stavio neke uzvodne stvari na njega, ali onda sam počeo dodavati neke druge stvari, poput ažuriranja CAF-a ili logike koju sam vidio kod drugih guvernera koje smatram korisnima. Također sam dodao HMP kompatibilnost i neke druge dobrote.

Najnovija iteracija temelji se na Googleovoj Linux 4.4 Android grani, s nekim upstream i CAF popravcima također, ali mnogo jednostavnijim nego prije. Jednostavno iskoristite ono što imate u potpunosti, uklonite ono što nemate. Uvijek pokušavam nabaviti bolju bateriju nego sa standardnim postavkama, smanjujući trošenje, dok pokušavam poboljšati izvedba (izvedba u stvarnom životu, ona koju osjetite očima i prstima, a ne sintetikom alati).

U jednom sam trenutku želio jednostavnu mogućnost podešavanja kako bi se ljudi mogli poigrati s izvedbom na jednostavan način. Tako je nastao Fastlane :). Logika je donekle slična načinu na koji radi Honda VTEC: igrajte se s vremenima od zadanog praga. Dakle, s jednostavnim prekidačem i promjenjivom vrijednošću praga, ljudi bi mogli imati izravnije i agresivnije skaliranje frekvencije procesora. Natjerati ga da uđe prije ili kasnije u skladu s opterećenjem sustava, zaobilazeći ciljna opterećenja. Potpuno je kompatibilan s HMP-om i može se podešavati po klasteru prema potrebama ljudi, fino podešen za svaki uređaj na kojem radi.

Koje ugrađene mehanizme ili podešavanja vam se sviđaju/ne sviđaju koje nude proizvođači originalne opreme? tj. Qualcommov input boost.

Neka poboljšanja korisničkog prostora i druge mogućnosti podešavanja koje su postavljene u HAL-ovima (Slojevi apstrakcije hardvera), tvrdo kodirane okvirne stvari itd. ponekad mogu biti neugodne. Naravno, poznato je da programeri kernela zaobilaze neke od njih. Na Nexusu 5, na primjer, većina nas se riješila mpdecisiona i nabavila prilagođeni hotplug - u to smo vrijeme imali blu_plug. Neki drugi uređaji imali su loše upravljanje toplinom i prilagođenu kontrolu topline sa sysfovima za razine temperature, učestalost ublažavanja itd. Neki noviji uređaji imaju neka stroga pravila o bateriji, isključivanju jezgri i drugim stvarima na "niskim razinama" koje nisu donijele pravi dobitak u korištenju uređaja. Naime, ponekad je čak i uništavao korisničko iskustvo, pa je bilo potrebno ukrotiti CTL i BCL tehnologije.

Također se sjećam uklanjanja enkripcije u uređajima kada je to bilo, sve promjene koje su SELinux iteracije uvele promjene koje su učinile da prijašnji hakovi rade na drugačiji način... neke nedavne sigurnosne promjene Androida stalni su izazov. To uključuje AVB (neki dijelovi uglavnom poznati kao dm-verity). Neke druge promjene dovele su do ograničenja za tunables i sysfs mjesta koja su morala biti premještena jer nemamo pristup istim mjestima koja smo imali prije. Većina ovih ograničenja relevantnija je za zalihe ROM-ova (na kojima radim većinu svog posla), obično utire put i olakšava kada su u pitanju prilagođeni ROM-ovi (gdje su ograničenja niža).

U novijim SoC-ovima kao što su Qualcomm Snapdragon 820 i 835, neki su OEM-ovi dodali neka poboljšanja iz korisničkog prostora koja su dobrodošla i rješavaju mrtve točke u sustavu, nisu sve OEM stvari loše. Što se tiče izvora kernela, što je izvor čišći i dokumentiraniji, to bolje.

Koje druge značajke želite uključiti? Kao što je napredna kontrola boja, i tako dalje.

Obično ne uključujem stvari koje osobno ne koristim ili koje ne smatram korisnima. Stvari koje volim raditi, osim blu_active, uključuju optimizacije i popravke arhitekture, ažuriranja kripto stvari, IO raspoređivanje i drugo dodaci za pohranu/datotečni sustav, KCAL, USB brzo punjenje, jačina vibracije, LED kontrola baterije/obavijesti, blokatori Wakelock-a, WireGuard, itd. Uvijek gradim s prilagođenim lancem alata za izradu kao što sam ranije rekao.

Koju metodologiju testiranja koristite za svoj kernel? Koristite li korisnička izvješća, referentne vrijednosti ili bilo koje druge prilagođene rutine?

Posjedujem svaki telefon za koji razvijam, tako da se sve promjene uvijek testiraju. Budući da svakodnevno vozim svaki uređaj dulje vrijeme, sve što smatram da ne odgovara meni, ne bi trebalo odgovarati ni za koga drugog. Kad javno objavim međugradnju, ja i neki drugi ljudi za koje vjerujem da će dati korisne povratne informacije već su je testirali mnogo. Znam da se ponekad nekim korisnicima dosadi što sve stvari rade kako treba, ali ja iznad svega cijenim stabilnost: uvijek se stavljam na prvo mjesto korisnika.

Usmjeravam stvari prema stvarnom životu, a ne prema sintetičkim testovima. Ova vrsta softvera napravljena je za ljude, a ne za strojeve u pozadinskom uredu. Početna točka je uvijek bolja od iskustva sa zalihama, na svim frontama, ali ne cijenim toliko najnoviji Antutu visok rezultat. Moji se kerneli mogu podesiti na ovu vrstu mjerila, ali to nije moj krajnji cilj. Cijenim neka mjerila koja su izravnija, kao što je, na primjer, testiranje IO pohrane. Oni mogu pružiti brzi način za potvrdu nekih nedavno učinjenih promjena, na primjer.

Testiram sa zalihama ROM-ova kako bih imao stabilnu osnovu za stvari. Radim prilagođene nadogradnje za prilagođene ROM-ove, ali zbog nestabilne prirode prilagođenih ROM-ova s ​​dodanim dodacima, noćnim satima i čak razlika u implementaciji nekih značajki, nemoguće ih je sve pokriti i pružiti odgovarajuću podršku svima, nažalost.

Također ponekad izrađujem beta međuverzije da testiram nešto specifično ili kada pokrećem međuverzije na Beta ROM-ovima ili preglede za razvojne programere. Napravio sam to na uređajima Nexus i OnePlus, ljudi ponekad vole testirati stvari :)


Pogledajte 2. dio: F2FS, EAS i savjeti za ambiciozne programere kernela