3.10 65 kernelversie. De Linux-kernel upgraden naar een nieuwe versie

“En ik... was de carburateur!”
Grap

Invoering

Op de kleuterschool hebben gelijkgestemde mensen en ik sprinkhanen ontleed in de hoop hun structuur te begrijpen. De radio-ontvanger "Rusland" werd op school gesoldeerd. Op het instituut waren auto's aan de beurt, waarvan de moeren herhaaldelijk werden herschikt. Interesses zijn veranderd, maar de wens om te "demonteren" wordt soms wakker en vandaag is het gericht op Android.

Hoe vaak ben je al gered door de aanwezigheid van Android-bronnen? Ik ben niet meer te tellen. Android- open project, maar helaas hebben we alleen de mogelijkheid om te lezen; het bewerken van de Android-code zonder een Google-medewerker te zijn, is bijna onmogelijk. Laten we rouwen om dit moment en de repository downloaden. Hoe u dit doet, staat perfect beschreven op de officiële .


Algemene architectuur

De architectuur van Android kan schematisch als volgt worden weergegeven:

Desktopcomputers en laptops hebben een beproefd systeem van energiemodi (x86-processors hebben er meerdere): de computer draait "op volle snelheid" wanneer er iets wordt gedaan en gaat in een energiezuinige modus wanneer het systeem inactief is. In de "slaap"-modus gaan gebeurt ofwel na een vrij lange periode van inactiviteit, of handmatig, bijvoorbeeld bij het sluiten van de laptopklep.

Op telefoons was een ander mechanisme vereist: de hoofdstatus van het systeem is "slaapstand", het verlaten ervan wordt alleen uitgevoerd in geval van nood. Het systeem kan dus in slaapstand gaan, zelfs als een applicatie actief is. In Android werd het wakelock-mechanisme geïmplementeerd: als een applicatie (of stuurprogramma) iets belangrijks doet dat tot een logische conclusie zou moeten komen, "vangt" het de wakelock op, waardoor het apparaat niet in slaap valt.

Pogingen om het wakelock-mechanisme naar de kernel te porten, veroorzaakten weerstand bij veel ontwikkelaars. Android-programmeurs hebben een specifiek probleem opgelost, waarvan de oplossing een bepaald mechanisme was. De voorwaarden van de taak waren erg smal. Het doelplatform is ARM, dus de functies ervan werden gebruikt: ARM-processors gaan aanvankelijk uit van frequente veranderingen in de slaap- en waakmodus, in tegenstelling tot x86. In Android communiceren applicaties met het energiebeheersysteem via PowerManager, maar hoe zit het met Linux-clientapplicaties?

Android-ontwikkelaars hebben niet eens geprobeerd te vinden gemeenschappelijke beslissing“for the future”, dat dan probleemloos in de hoofdkernel zou vloeien, raadpleegde de Linux-kernelgemeenschap niet over deze kwestie. Is dit hun kwalijk te nemen? Ondanks alle problemen en discussies, zoals hierboven vermeld, verscheen er een API in de kern met identieke autosleep-functionaliteit.

Programmeurs van Android-applicaties hebben zelden te maken met wakelocks, omdat het platform en de stuurprogramma's de aan hen toegewezen verplichtingen afhandelen, rekening houdend met de "slaap" -modus. De bekende PowerManager zal echter helpen in te grijpen in dit proces. Trouwens, de auteur komt met slechts één scenario: om te voorkomen dat de telefoon in slaap valt wanneer de service wordt gestart vanuit de BroadcastReceiver, wat wordt opgelost door de hulpklasse uit de Android Support Library WakefulBroadcastReceiver .

Killer met weinig geheugen

De standaard Linux-kernel heeft een Out of Memory Killer , die op basis van de parameter badness bepaalt welk proces moet worden gedood:

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

Dus hoe meer geheugen het proces verbruikt en hoe minder het leeft, hoe minder geluk het zal hebben.

Het diagram toont: algemeen systeem android loggen. Het logboekstuurprogramma biedt toegang tot elke buffer via /dev/log/*. Applicaties hebben er niet rechtstreeks toegang toe, maar via de liblogbibliotheek. De liblog-bibliotheek communiceert met de klassen Log , Slog en EventLog. De opdracht adb logcat toont de inhoud van de "hoofd" buffer.

Conclusie

In deze notitie hebben we kort enkele functies van Android als Linux-systeem besproken. Sommige andere delen zijn tussen haakjes weggelaten (pmem, RAM-console, enz.), Evenals dergelijke belangrijke aspecten van het platform als geheel, zoals Systeemservice, het opstartproces van het systeem en andere. Als dit onderwerp van belang is, zullen we ze in de volgende artikelen bespreken.

Zondagavond Linus Torvalds, Linux-ouder en kernelontwikkelaar besturingssysteem, kondigde na twee maanden werk de release aan van een nieuwe versie van de Linux-kernel 3.10.

Volgens de ontwikkelaar zelf bleek deze kern qua innovatie de afgelopen jaren de grootste te zijn.

Linus gaf toe dat hij in eerste instantie van plan was nog een release candidate uit te brengen, maar na enig nadenken neigde hij ernaar om meteen de definitieve release op nummer 3.10 uit te brengen. Torvalds merkte in zijn bericht ook op dat de nieuwe kernel, net als versie 3.9, helemaal klaar is voor dagelijks gebruik.

Bovendien schreef Linus Torvalds in de aankondiging van de RC-versie van de kernel dat hij voorheen altijd een lijst met namen bijvoegde van mensen die bepaalde delen van de code stuurden, maar deze keer zou deze lijst zo groot zijn dat het niet geheel in één blad weergegeven. mailings.

Lijst met belangrijke wijzigingen in kernel 3.10:

  • Nu is het mogelijk om te voorkomen dat scripts als programma's worden uitgevoerd - de functionaliteit voor het uitvoeren van scripts die het pad naar de interpreter in de "#!"-header bevatten, kan nu worden gecompileerd als een kernelmodule;
  • Het door Google ontwikkelde en gebruikte Bcache-systeem is geïntegreerd. Met Bcache kunt u toegang tot trage harde schijven cachen op snelle SSD-schijven; caching wordt uitgevoerd op blokapparaatniveau - en hierdoor kunt u de toegang tot de schijf versnellen, ongeacht de bestandssystemen die op het apparaat worden gebruikt;
  • De kernel kan worden gecompileerd met de Clang-compiler dankzij de patches die zijn voorbereid door het LLVMLinux-project;
  • Er is een dynamisch besturingssysteem voor het genereren van timer-interrupts verschenen. Nu kunt u, afhankelijk van de huidige status, interrupts wijzigen in het bereik van duizenden tikken per seconde tot één interrupt per seconde - dit stelt u in staat de belasting van de CPU te minimaliseren bij het verwerken van interrupts in het geval van inactiviteit van het systeem. Momenteel wordt deze functie gebruikt voor real-time systemen en HPC (high performance computing), maar in toekomstige kernel-releases zal deze ook worden ingeschakeld voor desktopsystemen;
  • Nu is het mogelijk om een ​​gebeurtenis te genereren die de toepassing op de hoogte stelt van het naderen van de uitputting van het beschikbare geheugen voor het proces/systeem (in cgroups);
  • Profilering van geheugentoegang is beschikbaar gekomen voor het perf-commando;
  • Ondersteuning toegevoegd voor het RDMA (iSER)-protocol aan het iSCSI-subsysteem;
  • Er is een nieuwe "sync" driver (experimenteel). Het is ontwikkeld in het kader Android-platforms en wordt gebruikt voor synchronisatie tussen andere stuurprogramma's;
  • Het stuurprogramma voor de virtuele grafische kaart van QXL is geïntegreerd (gebruikt in virtualisatiesystemen voor: snelle terugtrekking grafieken met behulp van het SPICE-protocol);
  • Nieuwe energiebeheerfuncties die zijn geïntroduceerd met AMD 16h-processors ("Jaguar"-familie) worden nu ondersteund;
  • Ondersteuning voor versnelde videodecodering met behulp van de hardware UVD-decoder die is ingebouwd in moderne AMD GPU's is toegevoegd aan de Radeon DRM;
  • Er is een driver voor Microsoft Hyper-V virtuele videoadapters verschenen (er zijn ook verbeteringen in de werking van Hyper-V als geheel);
  • De uitvoering van cryptografische functies (sha256, sha512, blowfish, twofish, serpent en camellia) is geoptimaliseerd met behulp van AVX/AVX2 en SSE-instructies.

Gebruikers mobiele toestellen niet altijd tevreden met het werk en de mogelijkheden van hun gadgets. Om deze reden zijn gebruikers op zoek naar: beste manier hoe de kernel van het Android-besturingssysteem te flashen. Enerzijds is zo'n handeling eenvoudig uit te voeren met je tablet of smartphone. Duizenden gebruikers hebben de kernel zonder problemen of problemen met succes geflashed. Maar aan de andere kant kan elke fout tijdens dit proces leiden tot, waaronder het falen van de gadget en de noodzaak van een dure dienst na verkoop:. In verschillende stadia bestaat het risico om niet te kiezen juiste versie kernelfirmware die is gemaakt door ongeschoolde ontwikkelaars of die niet op uw mobiele apparaat past. We raden u aan uiterst voorzichtig te zijn bij het uitvoeren van acties die op een laag niveau wijzigingen aanbrengen in het softwaregedeelte van het apparaat. Na het succesvol flashen van de kernel hebben velen het gevoel dat ze een compleet nieuw apparaat in handen hebben. Gevorderde gebruikers kunnen de gadget dus aanpassen aan hun behoeften en voorkeuren, terwijl ze nieuwe kennis en ervaring opdoen over moderne mobiele technologieën.

De kern van het Android-besturingssysteem en zijn firmware

Wat is de kern van een mobiel apparaat?

De kernel van het besturingssysteem is de basis software, die de hardware van het apparaat bestuurt. De belangrijkste parameters van een gadget zijn ervan afhankelijk. Opgemerkt moet worden dat het bestaat uit drie onderling verbonden componenten - de Linux-kernel, de Dalvik verticale machine en verschillende services en bibliotheken op laag niveau. Als we het hebben over aangepaste firmware, worden slechts twee componenten beïnvloed, waarmee u nieuwe systeemservices kunt toevoegen, bestaande parameters kunt optimaliseren en de grafische shell kunt wijzigen.

Degenen die de kernel op Android willen installeren, moeten begrijpen dat er een verschil is tussen de concepten van een aangepaste kernel en aangepaste firmware. De laatste is een niet-officiële versie van de software. Aangepaste firmware ontwikkeld door een team van specialisten onder specifieke apparaten. De aangepaste kernel is gebaseerd op de Linux-kernel, die de onofficiële versie vertegenwoordigt. Vaak wordt een aangepaste kernel bij de firmware geleverd. Maar het kan afzonderlijk worden geïnstalleerd na het wijzigen van de firmware. In feite vervangt het niet de oorspronkelijke kern van het mobiele apparaat, wat het uiteindelijke doel van een dergelijke operatie is.

Het flashen van de Android-kernel wordt voornamelijk gedaan om de bedrijfstijd van het apparaat met enkele uren te verlengen door de parameters voor het stroomverbruik aan te passen. Misschien is dit de belangrijkste reden waarom gebruikers complexe transformaties van de software van hun gadgets uitvoeren. Met de firmware kunt u ook de videochip wijzigen zonder gevolgen voor uw smartphone of tablet. Gevorderde gebruikers passen dus het scherm aan, veranderen de kleurweergave, gevoeligheid. Met kernelfirmware kunt u het geluid van het apparaat verbeteren, stuurprogramma's bijwerken en ondersteuning implementeren voor niet-standaard externe gadgets.

Voordat je de kernel gaat flashen, raden we je aan ervoor te zorgen dat je de juiste versie hebt gekozen, die is gemaakt door ervaren ontwikkelaars. Daarnaast is het belangrijk om ervoor te zorgen dat deze past bij uw Android-firmwareversie. Het is raadzaam om de beoordelingen te lezen van mensen die erin zijn geslaagd om de juiste versie van de kernel op hun mobiele telefoon te installeren. Recensies kunnen belangrijke informatie bevatten over problemen die kunnen ontstaan ​​tijdens de firmware of verdere werking van het apparaat.

Gadget-firmware via Fastboot

U kunt uw Android-apparaat flashen met Fastboot. Maar eerst moet u het hulpprogramma op uw gadget installeren. Er zijn twee versies van dit programma. De eerste omvat het downloaden van Fastboot in combinatie met de officiële Android-programma SDK. De tweede versie omvat het afzonderlijk downloaden van het hulpprogramma.

We raden aan om te controleren of uw mobiele apparaat een laptop of computer ziet. Om dit te doen, moet je uitvoeren. Na het downloaden en installeren op een computer, een laptop die draait op een besturingssysteem Windows-systeem, fastboot-hulpprogramma's en het aansluiten van een smartphone, moet u de opdrachtregel openen. Open hiervoor Zoeken. In Windows 8 hoeft u alleen maar met de muiscursor naar de rechterkant van het scherm te gaan en de juiste sectie te selecteren. Bij Zoeken moet u "cmd" invoeren, waarna de opdrachtregel voor u verschijnt. Het apparaat moet in de firmwaremodus worden gezet. Voer vervolgens een opdracht in die de interactie tussen de computer en het mobiele apparaat test:

fastboot-apparaten

Als alles werkt, moet je de juiste versie van de boot.img-kernelfirmware laden. We raden af ​​om de kernel te flashen originele firmware, aangezien dit problemen kan veroorzaken met de werking van de smartphone. Het bestand moet worden opgeslagen op een vooraf gemaakte partitie op station C genaamd "Android". Daarna moet u uw mobiele apparaat opstarten in Fastboot en het op uw computer aansluiten. Het bericht "Fastboot USB" verschijnt op het scherm.

  • cd C:\Android.
  • fastboot flash-boot boot.img.
  • fastboot wissen cache.
  • fastboot opnieuw opstarten.

Het is erg belangrijk om alle woorden correct in te voeren, rekening houdend met hoofdletters en spaties. Het cd-commando opent de vereiste map, die de vereiste bestanden bevat. Daarna treedt een flits op. De opdracht fastboot erase cache verwijdert de cachepartitie. De laatste opdracht - fastboot reboot start het apparaat opnieuw op van de firmwaremodus naar normaal. Als u al deze stappen correct hebt uitgevoerd, is het proces succesvol.

Firmware met behulp van ClockworkMod Recovery

ClockworkMod Recovery (of kortweg CWM) is een herstelsysteem dat wordt gebruikt in plaats van het originele herstel in de fabriek. Met CWM kun je nieuwe firmware op een mobiel apparaat installeren, de kernel flashen, back-up bestanden en herstel de shell. Een dergelijk systeem kan werken met firmware-updatebestanden die een zip-formaat hebben. ClockworkMod is geïnstalleerd in , ter vervanging van het fabrieksherstel. Om CWM te starten, moet u de toetsencombinatie kennen die geschikt is voor uw gadget. In de meeste gevallen is dit een combinatie van de volume-omlaag- en aan/uit-knoppen, die moeten worden ingedrukt tijdens het opstarten van het apparaat.

Om de kernel te flashen, downloadt u het archief met de zip-extensie. Het moet de map META-INF bevatten. Vervolgens zijn er twee opties. In het eerste geval moet u het firmwarebestand specificeren. De tweede optie omvat het plaatsen van het firmwarebestand in de map / sdcard. Daarna moet u ClockworkMod Recovery activeren, daar de functie Update toepassen vanaf sdcard vinden en het vereiste bestand specificeren.

Opgemerkt moet worden dat het ClockworkMod Recovery-menu handig en begrijpelijk is voor de meeste gebruikers. Naast zo'n herstelsysteem voor firmware kun je TWRP Recovery gebruiken. Deze tool is handig en populair bij Android-gebruikers. Het belangrijkste is om het juiste firmwarebestand te kiezen.

Het flashen van de Android-kernel is een procedure die we niet aanbevelen als u volledig tevreden bent met de werking van de gadget. Dergelijke acties worden gedreven door de wens om de prestaties van een mobiele telefoon of tablet te verbeteren. Gevorderde gebruikers krijgen de mogelijkheid om parameters op een lager niveau in te stellen. Maar zonder bepaalde kennis en objectieve redenen is het beter om het softwaregedeelte van het mobiele apparaat niet te wijzigen, omdat dit gepaard gaat met risico's en storingen in de werking ervan.

We hebben al meer dan eens geschreven over aangepaste firmware, root-applicaties en alternatieve opstartmenu's. Dit zijn allemaal standaardonderwerpen in de Android-hackergemeenschap, maar naast al het bovenstaande bestaat er ook zoiets als een "custom kernel", die bijna onbeperkte mogelijkheden kan bieden voor het beheren van een smartphone en zijn hardware tegen het laagste niveau. In dit artikel zal ik je vertellen wat het is, waarom je het nodig hebt en hoe je de juiste aangepaste kernel kiest.

aangepaste kernel?

Wat is een aangepaste kernel? Zoals we allemaal weten, is Android een taart die bestaat uit drie basislagen: de Linux-kernel, een reeks bibliotheken en services op laag niveau, en virtuele machine Dalvik, waarop een grafische shell draait, tools en services van hoog niveau, evenals bijna alle applicaties die op de markt zijn geïnstalleerd. De makers van de meeste alternatieve aangepaste firmware werken meestal alleen met de bovenste twee lagen, voegen functies toe aan de grafische schaal (zoals knoppen in het gordijn), veranderen deze (de thema-engine in CyanogenMod) en voegen nieuwe systeemservices toe (equalizer in CyanogenMod) en het optimaliseren van bestaande.

De auteurs van populaire firmware brengen ook zoveel mogelijk wijzigingen aan in de Linux-kernel: ze optimaliseren (bouwen met agressievere compiler-optimalisatievlaggen), nemen nieuwe functionaliteit op (bijvoorbeeld ondersteuning voor Windows-share) en brengen ook andere wijzigingen aan, zoals de mogelijkheid om de processorfrequentie boven die van de fabrikant te verhogen. Vaak blijft dit allemaal achter de schermen, en veel gebruikers van aangepaste firmware zijn zich niet eens bewust van deze functies, vooral omdat dezelfde CyanogenMod wordt geleverd met een aangepaste kernel voor slechts een beperkt aantal apparaten waarvoor zowel de broncode van de native kernel en de mogelijkheid om het te vervangen zijn beschikbaar. Bijna alle CyanogenMod-firmware voor Motorola-smartphones gebruiken bijvoorbeeld een standaardkernel - het is onmogelijk om deze door uw eigen kernel te vervangen vanwege de ondoordringbare bescherming van de bootloader.

De kernel in smartphones met een ontgrendelde bootloader kan echter afzonderlijk van de hoofdfirmware worden vervangen. En niet alleen een kernel vervangen, maar installeren met een enorm aantal verschillende functies die bepaalde technische kennis vereisen om te beheren, en die daarom meestal niet zijn ingebouwd in de kernels van populaire firmware zoals CyanogenMod, AOKP en MIUI. Onder deze functies vindt u ondersteuning voor hoge processorfrequenties, schermgammacontrole, energiebesparende modi, zeer efficiënte energiemanagers en een groot aantal andere functies.

In dit artikel zullen we praten over wat de makers van aangepaste kernels ons kunnen bieden, denk aan de belangrijkste aangepaste kernels voor verschillende apparaten, en probeer ook de kernel te installeren ongeacht de hoofdfirmware en controleer alles op onze eigen huid. Dus, wat bieden ontwikkelaars van alternatieve kernels gewoonlijk aan?

slimme verkeersregelaar

De OMAP35XX SoC's die bijvoorbeeld worden gebruikt in de Galaxy S II en Galaxy Nexus, hebben een SmartReflex-functie die fungeert als slim systeem het aanpassen van de spanning wanneer de belasting van de processor verandert. In feite elimineert het de noodzaak van fijnafstemming van de spanning door de gebruiker.


optimalisaties

Vaak is het belangrijkste doel van het bouwen van een aangepaste kernel het optimaliseren van de prestaties. Meestal probeert een leverancier van mobiele technologie een evenwicht te bewaren tussen prestaties en stabiliteit, dus zelfs goede optimalisatietechnieken die de snelheid van het apparaat aanzienlijk kunnen verhogen, kunnen door de fabrikant worden afgewezen alleen op basis van het feit dat na hun toepassing sommige toepassingen begonnen te crashen elke tiende lancering. Natuurlijk storen dergelijke kleinigheden liefhebbers niet, en velen van hen zijn klaar om alle compileropties, energiebesparende algoritmen toe te passen op de kern van hun eigen assemblage en de processorfrequentie zo hoog te verhogen als het apparaat kan weerstaan. Van alle optimalisatietechnieken zijn er vier de meest voorkomende:



Een ander type optimalisatie: het wijzigen van de standaard I/O-planner. De situatie op dit gebied is zelfs nog interessanter, want in plaats van te begrijpen hoe planners werken, lezen sommige kernelbouwers gewoon documenten over Linux I/O-planners op het web en trekken ze conclusies. Onder gebruikers is deze benadering zelfs nog meer wijdverbreid. In feite zijn bijna alle krachtigste en slimste Linux-planners volledig ongeschikt voor Android: ze zijn ontworpen voor gebruik met mechanische gegevensopslag, waarbij de snelheid van gegevenstoegang varieert afhankelijk van de positie van het hoofd. De planner gebruikt verschillende schema's het groeperen van verzoeken op basis van de fysieke positie van de gegevens, zodat verzoeken om gegevens die dicht bij de huidige hoofdpositie liggen een hogere prioriteit krijgen. Dit is volkomen onlogisch in het geval van solid-state geheugen, dat dezelfde toegangssnelheid tot alle cellen garandeert. Geavanceerde planners doen meer kwaad dan goed op een smartphone, en de meest onhandige en primitieve planners zullen de beste resultaten opleveren. Linux heeft drie van dergelijke planners:

  • Noop (Geen bewerking)- de zogenaamde niet-planner. Een eenvoudige FIFO-verzoekwachtrij, het eerste verzoek wordt als eerste verwerkt, de tweede als tweede enzovoort. Zeer geschikt voor solid-state geheugen en stelt u in staat om applicaties voor toegang tot de schijf redelijk te prioriteren. Extra pluspunt: lage belasting van de processor door de zeer eenvoudig principe: werk. Minpuntje: geen aandacht voor de bijzonderheden van het apparaat, die prestatieproblemen kunnen veroorzaken.
  • SIO (eenvoudige I/O)- een analoog van de Deadline-planner zonder rekening te houden met de nabijheid van sectoren tot elkaar, dat wil zeggen, speciaal ontworpen voor solid-state geheugen. Twee belangrijke hoogtepunten: de prioriteit van leesbewerkingen boven schrijfbewerkingen en de groepering van bewerkingen door processen met de toewijzing van een tijdschijf voor elk proces om bewerkingen uit te voeren. In smartphones, waar de snelheid van de huidige applicatie en het overwicht van lezen over schrijven belangrijk zijn, laat het zeer goede prestaties zien. Verkrijgbaar in Leankernel, Matr1x-kernel voor Nexus 4 en SiyahKernel.
  • RIJ (LEZEN over SCHRIJVEN) is een planner die speciaal is ontworpen voor mobiele apparaten en slechts een paar maanden geleden aan de kern is toegevoegd. De grootste uitdaging: prioriteitsverwerking van leesverzoeken, maar een eerlijke verdeling van tijd voor schrijfverzoeken. Beschouwd als de beste NAND-planner die momenteel beschikbaar is, standaard op Leankernel en Matr1x.

Het is de moeite waard om te zeggen dat bijna alle standaardfirmware en de helft van de aangepaste nog steeds de kernel gebruiken met de standaard Linux CFQ-planner, wat echter niet zo slecht is, omdat het correct kan werken met solid-state schijven. Aan de andere kant is het te complex, veroorzaakt het een grotere belasting van de processor (en dus de batterij) en houdt het geen rekening met de specifieke kenmerken van het mobiele besturingssysteem. Een andere populaire keuze is de Deadline-planner, die net zo goed is als SIO, maar overdreven is. U kunt de lijst met beschikbare planners bekijken met de volgende opdracht:

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

Om dit te wijzigen, past u dit toe (waarbij rij de naam is van de planner):

# voor i in /sys/block/*/queue/scheduler; doe echo rij > $1; gedaan

Sommige kernelbouwers gebruiken ook een ander soort I/O-gerelateerde optimalisatie. Dit is een uitschakeling van de fsync-systeemaanroep die wordt gebruikt om een ​​flush van gewijzigde inhoud te forceren. open bestanden naar schijf. Er is een mening dat het systeem zonder fsync minder vaak toegang tot de schijf zal hebben en dus processortijd en batterijvermogen zal besparen. Een nogal controversiële uitspraak: fsync wordt niet vaak gebruikt in applicaties en alleen om echt belangrijke informatie op te slaan, maar het uitschakelen ervan kan leiden tot het verlies van dezelfde informatie in het geval van een besturingssysteemcrash of andere problemen. De mogelijkheid om fsync uit te schakelen is beschikbaar in de franco.Kernel- en GLaDOS-kernels en wordt beheerd met behulp van het bestand /sys/module/sync/parameters/fsync_enabled, dat moet worden geschreven als 0 om uit te schakelen of 1 om in te schakelen. Nogmaals, deze functie wordt niet aanbevolen.

Nieuwe functies aan de kernel toevoegen

Natuurlijk bevatten aangepaste kernels, naast optimalisaties, tweaks en verschillende geavanceerde hardwarebeheersystemen, ook volledig nieuwe functionaliteit die niet beschikbaar is in standaardkernels, maar die nuttig kan zijn voor gebruikers.

Kortom, dit zijn verschillende stuurprogramma's en bestandssystemen. Sommige kernels bevatten bijvoorbeeld ondersteuning voor de CIFS-module, waarmee u Windows-shares kunt mounten. Zo'n module zit in de Matr1x-kernel voor Nexus S, faux123 voor Nexus 7, SiyahKernel en GLaDOS. Op zichzelf is het nutteloos, maar er zijn verschillende toepassingen op de markt waarmee u de mogelijkheden ervan kunt gebruiken.

Een ander handig ding is de opname van het ntfs-3g-stuurprogramma in de kernel (meer precies, in het pakket met de kernel werkt het stuurprogramma zelf als een Linux-toepassing), wat nodig is om flashdrives te mounten die zijn geformatteerd in het NTFS-bestandssysteem. Deze driver is beschikbaar in de faux123- en SiyahKernel-kernels. Meestal wordt het automatisch geactiveerd, maar als dit niet gebeurt, kunt u de StickMount-applicatie uit de markt gebruiken.

Veel kernels bieden ook ondersteuning voor de zogenaamde zram-technologie, waarmee je een kleine hoeveelheid RAM (meestal 10%) kunt reserveren en deze kunt gebruiken als een gecomprimeerd swapgebied. Hierdoor is er een soort uitbreiding van de hoeveelheid geheugen, zonder serieuze gevolgen voor de performance. Beschikbaar in Leankernel, ingeschakeld met Trickster MOD of zram enable-opdracht.

De laatste twee interessante functies zijn Fast USB charge en Sweep2wake. De eerste is niets meer dan het forceren van de opname van de "snel opladen" -modus, zelfs als de smartphone is aangesloten op de USB-poort van de computer. De snellaadmodus is beschikbaar op alle min of meer nieuwe smartphones, maar kan vanwege technische beperkingen niet tegelijkertijd worden ingeschakeld met toegang tot de geheugenkaart. Met de functie Snel opladen via USB kunt u deze modus altijd inschakelen, terwijl de toegang tot de schijf wordt uitgeschakeld.

Sweep2wak is nieuwe manier wekapparaat uitgevonden door de auteur van Breaked-kernel. De betekenis ervan is om de smartphone in te schakelen door met de navigatietoetsen onder het scherm of over het scherm zelf te vegen. Dit is echt een handige functie, maar als u deze inschakelt, blijft de sensor actief, zelfs als het apparaat slaapt, waardoor de batterij merkbaar kan leeglopen.

Overklokken, spanning en energiebesparing

Overklokken is niet alleen populair bij eigenaren van vaste computers en laptops, maar ook bij liefhebbers van mobiele technologie. Net als de stenen van de x86-architectuur, werken de processors en grafische kernen van mobiele technologie geweldig. De overklokmethode zelf en de stappen die zijn genomen om deze te implementeren, zijn hier echter enigszins anders. Het feit is dat de standaardstuurprogramma's voor SoC's die verantwoordelijk zijn voor energiebesparing en het wijzigen van de processorfrequentie meestal zijn vergrendeld op standaardfrequenties, dus voor fijnafstemming moet u een alternatief stuurprogramma of een aangepaste kernel installeren.

Bijna alle min of meer hoogwaardige en populaire aangepaste kernels bevatten al ontgrendelde stuurprogramma's, dus na installatie is de mogelijkheid om de "kracht" van de processor te regelen enorm uitgebreid. Doorgaans doen aangepaste kernelbouwers twee dingen die de frequentieselectie beïnvloeden. Dit is een uitbreiding van het frequentiebereik buiten de aanvankelijk ingestelde frequenties - u kunt zowel een hogere processorfrequentie als een zeer lage instellen, waardoor u de batterij kunt sparen en de frequentiegradatie kunt verhogen, bijvoorbeeld in plaats van drie mogelijke frequenties, u krijgt de keuze uit zes. De tweede is de toevoeging van de mogelijkheid om de processorspanning aan te passen, waardoor u de processorspanning bij lage frequenties kunt verlagen om batterijvermogen te besparen en deze bij hoge frequenties kunt verhogen om de stabiliteit te vergroten.

Dit alles kan worden bestuurd met behulp van het bekende betaalde hulpprogramma SetCPU of de gratis Trickster MOD. Beheeraanbevelingen zijn hetzelfde als voor desktopsystemen. Het is beter om de lagere processorfrequentie op het minimum in te stellen, maar niet lager dan 200 MHz (om vertragingen te voorkomen), de bovenste drempel wordt geleidelijk verhoogd met stabiliteitstests, wanneer deze daalt, wordt aanbevolen om de spanning voor een bepaalde tijd iets te verhogen frequentie. Er zijn geen spanningsaanbevelingen, omdat elke processor uniek is en de waarden voor iedereen anders zullen zijn.

Naast het wijzigen van frequenties, voegen assembleurs vaak nieuwe energiebesparende besturingsalgoritmen (automatische processorfrequentiebesturing) toe aan de kernel, die naar hun mening betere resultaten kunnen laten zien dan standaard. Bijna allemaal zijn ze gebaseerd op het interactieve algoritme dat standaard wordt gebruikt in nieuwe versies van Android, waarvan de essentie is om de processorfrequentie scherp te verhogen tot het maximum in het geval van een toename van de belasting en deze vervolgens geleidelijk tot het minimum te verlagen . Het verving het eerder gebruikte OnDemand-algoritme, dat de frequentie in beide richtingen soepel aanpaste in verhouding tot de belasting, en stelt je in staat om het systeem responsiever te maken. Alternatieve kernelbuilders bieden de volgende algoritmen om Interactive te vervangen:

  • SmartAssV2- Heroverweging van het interactieve algoritme met een focus op het sparen van de batterij. Het belangrijkste verschil is om de processor niet naar hoge frequenties te laten schokken in het geval van korte uitbarstingen van belasting, waarvoor lage processorprestaties voldoende zijn. De standaard wordt gebruikt in de Matr1x-kernel.
  • InteractieveX- afgestemd interactief algoritme, waarvan het belangrijkste kenmerk de processorvergrendeling is op de minimale frequentie die door de gebruiker is opgegeven en het uitschakelen van de tweede processorkern tijdens het uitschakelen van het scherm. De standaard wordt gebruikt in Leankernel.
  • LulzactiveV2- in wezen een opnieuw uitgevonden OnDemand. Wanneer de processorbelasting de gespecificeerde overschrijdt (standaard 60%), verhoogt het algoritme de frequentie met een bepaald aantal delen (standaard 1), en verlaagt deze wanneer de belasting afneemt. Van bijzonder belang is dat u hiermee onafhankelijk de werkparameters kunt instellen, daarom is het geschikt voor geharde nerds.

Over het algemeen zijn kernelbouwers dol op het bedenken van nieuwe energiebesparende algoritmen vanwege de eenvoud van hun implementatie, dus je kunt er nog een tiental andere vinden. De meeste van hen zijn complete slakken, en bij het kiezen van een planner moet u zich laten leiden door de regel: een van de drie hierboven beschreven, of de standaard Interactive, die trouwens erg goed is. U kunt een keuze maken met dezelfde Trickster MOD.

Beheerinterfaces

De meeste populaire aangepaste kernels bevatten verschillende mechanismen voor fijnmazige controle over verschillende stuurprogrammaparameters, waarvan ColorControl, GammaControl, SoundControl en TempControl de meest voorkomende zijn.

De eerste twee interfaces zijn bijna overal beschikbaar, inclusief de CyanogenMod-kernels, de tweede twee - in Leankernel en misschien in andere. Op de een of andere manier kunnen ze allemaal worden bestuurd met behulp van de Trickster MOD.

kernen

Welke kern kiezen? Er is niet één antwoord op deze vraag, en niet omdat "ieder het zijne" is, maar omdat er een enorm aantal Android-apparaten in de wereld zijn en bijna net zoveel verschillende kernels. Er zijn echter verschillende populaire kernels die voor meerdere apparaten tegelijk worden ontwikkeld. Op de een of andere manier heb ik er in de loop van het verhaal veel van genoemd, maar hier zal ik er een korte beschrijving van geven.

  • Leankernel is de kernel voor Galaxy Nexus, Nexus 7 en Galaxy S III. De nadruk bij de ontwikkeling ligt op eenvoud en snelheid van werken. Energiebesparend algoritme: InteractiveX V2, I/O-planner: ROW, alle bovenstaande besturingsinterfaces, ondersteuning voor snel opladen via USB, swap en zram, flexibele CPU- en GPU-overklokken. Een van de beste kernen. Aanpasbaar met Trickster MOD.
  • Matr1x (http://goo.gl/FQLBI , goo.gl/ZcyvA) - Kernel voor Nexus S en Nexus 4. Eenvoudige en overzichtelijke kernel. Ondersteuning voor CPU- en GPU-overklokken, GammaControl, Fast USB Charge, Sweep2wake, I/O-planners: SIO, ROW en FIOPS. Prestaties tweaks. Aanpasbaar met Trickster MOD.
  • Bricked-Kernel (http://goo.gl/kd5F4 , goo.gl/eZkAV) is een eenvoudige en overzichtelijke kernel voor Nexus 4 en HTC One X. Optimalisaties voor Snapdragon S4 en NVIDIA Tegra 3, opnieuw ontworpen energiebesparende modus voor Tegra 3, overklokmogelijkheden, energiebesparend algoritme: afgestemd OnDemand (Interactive is ook beschikbaar).
  • SiyahKernel is de kernel voor de Galaxy S II en S III. Flexibele overklokopties, automatische batterijkalibratie, verbeterde touchscreen-driver, energiebesparende algoritmen: smartassV2 en lulzactiveV2, I/O-planners: noop, deadline, CFQ, BFQV3r2 (standaard), V(R), SIO. CIFS- en NTFS-stuurprogramma's (met automount). Configureerbaar met ExTweaks.
  • franco.Kernel - kernel voor Nexus S, Galaxy Nexus, Nexus 4, Nexus 7, Nexus 10, Galaxy S III, Galaxy Note, Optimus One en One X.

De mogelijkheden van de kernel variëren sterk van apparaat tot apparaat, dus de details zullen ter plaatse moeten worden bekeken. Door deze kernel te flashen, krijg je echter de mogelijkheid tot overklokken, drivertuning, uitstekende prestaties en ondersteuning voor verschillende energiebesparende algoritmen en planners. In feite bevat de kern bijna alle tweaks die in het artikel worden beschreven. Beschouwd als een van de beste beschikbare kernels. Er is een aanvraag voor automatische update franko.kernel-updater. U kunt configureren met behulp van Trickster MOD.

Hoe installeren?

Alle kernels worden gedistribueerd in standaard Android ZIP-archieven, die op dezelfde manier door de herstelconsole moeten worden geflitst als: alternatieve firmware. Gewoonlijk zijn de kernels compatibel met elke firmware, dus als u de juiste kernel hebt gekozen, kunt u deze veilig installeren. Het enige waar u op moet letten, is de versie van Android waarmee de kernel compatibel is. Het kan beide alle beschikbare apparaten benaderen Android-versies, en werk met slechts één (de ontwikkelaar zegt dit meestal expliciet). Maak voordat u gaat flashen een back-up van de huidige firmware met dezelfde herstelconsole. Als er iets misgaat, kun je altijd terugdraaien.

conclusies

Zoals u kunt zien, hebben aangepaste kernels veel voordelen ten opzichte van de kernels die worden gebruikt in standaard of externe firmware. En nog belangrijker, u hoeft niet alle fijne kneepjes van Android te kennen om ze te gebruiken, download en installeer gewoon het ZIP-archief.

BIJ recente tijden nieuwe versies van kernels komen vrij vaak uit. Elke paar maanden is er een stabiele release. Nou, onstabiele release-kandidaten komen nog vaker naar voren. Linus Torvalds en veel ontwikkelaars over de hele wereld werken constant aan het verbeteren van nieuwe kernels en het toevoegen van steeds meer functionaliteit.

Met elke nieuwe versie voegt de Linux-kernel ondersteuning toe voor verschillende nieuwe apparaten, zoals nieuwe processors, grafische kaarten of zelfs aanraakschermen. De laatste tijd is de ondersteuning voor nieuwe hardware sterk verbeterd. Ook zijn er nieuwe bestandssystemen in de kernel opgenomen, is de netwerkstack verbeterd, zijn fouten en bugs verholpen.

Als je meer informatie nodig hebt over wijzigingen in een bepaalde kernelversie, raadpleeg dan de Changelog op kernel.org, en in dit artikel zullen we het updaten van de Linux-kernel naar de nieuwste versie behandelen. Ik zal proberen de instructie niet te koppelen aan een specifieke kernelversie, nieuwe kernels worden vrij vaak uitgebracht en het zal voor elk van hen relevant zijn.

Overweeg om de Ubuntu- en CentOS-kernel bij te werken. Laten we eerst eens kijken hoe de kernel in Ubuntu 16.04 kan worden bijgewerkt.

Laten we eerst kijken welke kernel je hebt geïnstalleerd. Open hiervoor een terminal en voer het volgende uit:

Ik gebruik momenteel bijvoorbeeld versie 4.3 en kan upgraden naar de nieuwste versie. De Ubuntu-ontwikkelaars hebben er al voor gezorgd dat hun gebruikers de kernel niet met de hand bouwen en deb-pakketten maken van de nieuwe kernelversie. Ze kunnen worden gedownload van de officiële Canonical-website.

Ik had de wget-commando's kunnen geven om hier te downloaden als de kernelversie bekend was, maar in ons geval zou het beter zijn om een ​​browser te gebruiken. Ga naar http://kernel.ubuntu.com/~kernel-ppa/mainline/. Alles gecompileerd door het Ubuntu-kernelteam is hier. Kernels zijn gebouwd voor zowel specifieke distributies, met de codenaam van de distributie, als algemene distributies. Bovendien zullen kernels van Ubuntu 16.10 waarschijnlijk werken in 16.04, maar vanaf 9.04 op Ubuntu 16.04 moet je de kernel niet installeren.

Scroll naar beneden, daar staan ​​de nieuwere versies van de kernels:

Bovendien is er helemaal bovenaan een dagelijkse/huidige map, die de nieuwste, nachtelijke kernel-builds bevat. Selecteer de gewenste kernelversie en download de twee bestanden linux-headers en linux-image voor uw architectuur:

Nadat de download is voltooid, kunt u doorgaan met de installatie. Voer hiervoor het volgende uit in de terminal:

Navigeer naar de map met installatiepakketten, bijvoorbeeld ~/Downloads:

Voer de installatie uit:

Als deze opdracht niet werkt, kunt u de andere kant op gaan. Installeer het gdebi-hulpprogramma:

sudo apt-get install gdebi

Gebruik het dan om de kernel te installeren:

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

De kernel is geïnstalleerd, het blijft om de bootloader bij te werken:

sudo update-grub

Nu kunt u uw computer opnieuw opstarten en kijken wat er is gebeurd. Controleer na het opnieuw opstarten of de Linux-kernelupdate naar de nieuwste versie is gelukt:

Zoals je kunt zien, is de kernel met succes geïnstalleerd en actief. Maar haast je niet om te verwijderen! oude versie kernel, is het aan te raden om meerdere versies van de kernel in het systeem te hebben, zodat je in geval van problemen kunt opstarten vanaf de oude werkende versie.

Automatische Linux-kernelupdate in Ubuntu

Hierboven hebben we gekeken hoe we de gewenste kernelversie handmatig kunnen installeren. Ubuntu had vroeger een PPA voor dagelijkse kernel-builds, maar die is nu gesloten. Daarom kunt u de kernel alleen bijwerken door het deb-pakket te downloaden en te installeren. Maar dit alles kan worden vereenvoudigd met een speciaal script.

Het script installeren:

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

Controleren op updates:

KernelUpdateChecker -r yakkety

Met de optie -r kun je de distributietak specificeren waarvoor naar kernels moet worden gezocht. Voor xenial worden de kernels niet meer gebouwd, maar de kernels van de volgende versie zullen hier prima werken. Bovendien kan de optie -no-rc worden gebruikt om het hulpprogramma te vertellen geen release-kandidaten te gebruiken, en de optie -v specificeert de exacte kernelversie die moet worden geïnstalleerd. Als het je niet uitmaakt voor welke distributie de kernel is, zolang het de laatste is, gebruik dan de --any-release optie. Het script geeft het volgende resultaat:

Voordat je de kernel installeert, kun je de details zien door het bestand /tmp/kernel-update te openen:

Hier kunnen we zien dat de zoektocht naar yakkety is uitgevoerd en dat de kernelversie 4.7-rc6 momenteel beschikbaar is. Wij kunnen installeren:

sudo /tmp/kernel-update

Het script zal ons de versie van de huidige kernel laten zien, evenals de versie van de kernel die zal worden geïnstalleerd, de bouwdatum en andere details. U wordt ook gevraagd of u een wijzigingslogboek moet bijhouden. Vervolgens komt de installatie:

Oude kernels, voor het geval, niet verwijderen (n):

Klaar, het updaten van de kernel naar de nieuwste versie is voltooid, start nu je computer opnieuw op (y):

Controleren of de Ubuntu-kernelupdate echt werkte:

Bovendien is het script toegevoegd aan autoload en controleert het nu 60 seconden na inloggen automatisch op updates. De snelkoppeling voor automatisch laden staat in het bestand:

vi ~/.config/autostart/KernelUpdate.desktop

U kunt het wijzigen zoals u wilt of het verwijderen. Als u het script volledig van het systeem wilt verwijderen, voert u het volgende uit:

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

Wordt niet gedownload

Als er fouten zijn opgetreden tijdens de installatie of als de kernel onjuist is bijgewerkt en het systeem nu niet opstart met de nieuwe kernel, kunt u de oude kernel gebruiken. Ook kan het zijn dat het systeem niet start als je een propriëtair stuurprogramma voor een NVIDIA-videokaart gebruikt. Haast je in dit geval niet om de nieuwste kernelversie te downloaden, gebruik alleen stabiele kernels, ze bieden meestal al ondersteuning voor deze module.

En om het systeem te herstellen, selecteert u het item Geavanceerde opties voor Ubuntu in het Grub-menu:

En start de vorige actieve kernel:

Na het downloaden blijft het om de onjuist geïnstalleerde kernel te verwijderen en Grub opnieuw bij te werken, de gewenste kernelversie te vervangen in plaats van 4.7:

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

sudo update-grub

Uw systeem is nu terug in de vorige staat. U kunt proberen een oudere kernelversie te installeren of het opnieuw proberen.

De Linux-kernel upgraden naar 4.4 op CentOS

Laten we nu eens kijken hoe we de Linux-kernel kunnen updaten naar de nieuwste versie in CentOS. De instructies zijn getest op CentOS 7, maar zullen waarschijnlijk werken op RedHat 7, Fedora en andere soortgelijke distributies.

In de regel zijn nieuwe kernels niet opgenomen in de officiële CentOS-repository's, dus om de nieuwste stabiele versie te krijgen, moeten we de ELRepo-repository toevoegen. Dit is een opslagplaats van commerciële pakketten (Enterprise Linux-pakketten) en wordt ook onderhouden op RedHat en Fedora.

Volg deze stappen om een ​​repository toe te voegen:

Eerst moet je de sleutel importeren:

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

Voeg de repository en vereiste componenten toe aan RHEL/Scientific Linux/CentOS-7:

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

yum installeer yum-plugin-fastestmirror

Op Fedora 22 en hoger: