Интервью с Flar2, разработчиком ядра ElementalX, часть 1

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

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

В этой части мы поинтересуемся мыслями flar2 о узких местах производительности Android и многом другом о его личной жизни! Вы можете проверить вторая часть этого интервью здесь.


Привет! Прежде чем мы приступим к вопросам, прежде всего представьтесь.

Меня зовут Аарон Сегерт, также известный как flar2. Большинство людей знают меня как разработчика ядра ElementalX. У меня также есть несколько приложений.

Был ли у вас ранее опыт работы с компьютерами и разработкой? Типа степень по информатике или что-то в этом роде?

Я начал заниматься компьютерами, когда был очень молод. Моим первым компьютером был Texas Instruments TI-99/4A. Я научился программировать на BASIC и сохранял свои программы на кассете (да, я стар). Потом наша семья купила клон IBM 286, и на этом этапе я отошел от программирования, потому что это было раньше. Интернет был широко известен, и у меня не было никаких ресурсов, и я даже не знал никого, у кого был бы компьютер. Я начал заниматься информатикой в ​​университете, но завалил его на первом курсе. Я никогда не ходил на занятия, потому что был слишком занят развлечениями и выступлениями со своей группой. Позже я вернулся в школу и получил степень доктора социологии. Во время учебы я заинтересовался 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, но собирал свои собственные ядра для каждого и устанавливал кастомные ПЗУ, которые были необходимы в те времена, поскольку 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 году, и это казалось концом света. В то время для получения root-прав требовалась запись в /system, редактирование 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 стали невидимы для пользовательских приложений. Корень всегда был необходим для внесения изменений, но внезапно он стал необходим просто для чтения /sys и /proc. В тех файловых системах определенно есть информация, которую можно использовать для эксплойта устройства, поэтому пришлось добавить ограничения. Но есть также много информации, которую пользователи должны видеть. Зачем нужен root для просмотра текущего планировщика ввода-вывода, частоты графического процессора или типа аппаратного обеспечения панели? Чтобы справиться с этой проблемой, мне пришлось внести множество изменений в DevCheck, и многие пользователи были озадачены тем, почему информация стала недоступна после обновления до Nougat. Со временем некоторые ограничения на пути sysfs были сняты.

Помимо этого, с точки зрения разработки приложений, мне нравятся большинство изменений API для Android, даже несмотря на то, что они вынуждают меня вносить множество изменений в мои приложения. Эти изменения обычно к лучшему.


Посмотрите вторую часть этого интервью!