Rozhovor s Flar2, vývojářem ElementalX Kernel Part 1

Vyzpovídáme flar2, vývojáře jádra ElementalX, a ponoříme se do témat, jako je jeho osobní život, vývojová práce a další.

Nedávno jsem se dostal k rozhovoru s flarem2, mužem, který stojí za slavným jádrem ElementalX a jeho ještě populárnější aplikací ElementalX Kernel Manager. Vydal verzi svého jádra pro širokou škálu zařízení, včetně OnePlus a zařízení Nexus.

V této části se ptáme na názory flar2 na problémová místa výkonu Androidu a více na jeho osobní život! Můžete se odhlásit část 2 tohoto rozhovoru zde.


Nazdárek! Nejprve se představte, než se pustíme do otázek.

Jmenuji se Aaron Segaert, také známý jako flar2. Většina lidí mě zná jako vývojáře jádra ElementalX. Mám také několik aplikací.

Měl jsi předem nějaké zkušenosti s počítači a vývojem? Třeba titul z informatiky nebo tak něco?

Začal jsem s počítači, když jsem byl velmi mladý. Můj první počítač byl Texas Instruments TI-99/4A. Naučil jsem se kódovat v BASICu a své programy si uložil na kazetu (ano, jsem starý). Pak si naše rodina zakoupila klon IBM 286 a já v tu chvíli přestal kódovat, protože to bylo dříve Internet byl široce známý a já jsem neměl žádné zdroje a dokonce ani neznám nikoho jiného, ​​kdo by měl a počítač. Začal jsem s informatikou na univerzitě, ale v prvním ročníku jsem z toho vypadl. Nikdy jsem opravdu nechodil do třídy, protože jsem byl příliš zaneprázdněn zábavou a hraním koncertů se svou kapelou. Později jsem se vrátil do školy a získal doktorát ze sociologie. Během studií jsem se začal zajímat o Linux a open source, ale nikdy jsem se nedostal k serióznímu programování. Sem tam jsem přispěl drobnými kousky, ale většinou jsem jen vytvářel skripty a malé programy pro své vlastní účely. Své první linuxové jádro jsem postavil pravděpodobně kolem roku 2002. V té době jsem nepsal svůj vlastní kód, pouze jsem experimentoval s různými záplatami a možnostmi sestavení pro zvýšení výkonu. Byl jsem spíše na stavění počítačů, přetaktování a obecně jsem se snažil přimět hardware dělat věci, které neměl.

Zaujal vás jiný vývoj než vývoj aplikací pro Android a vývoj jádra?

Vlastně ne, našel jsem dostupné dobré nástroje pro téměř vše, co jsem na počítačích potřeboval dělat. Důvod, proč jsem začal pracovat na jádrech a aplikacích pro Android, je ten, že jsem cítil potřebu určitých funkcí a prostoru pro vylepšení stávajících nástrojů. Například jsem vytvořil Button Mapper, protože jsem chtěl, aby klávesa Home na telefonech Samsung uměla víc, a nelíbily se mi obrácené klávesy zpět a poslední. Udělal jsem DevCheck, protože jiné aplikace s informacemi o systému nezobrazovaly informace, které jsem chtěl vidět, jasným a stručným způsobem. Jádro ElementalX přidává nové hardwarové funkce a EX Kernel Manager tyto funkce řídí a přidává některé nástroje, které používám pro usnadnění vývoje. Rád řeším problémy a je zábavnou výzvou reverzní inženýrství věcí nebo přidání nových hardwarových funkcí do telefonu.

Jak jste se dostal do kontaktu s vývojem Androidu, konkrétně s vývojem jádra?

Vždy jsem mobily nesnášel a dlouho jsem jim odolával. Moje žena a já jsme sdíleli základní vyklápěcí telefon s minimálním plánem, který se používal hlavně pro nouzové situace. V roce 2012 jsme měli doma požár a byli jsme téměř tři měsíce mimo. Všechny naše služby byly přerušeny a rozhodli jsme se nepřipojovat naši pevnou linku, takže jsme dostali smartphone, což byl myslím LG P-něco. Uvědomil jsem si, že je to jako mini-počítač a rozhodl jsem se, že potřebuji svůj vlastní mini-počítač, a tak jsem si koupil HTC One V.

Vzhledem k tomu, že jsem šťoural a upravoval skoro všechno, okamžitě jsem objevil XDA a zjistil jsem, že nejen telefony s Androidem běží na Linuxu, ale také je lze přetaktovat. Byl jsem uživatelem Linuxu už dlouho, takže jsem jedno z kernelů forkoval a byl jsem zaháčkovaný. Brzy jsem si pořídil levný tablet Acer a začal jsem se s tím hardwarem a jádrem hrabat, protože jsem chtěl, aby měl USB OTG. Ukázalo se, že hardware nebyl schopen, ale tak jsem se začal učit více o mobilním hardwaru. Nikdy jsem veřejně nevydal jádro pro LG, tablet Acer nebo One V, ale postavil jsem si vlastní jádra pro každý a nainstaloval jsem vlastní ROM, které byly v té době nezbytné, protože Android ještě nebyl vyspělý.

Brzy jsem přerostl One V a vyměnil jsem za HTC One XL a tehdy se zrodil ElementalX.

Jaký byl původně cíl ElementalX a jak se to v posledních letech změnilo?

Cílem ElementalX bylo vždy přidávat užitečné hardwarové funkce, aniž by byla ohrožena stabilita nebo výkon, a vydávat něco, na čem se lidé mohou spolehnout. Vždy kladu stabilitu na první místo, protože potřebuji, aby byl můj telefon spolehlivý. Žádné náhodné restarty nebo věci, jako je nefunkčnost fotoaparátu. Filozofie zůstala v průběhu let stejná. Dělám věci jednoduše a přidávám hardwarové funkce, které považuji za užitečné. Věci jako gesta probuzení, režim vysokého jasu, nastavení vibrací, ovládání zvuku, podpora více souborových systémů, joysticky atd.

Tvrdě pracuji na tom, aby moje jádra byla aktuální, snadno se instalovala a byla co nejširší kompatibilní. Někteří uživatelé jsou zklamaní, že nepřidávám mnoho záplat z CAF nebo upstream Linuxu, ale mým hlavním cílem je dodat velmi stabilní produkt bez podivných problémů. Mnoho mých uživatelů nejsou lidé, kteří na XDA zveřejňují hodně příspěvků, jsou to pokročilí uživatelé, kteří mají uspokojenou konkrétní potřebu zakázkovým jádrem nebo lidmi, kteří si občas rádi pohrají se svým hardwarem, ale nejsou hardcore flashaholici. Chci, aby lidé, kteří nesledují nejnovější vývoj Androidu, mohli bez problémů používat ElementalX.

Existuje spousta dalších jader, která experimentují s upstream patchi. V ElementalX používám pečlivě vybranou sadu oprav a optimalizací. Ve své kariéře mimo Android měřím věci, které je obtížné měřit, a používám důkazy k vytváření zásad a poskytování rad. Aplikuji stejné principy na vývoj jádra a obecně nepoužívám záplaty, pokud z toho není měřitelný přínos. Monitor baterie v EX Kernel Manager je toho příkladem. Nabízí způsob, jak objektivně změřit účinek vylepšení baterie a změn jádra. Plovoucí monitory v DevChecku jsou dalším nástrojem, který používám pro vývoj, většinou pro monitorování CPU frekvence a teploty během různých případů použití, jako je hraní her nebo sledování videí nebo webu procházení.

Jak ovlivnily změny Androidu v posledních letech vaši práci?

Někdy je těžké vyrovnat se s mnoha bezpečnostními změnami, ale chápu je. Pokud se nepletu, Android je nyní více používaný než Windows, což z něj dělá cíl. Špatní lidé využijí jakýkoli úhel, aby zneužili uživatele Androidu.

Zabránění úpravě systémového oddílu je samozřejmě klíčem k ochraně integrity zařízení. Pamatuji si, když to HTC začalo dělat v roce 2012 nebo 2013 a vypadalo to jako konec světa. V té době bylo potřeba zápisu do /system pro root, úpravu build.prop, instalaci privilegovaných aplikací, odstranění bloatwaru a prakticky každého populárního modu. Mnoho úprav v té době zahrnovalo věci jako deodexování a úpravy rámce. Dlouhou dobu nebyl od HTC k dispozici žádný zdrojový kód jádra, a tak jsem vytvořil modul jádra pro deaktivaci ochrany proti zápisu systému v základním jádře, pro který jsem se poprvé stal známým jako vývojář. Ale postupem času, jak se ochrany jako pravdivost staly standardní součástí Androidu, si vynutily inovace a lepší řešení, jako je bezsystémový kořen Chainfire a nyní je tu Magisk, který dělá všemožné věci bezsystémově.

Dalším velkým je SELinux, který způsobil, že přestala fungovat spousta aplikací. Mnoho uživatelů to nenávidělo a dodnes existují lidé, kteří běží se SELinuxem v permisivním režimu, což je velmi špatný nápad. Řekl bych, že SELinux je jediná nejdůležitější bezpečnostní funkce Androidu. Abych uvedl příklad důležitosti SELinuxu, když jsem poprvé dostal Pixel XL, nebyl k dispozici žádný root, ale exploit Dirty Cow přinášel novinky. Chtěl jsem začít s vývojem jádra, což znamená prohledávat nebo upravovat soubory sysfs, což vyžaduje root. Zkompiloval jsem jeden z proof-of-concepts Dirty Cow a byl jsem schopen spouštět příkazy jako root, ale SELinux mi zabránil udělat cokoliv zajímavého. Musel jsem upravit boot.img, aby byl SELinux povolen. Možná bych dosáhl plného přístupu bez úpravy jádra, ale trvalo by to mnoho a mnoho hodin. To vše říci, nechte SELinux vynucovat, je to hlavní obranná linie proti malwaru. Naučte se používat sepolicy-inject ke změně konkrétních politik podle potřeby.

Když přišel Nougat, zpočátku se téměř všechny /sys a /proc staly neviditelnými pro uživatelské aplikace. Root byl vždy nutný k provádění změn, ale najednou byl root nutný jednoduše ke čtení /sys a /proc. V těchto souborových systémech jsou určitě informace, které lze použít ke zneužití zařízení, takže bylo nutné přidat omezení. Existuje však také mnoho informací, které by uživatelé měli mít možnost vidět. Proč by měl být root vyžadován, aby viděl aktuální plánovač I/O, frekvenci GPU nebo typ hardwaru panelu? Musel jsem provést mnoho změn v DevChecku, abych se s tím vypořádal, a mnoho uživatelů bylo zmateno tím, proč po aktualizaci na Nougat již nejsou dostupné informace. Nakonec byla některá omezení cest sysfs zrušena.

Kromě toho se mi z hlediska vývoje aplikací líbí většina změn API na Androidu, i když mě nutí provést spoustu změn v mých aplikacích. Tyto změny jsou obvykle k lepšímu.


Podívejte se na 2. část tohoto rozhovoru!