Перепрошивка ядра андроїд-пристрої. Огляд особливостей ядра андроїда 3.10 65 версія ядра

У неділю ввечері Лінус Торвальдс, який є батьком 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, twofish, serpent і camellia) оптимізовано з використанням інструкцій AVX / AVX2 і SSE.

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

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

Що являє собою ядро ​​мобільного пристрою?

Ядро операційної системи є основою програмного забезпечення, яке управляє апаратною частиною пристрою. Від нього залежать основні параметри будь-якого гаджета. Слід зауважити, що складається з трьох взаємопов'язаних компонентів - ядра 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. Цей інструмент є зручним і популярним серед користувачів Андроїд. Головне - вибрати правильний файл прошивки.

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

"А я ... карбюратор промиваю!"
анекдот

Вступ

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

Скільки разів вас виручало наявність початкових кодів Андроїда? Мене - вже не злічити. Андроїд - відкритий проект, але, на жаль, у нас є можливість тільки читати; правити код Андроїда, не будучи співробітником Google, практично неможливо. Посумувати над цим моментом і завантажимо репозиторій. Як це зробити, відмінно описано на офіційному.


Загальна архітектура

Архітектуру Андроїда можна схематично зобразити так:

Настільні комп'ютери і ноутбуки мають усталену систему енергорежімов (у x86 процесорів таких декілька): комп'ютер працює "на повних обертах", коли щось робиться, і йде в енергоефективний режим, коли система простоює. Догляд в "сплячий" режим відбувається або після досить тривалої бездіяльності, або вручну, наприклад, при закритті кришки ноутбука.

На телефонах був потрібний інший механізм: основний стан системи - "сплячка", вихід з нього здійснюється тільки у випадках необхідності. Таким чином, система може заснути, навіть якщо якийсь додаток проявляє активність. У Андроїд був реалізований механізм wakelock-ів: якщо додаток (або драйвер) виконує щось важливе, що має дійти до логічного завершення, воно "захоплює" wakelock, запобігаючи засипання пристрою.

Спроби портирования механізму wakelock-ів в ядро ​​викликали опір багатьох розробників. Програмісти Андроїда вирішували конкретну проблему, рішенням якої став певний механізм. Умови завдання були вельми вузькі. Цільова платформа - ARM, тому використовувалися її особливості: ARM-процесори спочатку припускають часту зміну режимів роботи "сну" і "неспання", на відміну від x86. У Андроїд додатки спілкуються з системою управління живленням через PowerManager, а що робити клієнтським Лінукс-додатків?

Розробники Андроїда навіть не намагалися знайти спільне рішення "на майбутнє", яке потім без проблем би вливалося в основне ядро, що не консультувалися з цієї проблеми з спільнотою ядра Лінукс. Чи можна їх за це звинувачувати? Незважаючи на всі проблеми і обговорення, як згадувалося вище, в ядрі з'явилося API з ідентичною функціональністю autosleep.

Програмістам додатків під Андроїд досить рідко доводиться стикатися з wakelock-ами, так як платформа і драйвери обробляють покладені на них зобов'язання з урахуванням "сплячого" режиму. Проте, втрутитися в цей процес допоможе знайомий PowerManager. До речі, автор усвідомлює тільки один сценарій: не дати телефону заснути під час запуску сервісу з BroadcastReceiver-а, що вирішується допоміжним класом з Android Support Library WakefulBroadcastReceiver.

Low Memory Killer

У стандартному ядрі Лінукса є Out of Memory Killer, який на підставі параметра badness визначає вбиваємо процес:

Badness_for_task = total_vm_for_task / (sqrt (cpu_time_in_seconds) *
sqrt (sqrt (cpu_time_in_minutes)))

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

На діаграмі представлена ​​загальна система логування Андроїда. Драйвер логування надає доступ до кожного буферу через / dev / log / *. Додатки мають доступ до них не безпосередньо, а через бібліотеку liblog. З бібліотекою liblog спілкуються класи Log, Slog і EventLog. Команда adb logcat показує вміст буфера "main".

висновок

У цій статті ми коротко розглянули деякі особливості Андроїда як Лінукс-системи. За дужками залишилися деякі інші частини (pmem, RAM console тощо), а також такі важливі аспекти платформи в цілому, як System Service, процес запуску системи і інші. Якщо дана тема буде цікава, в наступних статтях ми розглянемо і їх.

Ми вже не раз писали про кастомних прошивках, 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 МГц (щоб уникнути лагов), верхній поріг підвищується поступово з тестуванням стабільності роботи, при падінні якої рекомендується трохи підняти вольтаж для даної частоти. Якихось рекомендацій по вольтажу немає, так як кожен процесор унікальний і значення будуть для всіх різними.

Крім зміни частот, збирачі часто додають в ядро ​​нові алгоритми управління енергозбереженням (автоматичним управлінням частотою процесора), які, на їхню думку, можуть показати кращі результати в порівнянні зі стандартними. Майже всі з них базуються на використовуваному за замовчуванням в нових версіях Android алгоритмі Interactive, суть якого полягає в тому, щоб різко підняти частоту процесора до максимальної в разі підвищення навантаження, а потім поступово знижувати до мінімальної. Він прийшов на зміну використовуваному раніше алгоритму 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-архів.

Останнім часом нові версії ядер виходять досить часто. Раз на кілька місяців виходить стабільний реліз. Ну а нестабільні кандидати в релізи виходять і того частіше. Лінус Торвальдс і безліч розробників по всьому світу постійно працюють над поліпшенням нових ядер і додаванням в них все більше і більше функціональності.

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

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

Розглянемо оновлення ядра Ubuntu і CentOS. Спочатку давайте розглянемо як оновити ядро ​​в Ubuntu 16.04.

Давайте спочатку подивимося яке ядро ​​у вас встановлено. Для цього відкрийте термінал і виконайте:

Наприклад, у мене зараз використовується версія 4.3, і я можу оновитися до найновішої версії. Розробники Ubuntu вже подбали про те щоб їх користувачі не збирали ядро ​​вручну і зробили deb пакети нової версії ядра. Їх можна завантажити з офіційного сайту Canonical.

Я міг привести тут команди wget для завантаження, якщо була б відома версія ядра, але в нашому випадку краще буде використовувати браузер. Відкрийте сайт http://kernel.ubuntu.com/~kernel-ppa/mainline/. Тут знаходяться всі, що збираються командою Ubuntu ядра. Ядра збираються як для певних дистрибутивів, з кодовим ім'ям дистрибутива, так і загальні. Причому ядра від Ubuntu 16.10, швидше за все, будуть працювати в 16.04, а ось від 9.04 в Ubuntu 16.04 ставити ядро ​​не варто.

Прокрутіть в низ, саме там знаходяться більш нові версії ядер:

Крім того, в самому верху є папка daily / current, в якій знаходяться найсвіжіші, нічні збірки ядер. Виберіть потрібну версію ядра і скачайте два файли linux-headers і linux-image для своєї архітектури:

Після завершення завантаження можна переходити до установки. Для цього виконайте в терміналі наступні дії:

Перейдіть в папку з установочними пакетами, наприклад, ~ / Downloads:

Запустіть установку:

Якщо ця команда не спрацювала, можна піти іншим шляхом. Встановіть утиліту gdebi:

sudo apt-get install gdebi

Потім за допомогою неї встановіть ядро:

sudo gdebi linux-headers * .deb linux-image - *. deb

Ядро встановлено, залишилося відновити завантажувач:

sudo update-grub

Тепер можна перезавантажувати комп'ютер і дивитися що вийшло. Після перезавантаження переконаємося, що оновлення ядра Linux до найновішої версії пройшло успішно:

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

Автоматичне оновлення ядра Linux в Ubuntu

Вище ми розглянули як встановити потрібну версію ядра вручну. Раніше у Ubuntu було PPA, для щоденних збірок ядер, але тепер воно закрите. Тому оновити ядро ​​можна тільки скачавши deb пакет і встановивши його. Але все це можна спростити за допомогою спеціального скрипта.

Встановлюємо скрипт:

cd / tmp
$ Git clone git: //github.com/GM-Script-Writer-62850/Ubuntu-Mainline-Kernel-Updater
$ Bash Ubuntu-Mainline-Kernel-Updater / install

Перевіряємо наявність оновлень:

KernelUpdateChecker -r yakkety

Опція -r дозволяє вказати гілку дистрибутива, для якої потрібно шукати ядра. Для xenial ядра більше не збираються, але тут будуть відмінно працювати ядра від наступної версії. Крім того, опцією -no-rc можна вказати утиліті не використовувати кандидати в релізи, а опція -v задає точну версію ядра, яку потрібно встановити. Якщо вам неважливо для якого дистрибутива ядро, аби найновіше, використовуйте опцію --any-release. Скрипт видасть такий результат:

Перед тим як встановлювати ядро, можна подивитися подробиці відкривши файл / tmp / kernel-update:

Тут ми бачимо, що виконувався пошук для yakkety, а також на даний момент доступна версія ядра 4.7-rc6. Чи можемо встановлювати:

sudo / tmp / kernel-update

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

Старі ядра, про всяк випадок не видаляти (n):

Готово, оновлення ядра до найновішої версії завершено, тепер перезавантажте комп'ютер (y):

Перевіряємо чи дійсно оновлення ядра Ubuntu спрацювало:

Більш того, скрипт був доданий в автозавантаження і тепер перевірятиме автоматично поновлення через 60 секунд після входу в систему. Ярлик автозагрукі знаходиться в файлі:

vi ~ / .config / autostart / KernelUpdate.desktop

Ви можете змінити його як вам потрібно або видалити. Якщо хочете видалити скрипт повністю з системи, виконайте:

rm ~ / .config / autostart / KernelUpdate.desktop
$ Sudo rm / usr / local / bin / KernelUpdate (Checker, ScriptGenerator)

Не завантажується

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

А щоб відновити роботу системи виберіть пункт Advanced options for Ubuntuв меню Grub:

І запустіть попереднє працює ядро:

Після завантаження залишиться видалити невірно встановлений ядро ​​і ще раз оновити Grub, підставте потрібну версію ядра замість 4.7:

sudo apt remove linux-header-4.7 * linux-image-4.7 *

sudo update-grub

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

Оновлення ядра Linux до 4.4 в CentOS

А тепер давайте розглянемо як оновити ядро ​​Linux найновішою версією в CentOS. Інструкція перевірена на CentOS 7, але швидше за все, буде працювати і на RedHat 7, Fedora та інших подібних дистрибутивах.

Як правило, нові ядра не включені в офіційні репозиторії CentOS, тому щоб отримати останню стабільну версію нам необхідно буде додати репозиторій ELRepo. Це репозиторій комерційних пакетів (Enterprise Linux Packages) він також підтримується в RedHat і Fedora.

Для додавання репозиторію виконайте наступні дії:

Спочатку необхідно імпортувати ключ:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

Додаємо репозиторій і необхідні компоненти в RHEL / Scientific Linux / CentOS-7:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

yum install yum-plugin-fastestmirror

У Fedora 22 і вище: