Ми беремо інтерв’ю у flar2, розробника ядра ElementalX, і заглиблюємося в такі теми, як його особисте життя, робота над розробкою тощо.
Нещодавно я брав інтерв’ю у flar2, людини, яка стоїть за відомим ядром ElementalX і його ще більш популярною програмою ElementalX Kernel Manager. Він випустив версію свого ядра для великої кількості пристроїв, у тому числі OnePlus і пристрої Nexus.
У цій частині ми запитуємо про думки flar2 щодо вузьких місць продуктивності Android та більше про його особисте життя! Ви можете перевірити частина 2 цього інтерв'ю тут.
Привіт! Перш ніж приступити до питань, спершу представтеся.
Мене звати Аарон Сегаерт, також відомий як 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 роках, і це здавалося кінцем світу. У той час запис до /system був потрібний для root, редагування build.prop, встановлення привілейованих програм, видалення вірусів і практично всіх популярних модів. Багато налаштувань того часу включали такі речі, як деодексація та модифікація фреймворку. Довгий час вихідні коди ядра не були доступні від HTC, тому я створив модуль ядра, щоб вимкнути захист системи від запису в стандартному ядрі, завдяки чому я став добре відомим як розробник. Але з часом, коли засоби захисту, такі як verity, стали стандартною частиною Android, це змусило інновації та покращення такі рішення, як безсистемний корень Chainfire, а тепер є Magisk, який робить усілякі речі безсистемно.
Іншим великим є SELinux, який спричинив припинення роботи багатьох програм. Багато користувачів ненавиділи це, і досі є люди, які працюють із SELinux у дозволеному режимі, що є дуже поганою ідеєю. Я б сказав, що SELinux є найважливішою функцією безпеки Android. Наведу приклад важливості SELinux. Коли я вперше отримав Pixel XL, руту не було, але експлойт Dirty Cow був новиною. Я дуже хотів почати розробку ядра, що означає пошук або зміну файлів sysfs, для чого потрібен root. Я зібрав один із доказів концепції Dirty Cow і зміг запускати команди від імені адміністратора, але SELinux заважав мені робити щось цікаве. Мені довелося змінити boot.img, щоб зробити SELinux дозволеним. Я міг би отримати повний доступ без модифікації ядра, але це зайняло б багато-багато годин. Усе це, щоб сказати, залиште SELinux примусово, це головна лінія захисту від зловмисного програмного забезпечення. Навчіться використовувати sepolicy-inject, щоб змінювати конкретні політики за потреби.
Коли з’явилася Nougat, спочатку майже всі /sys і /proc стали невидимими для програм користувача. Завжди був необхідний root для внесення змін, але раптом root виявився необхідним просто для читання /sys і /proc. У цих файлових системах точно є інформація, яку можна використовувати для експлуатації пристрою, тому необхідно було додати обмеження. Але є також багато інформації, яку користувачі повинні бачити. Чому root повинен бачити поточний планувальник вводу/виводу, частоту графічного процесора або тип апаратного забезпечення панелі? Мені довелося внести багато змін у DevCheck, щоб впоратися з цим, і багато користувачів були збентежені тим, чому інформація стала недоступною після оновлення до Nougat. Згодом деякі обмеження щодо шляхів sysfs було знято.
Крім цього, з точки зору розробки додатків, мені подобається більшість змін API для Android, хоча вони змушують мене вносити багато змін у мої додатки. Ці зміни зазвичай на краще.
Перегляньте частину 2 цього інтерв’ю!