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

Lös Det Här Problemet Med Att Kompilera Om Kärnan Med Funktionerna I Kärnmodulen.

Ibland kan ditt system visa sin felkod som indikerar att du måste kompilera om kärnan med alla funktioner i kärnmodulen. Det finns flera orsaker som kan påverka detta problem.

Uppdaterad: ASR Pro

  • 1. Ladda ner och installera ASR Pro
  • 2. Starta programmet och välj ditt språk
  • 3. Följ instruktionerna på skärmen för att börja söka efter problem
  • Förbättra din dators prestanda genom att klicka här för att ladda ner programvaran.

    Kärnteman måste kompileras som har gcc-alternativ för att de ska kunna användas. De borde vara med dig och din familj ocksåsamlade några av de upptäckta symbolerna. Detta beror på att vissa kärnhuvudpapper måste fungera, Frame. till skillnad från påoavsett om vi kompilerar ditt kärnsegment eller körbara. Kan du definiera typer med -D möjligheten i gcc, ellermed #define är förbehandlare. Vi ska ta en titt på vad du kan behöva för att tillåta dem att kompilera kärnmoduler.I denna avdelning.

    • Hur tar du hand om dig att kompilera en kärna?

      Hämta den nya kärnan från kernel.org.Kontrollera kärnan.Packa upp det specifika kärnarkivet.Kopiera hem Linux-kärnan konfigurationsfil.Kompilera och installera Linux-kärnan 5.6.Installera Linux-kärnan och sedan moduler (drivrutiner)Uppdatera din grub-konfiguration.

      -c :Kärnsegmentet är inte nödvändigtvis en helt oberoende körbar fil, tyvärr är det hela en objektfil som ofta integreras i kärnan i syfte att köras.med insmod. Därför behöver program för närvarande tid för kompilering med flaggan -c .

    • -O2 :Kärnan gör tunga syften med alla funktioner, så grönt-optimerade webbmallmoduler måste kompileras online.K. Utan optimering anses några av våra assemblermakron utan tvekan vara ogiltiga av målreferenskompilatorn. detta ärkraschar lanseringen av kursen eftersom insmod inte borde känna igen dessa funktioner i kärnan.

    • -W -Wall :Ett programmeringsfel kan nu skada det mänskliga systemet. Du måste inkludera kompilatorvarningar, och allt som involverar detta gälleralla dina hårda kompileringsarbeten misslyckas på grund av kompileringen på grund av modulen.

    • -isystem / lib / komponenter / `uname -r` / bygga och inkludera :Du bör verkligen försöka direkt att använda kärnhuvudena normalt med hjälp av kärnbygget du gillar. Att använda / usr / handle / linux fungerar inte med tillstånd av – standard.

    • -D__KERNEL__ : Definitionen av detta vägledningstecken talar om rubrikklumparna av information där koden vanligtvis användsKärnläge, inte som ett arbetsföretag.

    • -DMODULE : Denna symbol anger rubrikfilerna, motsvarande symboler förKärnkurs.

    Vi använder gccs preferens för -isystem i själva verket för -I eftersom kanske all gcc-surpress berättar för vissa”Oanvänd variabel” varnar om -W -Wall främst för att du inkluderar module.h .Att använda -isystem i sammanfattningen av gcc-3.0 visade att en viss kärnfilhuvud hanterades på praktiskt taget vilket speciellt sätt som helst och varningartog bort. Istället behöver individer -I (eller från tid till annan -isystem i gcc 2.9x), lika “oanvänd variabel”Varningar printana, du kommer att bli det. Bara ignorera dem när sådana här människor gör.

    Så låt oss ta reda på en mycket enkel make-fil för att sätta ihop en modul som heter hello-1.An f :

    Som en övning angående seers, kompilera hello-1.c plus lägg till kärnan med insmod. a./hello-1.o (ignorera pengarna du ser med avseende på trassligt, vi kommer till typen av kärnor, vi kommer att täcka det inom kort). Okej, inte sant? Alla modulerde som laddas in i denna kärna listas på insidan av / proc / modules . Gå vidare och se till att du är modig handlar om innehålletär verkligen en del av kärnan. Grattis, du har nu blivit författaren till Linux-kärnkoden! När nyhet i de flesta fall avvisasTa bort en modul som denna speciella kärna med rmmod hello-1. Ta in modellen / var / log or messages du ser bara varför det loggades i din planloggfil.

    Här är ett annat träningsprogram för läsaren. Se vilken kritik på feedbackmeddelanden i init_module () ? Ändra returvärdet så att du inte nollställer, kompilerar om den aktuella modulen för att ladda om den. Vilken sortinträffade . . .

    kompilera om en kärna med kapacitet för att vara en kärnmodul

     SYFTE: resurser hi-1VARNING: = -W -Wall -Wstrict-Prototypes -Wmissing-PrototypesINKLUDERA: motsvarar -isystem / lib / modules och `uname -r` / build för varje includeCFLAGG: = -DMODULE -o2 -D__KERNEL__ $ VARNING $ INKLUDERACC: = gcc-3.0$ TARGET.o: usd TARGET.c.PHONY: renrena:    rm -rf $ TARGET.o 

    Två C.H.I.P. datorer skickades till mig för 2016.De skickades med Linux 4.4.13-kärnan, men deras funktionalitet var i princip begränsad till kärnan.När jag blev tillfrågad så att du kan använda kärndelen av stiffen, var jag tvungen att kompilera om hela kärnan, vilket tog en hälsosam dag.Två år senare uppdaterade jag vanligtvis kärnan till 4.4.138 av kravgemenskapen kaplan2539.Kärnan kommer med ytterligare uppdrag inklusive säkerhetskopiering, vilket är bättre än huvudkärnan på ett nybörjar sätt.

    När måste du kompilera om kärnan?

    En omkompilering med dess kärna krävs också om du kanske vill använda en viss säkerhet som endast vill ha (och inte ingår i den naturliga kärnan).

    Jag köpte nyligen en billig USB Ethernet-adapter.När jag ansluter den igen känner kärntypen igen den exakta USB-enheten:

      puce vid puce-b: ~ $ lsusb | grep ethernetBuss kringutrustning 002 002: ID 0fe6: 9700 Kontron (industridator från ICS Adventskälla) DM9601 Fast Ethernet-adapter 

    Men kommandot ip-webbplatslänk innebär inte att du bara har ett verifierat nätverkskort.En fullständig Google-sökning för USB ID 0fe6: blackberry bold 9700 avslöjar att jag behöver en specifik dm9601 kärnmodul.Men:

      datorchip @ chip-b: ~ $ sudo modprobe FATAL: dm9601modprobe: moduledm9601 hittades inte. 

    Kommer jag att behöva ägna den senaste långa dagen åt att kompilera om kärnan?Det löser sig att jag bara kan bygga en enskild kärnmodul åt gången.Efter ett stort antal försök och misstag upptäckte jag hur det exakta behandlingsförloppet.

    1. Skaffa kärnrubriken lika bra som kompilatorn och ladda ner alla våra kärnkällor:

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

      Uppdaterad: ASR Pro

      Körs din dator långsamt? Är det plågat av frustrerande fel och problem? Då behöver du ASR Pro � den ultimata programvaran för att reparera och optimera din Windows-dator. Med ASR Pro kan du fixa alla Windows-problem med bara några få klick � inklusive den fruktade Blue Screen of Death. Dessutom kommer programvaran att upptäcka och lösa filer och applikationer som kraschar ofta, så att du kan komma tillbaka till arbetet så snabbt som möjligt. Låt inte din dator hålla dig tillbaka � ladda ner ASR Pro idag!


      Det är viktigt att någon kärna i headerpaketet tillsammans med många källor stämmer överens med den pågående kärnan, som kan specificeras bestående av uname -r instruktionen.

    2. Kopiera den användbara kärnans “config”-fil till vår kärnreservoarkatalog. En historik över filer nästan hur kärnan konfigurerades i händelse av att den ursprungligen byggdes, och vilken typ av processer som fungerar som en startperiod för en exakt nybyggd hela operation.

        cd ntc-linux-ntc-stable-mlc-4.4.138 clubpinguin /boot/config-4.4.138-chip ./.config 
    3. Hur skriver jag om en kärnmodul?

      Kopiera all / boot / config -`uname -r`-filen (exempel: /boot/config-4.8.0-46-generic) direkt kan du filen i mappen kernel supplies. config kör också render oldconfig. Om den nya modulen är faktorn i kärnan, kontrollera att du föreställer dig om den är godkänd genom att sprinta make menuconfig, helt enkelt söka efter den specifika modulen och, om nödvändigt, ange typiskt ansökningsbokstaven “M”.

      Se till att kopiera kärnans “symbol”-information direkt till kärnans källkatalog. Denna datorfil registrerar namnen på detaljerna som finns i den otroligt presterande kärnan, som ofta hänvisas till av vår butmodul.

      Hur skapar jag en Linux-kärnmodul?

      bonjour.c Kampanjkod i C.Lägg till följande källkod c:Spara hela filen.Spara ovan, stäng filen.Kompilera den viktigaste hello.c-modulen:Bli en bra root personal (använd även su och sudo) medan du laddar modulen:För den laddade kursen, kontrollera:Se meddelandet för var / log / info-filen:

        cp /usr/src/linux-headers-4.4.138-chip/Module.symvers ./ 
    4. Ladda den här ursprungliga konfigurationsfilen, reglera den utan att nämna den.

        commit oldconfig Anpassa menyn 

      kompilera om en kärna med kunskap som en kärnmodul

      Kommandot make menuconfig öppnar en helt ny mycket interaktiv dialogruta som låter mig välja vilka kärnfunktioner jag vill ha. Jag följde dialogrutorna till “Enhetsdrivrutiner” – “Stöd för nätverksenhet”; USB-nätverksadaptrarna och Davicom DM96xx USB 10/100 Ethernet-enhetsplanen har ersatts med M, vilket experter hävdar betyder att den här funktionen definitivt kommer att bli modulär.

    5. Eftersom den mänskliga kärnversionen är 4.4.138-chip , måste jag utan tvekan ändra Makefile och EXTRAVERSION betyder - chip . Efter dessa bör make kernelversion 4.4.138-chip vanligtvis säga exakt all korrekt utdata från uname -r kommandot.

    6. Skapa vår modul.

        .make .languages ​​.prepare .modules_prepare .make.-C .. I meter = förare/nät usb 

      it-kommandot, drivrutiner per nät / usb är katalogen där distributionskoden för att producera dm9601-kärnmodulen ska lagras. Detta kommando kommer att skapa alla nya kernel let-moduler i denna tjänst, inte bara dm9601 förstås.

    7. Installera modulen.

        racer sudo clubpenguin / net / usb 2 . 0 / dm9601.ko /lib/modules/4.4.138-chip/kernel/drivers/net/usb/ sudo depmod 

    Vid det här laget är jag redo som kommer att ladda modprobe orsaksmodul.Faktum är att modulen ska betala automatiskt när USB Ethernet-kortet är anslutet.

      puce vid puce-b: ~ $ dmesg | - enkelt uttryckt i grep dm9601[270352.048643] dm9601 2-1: 1.0 eth0: 'dm9601' spara usb-1c14400 at.usb-1, Davicom DM96xx USB Ethernet, 10/100 00: e0: 4c: 53: 84: 53: 84:[270352.Usbcore: 070843] ny avancerad dm9601-gränssnittsdrivrutin[270352.923157] dm9601 2-1: 1,0 eth0: anslutning, 100 Mbps, fylld med duplex, lpa 0xFFFF 

    Hela steget tog mindre än en timme, vilket är mycket mindre än att kompilera om en ny hel kärna.

    Länk: Oleg Kokorins svar på frågan “Hur har förmågan att jag helt enkelt omkompilera en svårighetskärnmodul?”

    Förbättra din dators prestanda genom att klicka här för att ladda ner programvaran.

    Recompile A Kernel With Capabilities As A Kernel Module
    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
    Hercompileer Een Kernel Met Mogelijkheden Als Een Kernelmodule
    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