Интервю с Flar2, разработчик на ElementalX Kernel Част 1

Интервюираме flar2, разработчика на ядрото ElementalX и се задълбочаваме в теми като личния му живот, работата по разработката и други.

Наскоро трябваше да интервюирам flar2, човекът зад известното ядро ​​ElementalX и неговото още по-популярно приложение ElementalX Kernel Manager. Той е пуснал версия на ядрото си за широк набор от устройства, включително OnePlus и Nexus устройства.

В тази част питаме за мислите на flar2 относно тесните места в производителността на Android и повече за личния му живот! Можете да проверите част 2 от това интервю тук.


Здравейте! Първо се представете, преди да пристъпим към въпросите.

Казвам се Арън Сегаерт, известен още като flar2. Повечето хора ме познават като разработчик на ядрото ElementalX. Имам и няколко приложения.

Имахте ли опит с компютри и разработка преди? Като диплома по компютърни науки или нещо подобно?

Започнах с компютрите, когато бях много малък. Първият ми компютър беше Texas Instruments TI-99/4A. Научих как да кодирам на BASIC и записах програмите си на касета (да, стар съм). След това семейството ни купи 286 клонинг на IBM и аз се отказах от кодирането в този момент, защото това беше преди интернет беше широко известен и аз нямах никакви ресурси или дори познавах някой друг, който имаше компютър. Започнах компютърни науки в университета, но се отказах през първата година. Всъщност никога не съм ходил на клас, защото бях твърде зает да се забавлявам и да свиря на концерти с групата си. По-късно се върнах в училище и получих докторска степен по социология. Докато бях студент, започнах да се интересувам от Linux и отворен код, но никога не се занимавах сериозно с програмиране. Допринесох с незначителни части тук и там, но най-вече правех скриптове и малки програми за собствените си цели. Вероятно създадох първото си Linux ядро ​​около 2002 г. По онова време не пишех собствен код, а само експериментирах с различни пачове и опции за изграждане, за да подобря производителността. Бях по-скоро в изграждането на компютри, овърклокването и като цяло се опитвах да накарам хардуера да прави неща, които не трябваше да прави.

Интересува ли ви някаква разработка, различна от разработката на приложения за Android и разработката на ядро?

Всъщност не, намерих добри налични инструменти за почти всичко, което трябваше да направя на компютри. Причината, поради която започнах да работя върху ядра и приложения за Android, е, че почувствах, че има нужда от определени функции и място за подобрение на съществуващите инструменти. Например, направих Button Mapper, защото исках началният бутон на телефоните на Samsung да прави повече и не харесвах обърнатите назад и скорошни клавиши. Направих DevCheck, защото други приложения за системна информация не показваха информацията, която исках да видя по ясен и стегнат начин. Ядрото на ElementalX добавя нови хардуерни функции, а EX Kernel Manager контролира тези функции и добавя някои инструменти, които използвам, за да улесня разработването. Обичам да решавам проблеми и е забавно предизвикателство да правя обратен инженеринг на неща или да добавям нови хардуерни функции към телефон.

Как се докоснахте до разработката на Android, по-специално разработката на ядрото?

Винаги съм мразил мобилните телефони и съм им се съпротивлявал дълго време. Жена ми и аз споделихме основен флип телефон с минимален план, който се използваше главно за спешни случаи. През 2012 г. имахме пожар в дома ни и бяхме навън почти три месеца. Всичките ни комунални услуги бяха прекъснати и решихме да не свързваме отново нашата стационарна линия, така че взехме смартфон, който беше LG P-нещо, мисля. Разбрах, че е като мини-компютър и реших, че имам нужда от собствен мини-компютър, така че си купих HTC One V.

Тъй като бърникам и модифицирам почти всичко, веднага открих XDA и открих, че телефоните с Android не само работят с Linux, но и могат да бъдат овърклокнати. Потребител съм на Linux от дълго време, така че разклоних едно от ядрата и бях пристрастен. Скоро взех евтин таблет на Acer и започнах да се занимавам с този хардуер и ядро, защото исках да има USB OTG. Оказа се, че хардуерът не е способен, но така започнах да научавам повече за мобилния хардуер. Никога не съм пускал публично ядро ​​за LG, таблет Acer или One V, но създадох свои собствени ядра за всеки и инсталирах персонализирани ROM, които бяха необходими в онези дни, тъй като Android все още не беше зрял.

Скоро надраснах One V и замених HTC One XL и тогава се роди ElementalX.

Каква беше първоначалната цел за ElementalX и как се промени това през последните години?

Целта на ElementalX винаги е била да добави полезни хардуерни функции, без да прави компромис със стабилността или производителността, и да пусне нещо, на което хората могат да разчитат просто да работи. Винаги поставям стабилността на първо място, защото имам нужда телефонът ми да е надежден. Няма произволни рестартирания или неща като неработеща камера. Философията остава същата през годините. Опростявам нещата и добавям хардуерни функции, които намирам за полезни. Неща като жестове за събуждане, режим на висока яркост, настройка на вибрациите, контрол на звука, поддръжка за повече файлови системи, джойстици и т.н.

Работя усилено, за да поддържам ядрата си актуални, лесни за инсталиране и възможно най-широко съвместими. Някои потребители са разочаровани, че не добавям много пачове от CAF или Linux нагоре по веригата, но основната ми цел е да доставя много стабилен продукт без странни проблеми. Много от моите потребители не са хора, които публикуват много в XDA, те са опитни потребители, които имат удовлетворена специфична нужда от персонализирано ядро ​​или хора, които от време на време обичат да се занимават с хардуера си, но не са хардкор флашхолици. Искам хората, които не следват всички най-нови разработки на Android, да могат да използват ElementalX без проблем.

Има много други ядра, които експериментират с възходящи пачове. В ElementalX използвам внимателно подбран набор от корекции и оптимизации. В моята кариера извън Android измервам неща, които са трудни за измерване, и използвам доказателства за изграждане на политика и предоставяне на съвети. Прилагам същите принципи към разработването на ядрото и обикновено не използвам пачове, освен ако няма измерима полза. Мониторът на батерията в EX Kernel Manager е пример за това. Той предлага начин за обективно измерване на ефекта от настройките на батерията и промените в ядрото. Плаващите монитори в DevCheck са друг инструмент, който използвам за разработка, най-вече за наблюдение на процесора честоти и температури по време на различни случаи на употреба като игри или гледане на видеоклипове или мрежа сърфиране.

Как промените в Android през последните няколко години се отразиха на работата ви?

Понякога е трудно да се справим с многото промени в сигурността, но ги разбирам. Ако не се лъжа, Android вече се използва по-широко от Windows, което го прави мишена. Лошите хора ще използват всеки ъгъл, който могат, за да експлоатират потребителите на Android.

Предотвратяването на модификация на системния дял очевидно е от ключово значение за защитата на целостта на устройството. Спомням си, когато HTC започна да прави това през 2012 или 2013 г. и изглеждаше като края на света. По това време беше необходимо писане в /system за root, редактиране на build.prop, инсталиране на привилегировани приложения, премахване на раздуващ се софтуер и практически всеки популярен мод. Много от персонализациите по това време включват неща като деодексиране и модифициране на рамката. Дълго време не беше наличен източник на ядрото от HTC, така че направих модул на ядрото, за да деактивирам защитата на системата при запис в стандартното ядро, с което за първи път станах известен като разработчик. Но с течение на времето, тъй като защити като verity станаха стандартна част от Android, това наложи иновации и по-добри решения като безсистемния корен на Chainfire и сега има Magisk, който прави всякакви неща безсистемно.

Друг голям е SELinux, който накара много приложения да спрат да работят. Много потребители го мразеха и до ден днешен има хора, които работят със SELinux в разрешителен режим, което е много лоша идея. Бих казал, че SELinux е най-важната функция за сигурност на Android. За да дам пример за важността на SELinux, когато за първи път получих Pixel XL, нямаше наличен root, но експлойтът Dirty Cow правеше новини. Бях нетърпелив да започна разработката на ядрото, което означава търсене или модифициране на sysfs файлове, което изисква root. Компилирах една от доказателствените концепции на Dirty Cow и успях да изпълнявам команди като root, но SELinux ми попречи да направя нещо интересно. Трябваше да модифицирам boot.img, за да направя SELinux разрешителен. Може би щях да постигна пълен достъп, без да модифицирам ядрото, но това щеше да отнеме много, много часове. Всичко това да кажем, оставете SELinux да се прилага, това е основната линия на защита срещу зловреден софтуер. Научете се да използвате sepolicy-inject, за да промените специфични политики, ако е необходимо.

Когато се появи Nougat, първоначално почти всички /sys и /proc станаха невидими за потребителските приложения. Root винаги е бил необходим за извършване на промени, но внезапно root беше необходим просто за четене на /sys и /proc. В тези файлови системи определено има информация, която може да се използва за използване на устройство, така че беше необходимо да се добавят ограничения. Но има и много информация, която потребителите трябва да могат да видят. Защо трябва да се изисква root, за да видите текущия I/O Scheduler, или GPU честота, или типа хардуер на панела? Трябваше да направя много промени в DevCheck, за да се справя с това, и много потребители бяха объркани защо информацията вече не е налична след актуализирането до Nougat. В крайна сметка някои от ограниченията върху пътищата на sysfs бяха премахнати.

Освен това, от гледна точка на разработката на приложения, харесвам повечето промени в API на Android, въпреки че ме принуждават да правя много промени в приложенията си. Тези промени обикновено са към по-добро.


Вижте част 2 от това интервю!