Wywiad z Flar2, twórcą jądra ElementalX, część 1

Przeprowadzamy wywiad z flare2, twórcą jądra ElementalX i zagłębiamy się w takie tematy, jak jego życie osobiste, praca programistyczna i nie tylko.

Niedawno przeprowadziłem wywiad z Flarem2, człowiekiem stojącym za słynnym jądrem ElementalX i jego jeszcze bardziej popularną aplikacją ElementalX Kernel Manager. Wydał wersję swojego jądra dla szerokiej gamy urządzeń, w tym OnePlus i urządzenia Nexus.

W tej części pytamy o przemyślenia flara2 na temat wąskich gardeł w wydajności Androida i więcej o jego życiu osobistym! Możesz się sprawdzić część 2 tego wywiadu tutaj.


No hej! Najpierw przedstaw się, zanim przejdziemy do pytań.

Nazywam się Aaron Segaert, znany również jako flar2. Większość ludzi zna mnie jako twórcę jądra ElementalX. Mam też kilka aplikacji.

Czy miałeś wcześniej jakieś doświadczenia z komputerami i programowaniem? Może dyplom informatyki czy coś?

Zacząłem od komputerów, kiedy byłem bardzo młody. Moim pierwszym komputerem był Texas Instruments TI-99/4A. Nauczyłem się kodować w BASIC-u i zapisałem swoje programy na kasecie magnetofonowej (tak, jestem stary). Potem nasza rodzina kupiła klon IBM 286 i na tym etapie zrezygnowałem z kodowania, ponieważ to było wcześniej Internet był powszechnie znany, a ja nie miałem żadnych zasobów ani nawet nie znałem nikogo, kto miałby komputer. Zacząłem informatykę na uniwersytecie, ale oblałem ją na pierwszym roku. Tak naprawdę nigdy nie chodziłem na zajęcia, bo byłem zbyt zajęty zabawą i graniem koncertów z moim zespołem. Później wróciłem do szkoły i uzyskałem doktorat z socjologii. W czasie studiów zainteresowałem się Linuksem i oprogramowaniem open source, ale nigdy nie zajmowałem się poważniejszym programowaniem. Dołożyłem drobne fragmenty tu i ówdzie, ale głównie tworzyłem skrypty i małe programy na własne potrzeby. Prawdopodobnie zbudowałem swoje pierwsze jądro Linuksa około 2002 roku. W tamtym czasie nie pisałem własnego kodu, jedynie eksperymentowałem z różnymi poprawkami i opcjami kompilacji w celu zwiększenia wydajności. Bardziej interesowałem się budowaniem komputerów, podkręcaniem i ogólnie próbami sprawienia, aby sprzęt robił rzeczy, do których nie powinien.

Czy zainteresował Cię jakiś rozwój inny niż tworzenie aplikacji na Androida i rozwój jądra?

Niezupełnie. Znalazłem dobre narzędzia dostępne do prawie wszystkiego, co musiałem zrobić na komputerach. Powodem, dla którego zacząłem pracować nad jądrami i aplikacjami dla Androida, było to, że poczułem, że potrzebne są pewne funkcje i jest miejsce na ulepszenia istniejących narzędzi. Na przykład stworzyłem Button Mapper, ponieważ chciałem, aby klawisz Home w telefonach Samsung robił więcej, a nie podobały mi się odwrócone klawisze Wstecz i Ostatnie. Zrobiłem DevCheck, ponieważ inne aplikacje informacyjne systemu nie pokazywały informacji, które chciałem zobaczyć w jasny i zwięzły sposób. Jądro ElementalX dodaje nowe funkcje sprzętowe, a EX Kernel Manager kontroluje te funkcje i dodaje kilka narzędzi, których używam, aby ułatwić programowanie. Lubię rozwiązywać problemy, a inżynieria wsteczna lub dodawanie nowych funkcji sprzętowych do telefonu to fajne wyzwanie.

Jak zetknąłeś się z rozwojem Androida, a konkretnie z rozwojem jądra?

Zawsze nienawidziłem telefonów komórkowych i długo się przed nimi broniłem. Moja żona i ja korzystaliśmy z podstawowego telefonu z klapką o minimalnym planie, który był używany głównie w sytuacjach awaryjnych. W 2012 roku w naszym domu wybuchł pożar i nie było nas przez prawie trzy miesiące. Odcięto nam wszystkie media i postanowiliśmy nie podłączać ponownie linii stacjonarnej, więc dostaliśmy smartfon, który chyba był LG P-coś. Zdałem sobie sprawę, że to coś w rodzaju minikomputera i zdecydowałem, że potrzebuję własnego minikomputera, więc kupiłem HTC One V.

Ponieważ majstruję i moduję prawie wszystko, od razu odkryłem XDA i odkryłem, że telefony z Androidem nie tylko działają pod Linuksem, ale można je też podkręcić. Jestem użytkownikiem Linuksa od dłuższego czasu, więc rozwidliłem jedno z jąder i uzależniłem się. Wkrótce dostałem tani tablet Acer i zacząłem bawić się tym sprzętem i jądrem, ponieważ chciałem, żeby miał USB OTG. Okazało się, że sprzęt nie był do tego zdolny, ale w ten sposób zacząłem uczyć się więcej o sprzęcie mobilnym. Nigdy nie udostępniłem publicznie jądra dla LG, tabletu Acer czy One V, ale zbudowałem własne jądra dla każdego z nich i zainstalowałem niestandardowe ROMy, które były niezbędne w tamtych czasach, ponieważ Android nie był jeszcze dojrzały.

Wkrótce wyrosłem z One V i zamieniłem na HTC One XL i wtedy narodził się ElementalX.

Jaki był początkowy cel ElementalX i jak to się zmieniło w ostatnich latach?

Celem ElementalX zawsze było dodanie przydatnych funkcji sprzętowych, bez pogarszania stabilności i wydajności, oraz wypuszczenie czegoś, na czym ludzie mogą polegać, aby po prostu pracować. Zawsze stawiam stabilność na pierwszym miejscu, ponieważ potrzebuję, aby mój telefon był niezawodny. Żadnych przypadkowych restartów i takich rzeczy jak niedziałający aparat. Filozofia pozostaje niezmienna od lat. Utrzymuję prostotę i dodaję funkcje sprzętowe, które uważam za przydatne. Rzeczy takie jak gesty budzenia, tryb wysokiej jasności, regulacja wibracji, kontrola dźwięku, obsługa większej liczby systemów plików, joysticki itp.

Ciężko pracuję, aby moje jądra były aktualne, łatwe w instalacji i jak najbardziej kompatybilne. Niektórzy użytkownicy są rozczarowani, że nie dodaję zbyt wielu poprawek z CAF-a lub starszych wersji Linuksa, ale moim głównym celem jest dostarczenie bardzo stabilnego produktu, bez dziwnych problemów. Wielu moich użytkowników to nie ludzie, którzy dużo publikują na XDA, to zaawansowani użytkownicy, którzy mają zaspokojoną konkretną potrzebę przez niestandardowe jądro lub ludzi, którzy czasami lubią majstrować przy swoim sprzęcie, ale nie są hardkorami flashoholicy. Chcę, aby ludzie, którzy nie śledzą wszystkich najnowszych osiągnięć Androida, mogli bez problemu korzystać z ElementalX.

Istnieje wiele innych jąder, które eksperymentują z łatkami źródłowymi. W ElementalX korzystam ze starannie dobranego zestawu poprawek i optymalizacji. W mojej karierze poza Androidem mierzę rzeczy trudne do zmierzenia i wykorzystuję dowody do tworzenia polityki i udzielania porad. Stosuję te same zasady przy rozwoju jądra i generalnie nie używam poprawek, jeśli nie przynosi to wymiernych korzyści. Przykładem może być monitor baterii w EX Kernel Manager. Oferuje sposób obiektywnego pomiaru wpływu ulepszeń baterii i zmian w jądrze. Pływające monitory w DevCheck to kolejne narzędzie, którego używam do programowania, głównie do monitorowania procesora częstotliwości i temperatury podczas różnych zastosowań, takich jak granie, oglądanie filmów lub przeglądanie Internetu przeglądanie.

Jak zmiany, jakie zaszły w Androidzie w ciągu ostatnich kilku lat, wpłynęły na Twoją pracę?

Czasami trudno jest poradzić sobie z wieloma zmianami w zakresie bezpieczeństwa, ale rozumiem je. Jeśli się nie mylę, Android jest obecnie szerzej używany niż Windows, co czyni go celem. Źli ludzie wykorzystają każdy możliwy kąt, aby wykorzystać użytkowników Androida.

Zapobieganie modyfikacjom partycji systemowej jest oczywiście kluczem do ochrony integralności urządzenia. Pamiętam, jak HTC zaczęło to robić w 2012 lub 2013 roku i wydawało się, że to koniec świata. W tamtym czasie potrzebny był zapis do /system w celu rootowania, edycja build.prop, instalowanie uprzywilejowanych aplikacji, usuwanie bloatware i praktycznie każdego popularnego moda. Wiele dostosowań w tamtym czasie obejmowało takie rzeczy, jak deodeksowanie i modyfikowanie frameworka. Przez długi czas HTC nie udostępniało żadnego źródła jądra, więc stworzyłem moduł jądra, aby wyłączyć systemową ochronę przed zapisem w standardowym jądrze, dzięki czemu po raz pierwszy zyskałem sławę jako programista. Jednak z biegiem czasu, gdy zabezpieczenia takie jak Verity stały się standardową częścią Androida, wymusiło to innowacje i lepsze rozwiązania rozwiązania takie jak bezsystemowy root Chainfire, a teraz jest Magisk, który robi różne rzeczy bezsystemowe.

Kolejnym dużym problemem jest SELinux, który spowodował, że mnóstwo aplikacji przestało działać. Wielu użytkowników tego nienawidziło i do dziś są ludzie, którzy korzystają z SELinuksa w trybie zezwalającym, co jest bardzo złym pomysłem. Powiedziałbym, że SELinux to najważniejsza funkcja bezpieczeństwa Androida. Aby dać przykład znaczenia SELinuksa, kiedy po raz pierwszy dostałem Pixela XL, nie było dostępnego roota, ale o exploitie Dirty Cow zrobiło się głośno. Bardzo chciałem rozpocząć rozwój jądra, co oznacza przeszukiwanie lub modyfikowanie plików sysfs, co wymaga roota. Skompilowałem jeden z dowodów koncepcji Dirty Cow i mogłem uruchamiać polecenia jako root, ale SELinux uniemożliwiał mi zrobienie czegokolwiek interesującego. Musiałem zmodyfikować plik boot.img, aby SELinux był liberalny. Mógłbym uzyskać pełny dostęp bez modyfikowania jądra, ale zajęłoby to wiele, wiele godzin. To powiedziawszy, zostaw egzekwowanie SELinux, to główna linia obrony przed złośliwym oprogramowaniem. Naucz się używać sepolicy-inject do zmiany określonych zasad w razie potrzeby.

Kiedy pojawił się Nougat, początkowo prawie wszystkie /sys i /proc stały się niewidoczne dla aplikacji użytkowników. Root zawsze był niezbędny do wprowadzania zmian, ale nagle stał się niezbędny po prostu do odczytania /sys i /proc. Z pewnością w tych systemach plików znajdują się informacje, które można wykorzystać do wykorzystania urządzenia, dlatego konieczne było dodanie ograniczeń. Ale jest też wiele informacji, które użytkownicy powinni zobaczyć. Dlaczego root miałby być wymagany do sprawdzenia bieżącego harmonogramu we/wy, częstotliwości procesora graficznego lub typu sprzętu panelu? Aby sobie z tym poradzić, musiałem wprowadzić wiele zmian w DevCheck, a wielu użytkowników było zdezorientowanych, dlaczego informacje nie są już dostępne po aktualizacji do Nougata. Ostatecznie niektóre ograniczenia na ścieżkach sysfs zostały zniesione.

Poza tym z punktu widzenia tworzenia aplikacji podoba mi się większość zmian w interfejsie API Androida, mimo że zmuszają mnie do wprowadzenia wielu zmian w moich aplikacjach. Zmiany te są zwykle na lepsze.


Obejrzyj część 2 tego wywiadu!