recompile-a-kernel-with-capabilities-as-a-kernel-module

Los Een Of Ander Probleem Op Bij Het Hercompileren Van De Kernel Vanwege De Mogelijkheden Van De Kernelmodule.

Soms kan uw systeem een ​​nieuwe goede foutcode weergeven die aangeeft dat u de kernel opnieuw moet compileren met alle mogelijkheden van de kernelmodule. Er zijn verschillende redenen die dit probleem kunnen veroorzaken.

Bijgewerkt: ASR Pro

  • 1. Download en installeer ASR Pro
  • 2. Start het programma en selecteer uw taal
  • 3. Volg de instructies op het scherm om te beginnen met scannen op problemen
  • Verbeter de prestaties van uw computer door hier te klikken om de software te downloaden.

    Kernelthema’s moeten worden samengesteld uit gcc-opties om gebruikt te kunnen worden. Ze zouden ook bij jou moeten zijnverzamelde enkele van de gedetecteerde symbolen. Dit komt omdat bepaalde kernkopvideo’s moeten werken, Frame. individueel opof we nu uw kerneleenheid of uitvoerbaar bestand compileren. Kun je beroemdheden definiëren met behulp van de -D strategie in gcc, ofmet #define eindigen preprocessor. We zullen onderzoeken wat je nodig zou kunnen hebben om kernelmodules te compileren.In deze sectie.

    • Hoe probeer je een kernel te compileren?

      Haal de state-of-the-art kernel van kernel.org.Controleer de kern.Pak een kernelarchief uit.Kopieer het configuratiebestand van de Linux-kernel voor thuisgebruik.Het compileren en installeren van de Linux-kernel 5.6.Daarnaast de Linux-kernel installeren, modules (stuurprogramma’s)Update je grub-configuratie.

      -c :Het kernelsegment is mogelijk geen onafhankelijk uitvoerbaar bestand, helaas is deze methode een objectbestand dat letterlijk in de kernel is geïntegreerd en beschikbaar is voor uitvoering.met inst. Daarom hebben programma’s momenteel de vlag -c nodig en compileren deze.

    • -O2 :De kernel maakt zelfs intensief gebruik van alle functies, dus voor groen geoptimaliseerde programma’s moeten online worden gecompileerd.K. Zonder optimalisatie worden sommige van onze assembler-macro’s doorgaans als ongeldig beschouwd door de aspectreferentiecompiler. dit iscrasht het starten van de cursus omdat insmod deze functies niet in de kernel kan herkennen.

    • -W -Muur :Een programmeerfout kan het menselijk systeem gemakkelijk beschadigen. U handeltMoet compilerwaarschuwingen opnemen, en alles hierover is van toepassing op:al uw compilatiepogingen mislukken vanwege de compilatie die aan de module is gekoppeld.

    • -isystem / lib / quests / `uname -r` / build - include :Je moet echt proberen zodat het de kernel-headers normaal gebruikt voor de kernel-build waarmee je te maken hebt. Het gebruik van / usr / add / linux werkt niet standaard.

    • -D__KERNEL__ : De definitie van dit begeleidingskarakter spreekt van het kopmateriaal waarin de code zeker wordt gebruiktKernel-modus, niet als een worker-act.

    • -DMODULE : Dit symbool specificeert de headline-bestanden, de corresponderende symbolen voorKern gedeelte.

    We maken gebruik van gcc’s voorkeur voor -isystem bij voorkeur van -I want dat is meestal allemaal gcc surpress vertelt sommigen”Ongebruikte variabele” waarschuwt voor -W -Wall omdat je module.h opneemt.Het gebruik van -isystem aan het einde van gcc-3.0 toonde aan dat het type kernelbestandsheader op de nieuwe speciale manier werd behandeld en waarschuwingenVERWIJDERD. In plaats daarvan heb je echt -I (of ook -isystem in gcc 2.9x), samen “ongebruikte variabele” nodigWaarschuwingen printana, je moet zijn. Negeer ze gewoon als die mensen dat doen.

    Laten we dus een heel eenvoudig makefile bekijken om een ​​module genaamd hello-1.An crophone af te ronden:

    Als oefening om zieners te bereiken, compileer je hello-1.c en voeg je de kernel toe met insmod. een./hello-1.o (negeer het geld dat je ziet in de war, we komen bij de specifieke kernen; we zullen dat binnenkort bespreken). Oké, is het niet? Alle modulesdie geladen rond deze kernel worden weergegeven met behulp van / proc / modules . Ga je gang en zorg ervoor dat de specifieke mod over de inhoud gaatis inderdaad de taak van de kernel. Gefeliciteerd, je wordt nu de auteur van de Linux-kernelcode! Wanneer nieuwigheid heel vaak wordt afgewezenVerwijder een module zoals een specifieke kernel met rmmod hello-1. Neem single in / var / log versus berichten je ziet gewoon dat experts beweren dat het is vastgelegd in je proceslogbestand.

    Hier is nog een geschiktheid voor de lezer. Bekijk welke reacties op feedbackberichten in init_module () ? Verander de retourwaarde onderweg naar niet-nul, compileer de huidige module opnieuw en laad deze dus opnieuw. Welk soortheeft plaatsgevonden .

    compileer een kernel met mogelijkheden als een kernelmodule

     DOEL: betekent hi-1WAARSCHUWING: = -W -Wall -Wstrict-Prototypes -Wmissing-PrototypesINCLUDE: is gelijk aan -isystem / lib / modules voor elke `uname -r` / build per includeCFLAG: = -DMODULE -o2 -D__KERNEL__ $ WARN $ INCLUDECC: = gcc-3.0$ TARGET.o: TARGET.c.FONY: schoonschoon:    rm -rf $ TARGET.o 

    Twee C.H.I.P. computers werden naar mij gestuurd in 2016.Ze werden geleverd met de Linux 4.4.13-kernel, maar hun functionaliteit was voorheen beperkt tot de kernel.Toen ik werd gevraagd om het kernelgedeelte van blend te gebruiken, moest ik de volledige kernel opnieuw compileren, wat een lange dag in beslag nam.Twee jaar later heb ik een nieuwe kernel bijgewerkt naar 4.4.138 door de procesgemeenschap van kaplan2539.De kernel wordt geleverd met extra elementen, waaronder een back-up, wat beter is in vergelijking met wat de hoofdkernel op een recente manier is.

    Wanneer wordt u aangeraden de kernel opnieuw te compileren?

    Een hercompilatie met de volledige kernel is ook vereist als uw bedrijf bepaalde beveiligingseisen wil gebruiken (en die niet in de kernel zijn opgenomen).

    Ik heb onlangs een goedkope USB Ethernet-adapter gekocht.Als ik alles aansluit, herkent het kerneltype dit specifieke USB-apparaat:

      puce op puce-b: ~ $ lsusb | grep ethernetBusrandapparaat 002 002: ID 0fe6: 9700 Kontron (industriële computer van ICS Advent-bron) DM9601 Fast Ethernet-adapter 

    Maar de opdracht ip one way link heeft niet de nieuwe geverifieerde NIC.Een volledige Google-zoektocht naar USB ID 0fe6: blackberry bold 9700 onthult dat ik de specifieke dm9601-kernelmodule nodig heb.Maar:

      food @ chip-b: ~ $ sudo modprobe FATAL: dm9601modprobe: moduledm9601 niet gevonden. 

    Moet ik een lange dag besteden aan het hercompileren van de kernel?Het verandert dat ik maar één bepaalde kernelmodule tegelijk kan bouwen.Na een klein aantal pogingen en fouten ontdekte ik het exacte verloop van de behandeling.

    1. Haal de kernelheaders op zoals je die kent als de compiler en download al onze kernelbronnen:

        sudo apt add-build-essential libncurses-dev linux-headers-4.4.138-chip lekker -L https://github.com/kaplan2539/ntc-linux/archive/ntc-stable-mlc-4.4.138.tar.gz | zwart xz 

      Bijgewerkt: ASR Pro

      Is uw computer traag? Wordt het geplaagd door frustrerende fouten en problemen? Dan heb je ASR Pro nodig - de ultieme software voor het repareren en optimaliseren van je Windows-pc. Met ASR Pro kunt u elk Windows-probleem met slechts een paar klikken oplossen - inclusief het gevreesde Blue Screen of Death. Bovendien detecteert en lost de software bestanden en applicaties op die regelmatig crashen, zodat u zo snel mogelijk weer aan het werk kunt. Laat je niet tegenhouden door je computer � download ASR Pro vandaag nog!


      Het is belangrijk dat een soort kern van het header-pakket en zelfs veel bronnen nauw overeenkomen met de kern van de oefening, die kan worden gespecificeerd met het verzoek uname -r .

    2. Kopieer het meest voordelige kernel “config”-bestand naar onze kernel-energiebrondirectory. Een geschiedenis van bestanden met hoe de kernel was geconfigureerd op het moment dat deze oorspronkelijk werd gebouwd, en welke processen gewoonlijk dienen als uitgangspunt voor een exact actieplan voor de nieuwe build.

        cd ntc-linux-ntc-stable-mlc-4.4.138 clubpinguin /boot/config-4.4.138-chip ./.config 
    3. Hoe leuk is het om een ​​kernelmodule opnieuw te compileren?

      Kopieer je /boot /config -`uname -r` bestand (voorbeeld: /boot/config-4.8.0-46-generic) rechtstreeks naar het bestand in de kernel generators map. config wordt ook uitgevoerd vanuit oldconfig. Als de nieuwe module een segment van de kernel is, controleer dan of deze is goedgekeurd door te wandelen make menuconfig, zoek gewoon naar de hele module en voer, indien nodig, de toepassingsletter “M” in.

      Zorg ervoor dat u de kernel “symbool”-informatie met succes rechtstreeks naar de kernelbronmap kopieert. Dit muziekbestand registreert de namen van de functionaliteit die bestaat in de verbazingwekkend moeilijke kernel, waarnaar vaak wordt verwezen door onze butmodule.

      Hoe maak ik een Linux-kernelmodule?

      bonjour.c Promotiecode in C.Voeg de volgende broncode c toe:Sla een bepaald bestand op.Bewaar hierboven, sluit het bestand.Compileer alle hello.c-modules:Word een goede root-pc-operator (gebruik ook su en sudo) en laad bovendien de module:Controleer voor het geladen gedeelte:Zie het bericht voor het – var / log / messaging-bestand:

        cp /usr/src/linux-headers-4.4.138-chip/Module.symvers ./ 
    4. Laad dit originele configuratiebestand, pas het aan zonder het te vermelden.

        commit oldconfig Menu aanpassen 

      compileer een kernel met functionaliteiten als een kernelmodule

      Het make menuconfig commando opent hun zeer interactieve dialoog die het mogelijk maakt om te kiezen welke kernelfuncties ik wil. Ik volgde de dialoogvensters in “Device Drivers” – “Network Device Support”; Het abonnement USB-netwerkadapters en Davicom DM96xx USB 10/100 Ethernet-apparaten is vervangen door M, wat betekent dat deze functie zeker modulair zal blijven.

    5. Aangezien de ontvangende kernelversie 4.4.138-chip is, moet ik de exacte Makefile en EXTRAVERSION impliceert - chip . Na precies wie, make kernelversion 4.4.138-chip zou normaal gesproken precies moeten zeggen dat deze correcte uitvoer van het uname -r commando.

    6. Maak onze module aan.

        .make .talen .prepare .modules_prepare .make.-C .. In eileen = drivers / netto per usb 

      it-opdracht, drivers versus net / usb is de hoofddirectory waar de implementatiecode, omdat de dm9601-kernelmodule waarschijnlijk is opgeslagen. Dit commando zal alle eigenlijke kernellet-modules in deze webdirectory maken, niet alleen dm9601 natuurlijk.

    7. Installeer de module.

        automobilist sudo clubpenguin / net / universal series bus / dm9601.ko /lib/modules/4.4.138-chip/kernel/drivers/net/usb/ sudo depmod 

    Op dit moment ben ik klaar om de arbeidsmodule modprobe te laden.In feite zou de module automatisch moeten voorladen wanneer de USB Ethernet-adapter is aangesloten.

      puce op puce-b: ~ $ dmesg | -wanneer ik grep dm9601[270352.048643] dm9601 2-1: 1.0 eth0: 'dm9601' save usb-1c14400 at.usb-1, Davicom DM96xx USB Ethernet, 10/100 00: e0: 4c: 53: 44: 58[270352.Usbcore: 070843] nieuwe betrouwbare dm9601 interface driver[270352.923157] dm9601 2-1: 1.0 eth0: verbinding, 100 Mbps, groot duplex, lpa 0xFFFF 

    De hele operatie duurde minder dan een uur, dat is veel minder dan het hercompileren van deze hele kernel.

    Link: Oleg Kokorin’s antwoord op de vraag “Hoe kan ik nu eenvoudig een partitie-kernelmodule opnieuw compileren?”

    Verbeter de prestaties van uw computer door hier te klikken om de software te downloaden.

    Recompile A Kernel With Capabilities As A Kernel Module
    Kompilera Om En Karna Med Funktioner Som En Karnmodul
    Recompiler Un Noyau Avec Des Capacites En Tant Que Module De Noyau
    Einen Kernel Mit Fahigkeiten Als Kernelmodul Neu Kompilieren
    Ricompilare Un Kernel Con Capacita Come Modulo Del Kernel
    Przekompiluj Jadro Z Mozliwosciami Jako Modul Jadra
    Recompilar Un Kernel Con Capacidades Como Modulo Del Kernel
    Recompilar Um Kernel Com Recursos Como Um Modulo De Kernel
    Perekompilirovat Yadro S Vozmozhnostyami V Kachestve Modulya Yadra

    Tags: No tags