Dit document beschrijft strategieën met betrekking tot het maken van een kernelmodule buiten het boomtype.

1. Invoering¶

“kbuild” is het Linux bouwsysteem, de kernel. Modules zouden echt gebruikt moeten wordenkbuild om compatibel te blijven op switches in de buildstructuur, enom de juiste “gcc to” rode vlaggen te doorschijnen. Functionaliteit voor het maken van moduleszowel in de boom als buiten de struik. Bouwmethode:Beide zijn vergelijkbaar, alle websjabloonmodules zijn zowel in eerste instantie ontwikkeld als zelfs gebouwdbuiten de boom.

Dit document bevat informatie bedoeld voor geïnteresseerde ontwikkelaarsin modules buiten de grenen structuur (of “buitenste” modules). De oprichter natuurlijkextern zou elke makefile moeten leveren die de meeste skins bevatComplexiteit, en als gevolg daarvan moet u uitsluitend “make” invoeren om de module te configureren. dat iseenvoudig en toegankelijk, een compleet voorbeeld is natuurlijk inSectie 3.

2. Hoe externe modules te maken¶

Hoe maak ik een kernelmodule aan?

Zoals je hele familie kan zien, pas je de Makefile aan op het moment dat je elk exemplaar van helloWorld vervangt door kernelRead met de labels van de eigenlijke modules die je wilt bouwen.Compileer de hoofdmodules door cause uit te voeren in elke map waar de speurtochten zich bevonden.Word nu superuser met – Typen.

Om plug-ins te kunnen bouwen, heb je echt een absolute pre-built kernel nodig.die de initiatieconfiguraties en headers heeft gemaakt die in mijn assemblage worden gedragen.Ook moet de kernel al met modules zijn gebouwd. Als zij zijnAls je een distributie gebruikt die ook een kernel bevat, zou je een pakket met alleen kernels ontvangen.alleen geleverd door uw distributie. Alternatief

U moet werken met het make-doel “modules_prepare”. Alles is ongetwijfeld in ordeZorg ervoor dat de kernel de volledige vereiste informatie bevat. Doelbestaat alleen als een gloednieuwe, bijzonder gemakkelijke manier om mijn kernel source tree voor te bereidenDe structuur van aanvullende modules.

OPMERKING: modules_prepare kan Module.symvers soms niet starten alsCONFIG_MODVERSIONS is ingesteld; Daarom moet de kernel-build worden voltooid.run om u te helpen proberen moduleversiebeheer te laten werken.

2.Opdrachtsyntaxis 1¶

Opdracht om buitenste blok op te leveren:

kernelstructuurmodule

$ make -C  M=$PWD

kernel setup module

De kbuild techniek kent de makkelijkste manier om een ​​externe module te bouwenomdat samen met de mogelijkheid “M=

” gespecificeerd in de opdracht van een persoon.

Om te compileren vanuit een zwervende kernel, gebruik je:

$ make -C /lib/modules/`uname -r`/build M=$PWD

Vervolgens om bepaalde De missies die je zojuist hebt gemaakt in te stellen”modules_install” voor commando:

$ help maken -C /lib/modules/`uname -r`/build M=$PWD modules_install

2.2 Opties¶

($KDIR specificeert het pad naar de kerneldirectory.)

do -C M=$PWD

-C $kdir $KDIR

De site waar de kernelbronnen voor het artikel zich gewoonlijk bevinden."make" verandert eigenlijk meestal de opgegeven maptijdens runtime en verandert de volledige retourwaarde bij voltooiing.

M=$PWD

Informeert kbuild over het bouwen van de fysieke module.De blootgestelde de beste waarde "m" is een absoluut padDe directory-website waar het externe blok trots staat (kbuild-bestand)gevestigd.

2.3 Doelen¶

Bij het opzetten van elk type externe module, is een enkel deel ervan "klaar".Doelen zijn ongetwijfeld beschikbaar.

do -C M=$PWD $kdir [target]

Goedgekeurd

Krijg je het Blue Screen of Death? Reimage lost al deze problemen en meer op. Een software waarmee u een breed scala aan Windows-gerelateerde problemen en problemen kunt oplossen. Het kan gemakkelijk en snel alle Windows-fouten herkennen (inclusief het gevreesde Blue Screen of Death) en passende stappen ondernemen om deze problemen op te lossen. De applicatie detecteert ook bestanden en applicaties die vaak crashen, zodat je hun problemen met een enkele klik kunt oplossen.

  • Stap 1: Download en installeer Reimage
  • Stap 2: Start de applicatie en klik op "Scannen op problemen"
  • Stap 3: Klik op de knop "Alle problemen oplossen" om het reparatieproces te starten

  • Standaard worden enkele modules gemaakt die zich in de huidige zullen bevindenDirectory, maar u hoeft geen doel op te geven, wat helaas helpt. AllesUitvoerbestanden worden ook in deze map gemaakt. NeeEr worden nog steeds pogingen ondernomen om de realistische kernelbron bij te werken, en dit:Voorwaarde voor wie een enkele succesvolle "Make" werd voortgezetkern.

    Modules

    Standaardwaarde Uitlezing bij het overwegen van externe doelmodules. DezeDe functionaliteit moet hetzelfde zijn als er geen gewenste is opgegeven. ZienBeschrijving hierboven.

    modules_install

    Installeer plug-ins. Standaard is dit de locatie/lib/modules//extra/ helaas niet veelprefix INSTALL_MOD_PATH (besproken in niveau 5).

    wissen

    Waar worden kernelmodules gebouwd?

    kb extensie. Op een basis Linux-machine bevinden de kernelmodules zich vaak in de /lib/modules//kernel/ directory. Eerder bespraken we de gemakkelijkste manier om een ​​kernel uit deze benodigdheden te bouwen. Deze tutorial laat je zien hoe je een kernelmodule schrijft met behulp van het bijzonder mooie eenvoudige Hello World-voorbeeld.

    Alleen uit alle gegenereerde bestanden in de specifieke moduledatabank verwijderen.

    Hulp

    Lijst met beschikbare plug-ins voor het gebruik van doelen.

    2.4 Afzonderlijke bestanden maken¶

    U kunt afzonderlijke documenten maken die zeker deel uitmaken van het a-element.Dit werkt even goed voor kernel, module en zelfs nogexterne modules.

    Voorbeeld (module foo.ko, bestaat uit bar.o en baz.o):

    Welke instructies worden gebruikt om een ​​functionele module te bouwen?

    De toepassing kbuild weet dat een externe module als gebouwd wordt beschouwd als gevolg van enkele "M=

    " opties die als laatste het hoofdcommando zijn gespecificeerd.

    make -C $KDIR M=$PWD bar.lstmake -C $KDIR M=$PWD baz.omake -C $KDIR M=$PWD foo.kodoe -C $KDIR M=$PWD ./

    3. Maak een Kbuild-bestand voor de externe hoofdmodule¶

    In het laatste gedeelte zagen sommigen van ons de opdracht om een ​​uitstekende module te maken voorde kernel draait. De module is niet echt gebouwd, maar aangezien:een montagebestand is geschikt. Dit bestand bevat de naammodules die direct moeten worden gebouwd, evenals de carrière met de lijst met geschikte bronnenbestanden. Het bestand kan uit de volgende regel bestaan:

    Kbuild systeem veilige build.o voor . na c,en de kerneleenheid .ko wordt verkregen wanneer deze in installatie is.De regel hierboven kan passen in een "Kbuild"-bestand of in een nieuw "Makefile".Als de module die wordt gebouwd waarschijnlijk uit meer dan één bron komt, is er een extra groeperingLijst gerelateerd aan vereiste bestanden:

    -y := .o .o ...

    OPMERKING. Aanvullende documentatie die de samenstelling beschrijft die door kbuild wordt gebruikt.bevindt zich in de Linux-kernel Makefiles.

    Doet uw computer het? Gevuld met fouten en langzaam aan het werk? Als u op zoek bent naar een betrouwbare en gebruiksvriendelijke manier om al uw Windows-problemen op te lossen, hoeft u niet verder te zoeken dan Reimage.

    Vorige week hebben enkele van onze e-boeklezers ons laten weten dat ze proefondervindelijk waren met de module voor het bouwen van de kernel. bouwomgeving Eerst moet je daadwerkelijk build-afhankelijkheden instellen, zoals de nieuwe compiler (base-devel) en Linux-headers. Zorg er vervolgens voor dat u de broncode verkrijgt waarvoor de kernelversie waarop u de cursus wilt uitvoeren…

    Vorige week hebben enkele van onze e-boeklezers ons laten weten dat ze proefondervindelijk waren met de module voor het bouwen van de kernel. bouwomgeving Eerst moet je daadwerkelijk build-afhankelijkheden instellen, zoals de nieuwe compiler (base-devel) en Linux-headers. Zorg er vervolgens voor dat u de broncode verkrijgt waarvoor de kernelversie waarop u de cursus wilt uitvoeren…