3.10 65 версия на ядрото. Надграждане на ядрото на Linux до нова версия

„И аз... измивам карбуратора!“
шега

Въведение

В детската градина аз и съмишленици направихме дисекция на скакалци с надеждата да разберем структурата им. Радиоприемникът "Русия" беше запоен в училище. В института дойде ред на колите, чиито гайки бяха многократно пренаредени. Интересите се промениха, но желанието за „разглобяване“ понякога се събужда и днес е насочено към Android.

Колко пъти сте били спасявани от наличието на източници на Android? Вече не мога да се броя. Android - отворен проект, но за съжаление имаме само способността да четем; редактирането на кода на Android без да сте служител на Google е почти невъзможно. Нека да скърбим за този момент и да изтеглим хранилището. Как да направите това е описано перфектно на официалния.


Обща архитектура

Архитектурата на Android може да бъде схематично изобразена, както следва:

Настолните компютри и лаптопи имат добре изградена система от режими на захранване (процесорите x86 имат няколко от тях): компютърът работи „на пълна скорост“, когато се прави нещо, и преминава в енергоефективен режим, когато системата не работи. Преминаването в режим на „спящ“ се случва или след доста дълъг период на бездействие, или ръчно, например при затваряне на капака на лаптопа.

На телефоните се изискваше различен механизъм: основното състояние на системата е „хибернация“, излизането от нея се извършва само в случай на нужда. Така системата може да заспи дори ако някое приложение е активно. Android внедри механизма за wakelock: ако приложение (или драйвер) прави нещо важно, което трябва да достигне своето логично заключение, то „улавя“ wakelock, предотвратявайки заспиването на устройството.

Опитите за пренасяне на механизма wakelock към ядрото предизвикаха съпротива от много разработчици. Програмистите за Android решиха специфичен проблем, чието решение беше определен механизъм. Условията на задачата бяха много тесни. Целевата платформа е ARM, така че са използвани нейните характеристики: ARM процесорите първоначално предполагат чести промени в режимите на заспиване и събуждане, за разлика от x86. В Android приложенията комуникират със системата за управление на захранването чрез PowerManager, но какво да кажем за клиентските приложения на Linux?

Разработчиците на Android дори не се опитаха да намерят общо решение„за бъдещето“, което след това щеше да се влее в основното ядро ​​без никакви проблеми, не се консултира с общността на ядрото на Linux по този въпрос. Могат ли да бъдат обвинявани за това? Въпреки всички проблеми и дискусии, както бе споменато по-горе, в ядрото се появи API с идентична функционалност за автоматично заспиване.

Програмистите на приложения за Android рядко трябва да се справят с wakelocks, тъй като платформата и драйверите се справят с възложените им задължения, като вземат предвид режима на „сън“. Въпреки това, познатият PowerManager ще ви помогне да се намесите в този процес. Между другото, авторът измисля само един сценарий: да предпази телефона от заспиване при стартиране на услугата от BroadcastReceiver, което се решава от спомагателния клас от библиотеката за поддръжка на Android WakefulBroadcastReceiver.

Убиец с ниска памет

Стандартното ядро ​​на Linux има Out of Memory Killer , което въз основа на параметъра за лошо състояние определя процеса, който трябва да бъде убит:

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

По този начин, колкото повече памет консумира процесът и колкото по-малко живее, толкова по-малко късмет ще има.

Диаграмата показва обща системарегистриране на android. Драйверът за регистриране осигурява достъп до всеки буфер чрез /dev/log/*. Приложенията имат достъп до тях не директно, а чрез библиотеката на liblog. Библиотеката на liblog комуникира с класовете Log , Slog и EventLog. Командата adb logcat показва съдържанието на "основния" буфер.

Заключение

В тази бележка прегледахме накратко някои от функциите на Android като Linux система. Някои други части бяха пропуснати извън скоби (pmem, RAM конзола и т.н.), както и такива важни аспекти на платформата като цяло, като System Service, процеса на стартиране на системата и други. Ако тази тема представлява интерес, ще ги разгледаме в следващите статии.

Неделя вечер Линус Торвалдс, Linux родител и разработчик на ядрото операционна система, след два месеца работа обяви пускането на нова версия на ядрото на Linux 3.10.

Според самия разработчик това ядро ​​се оказа най-голямото по отношение на иновациите през последните няколко години.

Линус призна, че първоначално е възнамерявал да пусне още един кандидат за освобождаване, но след известно размисъл се наклони към пускането на окончателното издание под номер 3.10 веднага. Торвалдс също отбеляза в съобщението си, че новото ядро, подобно на версия 3.9, е напълно готово за ежедневна употреба.

Освен това, в обявяването на RC версията на ядрото, Линус Торвалдс написа, че преди винаги е включвал списък с имена на хора, изпратили определени части от кода, но този път този списък ще бъде толкова голям, че не може да бъде дадени изцяло в един лист.

Списък на основните промени, направени в ядрото 3.10:

  • Сега е възможно да се предотврати изпълнението на скриптове като програми - функционалността за изпълнение на скриптове, съдържащи пътя до интерпретатора в заглавката "#!", вече може да се компилира като модул на ядрото;
  • Системата Bcache, разработена и използвана от Google, е интегрирана. Bcache ви позволява да кеширате достъп до бавни твърди дискове на бързи SSD дискове; кеширането се извършва на ниво блоково устройство - и това ви позволява да ускорите достъпа до устройството, независимо от файловите системи, използвани на устройството;
  • Ядрото може да се компилира с компилатора Clang благодарение на пачовете, подготвени от проекта LLVMLinux;
  • Появи се система за динамично управление за генериране на прекъсвания на таймера. Сега, в зависимост от текущото състояние, можете да промените прекъсванията в диапазона от хиляди тикета в секунда до едно прекъсване в секунда - това ви позволява да сведете до минимум натоварването на процесора при обработка на прекъсвания в случай на неактивност на системата. Понастоящем тази функция се използва за системи в реално време и HPC (високопроизводителни изчисления), но в бъдещи версии на ядрото ще бъде активирана и за настолни системи;
  • Сега е възможно да се генерира събитие, уведомяващо приложението за наближаване на изчерпване на наличната памет за процеса/системата (в cgroups);
  • Профилирането на достъпа до паметта стана достъпно за командата perf;
  • Добавена поддръжка за RDMA (iSER) протокол към iSCSI подсистемата;
  • Има нов драйвер за "синхронизиране" (експериментален). Разработено е в рамките на Android платформии се използва за синхронизация между други драйвери;
  • Драйверът за виртуална графична карта QXL е интегриран (използван в системи за виртуализация за бързо тегленеграфики, използващи протокола SPICE);
  • Сега се поддържат нови функции за управление на захранването, въведени с процесорите AMD 16h (Jaguar);
  • Към Radeon DRM е добавена поддръжка за ускорено декодиране на видео с помощта на хардуерния UVD декодер, вграден в съвременните графични процесори AMD;
  • Появи се драйвер за виртуални видео адаптери на Microsoft Hyper-V (има и подобрения в работата на Hyper-V като цяло);
  • Изпълнението на криптографски функции (sha256, sha512, blowfish, twofish, serpent и camellia) е оптимизирано с помощта на AVX/AVX2 и SSE инструкции.

Потребители мобилни устройстване винаги са доволни от работата и възможностите на своите джаджи. Поради тази причина потребителите търсят най-добрия начинкак да флаширате ядрото на операционната система android. От една страна, подобно действие може лесно да се извърши с вашия таблет или смартфон. Хиляди потребители успешно минаха ядрото без никакви затруднения или проблеми. Но, от друга страна, всяка грешка по време на този процес може да доведе до, сред които повреда на притурката и необходимостта от скъпа следпродажбено обслужване. На различни етапи съществува риск да не изберете правилна версияфърмуер на ядрото, който е създаден от неквалифицирани разработчици или не пасва на вашето мобилно устройство. Препоръчваме ви да бъдете изключително внимателни, когато извършвате каквито и да е действия, които правят промени в софтуерната част на устройството на ниско ниво. След успешно флашване на ядрото, мнозина имат усещането, че държат в ръцете си изцяло ново устройство. По този начин напредналите потребители могат да персонализират джаджата, за да отговарят на техните нужди и предпочитания, като същевременно придобиват нови знания и опит за съвременните мобилни технологии.

Ядрото на операционната система Android и нейния фърмуер

Какво е ядрото на мобилното устройство?

Основата е ядрото на операционната система софтуер, който управлява хардуера на устройството. Основните параметри на всяка джаджа зависят от това. Трябва да се отбележи, че се състои от три взаимосвързани компонента - ядрото на Linux, вертикалната машина Dalvik и различни услуги и библиотеки на ниско ниво. Ако говорим за персонализиран фърмуер, тогава са засегнати само два компонента, които ви позволяват да добавяте нови системни услуги, да оптимизирате съществуващите параметри и да променяте графичната обвивка.

Тези, които искат да инсталират ядрото на Android, трябва да разберат, че има разлика между концепциите за персонализирано ядро ​​и персонализиран фърмуер. Последният е неофициална версия на софтуера. Персонализиран фърмуер, разработен от екип от специалисти под специфични устройства. Персонализираното ядро ​​е базирано на ядрото на Linux, което представлява неговата неофициална версия. Често с фърмуера идва персонализирано ядро. Но може да се инсталира отделно след смяна на фърмуера. Всъщност той не замества родното ядро ​​на мобилното устройство, което е крайната цел на подобна операция.

Мигането на ядрото на Android се извършва главно за увеличаване на времето за работа на устройството с няколко часа чрез регулиране на параметрите на консумация на енергия. Може би това е основната причина потребителите да извършват сложни трансформации на софтуера на своите джаджи. Фърмуерът също така ще ви позволи да смените видеочипа без последствия за вашия смартфон или таблет. По този начин напредналите потребители настройват екрана, променяйки неговото цветово възпроизвеждане, чувствителност. Фърмуерът на ядрото ви позволява да подобрите звука на устройството, да актуализирате драйвери и да внедрите поддръжка за нестандартни външни джаджи.

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

Фърмуер на джаджа чрез Fastboot

Можете да флаширате устройството си с Android с помощта на Fastboot. Но първо трябва да инсталирате помощната програма на вашата притурка. Има две версии на тази програма. Първият включва изтегляне на Fastboot в комбинация с официалния програма за Android SDK. Втората версия включва изтегляне на помощната програма отделно.

Препоръчваме да проверите дали вашето мобилно устройство вижда лаптоп или компютър. За да направите това, трябва да изпълните. След изтегляне и инсталиране на компютър, лаптоп, работещ на операционна Windows система, помощни програми за бързо зарежданеи свързвайки смартфон, трябва да отворите командния ред. За да направите това, отворете Търсене. В Windows 8 всичко, което трябва да направите, е да насочите курсора на мишката към дясната страна на екрана и да изберете подходящия раздел. В търсенето трябва да въведете "cmd", след което командният ред ще се появи пред вас. Устройството трябва да бъде поставено в режим на фърмуер. След това въведете команда, която ще тества взаимодействието между компютъра и мобилното устройство:

устройства за бързо стартиране

Ако всичко работи, трябва да заредите правилната версия на фърмуера на ядрото boot.img. Не препоръчваме флашване на ядрото оригинален фърмуер, тъй като това може да причини проблеми с работата на смартфона. Файлът трябва да бъде запазен в предварително създаден дял на диск C, наречен "Android". След това трябва да стартирате мобилното си устройство в Fastboot и да го свържете към компютъра. На екрана ще се появи съобщението "Fastboot USB".

  • CD C:\Android.
  • fastboot flash boot boot.img.
  • fastboot изтриване на кеша.
  • бързо рестартиране.

Много е важно всички думи да се въвеждат правилно, като се вземат предвид главни и интервали. Командата cd отваря необходимата папка, която съдържа необходимите файлове. След това се появява мигане. Командата fastboot erase cache изтрива дяла на кеша. Последната команда - fastboot reboot рестартира устройството от режим на фърмуер в нормален. Ако сте изпълнили всички тези стъпки правилно, тогава процесът ще бъде успешен.

Фърмуер, използващ ClockworkMod Recovery

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

За да флаширате ядрото, изтеглете архива с разширението zip. Той трябва да съдържа папката META-INF. След това има две опции. В първия случай трябва да посочите файла на фърмуера. Втората опция включва поставяне на файла на фърмуера в папката / sdcard. След това трябва да активирате ClockworkMod Recovery, да намерите там функцията Прилагане на актуализация от sdcard и да посочите необходимия файл.

Трябва да се отбележи, че менюто ClockworkMod Recovery е удобно и разбираемо за повечето потребители. В допълнение към такава система за възстановяване на фърмуер, можете да използвате TWRP Recovery. Този инструмент е удобен и популярен сред потребителите на Android. Основното нещо е да изберете правилния файл на фърмуера.

Мигането на ядрото на Android е процедура, към която не препоръчваме да прибягвате, ако сте напълно доволни от работата на притурката. Такива действия се водят от желанието за подобряване на производителността на мобилен телефон или таблет. Напредналите потребители получават възможността да задават параметри на по-ниско ниво. Но без определени познания и обективни причини е по-добре да не променяте софтуерната част на мобилното устройство, тъй като това е свързано с рискове и неизправности в работата му.

Вече сме писали за персонализиран фърмуер, root приложения и алтернативни менюта за зареждане повече от веднъж. Всичко това са стандартни теми в хакерската общност на Android, но в допълнение към всичко изброено по-горе, има и нещо като „персонализирано ядро“, което може да предостави почти неограничени възможности за управление на смартфон и неговия хардуер на най-ниската стойност ниво. В тази статия ще ви разкажа какво представлява, защо ви трябва и как да изберете правилното персонализирано ядро.

персонализирано ядро?

Какво е персонализирано ядро? Както всички знаем, Android е пай, съставен от три основни слоя: ядрото на Linux, набор от библиотеки и услуги на ниско ниво и виртуална машина Dalvik, върху който работи графична обвивка, инструменти и услуги от високо ниво, както и почти всички приложения, инсталирани от пазара. Създателите на повечето алтернативни персонализирани фърмуери обикновено работят само с горните два слоя, като добавят функции към графичната обвивка (като бутони в завесата), променят я (двигателя на темата в CyanogenMod), както и добавят нови системни услуги (еквалайзер в CyanogenMod) и оптимизиране на съществуващите.

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

Въпреки това, ядрото в смартфони с отключен буутлоудър може да бъде заменено отделно от основния фърмуер. И не просто заменете, а инсталирайте ядро ​​с огромен брой различни функции, които изискват определени технически познания за управление и следователно обикновено не са вградени в ядрата на популярния фърмуер като CyanogenMod, AOKP и MIUI. Сред тези функции можете да намерите поддръжка за високи честоти на процесора, контрол на гамата на екрана, режими за пестене на енергия, високоефективни мениджъри на захранване и огромен брой други функции.

В тази статия ще говорим за това какво могат да ни предложат създателите на персонализирани ядра, помислете за основните персонализирани ядра за различни устройства, а също така се опитайте да инсталирате ядрото независимо от основния фърмуер и да проверите всичко на нашата собствена кожа. И така, какво обикновено предлагат разработчиците на алтернативни ядра?

интелигентен контролер на трафика

OMAP35XX SoC, използвани например в Galaxy S II и Galaxy Nexus, имат функция SmartReflex, която действа като интелигентна системарегулиране на напрежението при промяна на натоварването на процесора. Всъщност елиминира необходимостта от фина настройка на напрежението от страна на потребителя.


Оптимизации

Често основната цел на изграждането на персонализирано ядро ​​е да се оптимизира производителността. Обикновено доставчикът на мобилни технологии се опитва да поддържа баланс между производителност и стабилност, така че дори добри техники за оптимизация, които могат значително да увеличат скоростта на устройството, могат да бъдат отхвърлени от производителя само въз основа на това, че след прилагането им някои приложения са започнали да се срива всяко десето изстрелване. Разбира се, подобни дреболии не притесняват ентусиастите и много от тях са готови да приложат всякакви опции за компилатор, алгоритми за пестене на енергия към ядрото на собствения си сбор и да повишат честотата на процесора толкова високо, колкото устройството може да издържи. Сред всички техники за оптимизация, четири са най-често срещаните:



Друг тип оптимизация: промяна на I/O планировчика по подразбиране. Ситуацията в тази област е още по-интересна, защото вместо да разберат как работят планировчиците, някои създатели на ядрото просто четат документи за Linux I/O планировчици в мрежата и правят заключения. Сред потребителите този подход е още по-разпространен. Всъщност почти всички от най-мощните и интелигентни Linux планировчици са напълно неподходящи за Android: те са предназначени за използване с механични хранилища на данни, в които скоростта на достъп до данни варира в зависимост от позицията на главата. Планировчикът използва различни схемигрупиране на заявки въз основа на физическата позиция на данните, така че заявките за данни, които са близки до текущата позиция на главата, ще получат по-висок приоритет. Това е напълно нелогично в случай на твърда памет, която гарантира еднаква скорост на достъп до всички клетки. Напредналите планери ще направят повече вреда, отколкото полза на смартфон, а най-тромавите и примитивни ще покажат най-добри резултати. Linux има три такива планировчици:

  • Noop (Без операция)- т. нар. non-scheduler. Проста опашка с FIFO заявки, първата заявка ще бъде обработена първа, втората втора и т.н. Добре подходящ за твърда памет и ви позволява да приоритизирате приложенията за достъп до устройството. Допълнителен плюс: ниско натоварване на процесора поради много прост принципработа. Минус: липса на отчитане на спецификата на устройството, което може да доведе до повреди в производителността.
  • SIO (прост I/O)- аналог на планировчика на крайния срок, без да се отчита близостта на секторите един до друг, тоест проектиран специално за твърда памет. Два основни акцента: приоритетът на операциите за четене пред операциите за запис и групирането на операциите по процеси с разпределението на времеви отрязък за всеки процес за изпълнение на операции. При смартфоните, където скоростта на текущото приложение и преобладаването на четенето над записа е важна, той показва много добра производителност. Предлага се в Leankernel, ядро ​​Matr1x за Nexus 4 и SiyahKernel.
  • РЕД (ЧЕТЕНЕ НА ЗАПИСАНЕ)е планировчик, специално проектиран за мобилни устройства и добавен към ядрото само преди няколко месеца. Основното предизвикателство: приоритетна обработка на заявките за четене, но справедливо разпределение на времето за заявки за писане. Счита се за най-добрия наличен в момента NAND планировчик, по подразбиране на Leankernel и Matr1x.

Струва си да се каже, че почти всички стандартни фърмуери и половината от персонализираните все още използват ядрото със стандартния Linux CFQ планировчик, което обаче не е толкова лошо, тъй като може да работи правилно със SSD устройства. От друга страна, той е твърде сложен, създава по-голямо натоварване на процесора (а оттам и на батерията) и не отчита спецификата на мобилната ОС. Друг популярен избор е графикът за крайни срокове, който е също толкова добър, колкото и SIO, но е прекомерен. Можете да видите списъка с налични планировчици със следната команда:

# котка /sys/block/*/queue/scheduler

За да промените, приложете това (където редът е името на планировчика):

# за i в /sys/block/*/queue/scheduler; do echo row > $1; Свършен

Някои създатели на ядрото също използват друг вид оптимизация, свързана с I/O. Това е деактивиране на системното извикване 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 технология, която ви позволява да резервирате малко количество RAM (обикновено 10%) и да го използвате като компресирана зона за суап. В резултат на това има вид разширяване на обема на паметта, без сериозни последици за производителността. Предлага се в Leankernel, активиран с командата Trickster MOD или zram enable.

Последните две интересни функции са Fast USB charge и Sweep2wake. Първият не е нищо повече от принудително включване на режима "бързо зареждане", дори ако смартфонът е свързан към USB порта на компютъра. Режимът за бързо зареждане е наличен във всички повече или по-малко нови смартфони, но поради технически ограничения не може да бъде активиран едновременно с достъпа до картата с памет. Функцията за бързо USB зареждане ви позволява винаги да активирате този режим, като същевременно деактивирате достъпа до устройството.

Sweep2wake е нов начинустройство за събуждане, изобретено от автора на Breaked-kernel. Неговото значение е да включите смартфона чрез плъзгане на клавишите за навигация, разположени под екрана, или през самия екран. Това е наистина удобна функция, но включването й ще запази сензора активен дори когато устройството спи, което може да изтощи батерията забележимо.

Овърклок, напрежение и пестене на енергия

Овърклокът е популярен не само сред собствениците на стационарни компютри и лаптопи, но и сред ентусиастите на мобилните технологии. Подобно на камъните на архитектурата x86, процесорите и графичните ядра на мобилните технологии работят страхотно. Въпреки това, самият метод за овърклок и стъпките, предприети за прилагането му, тук са малко по-различни. Факт е, че стандартните драйвери за SoC, отговорни за пестенето на енергия и промяната на честотата на процесора, обикновено са заключени на стандартни честоти, така че за фина настройка трябва да инсталирате или алтернативен драйвер, или персонализирано ядро.

Почти всички повече или по-малко висококачествени и популярни персонализирани ядра вече включват отключени драйвери, така че след инсталирането им възможността за управление на "мощността" на процесора е значително разширена. Обикновено създателите на персонализирани ядра правят две неща, които влияят на избора на честота. Това е разширение на честотния диапазон извън първоначално зададените - можете да зададете както по-висока честота на процесора, така и много ниска, което ви позволява да пестите батерията и да увеличавате градацията на честотата, например вместо три възможни честоти, ви се предлага избор от шест. Второто е добавянето на възможност за регулиране на напрежението на процесора, благодарение на което можете да намалите напрежението на процесора при ниски честоти, за да пестите енергия на батерията и да го увеличите при високи честоти, за да увеличите стабилността.

Всичко това може да се контролира с помощта на добре познатата платена помощна програма SetCPU или безплатния Trickster MOD. Препоръките за управление са същите като за настолни системи. По-добре е да зададете долната честота на процесора на минимум, но не по-ниска от 200 MHz (за да избегнете изоставане), горният праг се увеличава постепенно с тестване за стабилност, когато падне, се препоръчва леко да се увеличи напрежението за даден честота. Няма препоръки за напрежение, тъй като всеки процесор е уникален и стойностите ще бъдат различни за всеки.

В допълнение към промяната на честотите, асемблерите често добавят към ядрото нови енергоспестяващи алгоритми за управление (автоматичен контрол на честотата на процесора), които според тях могат да показват по-добри резултати от стандартните. Почти всички от тях се основават на интерактивния алгоритъм, използван по подразбиране в новите версии на Android, чиято същност е рязко да се повиши честотата на процесора до максимум в случай на увеличаване на натоварването и след това постепенно да се намали до минимум . Той замени използвания по-рано алгоритъм OnDemand, който плавно регулира честотата в двете посоки пропорционално на натоварването и ви позволява да направите системата по-отзивчива. Алтернативните създатели на ядрото предлагат следните алгоритми за заместване на Interactive:

  • SmartAssV2- Преосмисляне на интерактивния алгоритъм с фокус върху пестенето на батерия. Основната разлика е да не дърпате процесора до високи честоти в случай на кратки изблици на натоварване, за които е достатъчна ниската производителност на процесора. По подразбиране се използва в ядрото Matr1x.
  • InteractiveX- настроен интерактивен алгоритъм, чиято основна характеристика е заключване на процесора при минималната честота, посочена от потребителя, и изключване на второто процесорно ядро ​​при изключен екран. По подразбиране се използва в 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, всички по-горе интерфейси за управление, поддръжка за бързо USB зареждане, суап и zram, гъвкаво овърклок на процесора и графичния процесор. Един от най-добрите ядра. Персонализира се с Trickster MOD.
  • Matr1x (http://goo.gl/FQLBI , goo.gl/ZcyvA) - Ядро за Nexus S и Nexus 4. Просто и ненатоварено ядро. Поддръжка за овърклок на CPU и GPU, GammaControl, бързо USB зареждане, 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 (Интерактивен също е наличен).
  • SiyahKernel е ядрото за Galaxy S II и S III. Гъвкави опции за овърклок, автоматично калибриране на батерията, подобрен драйвер за сензорен екран, алгоритми за пестене на енергия: smartassV2 и lulzactiveV2, I/O планери: noop, краен срок, 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. Можете да конфигурирате с помощта на Trickster MOD.

Как да инсталирам?

Всички ядра се разпространяват в стандартни ZIP архиви на Android, които трябва да се прехвърлят през конзолата за възстановяване по същия начин, както алтернативен фърмуер. Обикновено ядрата са съвместими с всеки фърмуер, следователно, като сте избрали правилното ядро, можете безопасно да го инсталирате. Единственото нещо, на което трябва да обърнете внимание, е версията на Android, с която ядрото е съвместимо. И двете могат да се доближат до всички налични устройства версии на Android, и работи само с един (разработчикът обикновено изрично казва това). Преди да мигате, не забравяйте да архивирате текущия фърмуер, като използвате същата конзола за възстановяване. Ако нещо се обърка, винаги можете да се върнете назад.

констатации

Както можете да видите, персонализираните ядра имат много предимства пред ядрата, използвани в стандартен фърмуер или фърмуер на трети страни. И по-важното е, че не е нужно да знаете всички тънкости на Android, за да ги използвате, просто изтеглете и инсталирайте ZIP архива.

AT последните временановите версии на ядрата излизат доста често. На всеки няколко месеца има стабилно издание. Е, нестабилните кандидати за освобождаване излизат още по-често. Линус Торвалдс и много разработчици по света непрекъснато работят за подобряване на новите ядра и добавяне на все повече и повече функционалност към тях.

С всяка нова версия ядрото на Linux добавя поддръжка за няколко нови устройства, като нови процесори, графични карти или дори сензорни екрани. Напоследък поддръжката за нов хардуер се подобри много. Също така, нови файлови системи са включени в ядрото, мрежовият стек е подобрен, грешките и бъговете са коригирани.

Ако имате нужда от повече информация за промените в конкретна версия на ядрото, вижте неговия регистър на промените на 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 не трябва да инсталирате ядрото.

Превъртете до дъното, там се намират по-новите версии на ядрата:

В допълнение, най-отгоре има ежедневна/текуща папка, която съдържа най-новите, нощни компилации на ядрото. Изберете желаната версия на ядрото и изтеглете двата файла linux-headers и linux-image за вашата архитектура:

След като изтеглянето приключи, можете да продължите с инсталацията. За да направите това, изпълнете следното в терминала:

Придвижете се до папката с инсталационни пакети, например ~/Downloads:

Стартирайте инсталацията:

Ако тази команда не работи, можете да отидете по другия начин. Инсталирайте помощната програма gdebi:

sudo apt-get install gdebi

След това го използвайте, за да инсталирате ядрото:

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

Ядрото е инсталирано, остава да актуализирате буутлоудъра:

sudo update-grub

Сега можете да рестартирате компютъра си и да видите какво се е случило. След рестартирането се уверете, че актуализацията на ядрото на Linux до най-новата версия е била успешна:

Както можете да видите, ядрото е успешно инсталирано и работи. Но не бързайте да премахвате Стара версия kernel, препоръчително е да имате няколко версии на ядрото в системата, така че в случай на проблеми да можете да стартирате от старата работеща версия.

Автоматична актуализация на ядрото на Linux в Ubuntu

По-горе разгледахме как да инсталираме желаната версия на ядрото ръчно. Ubuntu имаше PPA за ежедневни компилации на ядрото, но сега е затворен. Следователно можете да актуализирате ядрото само като изтеглите deb пакета и го инсталирате. Но всичко това може да бъде опростено със специален скрипт.

Инсталиране на скрипта:

cd /tmp
$ git клонинг 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, в този случай не бързайте да изтегляте най-новата версия на ядрото, използвайте само стабилни ядра, те обикновено вече добавят поддръжка за този модул.

И за да възстановите системата, изберете елемента Разширени опции за Ubuntuв менюто на Grub:

И стартирайте предишното работещо ядро:

След изтеглянето остава да премахнете неправилно инсталираното ядро ​​и да актуализирате Grub отново, заменете желаната версия на ядрото вместо 4.7:

sudo apt премахнете 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 инсталирайте yum-plugin-fastestmirror

На Fedora 22 и по-нова версия: