Az Android kernel funkcióinak áttekintése. A Linux kernel frissítése az új 3.10 65-ös verziójú kernelverzióra

02.05.2020 Érdekes

– És én... kimosom a karburátort!
Tréfa

Bevezetés

Az óvodában hasonszőrű barátaimmal szöcskét boncolgattunk abban a reményben, hogy megértjük a szerkezetüket. Az iskolában forrasztották az „Oroszország” rádiót. Az intézetben olyan autóké volt az ideje, amelyek anyáját sokszor átrendezték. Az érdeklődési körök megváltoztak, de néha felébred a „szétszerelés” vágya, és ma már az Androidot célozzák.

Hányszor segített neked az Android források birtokában? Engem már nem lehet megszámolni. Az Android nyílt forráskódú projekt, de sajnos csak olvasási képességünk van; Szinte lehetetlen Android-kódot szerkeszteni anélkül, hogy a Google alkalmazottja lennél. Gyászoljuk el ezt a pillanatot, és töltsük le az adattárat. Ennek módja tökéletesen le van írva a hivatalos weboldalon.


Általános építészet

Az Android architektúra sematikusan a következőképpen ábrázolható:

Az asztali számítógépek és laptopok beépített energiamód-rendszerrel rendelkeznek (az x86-os processzorokban több is van): a számítógép „teljes sebességgel” fut, ha valami történik, és energiatakarékos üzemmódba lép, amikor a rendszer tétlen. Az „alvó” módba lépés vagy meglehetősen hosszú tétlenség után, vagy manuálisan történik, például a laptop fedelének lecsukásakor.

A telefonokon más mechanizmusra volt szükség: a rendszer fő állapota a „hibernálás”, az ebből való kilépés csak szükség esetén történik. Így a rendszer akkor is tud aludni, ha valamilyen alkalmazás aktív. Az Android bevezetett egy wakelock mechanizmust: ha egy alkalmazás (vagy illesztőprogram) valami fontos dolgot csinál, aminek el kell jutnia a logikus végkifejlethez, akkor „megragadja” a wakelockot, megakadályozva, hogy az eszköz elaludjon.

A wakelock mechanizmus kernelbe történő portolására tett kísérlet sok fejlesztő ellenállását váltotta ki. Az Android programozói egy konkrét problémát oldottak meg, aminek a megoldása egy bizonyos mechanizmus volt. A feladat feltételei nagyon szűkek voltak. A célplatform az ARM, ezért annak funkcióit használták: az ARM processzorok kezdetben gyakori változtatásokat feltételeznek az „alvó” és „ébrenlét” üzemmódban, ellentétben az x86-tal. Az Android alkalmazásokban a PowerManageren keresztül kommunikálnak az energiagazdálkodási rendszerrel, de mi a helyzet a Linux kliens alkalmazásokkal?

Az Android fejlesztői meg sem próbálták megtalálni közös döntés„a jövőért”, amelyet aztán gond nélkül beolvadtak a fő kernelbe, a Linux kernel közösségével nem konzultáltak ezzel a problémával kapcsolatban. Hibáztathatja őket ezért? Az összes probléma és megbeszélés ellenére, amint azt fentebb említettük, egy API jelent meg az autosleep funkcióval azonos funkcionalitással a magban.

Az Android alkalmazások programozóinak ritkán kell megküzdeniük a wakelockokkal, mivel a platform és a meghajtók a rájuk rótt kötelezettségeket az „alvó” mód figyelembevételével dolgozzák fel. A jól ismert PowerManager azonban segít beavatkozni ebbe a folyamatba. A szerző egyébként csak egy forgatókönyvre tud gondolni: megakadályozni, hogy a telefon elaludjon a szolgáltatás BroadcastReceiverről történő indításakor, amit az Android Support Library WakefulBroadcastReceiver segédosztálya old meg.

Alacsony memória gyilkos

A szabványos Linux kernel rendelkezik Out of Memory Killer-rel, amely a badness paraméter alapján határozza meg a leállítandó folyamatot:

Badness_for_task = total_vm_for_task / (sqrt(cpu_time_in_seconds) *
sqrt(sqrt(cpu_idő_percekben)))

Így minél több memóriát fogyaszt egy folyamat, és minél rövidebb ideig él, annál kevesebb szerencséje lesz.

A diagram azt mutatja általános rendszer Android naplózás. A naplózási illesztőprogram minden pufferhez hozzáférést biztosít a /dev/log/*-on keresztül. Az alkalmazások nem közvetlenül, hanem a liblog könyvtáron keresztül érik el őket. A Log, Slog és EventLog osztályok kommunikálnak a liblog könyvtárral. Az adb logcat parancs megjeleníti a „fő” puffer tartalmát.

Következtetés

Ebben a cikkben röviden megvizsgáltuk az Android, mint Linux rendszer néhány funkcióját. Kimaradt néhány egyéb rész (pmem, RAM-konzol stb.), valamint a platform egészének olyan fontos aspektusai, mint a rendszerszolgáltatás, a rendszerindítási folyamat és mások. Ha ez a téma érdekli, a következő cikkekben megvizsgáljuk őket.

Vasárnap este Linus Torvalds, a Linux szülője és az operációs rendszermag fejlesztője két hónapos munka után jelentette be a kiadást. új verzió Linux kernel 3.10.

Maga a fejlesztő szerint ez a kernel a legnagyobb innováció az elmúlt néhány évben.

Linus bevallotta, hogy eleinte egy másik megjelenési jelöltet szándékozott kiadni, de gondolkodás után hajlott arra, hogy azonnal kiadja a végleges, 3.10-es kiadást. Torvalds azt is megjegyezte üzenetében, hogy az új kernel a 3.9-es verzióhoz hasonlóan teljesen készen áll a mindennapi használatra.

Ráadásul a kernel RC verziójának bejelentésében Linus Torvalds azt írta, hogy korábban mindig szerepeltetett egy listát azoknak az embereknek a névsoráról, akik küldték a kód bizonyos részeit, de ezúttal ez a lista akkora lesz, hogy nem lehetett teljes egészében egy lapon postázzuk.

A 3.10-es kernelben végrehajtott főbb változtatások listája:

  • Most már megakadályozhatja a szkriptek programként való végrehajtását – a „#!” fejlécben az interpreter elérési útját tartalmazó szkriptek indítására szolgáló funkció kernelmodulként is lefordítható;
  • Integrált fejlesztés és használat Google rendszer Bcache. A Bcache lehetővé teszi a lassú hozzáférés gyorsítótárazásának megszervezését merevlemezek gyors SSD meghajtókon; a gyorsítótárazás a blokk eszköz szintjén történik - és ez lehetővé teszi a meghajtóhoz való hozzáférés felgyorsítását, függetlenül az eszközön használt fájlrendszerektől;
  • A kernel a Clang fordítóval fordítható az LLVMLinux projekt által készített javításoknak köszönhetően;
  • Megjelent egy dinamikus rendszer az időzítő megszakítások generálásának vezérlésére. Most, az aktuális állapottól függően, módosíthatja a megszakításokat a másodpercenkénti ezrektől a másodpercenkénti egy megszakításig – ez lehetővé teszi a CPU terhelésének minimalizálását a rendszer inaktív állapotában bekövetkező megszakítások feldolgozásakor. Jelenleg ezt a funkciót valós idejű rendszerekben és HPC-ben (nagy teljesítményű számítástechnika) használják, de a következő kernel-kiadásokban asztali rendszereken is használni fogják;
  • Mostantól lehetőség van esemény létrehozására, amely értesíti az alkalmazást arról, hogy a folyamat/rendszer számára elérhető memória kimerüléséhez közeledik (c-csoportokban);
  • A memória hozzáférés profilozása már elérhető a perf parancshoz;
  • Az RDMA (iSER) protokoll támogatása az iSCSI alrendszerhez;
  • Van egy új illesztőprogram "sync" (kísérleti). Belül fejlesztették ki Android platformokés más illesztőprogramok közötti szinkronizálásra szolgál;
  • A QXL virtuális grafikus kártya illesztőprogramja integrálva lett (a virtualizációs rendszerekben a SPICE protokollt használó gyorsított grafikus kimenethez használják);
  • Új energiagazdálkodási eszközök kerültek bevezetésre AMD processzorok család 16h („Jaguar”);
  • A Radeon DRM-hez hozzáadták a modern AMD GPU-kba épített hardveres UVD-dekóder segítségével történő videodekódolás felgyorsítását;
  • Megjelent a Microsoft Hyper-V virtuális videoadapterek illesztőprogramja (általában is vannak fejlesztések a Hyper-V működésében);
  • A kriptográfiai funkciók (sha256, sha512, blowfish, twofish, serpent és camellia) végrehajtását AVX/AVX2 és SSE utasítások segítségével optimalizáljuk.

Már többször írtunk az egyedi firmware-ről, a root alkalmazásokról és az alternatívákról rendszerindító menük. Ez mind szabványos témák az androidos hackerközösségben viszont a fentiek mellett létezik olyan is, mint az „egyedi kernel”, amely szinte korlátlan lehetőségeket tud nyújtani egy okostelefon és annak hardverének legalacsonyabb szintű kezelésére. Ebben a cikkben elmondom, mi ez, miért van rá szükség, és hogyan válasszuk ki a megfelelő egyéni kernelt.

Egyedi kernel?

Mi az az egyéni kernel? Mint mindannyian tudjuk, az Android egy torta, amely három alapvető rétegből áll: a Linux kernelből, alacsony szintű könyvtárak és szolgáltatások halmazából, és Virtuális gép A Dalvik, amelyen egy grafikus héj, magas szintű eszközök és szolgáltatások, valamint szinte minden, a piacról telepített alkalmazás fut. A legtöbb alternatív egyedi firmware készítői általában csak a felső két réteggel dolgoznak, funkciókat adnak hozzá a grafikus héjhoz (például gombok a függönyön), megváltoztatják azt (témamotor a CyanogenModban), valamint új rendszerszolgáltatásokat (ekvalizer) adnak hozzá. CyanogenMod-ban) és a meglévők optimalizálása.

A népszerű firmware szerzői lehetőség szerint módosítanak a Linux kernelen is: optimalizálnak (agresszívebb fordítóoptimalizálási jelzőkkel építenek), új funkciókat építenek be (például Windows ball támogatása), és egyéb változtatásokat is végrehajtanak, mint pl. hogy a processzor frekvenciáját a gyártó által megadott érték fölé emelje. Gyakran mindez a színfalak mögött marad, és sok egyedi firmware-felhasználó nincs is tisztában ezekkel a lehetőségekkel, különösen azért, mert ugyanaz a CyanogenMod egyedi kernellel csak korlátozott számú eszközhöz érkezik, amelyekhez mind a natív kernel forráskódja és cseréjének lehetősége is rendelkezésre áll. Például szinte mindent CyanogenMod firmware Mert Motorola okostelefonok Szabványos kernelt használnak - a rendszerbetöltő áthatolhatatlan védelme miatt lehetetlen lecserélni a sajátjával.

A feloldatlan rendszerbetöltővel rendelkező okostelefonok kernelje azonban a fő firmware-től külön cserélhető. És nem csak cserélni, hanem telepíteni is kell egy nagyszámú különféle funkcióval rendelkező kernelt, amelyek kezeléséhez bizonyos technikai ismeretek szükségesek, és ezért általában nincsenek beépítve olyan népszerű firmware-ek kernelébe, mint a CyanogenMod, AOKP és MIUI. Ezen funkciók között megtalálható a magas processzorfrekvenciák támogatása, a képernyő gamma szabályozása, az energiatakarékos módok, a rendkívül hatékony energiamenedzserek és számos egyéb funkció.

Ebben a cikkben arról fogunk beszélni, hogy mit kínálhatnak nekünk az egyéni kernelek készítői, megnézzük a főbb egyéni kerneleket különféle eszközök, és megpróbáljuk a rendszermagot a fő firmware-től függetlenül telepíteni, és mindent keményen ellenőrizni. Szóval, mit kínálnak általában az alternatív kernelek fejlesztői?

Intelligens forgalomirányító

A például a Galaxy S II-ben és a Galaxy Nexusban használt OMAP35XX SoC-ok SmartReflex funkcióval rendelkeznek, amely intelligens feszültségbeállító rendszerként működik, amikor a processzor terhelése megváltozik. Lényegében kiküszöböli a feszültség felhasználó általi finomhangolását.


Optimalizálások

Az egyéni kernel felépítésének fő célja gyakran a teljesítmény optimalizálása. Jellemzően a mobileszköz-gyártó igyekszik fenntartani az egyensúlyt a teljesítmény és a stabilitás között, így még a jó optimalizálási technikákat is, amelyek jelentősen növelhetik az eszköz sebességét, csak arra hivatkozva utasíthatja el a gyártó, hogy használatuk után egyes alkalmazások összeomlani kezdtek. minden tizedik indítás. A rajongókat persze nem zavarják az ilyen apróságok, és sokan készek bármilyen fordító opciót, energiatakarékos algoritmust alkalmazni saját szerelvényük kernelére, és olyan magasra emelni a processzorfrekvenciát, amennyire az eszköz bírja. Az összes optimalizálási technika közül négy a leggyakoribb:



Az optimalizálás másik típusa: az alapértelmezett I/O ütemező módosítása. A helyzet ezen a téren még érdekesebb, mivel ahelyett, hogy megértenék az ütemezők működési elveit, egyes kernelkészítők egyszerűen elolvassák az Interneten található dokumentumokat a Linux I/O ütemezőjén, és következtetéseket vonnak le. A felhasználók körében ez a megközelítés még elterjedtebb. Valójában a legerősebb és legintelligensebb Linux ütemezők szinte mindegyike teljesen alkalmatlan Androidra: mechanikus adattárolókkal való használatra készültek, amelyekben az adatelérés sebessége a fej helyzetétől függően változik. Az ütemező az adatok fizikai helyétől függően különböző kérés-összesítési sémákat használ, így az aktuális fejpozícióhoz közeli adatkérések magasabb prioritást kapnak. Ez teljesen logikátlan a szilárdtest-memória esetében, amely minden cellához azonos hozzáférési sebességet garantál. A haladó ütemezők több kárt okoznak, mint használnak egy okostelefonon, és a legügyetlenebbek és legprimitívebbek mutatják a legjobb eredményeket. A Linuxnak három hasonló ütemezője van:

  • Noop (nincs művelet)- az úgynevezett nem ütemező. Egy egyszerű FIFO-kéréssor, az első kérést először, a másodikat a másodikat és így tovább. Jól használható szilárdtestalapú memóriákhoz, és lehetővé teszi az alkalmazási prioritások igazságos elosztását a meghajtóhoz való hozzáféréshez. További plusz: alacsony processzorterhelés a nagyon egyszerű működési elv miatt. Hátrány: nem veszik figyelembe a készülék működési sajátosságait, ami teljesítményhibákat eredményezhet.
  • SIO (egyszerű I/O)- a Deadline ütemező analógja, anélkül, hogy figyelembe venné a szektorok egymáshoz való közelségét, vagyis kifejezetten szilárdtest-memóriához tervezték. Két fő jellemzője: az olvasási műveletek prioritása az írási műveletekkel szemben és a műveletek folyamatok szerinti csoportosítása, minden folyamathoz egy időszeletet rendelve a műveletek végrehajtásához. Az okostelefonokban, ahol fontos az aktuális alkalmazás sebessége és az olvasási műveletek túlsúlya az írási műveletekkel szemben, nagyon jól mutat jó teljesítmény. Elérhető Leankernelben, Matr1x kernelben Nexus 4-hez és SiyahKernelhez.
  • SOR (OLVAS, ÍRÁS)- egy kifejezetten mobileszközökhöz tervezett ütemező, amelyet alig néhány hónapja adtunk hozzá a kernelhez. A fő cél az, hogy először az olvasási kéréseket dolgozzák fel, de az írási kérésekre is osszák el a méltányos időt. A legjobbnak tartott Ebben a pillanatbanütemező a NAND memóriához, alapértelmezés szerint a Leankernelben és a Matr1x-ben.

Érdemes elmondani, hogy szinte az összes szabványos firmware és az egyediek fele továbbra is a szabványos Linux CFQ ütemezővel használja a kernelt, ami azonban nem olyan rossz, mivel megfelelően működik szilárdtestalapú meghajtók. Másrészt túl bonyolult, nagyobb terhelést jelent a processzoron (és így az akkumulátoron), és nem veszi figyelembe a mobil operációs rendszer sajátosságait. Egy másik népszerű választás a Deadline ütemező, amely ugyanolyan jó, mint a SIO, de redundáns. Az elérhető ütemezők listáját a következő paranccsal tekintheti meg:

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

A módosításhoz a következőt használjuk (ahol a sor az ütemező neve):

# for i in /sys/block/*/queue/scheduler; echo row > $1; Kész

Egyes kernelkészítők másfajta optimalizálást is használnak az I/O-hoz kapcsolódóan. Ezzel letiltja az fsync rendszerhívást, amely a megváltozott tartalom kiürítésére szolgál nyissa meg a fájlokat lemezre. Egyes vélemények szerint fsync nélkül a rendszer ritkábban fér hozzá a meghajtóhoz, és így a processzoridőt és az akkumulátor energiáját takaríthatja meg. Meglehetősen ellentmondásos megállapítás: az fsync-et nem túl gyakran használják alkalmazásokban, és csak az igazán fontos információk mentésére, de letiltása ugyanazon információk elvesztéséhez vezethet operációs rendszer összeomlása vagy egyéb problémák esetén. Az fsync letiltásának lehetősége a franco.Kernel és GLaDOS kernelekben érhető el, és a /sys/module/sync/parameters/fsync_enabled fájl vezérli, amelybe 0-t kell írni a letiltáshoz vagy 1-et az engedélyezéshez. Ismétlem, nem ajánlott ezt a funkciót használni.

Új függvények hozzáadása a kernelhez

Természetesen az optimalizálás mellett a finomítások ill különböző rendszerek fejlett hardverkezelés, az egyedi kernelekben teljesen új funkciókat is találhatunk, amelyek nem a szabványos kernelekben, de hasznosak lehetnek a felhasználók számára.

Alapvetően ezek különböző illesztőprogramok és fájlrendszerek. Egyes kernelek például támogatják a CIFS modult, amely lehetővé teszi a Windows megosztások csatlakoztatását. Ilyen modul található a Matr1x kernelben a Nexus S-hez, a faux123-ban a Nexus 7-hez, a SiyahKernelhez és a GLaDOS-hoz. Önmagában haszontalan, de számos olyan alkalmazás van a piacon, amely lehetővé teszi a képességek kihasználását.

Egy másik hasznos funkció az ntfs-3g illesztőprogram beépítése a kernelbe (pontosabban a kernellel együtt lévő csomagba; maga az illesztőprogram Linux alkalmazásként működik), amely a fájlként formázott flash meghajtók csatlakoztatásához szükséges. NTFS rendszer. Ez az illesztőprogram a faux123 és a SiyahKernel kernelekben található. Általában automatikusan aktiválódik, de ha ez nem történik meg, használhatja a StickMount alkalmazást a piacon.

Sok mag támogatja az úgynevezett zram technológiát is, amely lehetővé teszi egy kis hely lefoglalását véletlen hozzáférésű memória(általában 10%), és használja tömörített csereterületként. Az eredmény egyfajta memóriabővülés, a teljesítményre gyakorolt ​​​​komoly következmények nélkül. Elérhető a Leankernelben, a Trickster MOD vagy a zram enable paranccsal engedélyezve.

Az utolsó két érdekes funkció a gyors USB-töltés és a Sweep2wake. Az első nem más, mint a „ gyors töltés", még akkor is, ha az okostelefon a számítógép USB-portjához csatlakozik. A gyorstöltési mód minden többé-kevésbé új okostelefonban elérhető, azonban technikai korlátok miatt a memóriakártyához való hozzáféréssel egyidejűleg nem engedélyezhető. A Fast USB töltés funkció lehetővé teszi, hogy mindig engedélyezze ezt az üzemmódot, miközben letiltja a meghajtóhoz való hozzáférést.

A Sweep2wake az új útébressze fel az eszközt, amelyet a Breaked-kernel szerzője talált fel. Ennek lényege, hogy az okostelefont úgy kapcsolja be, hogy ujját a képernyő alatt található navigációs gombokon vagy magán a képernyőn keresztül csúsztatja. Ez egy igazán kényelmes funkció, de bekapcsolásával a szenzor még alvó állapotban is aktív marad, ami jelentősen lemerítheti az akkumulátort.

Túlhúzás, feszültség- és energiatakarékosság

A túlhajtás nem csak az asztali számítógépek és laptopok tulajdonosai körében népszerű, hanem a mobiltechnológia rajongói körében is. Az x86 architektúra kövekhez hasonlóan a mobileszközök processzorai és grafikus magjai is kiválóak. Maga a túlhajtási módszer és a megvalósítás lépései azonban némileg eltérőek. A helyzet az, hogy az energiatakarékosságért és a processzorfrekvencia változtatásáért felelős SoC-k szabványos illesztőprogramjai általában szabványos frekvenciákra vannak zárva, így a finomhangoláshoz vagy alternatív illesztőprogramot vagy egyedi kernelt kell telepíteni.

Szinte minden többé-kevésbé jó minőségű és népszerű egyedi kernel tartalmaz már feloldott illesztőprogramokat, így ezek telepítése után jelentősen kibővül a processzor „teljesítményének” szabályozásának lehetősége. Az egyéni kernelkészítők általában két olyan dolgot csinálnak, amelyek befolyásolják a frekvenciaválasztást. Ez a frekvenciatartomány kiterjesztése az eredetileg megadottakon túlra - beállíthat magasabb processzorfrekvenciát vagy nagyon alacsonyat, ami lehetővé teszi az akkumulátor megtakarítását és például a frekvencia gradációjának növelését a három lehetséges frekvencia helyett. , hat közül lehet választani. A második a processzorfeszültség beállításának lehetősége, így a processzor feszültségét csökkentheti alacsony frekvenciák az akkumulátor töltöttségi szintjének megtakarításához, és a stabilitás növelése érdekében a magas fokozaton történő erősítéshez.

Mindez a jól ismert fizetős SetCPU vagy az ingyenes Trickster MOD segítségével vezérelhető. A kezelési javaslatok ugyanazok, mint az asztali rendszerek esetében. Alacsony frekvenciaju Jobb a processzort minimumra állítani, de nem 200 MHz-nél alacsonyabbra (a késések elkerülése érdekében), a felső küszöböt fokozatosan növeljük a működés stabilitásának tesztelése közben, ha leesik, akkor ajánlott kissé növelni a feszültséget. frekvencia. Nincsenek ajánlások a feszültségre, mivel minden processzor egyedi, és az értékek mindenki számára eltérőek lesznek.

A frekvenciák változtatása mellett a készítők gyakran új energiatakarékos vezérlő algoritmusokat (a processzorfrekvencia automatikus vezérlése) adnak a kernelhez, amelyek véleményük szerint jobb eredményeket tudnak felmutatni a szabványosokhoz képest. Szinte mindegyik az Android új verzióiban alapértelmezés szerint használt Interaktív algoritmuson alapul, amelynek lényege, hogy a terhelés növekedésével a processzor frekvenciáját élesen maximálisra növelik, majd fokozatosan a minimumra csökkentik. Felváltja a korábban használt OnDemand algoritmust, amely mindkét irányba simán, a terhelés arányában állította a frekvenciát, és érzékenyebbé teszi a rendszert. Az alternatív kernelek gyűjtői a következő algoritmusokat kínálják az Interactive helyettesítésére:

  • SmartAssV2- az interaktív algoritmus újragondolása, az akkumulátor kímélésére összpontosítva. A fő különbség az, hogy nem kell rángatni a processzort magas frekvenciák rövid terhelés esetén, amelyhez elegendő a processzor alacsony teljesítménye. Az alapértelmezett a Matr1x kernel.
  • InteraktívX- egy hangolt Interaktív algoritmus, melynek fő jellemzője, hogy a processzort a felhasználó által megadott minimális frekvencián zárja le, és a képernyő kikapcsolásakor feszültségmentesíti a második processzormagot. Az alapértelmezés a Leankernelben használatos.
  • LulzactiveV2- lényegében egy újra feltalált OnDemand. Ha a processzor terhelése meghaladja a megadott értéket (alapértelmezés szerint 60%), az algoritmus bizonyos számú osztással (alapértelmezés szerint 1) növeli a frekvenciát, és csökkenti, ha a terhelés csökken. Különösen érdekes, mert lehetővé teszi a működési paraméterek önálló beállítását, ezért alkalmas edzett geekek számára.

Általánosságban elmondható, hogy a kernelkészítők nagyon szeretnek új energiatakarékos algoritmusokat kitalálni, mert egyszerű a megvalósításuk, így tucatnyi másikat is találhat. A legtöbbjük teljes szemétség, és az ütemező kiválasztásakor érdemes betartani a szabályt: vagy a fent leírt három közül valamelyik, vagy a szokásos Interactive, ami egyébként nagyon jó. Választhat ugyanazzal a Trickster MOD-dal.

Vezérlőfelületek

A legnépszerűbb egyéni kernelek számos mechanizmust tartalmaznak a különféle illesztőprogram-paraméterek finom vezérlésére, amelyek közül a leggyakoribb a ColorControl, a GammaControl, a SoundControl és a TempControl.

Az első két interfész szinte mindenhol elérhető, beleértve a CyanogenMod kerneleket is, a második kettő a Leankernelben és talán másokban is. Így vagy úgy, mindegyik vezérelhető a Trickster MOD segítségével.

Magok

Melyik magot érdemes választani? Nincs egyértelmű válasz erre a kérdésre, és nem azért, mert „mindenkinek a sajátja”, hanem azért, mert rengeteg Android-eszköz van a világon, és majdnem ugyanannyi különféle kernel. Vannak azonban olyan népszerű kernelek, amelyeket egyszerre több eszközre fejlesztenek. Így vagy úgy, sokat említettem belőlük a történet során, és itt röviden ismertetem őket.

  • A Leankernel a Galaxy Nexus, a Nexus 7 és a Galaxy S III magja. A fejlesztés során a fő hangsúly az egyszerűségen és a munka gyorsaságán van. Energiatakarékos algoritmus: InteractiveX V2, I/O ütemező: ROW, az összes fenti vezérlő interfész, a Fast USB töltés, Swap és zram támogatása, rugalmas túlhajtási lehetőségek a CPU és a GPU számára. Az egyik legjobb mag. Testreszabható a Trickster MOD segítségével.
  • Matr1x (http://goo.gl/FQLBI, goo.gl/ZcyvA) – kernel Nexus S-hez és Nexus 4-hez. Egyszerű és túlterhelt kernel. CPU és GPU túlhajtás, GammaControl, Fast USB Charge, Sweep2wake, I/O ütemezők támogatása: SIO, ROW és FIOPS. A teljesítmény javítása. Testreszabható a Trickster MOD segítségével.
  • Bricked-Kernel (http://goo.gl/kd5F4, goo.gl/eZkAV) – egy egyszerű és túlterhelt kernel Nexus 4 és HTC One X. Optimalizálás a Snapdragon S4 és az NVIDIA Tegra 3 számára, újratervezett energiatakarékos mód a Tegra 3 számára, túlhúzási képesség, energiatakarékos algoritmus: hangolt OnDemand (interaktív is).
  • SiyahKernel – kernel Galaxy S II és S III számára. Rugalmas túlhajtási lehetőségek, automatikus akkumulátorkalibrálás, továbbfejlesztett érintőképernyő-illesztőprogram, energiatakarékos algoritmusok: smartassV2 és lulzactiveV2, I/O ütemezők: noop, határidő, CFQ, BFQV3r2 (alapértelmezett), V(R), SIO. CIFS és NTFS illesztőprogramok (automatikus rögzítéssel). Az ExTweaks segítségével konfigurálható.
  • franco.Kernel – kernel Nexus S, Galaxy Nexus, Nexus 4, Nexus 7, Nexus 10, Galaxy S III készülékekhez, Galaxy Note, Optimus One és One X.

A kernel képességei eszközről eszközre nagyon eltérőek, ezért a részleteket a helyszínen kell ellenőriznie. Ennek a kernelnek a felvillantásával azonban lehetőség nyílik a túlhajtásra, az illesztőprogramok hangolására, a kiváló teljesítményre, valamint a különféle energiatakarékos algoritmusok és ütemezők támogatására. Valójában a kernel szinte az összes, a cikkben leírt módosítást tartalmazza. Az egyik legjobb elérhető kernelnek tartják. Van jelentkezés arra automatikus frissítés franko.Kernel frissítő. A Trickster MOD segítségével konfigurálhatja.

Hogyan kell telepíteni?

Az összes kernel szabványos Android ZIP-archívumokban van terjesztve, amelyeket ugyanúgy kell flashelni a helyreállítási konzolon, mint alternatív firmware. A kernelek általában bármilyen firmware-rel kompatibilisek, így a megfelelő kernelt kiválasztása után biztonságosan telepítheti. Az egyetlen dolog, amire figyelnie kell, az az Android verziója, amellyel a kernel kompatibilis. Akár belefér az összes elérhető eszközbe Android verziók, és csak eggyel dolgozzon (a fejlesztő általában kifejezetten beszél erről). A firmware telepítése előtt mindenképpen készítsen biztonsági másolatot aktuális firmware ugyanazt a helyreállítási konzolt használja. Ha valami elromlik, mindig vissza lehet lépni.

következtetéseket

Mint látható, az egyéni kerneleknek számos előnnyel rendelkeznek a szabványos ill harmadik fél firmware. És ami még fontosabb, hogy használatukhoz nem kell ismernie az Android összes fortélyait; csak töltse le és telepítse a ZIP archívumot.

A közelmúltban elég gyakran megjelentek a kernelek új verziói. Néhány havonta megjelenik egy stabil kiadás. Nos, még gyakrabban jelennek meg instabil jelöltek a kiadásokra. Linus Torvalds és számos fejlesztő világszerte folyamatosan azon dolgozik, hogy új kerneleket fejlesszen, és egyre több funkciót adjon hozzájuk.

Minden új verzióval a Linux kernel több új eszköz támogatását is biztosítja, például új processzorokat, videokártyákat vagy akár érintőképernyők. Az utóbbi időben az új berendezések támogatása jelentősen javult. Emellett új fájlrendszerek is bekerültek a kernelbe, javult a hálózati verem működése, és kijavították a hibákat és hibákat.

Ha több kell részletes információk Egy adott kernelverzió módosításához tekintse meg a kernel.org webhelyen található Changelog-ot, és ebben a cikkben a Linux kernel legújabb verziójára való frissítését vizsgáljuk meg. Igyekszem nem egy adott kernelverzióhoz kötni az utasításokat, elég gyakran adnak ki új kerneleket, és ez mindegyikre releváns lesz.

Nézzük meg az Ubuntu és a CentOS kernel frissítését. Először is nézzük meg, hogyan frissíthetjük a kernelt az Ubuntu 16.04-ben.

Először nézzük meg, milyen kernelt telepítettél. Ehhez nyisson meg egy terminált, és futtassa:

Például jelenleg a 4.3-as verziót használom, és tudok frissíteni a legújabb verzióra. Az Ubuntu fejlesztői már gondoskodtak arról, hogy felhasználóik ne fordítsák le manuálisan a kernelt, és deb csomagokat készítettek a kernel új verziójához. Letölthetők a hivatalos Canonical webhelyről.

Itt tudnék wget parancsokat adni letöltéshez, ha ismert lenne a kernel verziója, de esetünkben jobb lenne a böngészőt használni. Nyissa meg a http://kernel.ubuntu.com/~kernel-ppa/mainline/ webhelyet. Itt van az Ubuntu csapata által összeállított összes kernel. A rendszermagok mind meghatározott disztribúciókhoz, a disztribúció kódnevével, mind általánosakhoz vannak fordítva. Ezen túlmenően az Ubuntu 16.10 rendszermagjai nagy valószínűséggel működni fognak a 16.04-ben, de nem szabad 9.04-es kernelt telepíteni az Ubuntu 16.04-ben.

Görgessen le, itt találhatók a kernelek újabb verziói:

Ezen kívül a legtetején van egy napi/aktuális mappa, amely a legújabb, éjszakai kernel buildeket tartalmazza. Válassza ki a kívánt kernelverziót, és töltsön le két linux-headers és linux-image fájlt az architektúrájához:

A letöltés befejezése után folytathatja a telepítést. Ehhez tegye a következőket a terminálon:

Lépjen a mappába telepítőcsomagok pl ~/Letöltések:

Futtassa a telepítést:

Ha ez a parancs nem működik, választhat más utat. Telepítse a gdebi segédprogramot:

sudo apt-get install gdebi

Ezután használja a kernel telepítéséhez:

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

A kernel telepítve van, csak frissíteni kell a rendszerbetöltőt:

sudo update-grub

Most újraindíthatja a számítógépet, és megnézheti, mi történt. Az újraindítás után meggyőződünk arról, hogy a Linux kernel frissítése a legújabb verzióra sikeres volt:

Mint látható, a kernel sikeresen telepítve van, és működik. De ne rohanjon a törléssel régi verzió kernel, javasolt, hogy a rendszermagnak több verziója legyen a rendszerben, hogy problémák esetén a régi működő verzióról tudjon indítani.

Automatikus Linux kernel frissítés az Ubuntu-n

Fentebb megnéztük, hogyan kell manuálisan telepíteni a szükséges kernelverziót. Az Ubuntu korábban rendelkezett PPA-val a napi kernelépítésekhez, de most bezárták. Ezért a kernelt csak a deb csomag letöltésével és telepítésével frissítheti. De mindez leegyszerűsíthető egy speciális szkript segítségével.

Telepítse a szkriptet:

cd /tmp
$ git klón git://github.com/GM-Script-Writer-62850/Ubuntu-Mainline-Kernel-Updater
$ bash Ubuntu-Mainline-Kernel-Updater/install

Frissítések keresése:

KernelUpdateChecker -r yakkety

Az -r kapcsoló lehetővé teszi annak a terjesztési ágnak a meghatározását, amelyhez kerneleket kíván keresni. A xenial rendszermagjai már nincsenek megépítve, de a következő verzió kernelei jól működnek itt. Ezenkívül a -no-rc kapcsoló utasíthatja a segédprogramot, hogy ne használjon kiadásjelölteket, a -v pedig a telepítendő kernel pontos verzióját adja meg. Ha nem érdekel, hogy milyen disztribúcióhoz való a kernel, mindaddig, amíg az a legújabb, használja az --any-release opciót. A szkript a következő eredményt adja:

A kernel telepítése előtt megtekintheti a részleteket a /tmp/kernel-update fájl megnyitásával:

Itt láthatjuk, hogy a yakkety-t keresték, és a kernel verziója jelenleg 4.7-rc6. Telepíthetjük:

sudo /tmp/kernel-update

A szkript megmutatja nekünk az aktuális kernel verzióját, valamint a telepítendő kernel verzióját, a felépítési dátumot és egyéb részleteket. Azt is megkérdezi, hogy kell-e változásnaplót vezetnie. Ezután jön a telepítés:

A régi kerneleket minden esetre ne törölje (n):

Kész, a kernel frissítése a legújabb verzióra befejeződött, most indítsa újra a számítógépet (y):

Nézzük meg, hogy az Ubuntu kernel frissítése valóban működött-e:

Ezenkívül a szkript hozzáadásra került az indításhoz, és a bejelentkezés után 60 másodperccel automatikusan ellenőrzi a frissítéseket. Az automatikus betöltés parancsikonja a fájlban található:

vi ~/.config/autostart/KernelUpdate.desktop

Igény szerint módosíthatja vagy törölheti. Ha teljesen el szeretné távolítani a szkriptet a rendszerből, futtassa:

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

Nem tölt le

Ha bármilyen hiba történt a telepítés során, vagy a kernel frissítése nem megfelelő, és a rendszer most nem indul el az új kernellel, használhatja a régi kernelt. Ezenkívül előfordulhat, hogy a rendszer nem indul el, ha szabadalmaztatott illesztőprogramot használ a következőhöz NVIDIA videokártyák ebben az esetben ne rohanjon a kernel legújabb verziójának letöltésével, csak stabil kernelt használjon; ezek általában már támogatják ezt a modult.

A rendszer visszaállításához válassza a lehetőséget Speciális beállítások az Ubuntu számára a Grub menüben:

És indítsa el az előző futó kernelt:

A letöltés után nem kell mást tenni, mint eltávolítani a helytelenül telepített kernelt, és újra frissíteni a Grub-ot, cserélni a kívánt kernelverziót a 4.7 helyett:

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

sudo update-grub

A rendszer most visszatért a korábbi állapotába. Megpróbálhatja a kernel régebbi verziójának telepítését, vagy próbálkozzon újra.

A Linux Kernel frissítése 4.4-re a CentOS rendszeren

Most nézzük meg, hogyan frissíthetjük a Linux kernel legújabb verzióját a CentOS rendszerben. Az utasításokat CentOS 7-en tesztelték, de valószínűleg működni fognak a RedHat 7-en, a Fedorán és más hasonló disztribúciókon.

Általános szabály, hogy az új kernelek nem szerepelnek a hivatalos CentOS tárolókban, így a legújabb stabil verzió beszerzéséhez hozzá kell adnunk az ELRepo tárolót. Ez a kereskedelmi csomagok (Enterprise Linux Packages) tárháza, és a RedHat és a Fedora is támogatja.

Adattár hozzáadásához kövesse az alábbi lépéseket:

Először importálnia kell a kulcsot:

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

Adjon hozzá egy adattárat és szükséges alkatrészeket RHEL/Scientific Linux/CentOS-7 esetén:

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

yum install yum-plugin-fastestmirror

Fedora 22 és újabb verziókon:

A mobileszközök felhasználói nem mindig elégedettek kütyük működésével és képességeivel. Emiatt a felhasználók a legjobb módot keresik az Android operációs rendszer kernelének flashelésére. Egyrészt ez a művelet könnyen végrehajtható táblagépével vagy okostelefonjával. Felhasználók ezrei sikeresen flashelték a kernelt minden nehézség és probléma nélkül. Másrészről azonban a folyamat során elkövetett hibák problémákhoz vezethetnek, beleértve a modul meghibásodását és a drága szolgáltatás szükségességét. Különböző szakaszokban fennáll annak a veszélye, hogy a kernel firmware-ének rossz verzióját választja, amelyet nem megfelelő fejlesztők hoztak létre, vagy amely nem alkalmas az Ön mobileszközére. Javasoljuk, hogy legyen rendkívül óvatos, amikor olyan műveletet hajt végre, amely megváltoztatja a szoftver rész készülék alacsony szinten. A kernel sikeres felvillantása után sokan úgy érzik, hogy egy teljesen új eszközt tartanak a kezükben. A haladó felhasználók így szükségleteikhez és preferenciáikhoz szabhatják a kütyüt, miközben új ismereteket és tapasztalatokat szerezhetnek a modern mobiltechnológiákról.

Az Android operációs rendszer kernelje és firmware-je

Mi a mobileszköz magja?

Az operációs rendszer kernelje az alap szoftver, amely az eszköz hardverét vezérli. Bármely kütyü alapvető paraméterei attól függnek. Meg kell jegyezni, hogy három egymással összefüggő komponensből áll - a Linux kernelből, a Dalvik függőleges gépből és különféle alacsony szintű szolgáltatásokból és könyvtárakból. Ha egyedi firmware-ről beszélünk, akkor csak két összetevőt érint, amelyek lehetővé teszik új rendszerszolgáltatások hozzáadását, a meglévő paraméterek optimalizálását és a grafikus héj megváltoztatását.

Azoknak, akik a kernelt Androidra szeretnék telepíteni, meg kell érteniük, hogy különbség van az egyéni kernel és az egyéni firmware fogalma között. Ez utóbbi a szoftver nem hivatalos verziója. Egyedi firmware alatti szakembercsoport fejlesztette ki konkrét eszközök. Az egyéni kernel a Linux kernelen alapul, ami annak nem hivatalos verzióját képviseli. Az egyéni kernel gyakran firmware-rel együtt érkezik. De a firmware megváltoztatása után külön is telepíthető. Valójában nem helyettesíti a natív kernelt mobil eszköz, ami egy ilyen művelet végső célja.

Az Android kernel firmware-e főként azért történik, hogy az energiafogyasztási paraméterek módosításával több órával megnövelje az eszköz működési idejét. Talán ez a fő oka annak, hogy a felhasználók bonyolult konverziókat hajtanak végre kütyük szoftverében. A firmware lehetővé teszi a videochip cseréjét az okostelefonra vagy táblagépre vonatkozó következmények nélkül. A haladó felhasználók ily módon testreszabhatják a képernyőt, megváltoztatva annak színvisszaadását és érzékenységét. A kernel firmware lehetővé teszi az eszköz hangjának javítását, az illesztőprogramok frissítését és a nem szabványos külső modulok támogatásának bevezetését.

A kernel felvillantása előtt azt javasoljuk, hogy bizonyosodjon meg arról, hogy jó verziót választott, amelyet tapasztalt fejlesztők készítettek. Ezenkívül fontos megbizonyosodni arról, hogy alkalmas-e az Ön Android firmware-verziójához. Célszerű elolvasni azoknak a véleményét, akiknek sikerült a kernel megfelelő verzióját telepíteni mobiltelefonjukra. Az értékelések tartalmazhatnak fontos információ a firmware vagy az eszköz további működése során felmerülő problémákról.

A modul villogása Fastboot segítségével

A Fastboot segítségével újraindíthatja Android-eszközét. De először telepítenie kell a segédprogramot a moduljára. Ennek a programnak két változata van. Az első a Fastboot letöltését jelenti a hivatalos programmal együtt Android program SDK. A második verzió magában foglalja a segédprogram külön letöltését.

Javasoljuk, hogy ellenőrizze, hogy mobileszköze látja-e laptopját vagy számítógépét. Ehhez meg kell tennie. Letöltés és telepítés után a számítógépre, laptopon fut az operációs rendszer Windows rendszer, Fastboot segédprogram és okostelefon kapcsolat, meg kell nyitnia a parancssort. Ehhez nyissa meg a Keresést. Windows 8 rendszerben ehhez csak vigye az egérkurzort a képernyő jobb oldalára, és válassza ki a megfelelő részt. A Keresésben be kell írnia a „cmd” parancsot, amely után látni fogja parancs sor. A készüléket firmware módba kell kapcsolni. Ezután adjon meg egy parancsot, amely teszteli a számítógép és a mobileszköz közötti interakciót:

fastboot eszközök

Ha minden működik, le kell töltenie a boot.img kernel firmware megfelelő verzióját. Nem javasoljuk az eredeti firmware kernelének villogását, mivel ez problémákat okozhat az okostelefon működésében. A fájlt a C meghajtón egy előre létrehozott „Android” nevű partícióra kell menteni. Ezután indítsa el a mobileszközt a Fastboot alkalmazásba, és csatlakoztassa a számítógéphez. A képernyőn megjelenik a „Fastboot USB” üzenet.

  • cd C:\Android.
  • fastboot flash boot boot.img.
  • gyorsindítás törli a gyorsítótárat.
  • fastboot újraindítás.

Nagyon fontos, hogy minden szót helyesen írjunk be, figyelembe véve a kis- és nagybetűket és a szóközöket. A cd parancs megnyitja a szükséges mappát, amely a szükséges fájlokat tartalmazza. Ezt követően villogás következik be. A gyorsindítás gyorsítótár törlése parancs törli a gyorsítótár-partíciót. Az utolsó parancs - fastboot reboot újraindítja az eszközt firmware módból normál módba. Ha az összes fenti lépést helyesen hajtotta végre, a folyamat sikeres lesz.

Firmware a ClockworkMod Recovery segítségével

A ClockworkMod Recovery (vagy röviden CWM) egy helyreállítási rendszer, amelyet az eredeti gyári helyreállítás helyett használnak. A CWM lehetővé teszi a telepítést új firmware mobileszközre, flash-elje meg a kernelt, készítse el biztonsági másolat fájlokat, és állítsa vissza a shellt. Egy ilyen rendszer zip formátumú firmware-frissítési fájlokkal is működhet. A ClockworkMod telepítve van, felváltva a gyári helyreállítást. A CWM elindításához ismernie kell a kütyüjének megfelelő billentyűkombinációt. A legtöbb esetben ez a Hangerő csökkentése és a Bekapcsoló gomb kombinációja, amelyet az eszköz indítása közben kell megnyomni.

A kernel firmware frissítéséhez töltse le az archívumot egy zip kiterjesztéssel. Tartalmaznia kell a META-INF mappát. Akkor két lehetőség van. Az első esetben meg kell adnia a firmware fájlt. A második lehetőség a firmware-fájl /sdcard mappába helyezését jelenti. Ezt követően aktiválni kell a ClockworkMod Recovery-t, ott keresse meg az Apply funkciót frissítés innen sdcard, és adja meg a szükséges fájlt.

Meg kell jegyezni, hogy a ClockworkMod Recovery menü kényelmes és érthető a legtöbb felhasználó számára. A firmware helyreállítási rendszerén kívül használhatja TWRP helyreállítás. Ez az eszköz kényelmes és népszerű az Android felhasználók körében. A fő dolog a választás helyes fájl firmware.

Az Android kernel felvillantása egy olyan eljárás, amelyet nem javasolunk, ha teljesen elégedett a kütyü működésével. Az ilyen cselekvéseket a termelékenység növelésének vágya vezérli. mobiltelefon vagy tabletta. A haladó felhasználóknak lehetőségük van alacsonyabb szinten beállítani a paramétereket. De bizonyos ismeretek és objektív okok nélkül jobb, ha nem változtatja meg a mobileszköz szoftver részét, mivel ez kockázatokkal és működési hibákkal jár.