Custom Kernel - Ce, cum si de ce? Software

Când vine vorba de modding și ROM-uri custom, se folosește des cuvântul kernel, sau mai bine zis custom kernel. Dar ce este acest kernel de fapt? Într-unul din primele articole scrise pentru Gadget.ro (link) am acoperit foarte scurt acest termen, care merită mai multă atenție, ținând cont de ceea ce face și ce posibilități oferă.

KERNELul este cel care face legătura dintre partea software și cea fizică, hardware. Practic acesta traduce comenzile trimise de către sistemul de operare și aplicații pe înțelesul componentelor hardware. De exemplu, atunci când apeși butonul POWER al telefonului pentru a aprinde display-ul, de fapt trimiți o comandă către kernel, iar acesta transmite comanda tradusă către display ca acesta să se aprindă. E un fel de man-in-the-middle. Fără acesta, partea hardware nu ar ști cum să interpreteze semnalele trimise de către sistemul de operare și în consecință nu ar ști ce trebuie făcut. Și ca orice componentă software Android, era de așteptat ca lumea să își bage nasul și în el – așa ajungem la un custom kernel.

Custom Kernel - Ce, cum si de ce?

Dar ce ai putea obține dintr-un custom kernel?

Probabil cel mai mare motiv ar fi posibilitatea de overclock, creșterea frecvenței la care procesorul lucrează pentru performanțe mai mari. Un device comercializat este de obicei underclocked, frecvența maximă de funcționare limitată sub cea maximă posibilă. Acest underclock este gândit pentru a crește autonomia bateriei. Dar în același timp procesorul este limitat și la frecvența minimă, cea de idle, când telefonul nu este folosit. Practic putem ajunge la o autonomie asemănătoare cu cea din fabrică, dar cu performanțe mai mari, găsind un echilibru între overclock și underclock – consumul de energie mărit de overclock poate fi compensat de consumul mai scăzut în starea de idle datorat underclockului. Același lucru poate fi aplicat și procesorului grafic, GPU. Astfel, deviceul tău ar putea rula mai fluid aplicații și jocuri complicate și cu un consum de resurse mărit.

ATENȚIE! Overclockul extrem va crește temperatura de funcționare a CPU și GPU, de multe ori până în punctul în care telefonul tău se poate închide. Overclockul extrem, dar și underclockul, pot face sistemul instabil. Din acest motiv, ca și la calculatoare, este recomandat să se facă treptat. Faci întâi overclock cu valoarea minimă posibilă, testezi, dacă totul este în regulă, mai crești puțin și tot așa până ajungi la o valoarea care ajută sistemul să se miște mai bine, nu se încălzește așa de tare și nu consumă din baterie cu mult mai mult decât varianta standard.

Tot kernelul este cel care se ocupă și de accesoriile pe care le atașezi la deviceul tău – tastatură, mouse, imprimantă etc. Cu un custom kernel poți extinde acest suport la diferite gamepaduri sau joystickuri (xbox, playstation), la periferice ce în mod normal nu ar fi compatibile cu telefonul respectiv sau tabelta pe care o deții. În kernel se poate integra și suport pentru un file system suplimentar, cum ar fi NTFS sau exFAT, pentru a putea conecta un hard disk extern sau stick USB partiționat pentru calculator.

Nu te-ai lămurit încă de benficiile unui custom kernel? Prin custom kernel poți adăuga opțiuni noi de aprindere a display-ului, cum ar fi swipe2wake (glisarea unui deget pe display) sau doubletap2wake (atingerea dublă a displaylui), opțiuni care te pot ajuta să extinzi viața butoanelor fizice, utilizându-le mai putin. Altă posibilitate oferită de un custom kernel este cea de calibare a display-ului, pentru culori mai vii și contrast mai puternic.

Dacă tot nu ești convins, notează că acestea sunt doar câteva din avantajele pe care le poți obține cu un custom kernel, avantaje mult prea multe pentru a fi enumerate aici. Cel mai bine e să cauți unul pentru deviceul tău și să analizezi lista cu opțiuni.

Dar dacă articolul te-a convins și ești nerăbdător să te dai în tabăra custom kernel, trebuie să ții cont de câteva aspecte înainte de a instala unul.

  • UN KERNEL FUNCȚIONEAZă PE UN SINGUR DEVICE – din moment ce kernelul se ocupă de partea hardware, acesta nu poate fi folosit pe alt model decât cel pentru care a fost gândit.
  • KERNELUL ESTE DEPENDENT DE SURSĂ – un custom kernel nu va funcționa decât pe un ROM ce folosește aceeași sursă. De exemplu pentru deviceurile Samsung ce folosesc un ROM cu TouchWiz va trebui un custom kernel pentru ROM-uri TouchWiz, pentru deviceurile HTC ce folosesc un ROM cu Sense va trebui un custom kernel pentru ROM-uri Sense, pentru un ROM ce folosește ca bază CyanogenMod/AOSP va trebui un kernel pentru CyanogenMod. Înțelegi unde bat.
  • KERNELUL ESTE DEPENDENT DE VERSIUNEA ANDROID – un custom kernel nu va funcționa decât pe un ROM cu versiunea de Android pentru care a fost gândit, și nu pe alta.

Ca un exemplu, pentru telefonul meu, am nevoie de un kernel pentru HTC One M7 și Android 5.0.1 GPE. Dacă aveam varianta stock, aveam nevoie de un kernel pentru HTC One M7 și Android 5.0.2 cu Sense 6. Nu poți folosi un custom kernel creat pentru o configurație pe alta.

De ce ai nevoie?

  • USB Debugging activat în Settings -> Developer options. Dacă acest meniu nu este vizibil, accesează Settings -> About phone și apasă de 7 ori consecutiv pe Build Number.
  • acces root – este obligatoriu, nu încerca să instalezi unul fără a obține accesul root înainte
  • un custom recovery precum TWRP sau CWM – un tutorial scurt despre cum poți instala unul găsești aici.
  • un custom kernel pentru configurația ta, în format ZIP – cea mai bună sursă pentru așa ceva este forumul XDA. Tot ce trebuie să faci este să accesezi forum.xda-developers.com și să cauți un kernel în secțiunea dedicată deviceului tău.

Pentru acest tutorial voi folosi ElementalX 19.3 GPE pentru HTC One M7 – ElementalX-m7-19.3-GPE.zip. ElementalX este un custom kernel foarte cunoscut, cu foarte multe opțiuni, disponibil pentru mai multe deviceuri, cum ar fi Nexus 5, 6, 7 (2013), 9, HTC One M7, M8, One S, Motorola Xoom, și poate fi descărcat de la adresa elementalx.org.

1. Transferă kernelul în format ZIP în memoria internă a telefonului sau a tabletei.

2. Pornește telefonul în modul recovery. Pentru acest lucru poți folosi o aplicație din Play Store precum Quick Boot sau combinația de taste dedicată fiecărui device. O listă cu câteva din aceste combinații găsești în tutorialul pentru instalarea unui custom recovery, din lista de cerințe.

3. FĂ UN BACKUP! Dacă la alte tutoriale acest lucru era doar o recomandare, aici este o obligație. Ține cont că modifici fișiere de sistem ce controlează hardwareul telefonului. Sunt multe lucruri care pot merge prost la instalarea unui custom kernel, lucruri care pot împiedica deviceul tău să mai pornească. Îți voi da mai jos situații în care vei avea nevoie de backup.

  • TWRP: Backup -> selectează toate partițiile disponibile și trage către dreapta cursorul Swipe to Back Up.
  • CWM: Backup and restore -> backup to /sdcard.

4. Acum urmează instalarea. Pentru TWRP va trebui să accesezi meniul Install -> selectează fișierul ZIP și confirmă glisând către dreata cursorul Swipe to Confirm Flash. Pentru CWM accesează meniul Install ZIP -> Choose ZIP from /sdcard, selectează fișierul ZIP și confirmă apăsând Yes.

NOTĂ: Unele custom kerneluri conțin un installer numit AROMA ce îți permite să selectezi diferite opțiuni la instalare, precum cel întâlnit în aplicațiile pentru calculator. Dacă acesta este și cazul tău și ești indecis asupra setărilor, ține minte că le poți schimba și după instalând din nou kernelul sau folosind o aplicație din Play Store. Un sfat personal, acolo unde nu cunoști lasă opțiunile așa cum sunt selectate deja. Mai jos ai câteva imagini cu installerul oferit de ElementalX pentru HTC One M7 ca să îți faci o idee.

5. La final îți recomand să cureți partiția CACHE. Pentru TWRP va trebui să accesezi Wipe -> Advanced Wipe, bifezi partiția Cache și Swipe to Wipe, iar pentru CWM va trebui să intri în Mounts and storage și să selectezi Format /cache.

6. Acum poți face reboot selectând opțiunea disponibilă pe ecranul principal din recovery. Primul boot va dura mai mult. Și este recomandat, după ce pornește pentru prima oară, să îl lași câteva minute și să îl resetezi din nou.

Ce faci după? Acum că ai instalat un custom kernel, te poți lovi de următoarele situații.

  • Telefonul sau tableta nu pornește – Probabil ai selectat un overclock prea mare, sau un underclock prea mic, sau o opțiune instabilă. Îți recomand să intri în recovery și să instalezi din nou kernelul, dar cu setări mai moderate. Dacă tot nu pornește, fă restore din recovery doar la partiția SYSTEM pentru a nu pierde nimic din datele personale. În TWRP poți face asta bifând doar această partiție iar în CWM va trebui să folosești funcția Advanced Restore.
  • Vrei să încerci alte opțiuni – Dacă vrei să folosești alte opțiuni decât cele selectate la instalare, poți instala din nou kernelul din recovery urmând pașii de mai sus. Unele kernelul oferă posibilitatea de a schimba aceste opțiuni direct din Android folosind diferite aplicații. De exemplu ElementalX are o aplicație proprie (link), pe care o și recomand pentru kernelul lor, însă aceasta costă bani. O variantă gratuită compatibilă cu multe kerneluri este Trickster MOD ce poate fi descărcat din Play Store făcând click aici. Însă ține cont că fiecare dezvoltator de custom kernel recomandă o anumită aplicație, dacă oferă suport pentru așa ceva. Cel mai probabil acest detaliu îl găsești pe pagina de download a acestuia.
  • Vrei să încerci alt custom kernel – Poți instala un kernel nou direct peste cel actual iar setările se vor suprascrie.
  • Te-ai răzgândit și vrei să revii la kernelul stock – Nu există metodă de dezinstalare. Este posibil să găsești pe forumul XDA un kernel standard ce-l poți instala tot prin TWRP sau CWM, dar dacă nu găsești așa ceva poți face restore din recovery doar la partiția SYSTEM.

Sper că am acoperit cât mai mult posibil acest subiect, și cât mai clar. Dar dacă ai întrebări, nelămuriri sau feedback poți folosi secțiunea de comentarii.