Версія ядра 3.10. Вивчаємо Android. Ядро (Kernel) – що це таке. Додаємо до ядра нові функції

Багато власників Android пристроїв на різних форумах і сайтах часто зустрічають згадку про щось незрозуміле, що називають ядром, або англійською kernel. Його можна змінити і згадка про нього зустрічається в меню установок пристрою, в розділі «Про планшет (телефон)».

Якщо копнути глибше, то виявиться, що ядро ​​- це частина операційної системи, і воно є не тільки в Android, але і в інших операційних системах: Windows, iOS, MacOS та інших. Але нас буде цікавити ядро ​​Android, і що це таке я спробую пояснити на рівні користувачів-початківців.

Ви, напевно, знаєте, що будь-яка операційна система, і Android в тому числі - це, за великим рахунком, набір програм, які управляють роботою всього пристрою, і відповідають за запуск додатків, таких як ігри, менеджери файлів, веб-браузери і інші.

А ядро ​​Android є, практично, найголовнішою частиною операційної системи, яка відповідає за взаємодію між усім «залізом» та програмною частиною системи. Ядро складається з набору драйверів всього наявного у пристрої обладнання та підсистеми управління пам'яттю, мережею, безпекою та інших основних функцій операційної системи.
Наприклад, коли ви торкаєтеся екрана, щоб запустити будь-який додаток, драйвер сенсорної панелі екрана визначає місце, в якому відбулося натискання та повідомляє координати іншим програмам, які знову ж таки за допомогою ядра знайдуть у пам'яті пристрою потрібну програму і запустять його. Це звичайно дуже спрощена модель, але суть роботи операційної системи вона відображає.

Таким чином, ми з'ясували, що коли будь-яке програмне забезпечення потребує того, щоб обладнання планшета або телефону що-небудь зробило, воно звертається за цим до ядра операційної системи.

Ядро управляє всім обладнанням: Wi-Fi, Bluetooth, GPS, пам'яттю та іншими пристроями. Не виняток і «серце» пристрою – його процесор. Ядро може керувати його частотою та енергопостачанням.
Ядро операційної системи Android, запозичене її розробниками Google у операційної системи Linux.

Оскільки ядро ​​керує всім обладнанням, а обладнання у всіх планшетів та телефонів різне, базове ядро ​​Android допрацьовується виробником для кожного пристрою окремо.

Як і прошивки, ядра бувають стоковими (заводськими) та кастомними – альтернативними, створені незалежними розробниками.

Навіщо потрібні кастомні ядра? Стокове ядро ​​максимально оптимізується виробником конкретного пристрою, але в ньому зазвичай заблоковані такі важливі функції ядра, як, наприклад, керування частотою процесора. І якщо вам потрібно розігнати процесор свого планшета, вам потрібно буде змінити ядро ​​на кастомне, в якому функція керування частотою процесора розблокована.

Крім того, кастомні ядра зазвичай засновані на свіжих версіях Linux ядер. Ось зразковий перелік можливостей, які нам дають кастомні ядра:

  • Зміна частоти процесора у межах;
  • Розгін графічної підсистеми (GPU);
  • Зниження частоти та напруги живлення процесора, що дозволяє досягти більш тривалого часу роботи від батареї;
  • Більш свіжі та якісні драйвери, наприклад, що прискорюють роботу GPS або додають нові функції;
  • Широкі можливості з налаштування та конфігурації звуку та кольорової гами екрану;
  • Підтримка альтернативних файлових систем (XFS, ReiserFS та інших).

Так як альтернативні ядра створюються незалежними розробниками, немає жодної гарантії, що після встановлення кастомного ядра ваш планшет чи телефон працюватимуть без збоїв. Тому перед прошиванням нового ядра бажано зробити повну резервну копію системи.

У неділю ввечері Лінус Торвальдс, який є батьком Linux та розробником ядра операційної системи, після двох місяців роботи анонсував реліз нової версії ядра Linux 3.10.

За словами самого розробника, це ядро ​​вийшло найбільшим за обсягом нововведень за останні кілька років.

Лінус зізнався, що спочатку припускав випустити ще один реліз-кандидат, проте після роздумів схилився до того, щоб випустити одразу фінальний реліз під номером 3.10. Також Торвальдс у своєму повідомленні він зазначив, що нове ядро, як і версія 3.9, повністю готове до повсякденного використання.

Крім того, в анонсі RC-версії ядра Лінус Торвальдс писав, що раніше він завжди включав список імен людей, які надіслали ті чи інші частини коду, але цього разу цей список був би таким великим, що його не можна було навести цілком в одному аркуші. розсилки.

Список основних змін, внесених до ядра 3.10:

  • Тепер можна заборонити виконувати скрипти як програми - функціонал запуску скриптів, що містять шлях до інтерпретатора в заголовку "#!", тепер може бути зібраний у вигляді модуля ядра;
  • Інтегрована розроблена та використовується в Google система Bcache. Bcache дозволяє організувати кешування доступу до повільних жорстких дисків на швидких SSD-накопичувачах; кешування при цьому ведеться на рівні блокового пристрою - і це дозволяє прискорити доступ до накопичувача, причому незалежно від файлових систем, що використовуються на пристрої;
  • Ядро можна збирати компілятором Clang завдяки підготовленим проектом LLVMLinux патчам;
  • З'явилася динамічна система управління генерацією переривань таймером. Тепер можна в залежності від поточного стану змінювати переривання в діапазоні від тисяч тиків за секунду до одного переривання за секунду - це дозволяє зводити до мінімуму навантаження на CPU при обробці переривань у разі неактивності системи. Зараз ця функція використовується для систем реального часу та HPC (високопродуктивних обчислень), але в наступних випусках ядра буде задіяна і для десктоп-систем також;
  • З'явилася можливість генерації події з повідомленням про наближення до вичерпання доступної процесу/системі пам'яті (в cgroups);
  • Для команди perf стало доступне профіль доступу до пам'яті;
  • Додано підтримку протоколу RDMA (iSER) у підсистему iSCSI;
  • З'явився новий драйвер sync (експериментальний). Він був розроблений у рамках платформи Android та використовується для синхронізації між іншими драйверами;
  • Було інтегровано драйвер віртуальної графічної карти QXL (застосовується в системах віртуалізації для прискореного виведення графіки за допомогою протоколу SPICE);
  • Тепер підтримуються нові засоби управління живленням, які з'явилися у процесорах AMD сімейства 16h (Jaguar);
  • Підтримку прискорення декодування відео з використанням апаратного декодера UVD, вбудованого в сучасні GPU AMD, було додано в DRM-модуль Radeon;
  • З'явився драйвер для віртуальних відеоадаптерів Microsoft Hyper-V (по роботі Hyper-V загалом також є покращення);
  • Виконання криптографічних функцій (sha256, sha512, blowfish, 2fish, serpent та camellia) оптимізовано з використанням інструкцій AVX/AVX2 та SSE.

У неділю ввечері офіційно вийшло нове ядро ​​Linux 3.10. За словами Лінуса Торвальдса, ядро ​​вийшло найбільшим за обсягом нововведень за останні кілька років. Спочатку Лінус припускав випустити ще один реліз-кандидат, але схилився до того, щоб випустити фінальний реліз 3.10 - і у своєму повідомленні він зауважує, що нове ядро, як і Linux 3.9, не схильне до проблем із працездатністю та готове до повсякденного використання.

В анонсі RC-версії Торвальдс писав, що він включав список імен людей, які надіслали ті чи інші частини коду, проте цього разу цей список був настільки великий, що його не можна було привести повністю в одному аркуші розсилки.

Неповний список внесених до ядра 3.10 змін:

  • Можна заборонити виконувати скрипти як програми - функціонал запуску скриптів, що містять шлях до інтерпретатора в заголовку "#!", Тепер може бути зібраний у вигляді модуля ядра;
  • Інтегрована розроблена та використовується в Google система Bcache. Bcache дозволяє організувати кешування доступу до повільних жорстких дисків на швидких SSD-накопичувачах; кешування при цьому ведеться на рівні блокового пристрою - і це дозволяє прискорити доступ до накопичувача, причому незалежно від файлових систем, що використовуються на пристрої;
  • Ядро можна збирати компілятором Clang завдяки підготовленим проектом LLVMLinux патчам;
  • З'явилася динамічна система управління генерацією переривань таймером. Тепер можна в залежності від поточного стану змінювати переривання в діапазоні від тисяч тиків за секунду до одного переривання за секунду - це дозволяє зводити до мінімуму навантаження на CPU при обробці переривань у разі неактивності системи. Зараз ця функція використовується для систем реального часу та HPC (високопродуктивних обчислень), але в наступних випусках ядра буде задіяна і для десктоп-систем також;
  • З'явилася можливість генерації події з повідомленням про наближення до вичерпання доступної процесу/системі пам'яті (в cgroups);
  • Для команди perf стало доступне профіль доступу до пам'яті;
  • З'явився новий драйвер sync (експериментальний). Він був розроблений у рамках платформи Android та використовується для синхронізації між іншими драйверами;
  • З'явився драйвер для віртуальних відеоадаптерів Microsoft Hyper-V (по роботі Hyper-V загалом також є покращення);
  • Тепер підтримуються нові засоби управління живленням, які з'явилися у процесорах AMD сімейства 16h (Jaguar);
  • Підтримку прискорення декодування відео з використанням апаратного декодера UVD, вбудованого в сучасні GPU AMD, було додано в DRM-модуль Radeon;
  • Додано підтримку протоколу RDMA (iSER) у підсистему iSCSI;
  • Виконання криптографічних функцій (sha256, sha512, blowfish, twofish, serpent та camellia) оптимізовано з використанням інструкцій AVX/AVX2 та SSE.;
  • Інтегровано драйвер віртуальної графічної карти QXL (застосовується в системах віртуалізації для прискореного виведення графіки за допомогою протоколу SPICE).

Користувачів мобільних пристроїв не завжди влаштовує робота та можливості своїх гаджетів. Тому користувачі шукають оптимальний спосіб, як прошити ядро ​​операційної системи Android. З одного боку, таку дію можна здійснити з вашим планшетом або смартфоном. Тисячі користувачів успішно перепрошили ядро ​​без виникнення складнощів та проблем. Але, з іншого боку, будь-яка помилка під час цього процесу може призвести до , серед яких збій роботи гаджета та необхідність дорогого сервісного обслуговування. На різних етапах є ризик вибрати неправильну версію прошивки ядра, яка створена некваліфікованими розробниками або не підходить до вашого мобільного пристрою. Ми рекомендуємо бути гранично уважними при проведенні будь-яких дій, що вносять зміни до програмної частини девайсу на низькому рівні. Після успішної перепрошивки ядра у багатьох виникає відчуття, що вони тримають у руках новий пристрій. Просунуті користувачі таким чином можуть налаштувати гаджет під свої потреби та уподобання, отримавши при цьому нові знання та досвід про сучасні мобільні технології.

Ядро операційної системи Андроїд та його прошивка

Що таке ядро ​​мобільного пристрою?

Ядро операційної системи є основою програмного забезпечення, яке керує апаратною частиною пристрою. Від нього залежить основні параметри будь-якого гаджета. Слід зазначити, що складається з трьох взаємопов'язаних компонентів – ядра Linux, вертикальної машини Dalvik та різних низькорівневих сервісів та бібліотек. Якщо йдеться про кастомну прошивку, то зачіпаються лише два компоненти, які дозволяють додавати нові системні сервіси, оптимізувати існуючі параметри та змінювати графічну оболонку.

Бажаючі встановити ядро ​​на Андроїд повинні розуміти, що існує різниця між поняттями кастомного ядра і кастомного прошивки. Остання є неофіційною версією програмного забезпечення. Кастомна прошивка розроблена командою спеціалістів під конкретні пристрої. Кастомне ядро ​​ґрунтується на ядрі Linux, являючи собою його неофіційну версію. Часто кастомне ядро ​​йде в комплекті із прошивкою. Але його можна встановити окремо після зміни прошивки. По суті воно не замінює рідне ядро ​​мобільного пристрою, що є кінцевою метою такої операції.

Прошивка ядра Android здійснюється в основному, щоб збільшити час роботи пристрою на кілька годин за допомогою параметрів енергоспоживання. Мабуть, це основна причина, через яку користувачі проводять складні перетворення програмного забезпечення своїх гаджетів. Прошивка дозволить змінити відеочіп і без наслідків для смартфона або планшета. Просунуті користувачі в такий спосіб налаштовують роботу екрана, змінюючи його передачі кольору, чутливість. Прошивка ядра дозволяє вдосконалити звук пристрою, оновити драйвера та впровадити підтримку нестандартних зовнішніх гаджетів.

Перед тим, як прошивати ядро, ми рекомендуємо переконатися в тому, що ви вибрали вдалу версію, створену досвідченими розробниками. Крім цього, важливо переконатися, що вона підходить до вашої версії прошивки Андроїд. Бажано ознайомитися з відгуками людей, які встигли встановити версію ядра на свій мобільний телефон. Відгуки можуть містити важливу інформацію про проблеми, які можуть виникнути на етапі прошивки або подальшого функціонування пристрою.

Прошивка гаджета через Fastboot

Перепрошувати пристрій можна через Fastboot. Але спочатку слід встановити утиліту на ваш гаджет. Існує дві версії такої програми. Перша передбачає завантаження Fastboot в комплексі з офіційною програмою Android SDK. Друга версія передбачає завантаження утиліти окремо.

Ми рекомендуємо перевірити, чи бачить ваш мобільний пристрій ноутбук чи комп'ютер. Для цього необхідно виконати. Після завантаження та встановлення на комп'ютер, ноутбук, що працює на операційній системі Windows, утиліти Fastboot та підключення смартфона необхідно відкрити командний рядок. Для цього відкрийте Пошук. У Windows 8 для цього достатньо направити курсор миші у праву частину екрана та вибрати відповідний розділ. У Пошуку необхідно ввести cmd, після чого перед вами з'явиться командний рядок. Пристрій слід перевести в режим прошивки. Далі слід ввести команду, яка протестує взаємодію комп'ютера та мобільного пристрою:

fastboot devices

Якщо все працює, потрібно завантажити правильну версію прошивки ядра boot.img. Ми не рекомендуємо перепрошувати ядро ​​оригінальних прошивок, оскільки це може призвести до проблем смартфона. Файл слід зберегти в заздалегідь створений розділ на диску C під назвою "Android". Після цього необхідно завантажити мобільний пристрій Fastboot і підключити до комп'ютера. На екрані з'явиться повідомлення "Fastboot USB".

  • cd C:\Android.
  • fastboot flash boot boot.img.
  • fastboot erase cache.
  • fastboot reboot.

Дуже важливо правильно вводити всі слова з урахуванням регістру та пробілів. Команда cd відкриває необхідну папку, яка містить необхідні файли. Після цього відбувається перепрошивка. Команда fastboot erase cache видаляє розділ Кеш. Остання команда - fastboot reboot перезавантажує пристрій із режиму прошивки у звичайний. Якщо всі ці дії ви зробили правильно, то процес пройде успішно.

Прошивка за допомогою ClockworkMod Recovery

ClockworkMod Recovery (або скорочено CWM) - це система відновлення, яка використовується замість оригінального заводського Recovery. CWM дозволяє встановити нову прошивку на мобільний пристрій, прошити ядро, зробити резервну копію файлів та відновити оболонку. Така система вміє працювати з файлами поновлення прошивок, що мають zip-формат. ClockworkMod встановлюється в , замінюючи собою заводське Recovery. Щоб запустити CWM, потрібно знати комбінацію клавіш, яка підходить для вашого гаджета. У більшості випадків це комбінація кнопок зменшення звуку та живлення, які слід натиснути під час завантаження пристрою.

Для прошивки ядра слід завантажити архів із розширенням zip. У ньому обов'язково має знаходитись папка META-INF. Далі є два варіанти. У першому випадку потрібно вказати файл прошивки. Другий варіант передбачає поміщення файлу прошивки до папки /sdcard. Після цього слід активувати ClockworkMod Recovery, знайти там функцію Apply update from sdcard та вказати необхідний файл.

Слід зазначити, що меню ClockworkMod Recovery є зручним та зрозумілим для більшості користувачів. Крім такої системи відновлення для прошивки можна використовувати TWRP Recovery. Цей інструмент є зручним та популярним серед користувачів Андроїд. Головне – вибрати правильний файл прошивки.

Прошивка ядра Андроїд – процедура, до якої ми не рекомендуємо вдаватися, якщо вас повністю влаштовує робота гаджета. Такі дії зумовлені бажанням підвищити продуктивність мобільного телефону чи планшета. Розвинені користувачі отримують можливість установки параметрів на нижчому рівні. Але без певних знань та об'єктивних причин краще не змінювати програмну частину мобільного пристрою, оскільки це пов'язано з ризиком та збоями у його роботі.

Ми вже не раз писали про кастомні прошивки, root-додатки та альтернативні завантажувальні меню. Все це стандартні теми у спільноті Android-хакерів, проте, крім усього перерахованого, існує ще таке поняття, як «кастомне ядро», яке може дати практично безмежні можливості керування смартфоном та його залізом на найнижчому рівні. У цій статті я розповім, що це таке, навіщо потрібно і як вибрати правильне кастомне ядро.

Custom kernel?

Що таке кастомне ядро? Як ми всі знаємо, Android є пирігом, що складається з трьох базових шарів: ядро ​​Linux, набір низькорівневих бібліотек і сервісів і віртуальна машина Dalvik, поверх якої працює графічна оболонка, високорівневі інструменти та сервіси, а також майже всі додатки, встановлені з маркету. Творці більшості альтернативних кастомних прошивок зазвичай працюють тільки з двома верхніми шарами, додаючи функції в графічну оболонку (наприклад, кнопки в шторці), змінюючи її (движок тем CyanogenMod), а також додаючи нові системні сервіси (еквалайзер CyanogenMod) і оптимізуючи існуючі.

Автори популярних прошивок також у міру можливостей вносять зміни в ядро ​​Linux: оптимізують (складання з більш агресивними прапорами оптимізації компілятора), включають до нього нову функціональність (наприклад, підтримку куля Windows), а також вносять інші зміни на зразок можливості піднімати частоту процесора вище, ніж передбачено виробником . Найчастіше все це залишається за кадром, і багато користувачів кастомних прошивок навіть не підозрюють про ці можливості, тим більше, що той же CyanogenMod поставляється з кастомним ядром тільки для обмеженого кола девайсів, для яких доступні як вихідники рідного ядра, так і можливість його заміни. Наприклад, майже всі прошивки CyanogenMod для смартфонів Motorola використовують стандартне ядро ​​– замінити його на своє неможливо через непробивний захист завантажувача.

Однак ядро ​​в смартфонах із розлоченим завантажувачем можна замінити окремо від основної прошивки. І не просто замінити, а встановити ядро ​​з величезною кількістю різних функцій, які вимагають певних технічних знань для управління, а тому зазвичай не вбудовуються в ядра популярних прошивок, таких як CyanogenMod, AOKP та MIUI. Серед цих функцій можна знайти підтримку високих частот роботи процесора, керування гамою екрану, режимами енергозбереження, високоефективні менеджери живлення та безліч інших фіч.

У цій статті ми поговоримо про те, що нам можуть запропонувати творці кастомних ядер, розглянемо основні кастомні ядра для різних пристроїв, спробуємо встановити ядро ​​незалежно від основної прошивки і перевіримо все на власній шкурі. Отже, що зазвичай пропонують розробники альтернативних ядер?

Розумний регулювальник

У SoC'ах OMAP35XX, що використовуються, наприклад, у Galaxy S II та Galaxy Nexus, є функція SmartReflex, яка виконує роль розумної системи регулювання вольтажу при зміні навантаження на процесор. По суті, вона позбавляє необхідності тонкого тюнінгу вольтажу користувачем.

Оптимізації

Найчастіше основною метою збирання кастомного ядра стає оптимізація продуктивності. Зазвичай вендор мобільної техніки намагається зберегти баланс між продуктивністю і стабільністю роботи, тому навіть хороші техніки оптимізації, здатні суттєво підняти швидкість роботи девайсу, можуть бути відкинуті виробником тільки на підставі того, що після їх застосування деякі програми почали падати кожен десятий запуск. Само собою, ентузіастів такі дрібниці не бентежать, і багато хто з них готовий застосувати до ядра власного складання будь-які опції компілятора, алгоритми енергозбереження і задерти частоту процесора настільки високо, наскільки тільки витримує девайс. Серед усіх оптимізаційних технік найбільш поширені чотири:



Ще один тип оптимізації: зміна стандартного планувальника вводу-виводу. Ситуація на цьому полі ще цікавіша, тому що замість того, щоб розібратися в принципах роботи планувальників, деякі збирачі ядер просто читають у Мережі документи щодо I/O-планувальників для Linux і роблять висновки. Серед користувачів такий підхід поширений ще сильніше. Насправді майже всі найпродуктивніші та найрозумніші Linux-планувальники зовсім не підходять для Android: вони розраховані на застосування з механічними сховищами даних, в яких швидкість доступу до даних відрізняється залежно від положення головки. Планувальник використовує різні схеми об'єднання запитів залежно від фізичного стану даних, тому запити до даних, які розташовані близько до поточного положення голівки, отримуватимуть більший пріоритет. Це абсолютно нелогічно у випадку з твердотільною пам'яттю, яка гарантує однакову швидкість доступу до всіх осередків. Просунуті планувальники принесуть на смартфоні більше шкоди, ніж користі, а найкращий результат покажуть найнезграбніші та найпримітивніші. У Linux є три подібні планувальники:

  • Noop (No operation)- так званий непланувальник. Проста FIFO чергу запитів, перший запит буде опрацьовано першим, другий другим і так далі. Добре підходить для твердотільної пам'яті та дозволяє справедливо розподілити пріоритети програм на доступ до накопичувача. Додатковий плюс: низьке навантаження на процесор в силу дуже простого принципу роботи. Мінус: жодного обліку специфіки роботи девайсу, через що можуть виникнути провали продуктивності.
  • SIO (Simple I/O)- аналог планувальника Deadline без урахування близькості секторів один до одного, тобто розроблений спеціально для твердотільної пам'яті. Дві головні особливості: пріоритет операцій читання над операціями запису та угруповання операцій із процесам із кожен процес кванта часу виконання операцій. У смартфонах, де важлива швидкість роботи поточної програми та переважання операцій читання над записом, показує дуже хорошу продуктивність. Доступний у Leankernel, ядрі Matr1x для Nexus 4 та SiyahKernel.
  • ROW (READ OVER WRITE)- планувальник, спеціально розроблений для мобільних пристроїв та доданий у ядро ​​лише кілька місяців тому. Основне завдання: першочергове опрацювання запитів читання, але справедливий розподіл часу і для запитів запису. Вважається найкращим на даний момент планувальником для NAND-пам'яті, за умовчанням використовується в Leankernel та Matr1x.

Варто сказати, що майже всі стандартні прошивки і половина кастомних до цих пір використовують ядро ​​зі стандартним для Linux планувальником CFQ, що, втім, не так уже й погано, оскільки він вміє правильно працювати з твердотільних накопичувачів. З іншого боку, він надто складний, створює велике навантаження на процесор (а отже, і батарею) і не враховує специфіки роботи мобільної ОС. Ще один популярний вибір - це планувальник Deadline, який не гірший за SIO, але надмірний. Переглянути список доступних планувальників можна за допомогою такої команди:

# cat /sys/block/*/queue/scheduler

Для зміни застосовується така (де row – це ім'я планувальника):

# for i in /sys/block/*/queue/scheduler; do echo row > $1; done

Деякі збирачі ядер застосовують і інший вид оптимізації, пов'язаний із введенням-виведенням. Це відключення системного виклику fsync, застосовуваного для примусового скидання зміненого вмісту відкритих файлів на диск. Існує думка, що без fsync система рідше звертатиметься до накопичувача і таким чином вдасться зберегти час процесора та заряд батареї. Досить спірне твердження: fsync у додатках використовується не так вже й часто і тільки для збереження дійсно важливої ​​інформації, зате його відключення може призвести до втрати цієї інформації у разі падіння операційної системи або інших проблем. Можливість вимкнути fsync доступна в ядрах franco.Kernel і GLaDOS, а для керування використовується файл /sys/module/sync/parameters/fsync_enabled, який слід записати 0 для відключення або 1 для включення. Повторюся, що не рекомендується використовувати цю можливість.

Додаємо до ядра нові функції

Само собою, крім оптимізації, твіків і різних систем розширеного управління обладнанням, в кастомних ядрах також можна знайти абсолютно нову функціональність, якої немає в стандартних ядрах, але яка може бути корисна користувачам.

В основному це різні драйвери та файлові системи. Наприклад, деякі ядра включають підтримку модуля CIFS, що дозволяє монтувати Windows-кулі. Такий модуль є в ядрі Matr1x для Nexus S, faux123 для Nexus 7, SiyahKernel та GLaDOS. Сам по собі він марний, але в маркеті є кілька додатків, що дозволяють використовувати його можливості.

Ще одна корисність - це включення в ядро ​​драйвера ntfs-3g (точніше, пакет з ядром, сам драйвер працює як Linux-додаток), який необхідний для монтування флешок, відформатованих у файлову систему NTFS. Цей драйвер є в ядрах faux123 та SiyahKernel. Зазвичай він працює автоматично, але якщо цього не відбувається, можна скористатися програмою StickMount з маркету.

Багато ядра також мають у своєму складі підтримку так званої технології zram, яка дозволяє зарезервувати невеликий обсяг оперативної пам'яті (зазвичай 10%) і використовувати її як стислу область підкачування. В результаті відбувається хіба що розширення кількості пам'яті, без будь-яких серйозних наслідків для продуктивності. Доступно Leankernel, включається за допомогою Trickster MOD або командою zram enable.

Останні дві цікаві функції – це Fast USB charge та Sweep2wake. Перша - це не що інше, як примусове включення режиму швидкого заряджання, навіть якщо смартфон підключений до USB-порту комп'ютера. Режим швидкого заряджання доступний у всіх більш-менш нових смартфонах, однак через технічні обмеження він не може бути включений одночасно з доступом до карти пам'яті. Функція Fast USB charge дозволяє завжди ввімкнути цей режим, відключивши при цьому доступ до накопичувача.

Sweep2wake – це новий спосіб будити пристрій, винайдений автором Breaked-kernel. Сенс його в тому, щоб увімкнути смартфон, провівши пальцем по клавішах навігації, розташованим нижче екрана, або по самому екрані. Це дійсно зручна функція, але в результаті її включення сенсор залишатиметься активним навіть під час сну пристрою, що може помітно розряджати батарею.

Розгін, вольтаж та енергозбереження

Розгін популярний не тільки серед власників стаціонарних комп'ютерів та ноутбуків, але й серед ентузіастів мобільної техніки. Як і каміння архітектури x86, процесори та графічні ядра мобільної техніки чудово женуться. Однак сам спосіб розгону і кроки, що робляться для його здійснення, тут дещо інші. Справа в тому, що стандартні драйвери для SoC'ів, які відповідають за енергозбереження та зміну частоти процесора, зазвичай залочені на стандартних частотах, тому для тонкого тюнінгу доводиться встановлювати альтернативний драйвер або кастомне ядро.

Майже всі більш-менш якісні та популярні кастомні ядра вже включають розлочені драйвери, тому після їх встановлення можливості управління «потужністю» процесора значно розширюються. Зазвичай збирачі кастомних ядер роблять дві речі, які впливають вибір частоти. Це розширення частотного діапазону за рамки спочатку заданих - можна встановити як більш високу частоту процесора, так і дуже низьку, що дозволяє зберегти батарею і збільшити градацію частот, наприклад замість трьох можливих частот пропонується на вибір шість. Друге – це додавання можливості регулювання вольтажу процесора, завдяки чому можна знизити напругу процесора на низьких частотах для збереження заряду батареї та підвищити на високих для збільшення стабільності роботи.

Всім цим можна керувати за допомогою відомої платної утиліти SetCPU або безкоштовної Trickster MOD. Рекомендації з управління все ті ж, що й для настільних систем. Нижню частоту процесора краще встановити мінімальною, але не нижче 200 МГц (щоб уникнути лагів), верхній поріг поступово підвищується з тестуванням стабільності роботи, при падінні якої рекомендується трохи підняти вольтаж для даної частоти. Якихось рекомендацій щодо вольтажу немає, тому що кожен процесор унікальний і значення будуть для всіх різними.

Крім зміни частот, збирачі найчастіше додають у ядро ​​нові алгоритми управління енергозбереженням (автоматичним управлінням частотою процесора), які, на їхню думку, можуть показати найкращі результати порівняно зі стандартними. Майже всі з них базуються на алгоритмі Interactive, що використовується за умовчанням в нових версіях Android, суть якого полягає в тому, щоб різко підняти частоту процесора до максимального у разі підвищення навантаження, а потім поступово знижувати до мінімальної. Він прийшов на зміну алгоритму OnDemand, який використовувався раніше, який плавно регулював частоту в обидві сторони пропорційно навантаженню, і дозволяє зробити систему більш чуйною. Складачі альтернативних ядер пропонують на заміну Interactive наступні алгоритми:

  • SmartAssV2- переосмислення алгоритму Interactive із фокусом на збереження батареї. Основна відмінність у тому, щоб не смикати процесор на високі частоти у разі короткочасних сплесків навантаження, для яких вистачить низької продуктивності процесора. За промовчанням використовується в ядрі Matr1x.
  • InteractiveX- тюнінгований алгоритм Interactive, головна особливість якого в залочці процесора на мінімальній вказаній користувачем частоті та знеструмленні другого ядра процесора під час відключення екрана. За промовчанням використовується в Leankernel.
  • LulzactiveV2- по суті, винайдений заново OnDemand. Коли навантаження на процесор перевищує вказану (за замовчуванням 60%), алгоритм піднімає частоту на певну кількість поділів (за умовчанням 1), при зниженні навантаження опускає. Особливий інтерес є тим, що дозволяє самостійно задавати параметри роботи, тому підходить для пропалених гіків.

Взагалі, збирачі ядер дуже люблять вигадувати нові алгоритми енергозбереження через простоту їх реалізації, тому можна знайти ще з десяток інших. Більшість із них повний шлак, і при виборі планувальника слід керуватися правилом: або один із трьох описаних вище, або стандартний Interactive, який, до речі, дуже непоганий. Зробити вибір можна за допомогою все тієї ж Trickster MOD.

Інтерфейси керування

Більшість популярних кастомних ядер включають кілька механізмів тонкого управління різними параметрами драйверів, найбільш поширені з яких ColorControl, GammaControl, SoundControl і TempControl.

Перші два інтерфейси доступні практично скрізь, включаючи ядра CyanogenMod, другі два - в Leankernel і, можливо, в інших. Так чи інакше, усіма ними можна керувати за допомогою Trickster MOD.

Ядра

Яке ядро ​​вибрати? На це питання немає однозначної відповіді, і не тому, що «кожному своє», а тому, що у світі існує величезна кількість Android-пристроїв і майже стільки різних ядер. Тим не менш, є кілька популярних ядер, які розробляються відразу для декількох пристроїв. Так чи інакше багато хто з них я згадував під час розповіді, тут же наведу їх короткий опис.

  • Leankernel – ядро ​​для Galaxy Nexus, Nexus 7 та Galaxy S III. Основний акцент при розробці робиться на простоту та швидкість роботи. Алгоритм енергозбереження: InteractiveX V2, планувальник I/O: ROW, всі перераховані вище інтерфейси управління, підтримка Fast USB charge, Swap та zram, гнучкі можливості розгону CPU та GPU. Одне з найкращих ядер. Налаштовується за допомогою Trickster MOD.
  • Matr1x (http://goo.gl/FQLBI , goo.gl/ZcyvA) - ядро ​​для Nexus S і Nexus 4. Просте та неперевантажене ядро. Підтримка розгону CPU та GPU, GammaControl, Fast USB Charge, Sweep2wake, планувальники I/O: SIO, ROW та FIOPS. Твіки продуктивності. Налаштовується за допомогою Trickster MOD.
  • Bricked-Kernel (http://goo.gl/kd5F4 , goo.gl/eZkAV) - просте та неперевантажене ядро ​​для Nexus 4 та HTC One X. Оптимізації для Snapdragon S4 та NVIDIA Tegra 3, перероблений режим енергозбереження для Tegra 3, розгону, алгоритм енергозбереження: тюнінгований OnDemand (доступний і Interactive).
  • SiyahKernel - ядро ​​для Galaxy S II та S III. Гнучкі можливості розгону, автоматичне калібрування батареї, покращений драйвер сенсорного екрану, алгоритми енергозбереження: smartassV2 та lulzactiveV2, планувальники I/O: noop, deadline, CFQ, BFQV3r2 (за замовчуванням), V(R), SIO. Драйвери CIFS та NTFS (з автомонтажем). Конфігурується за допомогою ExTweaks.
  • franco.Kernel - ядро ​​для Nexus S, Galaxy Nexus, Nexus 4, Nexus 7, Nexus 10, Galaxy S III, Galaxy Note, Optimus One та One X.

Можливості ядра сильно відрізняються від пристрою до пристрою, тому подробиці доведеться дивитися на місці. Тим не менш, прошиваючи це ядро, ти отримаєш можливість розгону, тюнінгу драйверів, відмінну продуктивність, а також підтримку різних алгоритмів енергозбереження та планувальників. По суті, ядро ​​включає майже всі описані в статті твики. Вважається одним із найкращих доступних ядер. Є програма для автоматичного оновлення franko.Kernel Updater. Конфігурувати можна за допомогою Trickster MOD.

Як встановити?

Всі ядра поширюються в стандартних для Android ZIP-архівах, які слід прошивати через консоль відновлення точно так, як альтернативні прошивки. Зазвичай ядра сумісні з будь-якими прошивками, тому підібравши потрібне ядро, його можна сміливо встановлювати. Єдине, що слід звернути увагу, - це версія Android, з якою забезпечена сумісність ядра. Воно може підійти до всіх доступних для пристрою версій Android, так і працювати тільки з однієї (розробник зазвичай явно говорить про це). Перед прошивкою обов'язково зроби бекап поточної прошивки за допомогою консолі відновлення. Якщо щось піде не так, то ти завжди зможеш відкотитися.

Висновки

Як ти зміг переконатися, кастомні ядра мають безліч переваг перед ядрами, що використовуються в стандартних або сторонніх прошивках. А що ще важливіше – необов'язково знати всі тонкощі Android, щоб їх використовувати, достатньо завантажити та встановити ZIP-архів.