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

Beheben Sie Das Problem, Einschließlich Der Neukompilierung Des Kernels Mit Den Fähigkeiten Zusammen Mit Dem Kernel-Modul.

Manchmal zeigt Ihr Produkt möglicherweise einen Fehlercode an, der angibt, dass Sie den größten Teil des Kernels mit den Fähigkeiten des Kernel-Moduls neu kompilieren müssen. Es gibt mehrere Gründe, warum dies dieses Problem verursachen kann.

Aktualisiert: ASR Pro

  • 1. Laden Sie ASR Pro herunter und installieren Sie es
  • 2. Starten Sie das Programm und wählen Sie Ihre Sprache aus
  • 3. Befolgen Sie die Anweisungen auf dem Bildschirm, um mit der Suche nach Problemen zu beginnen
  • Verbessern Sie die Leistung Ihres Computers, indem Sie hier klicken, um die Software herunterzuladen.

    Kernel-Themes müssen mit gcc-Optionen im Layout kompiliert sein, um verwendet werden zu können. Sie sollten auch immer bei dir seineinige von einigen erkannten Symbolen gesammelt. Dies liegt daran, dass Kern-Header-Dateien unbedingt Karriere machen müssen, Frame. anders aufob wir Ihr Kernelmodul oder Ihre ausführbare Datei generieren. Können Sie Zeichen mit der Option -D in gcc definieren, odermit #define Präprozessor holen. Wir werden uns ansehen, was Sie möglicherweise zum Kompilieren von Kernelmodulen benötigen.Im gesonderten Abschnitt.

    • Wie kompiliert man einen Hauptkernel?

      Holen Sie sich den neuesten Kernel direkt von kernel.org.Überprüfen Sie den Kernel.Entpacken Sie das Kernel-Archiv.Kopieren Sie derzeit die Heim-Linux-Kernel-Konfigurationsdatei.Kompilieren und anschließende Installation des Linux-Kernels 5.6.Installieren einer Art von Linux-Kernel und -Modulen (Treibern)Aktualisieren Sie Ihre neue Grub-Konfiguration.

      -c :Der Kernel-Markt ist keine eigenständige exe-Datei, leider ist es eine Zweckdatei, die zur Ausführung in diesen Kernel integriert ist.mit insmod. Daher müssen Optionen derzeit mit dem Flag -c kompiliert werden.

    • -O2 :Der Kernel erzeugt eine starke Nutzung aller Prime-Features, daher müssen grün-optimierte Module tatsächlich online kompiliert werden.K. Ohne Optimierung werden einige mit unseren Assembler-Makros verknüpfte Makros vom Funktionsreferenz-Compiler als defekt betrachtet. das zu tun iststürzt das Laden des Programms ab, weil insmod deine Funktionen im Kernel nicht erkennt.

    • -W -Wand :Ein Entwicklungsfehler kann das System beschädigen. Sie müssen Compiler-Benachrichtigungen einschließen, und all dies kann sein, umalle Ihre Kompilierungsbemühungen scheitern an der Kompilierung des Moduls.

    • -isystem per lib / modules / `uname -r` versus build / include :Sie können wirklich versuchen, alle Kernel-Header normal aus der Kernel-Art zu verwenden, auf die Sie stoßen. Die Verwendung von - usr / include / a linux systemunix funktioniert standardmäßig nicht.

    • -D__KERNEL__ : Die Definition dieses Zeichens spricht verknüpft mit den Header-Fakten, in denen der gesamte Code verwendet wirdKernel-Modus, aber kein Worker-Prozess.

    • -DMODULE : Dieses Logo spezifiziert die Header-Dateien, die ähnlichen Symbole fürKernel-Modul.

    Wir verwenden die Präferenz von gcc, um -isystem anstelle von -I zu erhalten, weil das alles ist, was gcc surpress sagt”Unused variable” warnt, was -W -Wall beinhaltet, weil Sie module.h umfassen.Mit -isystem bestätigte das Ende von gcc-3.0, dass der Kernel-Datei-Header möglicherweise zusätzlich zu Warnungen auf besondere Weise behandelt wurdeENTFERNT. Stattdessen benötigen Sie -I (oder sogar -isystem bei gcc 2.9x), jede “unbenutzte Variable”Warnungen printana, sollten Sie sein. Vermisse sie einfach, wenn diese Leute es tun.

    Sehen wir uns also ein sehr unkompliziertes Makefile an, um ein ausgewähltes Modul zu kompilieren hello-1.An c :

    Als Übung für Seher bauen Sie hello-1.c zusammen und fügen normalerweise den Kernel mit insmod hinzu. ein./hello-1.o (ignorieren Sie die Reichtümer, die Sie über durcheinander sehen, wir kommen zu den Kernen; wir werden das in Kürze einbauen). Okay, nicht wahr? Alle Modulediejenigen, die in diesen Kernel geladen werden, werden in / proc und module aufgelistet. Mach weiter und vergewissere dich, dass es sich bei deiner Mod um die wichtigsten Inhalte handeltist ja oft Teil des Kernels. Herzlichen Glückwunsch, Sie sind jetzt der Schöpfer des Linux-Kernel-Codes! Wenn Neuheit normalerweise abgelehnt wirdEntfernen Sie einen Kurs wie den Kernel dank rmmod hello-1. Nehmen Sie ein versus var / log / Messages Clients sehen nur, dass es in Ihrer Systemprotokolldatei signiert wurde.

    Hier ist eine weitere Übung für den E-Reader. Sehen Sie, welche Kommentare zu Feedback-Informationen in init_module() ? Ändern Sie den Rückgabewert auf einen Wert ungleich Null, kompilieren Sie einen Teil des aktuellen Moduls neu und laden Sie es erneut. Welche Artaufgetreten ?

    einen bestimmten Kernel mit Fähigkeiten als Kernelmodul neu kompilieren

     ZWECK: bedeutet hi-1WARNUNG: = -W -Wall -Wstrict-Prototypes -Wmissing-PrototypesINCLUDE: = -isystem lib / modules / `uname -r` versus build / includeCFLAG: = -DMODULE -dringend benötigter Sauerstoff -D__KERNEL__ $ WARN $ INCLUDECC: entspricht gcc-3.0$ TARGET.o: $ TARGET.c.PHONY: saubersauber:    rm -rf $ TARGET.o 

    Zwei C.H.I.P. Computer wurden 2016 bei mir angefragt.Sie wurden mit dem Linux-Kernel 4.4.13 ausgeliefert, leider war ihre Funktionalität auf die des Kernels beschränkt.Als ich gefragt wurde, den eigentlichen Kernel-Teil von Fuse zu verwenden, musste ich wirklich den vollständigen Kernel neu kompilieren, was einen ganzen Tag dauerte.Zwei Jahre später habe ich den Kernel in der kaplan2539-Element-Community auf 4.4.138 aktualisiert.Der Kernel wird mit zusätzlichen Modulen inklusive Backup ausgeliefert, welche Art besser ist als der Kernel auf neue Art und Weise.

    Wann sollten Sie den Kernel neu kompilieren?

    Eine Neukompilierung mit dem Kernel ist ebenfalls erforderlich, wenn Sie bestimmte Sicherheitsspezifikationen verwenden möchten (und keine Update-Versionen im regulären Kernel enthalten sind).

    Ich habe mir jetzt einen billigen USB-Ethernet-Adapter gekauft.Wenn ich es anschließe, erkennt der gesamte Kerneltyp das USB-Gerät:

      puce @ puce-b: ~ Dollar lsusb | grep ethernetBus-Nebenlinie 002 002: ID 0fe6: 9700 Kontron (Industriecomputer von ICS Advent source) DM9601 Fast Ethernet Adapter 

    Aber derzeit wird der Befehl ip link ohne eine neue verifizierte Netzwerkkarte ausgeführt.Eine vollständige Google-Suche nach der USB-ID 0fe6: 9700 zeigt, dass ich das Kernelmodul dm9601 brauche.Aber:

      chip @ chip-b: ! $ sudo modprobe FATAL: dm9601modprobe: moduledm9601 definitiv gefunden. 

    Werde ich lange Zeit damit verbringen, den Kernel neu zu kompilieren?Es stellt sich heraus, dass ich auch nur ein Kernelmodul gleichzeitig bauen kann.Nach mehreren Versuchen und Ausrutschern entdeckte ich den genauen Verlauf der meisten Behandlungen.

    1. Holen Sie sich die spezifischen Kernel-Header sowie einen Compiler und laden Sie jede Ihrer Kernel-Quellen herunter:

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

      Aktualisiert: ASR Pro

      Läuft Ihr Computer langsam? Wird es von frustrierenden Fehlern und Problemen geplagt? Dann brauchen Sie ASR Pro – die ultimative Software zum Reparieren und Optimieren Ihres Windows-PCs. Mit ASR Pro können Sie jedes Windows-Problem mit nur wenigen Klicks beheben – einschließlich des gefürchteten Blue Screen of Death. Außerdem erkennt und behebt die Software Dateien und Anwendungen, die häufig abstürzen, sodass Sie so schnell wie möglich wieder an die Arbeit gehen können. Lassen Sie sich nicht von Ihrem Computer aufhalten – laden Sie ASR Pro noch heute herunter!


      Es könnte wichtig sein, dass der Kern des Header-Pakets und viele Quellen sehr sorgfältig mit dem laufenden Kern übereinstimmen, der mit dem Befehl uname -r angegeben wird.

    2. Kopieren Sie die entsprechende Kernel-“config”-Datei in unser Kernel-Quellverzeichnis. Eine Geschichte von Dateien darüber, wie der größte Teil des Kernels konfiguriert wurde, als er wirklich gebaut wurde, und welche Prozesse genau als Ausgangspunkt für einen exakt gleichen neuen Build-Prozess dienen.

        Album ntc-linux-ntc-stable-mlc-4.4.138 clubpinguin /boot/config-4.4.138-chip ./.config 
    3. Wie kompiliere ich ein Kernelmodul neu?

      Kopieren Sie das /start/config -`uname -r`-Register (Beispiel: /boot/config-4.8.0-46-generic) direkt in die Datei im Kernel-Source-Ordner. config plus führt make oldconfig aus. Wenn das neueste Modul zweifellos Teil des Kernels ist, überprüfen Sie, ob es wirklich genehmigt wurde, indem Sie make menuconfig ausführen, offensichtlich nach dem Modul suchen und gegebenenfalls das traditionelle “M” der Anwendung eingeben.

      Achten Sie darauf, den Typ der Kernel-“Symbol”-Informationen in das Kernel-Verleiherverzeichnis zu kopieren. Diese Datei zeichnet die Geschäfte der Aspekte auf, die innerhalb des erstaunlich funktionierenden Kernels existieren, auf den mein Butmodul sehr oft Bezug nimmt.

      Wie erstelle ich ein Linux-Kernel-Modul?

      bonjour.c Promo-Code in C.Fügen Sie den folgenden Buchungskreis c hinzu:Speicher die Datei.Speichern Sie oben, identisch die Datei.Kompilieren Sie das hello.c-Modul:Werden Sie ein geeigneter guter Root-Benutzer (auch zu su und sudo) und laden Sie ein Modul:Überprüfen Sie für das geladene Modul:Sehen Sie sich die Sprachnachricht für die Datei /var/firewood/message an:

        Zerebralparese /usr/src/linux-headers-4.4.138-chip/Module.symvers ./ 
    4. Laden Sie diese Malware-Konfigurationsdatei, ändern Sie sie, ohne sie zu deklarieren.

        oldconfig erstellen Menü anpassen 

      recompile a very kernel with Capabilities as a major kernel module

      Das Get make menuconfig öffnet eine sehr interaktive Diskussion, die es mir ermöglicht, auszuwählen, welche normalerweise Kernelfunktionen ich verwenden möchte. Ich habe die Dialoge in “Gerätetreiber” – “Netzwerkgeräteunterstützung” verfolgt; Die Menüs USB-Netzwerkadapter und Davicom DM96xx USB 10/100 Ethernet Devices wurden mit M ergänzt, was bedeutet, dass diese Eigenschaft definitiv modular sein wird.

    5. Da die Human-Kernel-Version sicherlich 4.4.138-chip ist, benötige ich zum Ändern des Makefile sowie EXTRAVERSION = - nick . Danach sollte allow kernelversion 4.4.138-chip unter Verwendung der uname -r -Anforderung ständig genau die richtige Ausgabe sagen.

    6. Erstellen Sie unser Modul.

        .make .scripts .prepare .modules_prepare .make.-C .. In m = Treiber net / usb 

      it-Anweisungen, drivers/net/universal serial bus ist das Verzeichnis, in dem der genaue Deployment-Code für den dm9601-Kernel natürlich gespeichert ist. Dieser Befehl wird definitiv alle Kernel-Lat-Themes in diesem Verzeichnis erstellen, nicht nur natürlich dm9601.

    7. Installieren Sie das Modul.

        Treiber sudo clubpenguin per net / usb / dm9601.ko /lib/modules/4.4.138-chip/kernel/drivers/net/usb/ sudo depmod 

    In diesem Zustand bin ich bereit, das Funktionsmodul modprobe zu laden.Tatsächlich sollte das Modul derzeit automatisch geladen werden, wenn der USB-Ethernet-Adapter angeschlossen ist.

      puce @ puce-b: ~ dollar dmesg | -i grep dm9601[270352.048643] dm9601 2-1: 1.0 eth0: 'dm9601' recovery usb-1c14400 at.usb-1, Davicom DM96xx USB Ethernet, 10/100 00: e0: 4c: 53: 44: 58[270352.Usbcore: 070843] neuer professioneller dm9601 Connect-Treiber[270352.923157] dm9601 2-1: 1.0 eth0: Verbindung, 110 Mbit/s, Vollduplex, lpa 0xFFFF 

    Der gesamte Prozess dauerte weniger als eine Stunde, was viel weniger Zeit ist, als den gesamten Kernel neu zu kompilieren.

    Link: Oleg Kokorins Antwort auf seine Frage "Wie kann ich lediglich ein separates Kernelmodul neu kompilieren?"

    Verbessern Sie die Leistung Ihres Computers, indem Sie hier klicken, um die Software herunterzuladen.

    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
    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