Interjú Flar2-vel, az ElementalX Kernel 1. rész fejlesztőjével

Interjút készítünk flar2-vel, az ElementalX kernel fejlesztőjével, és olyan témákban elmélyülünk, mint a személyes élete, a fejlesztési munkája és még sok más.

Nemrég interjút készítettem flar2-vel, a híres ElementalX kernel és a még népszerűbb ElementalX Kernel Manager alkalmazás mögött álló emberrel. Kiadta kernelének egy verzióját számos eszköz számára, beleértve OnePlus és Nexus eszközök.

Ebben a részben flar2 gondolatairól kérdezzük az Android teljesítményének szűk keresztmetszeteit, és többet kérdezünk a személyes életéről! Ki lehet nézni az interjú 2. része itt.


Halihó! Először is mutatkozzon be, mielőtt rátérnénk a kérdésekre.

A nevem Aaron Segaert, más néven flar2. A legtöbben az ElementalX kernel fejlesztőjeként ismernek. Nekem is van néhány alkalmazásom.

Volt már tapasztalatod számítógépekkel és fejlesztéssel kapcsolatban? Mint egy informatikus diploma vagy ilyesmi?

Egészen fiatalon kezdtem el a számítógépekkel foglalkozni. Az első számítógépem egy Texas Instruments TI-99/4A volt. Megtanultam BASIC-ben kódolni, és a programjaimat kazettára mentettem (igen, öreg vagyok). Aztán a családunk vásárolt egy 286-os IBM klónt, és akkoriban megkerültem a kódolást, mert ez korábban volt az Internet széles körben ismert volt, és nem volt semmilyen forrásom, és nem is ismerek senki mást, akinek a számítógép. Az egyetemen kezdtem informatikát, de az első évben kibuktam. Valójában sosem jártam órára, mert túlságosan elfoglalt voltam a szórakozással és a zenekarommal való fellépéssel. Később visszatértem az iskolába, és doktori címet szereztem szociológiából. Diákkoromban elkezdett érdekelni a Linux és a nyílt forráskód, de soha nem kezdtem komolyabb programozásba. Itt-ott apróbb részletekkel is hozzájárultam, de többnyire csak szkripteket és kis programokat készítettem a saját céljaimra. Valószínűleg 2002 körül készítettem az első Linux kernelt. Akkoriban nem írtam saját kódot, csak kísérleteztem különböző javításokkal és összeállítási lehetőségekkel a teljesítmény növelése érdekében. Inkább a számítógépek építése, a túlhajtás és általában arra törekedtem, hogy a hardver olyan dolgokat tegyen, amikre nem lett volna szabad.

Érdekelte az Android-alkalmazások fejlesztésén és a kernelfejlesztésen kívül bármilyen fejlesztés?

Nem igazán, jó eszközöket találtam szinte mindenhez, amit a számítógépen kellett tennem. Azért kezdtem el dolgozni a kerneleken és Android-alkalmazásokon, mert úgy éreztem, hogy szükség van bizonyos funkciókra és a meglévő eszközök fejlesztésére. Például azért készítettem el a Button Mappert, mert azt szerettem volna, ha a Samsung telefonokon a Home gomb többet tud, és nem szerettem a fordított vissza és a legutóbbi gombokat. Azért készítettem el a DevChecket, mert más rendszerinformációs alkalmazások nem mutatták világosan és tömören azokat az információkat, amelyeket látni akartam. Az ElementalX kernel új hardverszolgáltatásokat ad hozzá, az EX Kernel Manager pedig vezérli ezeket a szolgáltatásokat, és hozzáad néhány olyan eszközt, amelyet a fejlesztés megkönnyítésére használok. Szeretek problémákat megoldani, és szórakoztató kihívást jelent a dolgok visszafejtése vagy új hardverfunkciók hozzáadása a telefonhoz.

Hogyan kerültél kapcsolatba az Android fejlesztéssel, konkrétan a kernelfejlesztéssel?

Mindig is utáltam a mobiltelefonokat, és sokáig ellenálltam nekik. Feleségemmel közösen használtunk egy alaplapú telefont, minimális tervvel, amelyet főleg vészhelyzetekre használtak. 2012-ben tűz volt az otthonunkban, és majdnem három hónapig voltunk kint. Minden közüzemünk leállt, és úgy döntöttünk, hogy nem csatlakoztatjuk újra a vezetékes telefonunkat, ezért vettünk egy okostelefont, ami szerintem egy LG P-valami. Rájöttem, hogy olyan, mint egy miniszámítógép, és úgy döntöttem, hogy saját miniszámítógépre van szükségem, ezért vettem egy HTC One V-t.

Mivel szinte mindent bütykölök és módosítok, azonnal felfedeztem az XDA-t, és rájöttem, hogy az Android telefonokon nem csak Linux fut, de túlhajthatók is. Régóta Linux felhasználó vagyok, ezért elágaztam az egyik kernelt, és elakadtam. Hamar kaptam egy olcsó Acer táblagépet, és elkezdtem azzal a hardverrel és kernellel foglalkozni, mert azt akartam, hogy legyen rajta USB OTG. Kiderült, hogy a hardver nem alkalmas, de így kezdtem el többet tanulni a mobil hardverről. Nyilvánosan soha nem adtam ki kernelt LG-hez, Acer tablethez vagy One V-hez, hanem mindegyikhez saját kernelt építettem, és egyedi ROM-okat telepítettem, amelyekre akkoriban szükség volt, mivel az Android még nem volt kiforrott.

Hamar kinőttem a One V-t, és lecseréltem egy HTC One XL-re, és ekkor született meg az ElementalX.

Mi volt eredetileg az ElementalX célja, és hogyan változott ez az elmúlt években?

Az ElementalX célja mindig is az volt, hogy hasznos hardverfunkciókat adjon hozzá a stabilitás vagy a teljesítmény veszélyeztetése nélkül, és olyasmit adjon ki, amelyre az emberek számíthatnak, hogy csak működjenek. Mindig a stabilitást helyezem előtérbe, mert a telefonomnak megbízhatónak kell lennie. Nincsenek véletlenszerű újraindítások vagy olyan dolgok, mint például a kamera, ami nem működik. A filozófia változatlan maradt az évek során. Leegyszerűsítem a dolgokat, és olyan hardverfunkciókat adok hozzá, amelyeket hasznosnak találok. Olyan dolgok, mint az ébresztési gesztusok, nagy fényerejű mód, rezgésbeállítás, hangvezérlés, több fájlrendszer támogatása, joystickok stb.

Keményen dolgozom, hogy a kerneleim naprakészek legyenek, könnyen telepíthetők és a lehető legszélesebb körben kompatibilisek legyenek. Egyes felhasználók csalódottak, amiért nem adok hozzá sok javítást a CAF-ből vagy az upstream Linuxból, de a fő célom az, hogy egy nagyon stabil terméket szállítsak különösebb problémák nélkül. Sok felhasználóm nem olyan ember, aki sokat posztol az XDA-n, hanem erős felhasználók, akiknek konkrét igényük van kielégítve egyéni kernel, vagy olyan emberek, akik időnként szeretnek trükközni a hardverükön, de nem kemények flashmániások. Azt akarom, hogy azok, akik nem követik az összes legújabb Android-fejlesztést, problémamentesen használhatják az ElementalX-et.

Rengeteg más kernel is kísérletez upstream javításokkal. Az ElementalX-ben gondosan kiválasztott javításokat és optimalizálásokat használok. Az Androidon kívüli karrierem során olyan dolgokat mérek, amelyeket nehéz mérni, és bizonyítékokat használok fel a politika kialakításához és a tanácsadáshoz. Ugyanezeket az elveket alkalmazom a kernel fejlesztésére, és általában nem használok javításokat, hacsak nincs mérhető előnye. Az EX Kernel Manager akkumulátor-monitora jó példa erre. Módot kínál az akkumulátor-beállítások és a kernelváltozások hatásának objektív mérésére. A DevCheck lebegő monitorai egy másik eszköz, amelyet fejlesztéshez használok, főleg a CPU figyelésére frekvenciák és hőmérsékletek különböző használati esetekben, például játék, videók vagy internetezés közben böngészés.

Hogyan befolyásolták munkáját az elmúlt néhány évben az Androidon történt változások?

Néha nehéz kezelni a sok biztonsági változást, de megértem őket. Ha nem tévedek, az Androidot ma már szélesebb körben használják, mint a Windowst, ami célponttá teszi. A rossz emberek minden szögből kihasználják az Android-felhasználókat.

A rendszerpartíció módosításának megakadályozása nyilvánvalóan kulcsfontosságú az eszköz integritásának védelme szempontjából. Emlékszem, amikor a HTC elkezdte ezt csinálni 2012-ben vagy 2013-ban, és úgy tűnt, a világ vége. Akkoriban a /system-be kellett írni a root, a build.prop szerkesztése, a privilegizált alkalmazások telepítése, a bloatware eltávolítása és gyakorlatilag minden népszerű mod. Az akkori testreszabások közül sok olyan volt, mint a deodexelés és a keret módosítása. A HTC-től sokáig nem volt elérhető kernelforrás, ezért készítettem egy kernelmodult a rendszer írásvédelmének letiltására a törzsmagban, amiről először fejlesztőként váltam ismertté. De idővel, amikor az olyan védelmek, mint a valódiság, az Android szokásos részévé váltak, újításokat és jobbakat kényszerítettek ki megoldások, mint a Chainfire rendszer nélküli gyökér, és most van a Magisk, amely mindenféle dolgot megtesz rendszertelen-ly.

Egy másik nagy a SELinux, ami miatt rengeteg alkalmazás leállt. Sok felhasználó utálta, és a mai napig vannak, akik megengedő módban futnak a SELinux-szal, ami nagyon rossz ötlet. Azt mondanám, hogy a SELinux az Android legfontosabb biztonsági funkciója. Hogy egy példát mondjak a SELinux fontosságára, amikor először megvettem a Pixel XL-t, nem volt elérhető root, de a Dirty Cow exploit hírt hozott. Nagyon szerettem volna elkezdeni a kernelfejlesztést, ami a sysfs fájlok keresését vagy módosítását jelenti, amihez root szükséges. Lefordítottam az egyik Dirty Cow proof-of-fogalmat, és rootként tudtam parancsokat futtatni, de a SELinux megakadályozott, hogy bármi érdekeset csináljak. Módosítanom kellett a boot.img fájlt, hogy a SELinux engedélyező legyen. Lehet, hogy elértem volna a teljes hozzáférést a kernel módosítása nélkül, de ez sok-sok órába telt volna. Mindezt azt kell mondanunk, hogy hagyja a SELinux érvényesítését, ez a fő védelmi vonal a rosszindulatú programok ellen. Tanulja meg a sepolicy-inject használatával bizonyos házirendeket szükség szerint módosítani.

Amikor megjelent a Nougat, kezdetben szinte az összes /sys és /proc láthatatlanná vált a felhasználói alkalmazások számára. A root mindig is szükséges volt a változtatásokhoz, de hirtelen a root szükséges egyszerűen a /sys és /proc olvasásához. Azokban a fájlrendszerekben minden bizonnyal van olyan információ, amivel egy eszközt ki lehet használni, ezért szükség volt korlátozásokra. De sok olyan információ is van, amelyet a felhasználóknak látniuk kell. Miért kell a root rendszert megkövetelni az aktuális i/o ütemező vagy GPU frekvencia vagy a panel hardver típusának megtekintéséhez? Sok változtatást kellett végrehajtanom a DevCheck-en, hogy megbirkózhassak ezzel, és sok felhasználót zavarba ejtett, hogy a Nougat-ra való frissítés után miért nem érhető el többé az információ. Végül a sysfs útvonalakra vonatkozó korlátozások egy részét feloldották.

Ettől eltekintve, alkalmazásfejlesztési szempontból szeretem a legtöbb API-módosítást az Androidon, bár ezek sok változtatást kényszerítenek az alkalmazásaimra. Ezek a változások általában jobbak.


Nézze meg az interjú 2. részét!