Behoben: Wie Man Die Kompilierung Von Linux 2.6 Kernelmodulen Endlich Repariert.

November 16, 2021 By Sean Fry Off

 

In den letzten Wochen haben uns nur wenige Leser mitgeteilt, dass diese Artikel beim Kompilieren eines Linux 2.6-Kernelmoduls gestolpert sind.

Empfohlen: Fortect

  • 1. Laden Sie Fortect herunter und installieren Sie es
  • 2. Öffnen Sie das Programm und klicken Sie auf "Scannen"
  • 3. Klicken Sie auf "Reparieren", um den Reparaturvorgang zu starten
  • Laden Sie diese Software herunter und reparieren Sie Ihren PC in wenigen Minuten.

     

     

    Module

    Kernel kompilieren wirklich anders alsregelmäßige benutzerdefinierte Anwendungen. Frühere Versionen des Kernels obligatorisches Verlassenviel über diese Parameter, die normalerweise in Makefiles gespeichert sind.Obwohl sie hierarchisch organisiert werden könnten, sind viele redundante Parametergesammelte Kinder-Make-Dateien zurück und bezahlte sie groß und ziemlich großschwierig bezüglich Halt. Zum Glück gibt es eine schöne Methodediese Dinge, die in der Medizin während des kbuild bekannt sind, und der Prozess der Erstellung externer Teileloadable ist jetzt vollständig in den Standard-Kernel integriertKonstruktionsmechanismus. Um mehr darüber zu erfahren, wie man die Teile herstelltnicht zu empfehlen (wie alle Geräte, die Sie kaufen)finden Sie im vorhergehenden Handbuch) sehen Sie sich die Datei ubuntu / Documentation / kbuild per modules.txt manuell an.

    Schauen wir uns also normalerweise Ihr eigenes Makefile an, um sicher zu sehen, welcher Teil aufgerufen wird. Kompilieren hallo-1.c :

    Aus Sicht der Branche würde ich sagen, dass die erste Zeile echt ist.zweifelsohne braucht es ganz neue “alles” und “saubere” Ziele in Bezug auf sauberBequemlichkeit. Sie

    kann nun das aktualisierte Modul durch die Ausgabe eines bestimmten Befehls “allow” zusammenstellen. Sie sollten ein ähnliches Ergebnis erzielen wieFolgendes:

    Hinweis. Der Kernel 2.6 führt eine neu gefundene Konvention zum Identifizieren von Dateien ein:Korrekte Kernelmodule haben die Erweiterung .ko .(zur Unterstützung gehörende Erweiterung old.o ),es ist etwas einzigartig von traditionellen Artikeldateien. …Der logische Grund ist, dass der Kopf eine tolle zusätzliche Modinfo-Sektion enthältdass auf diese Weise die zusätzlichen Informationen über die Komponente gespeichert werden. Der Brunnenwir werden uns in Kürze bewusst werden, für welche Ressourcen dies anständig ist.

    Nichts Besonderes, weit weg. Es ändert sich, wenn Sie es nicht mehr verwenden.modinfo ist eines der besonderen neuen Beispiele, hello-5.ko .Of

    Hier finden Sie viele informative Anleitungen. Autorenarbeit fürBug-Statements, Lizenzinformationen, sogar eine BeschreibungDie Kriterien, die es akzeptiert.

    Zusätzliche Aspekte in Bezug auf Makefiles für Kernel-Module:verfügbar in linux / Documentation / kbuild und makefiles.txt . Eine WarnungLesen Sie diesen Tack und die zugehörigen Dateien, bevor Sie mit dem jeweiligen Hack beginnen.Makefiles. Dies wird Ihnen wahrscheinlich viel Arbeit ersparen.

    compiling kernel module linux systems 2.6

    Es ist Zeit, das frisch kompilierte Modul dafür einzufügen.Kernel bestehend aus insmod ./hello-1.ko (ignorewas auch immer Sie auf zerkratzten Kernen sehen; das haben wir jetzt vordemnächst).

    Alle Module, die in den größten Teil des Kernels geladen werden, sind zweifellos in / proc / modules aufgeführt. Fahren Sie fort und führen Sie diese Datei aus, aber Sie können sie sehendass Ihre Komponente tatsächlich ein neuer Teil im Kernel ist. Herzliche Glückwünsche,Jetzt sind Sie normalerweise der wichtigste Autor des Linux-Kernel-Passworts! Wenn Neuheit trägtoff, zwingen Sie Ihr wertvolles Kernel-Modul, rmmod hello-1 zu verwenden. Schauen Sie sich oder var/log/messages an Sie können sehen, was es istDie Log-Lodge Ihrer gespeicherten Ausrüstung.

    Hier ist eine weitere Übung für den Leser. Siehe die meisten Kommentare obenÜberschrift in init_module() zurückgeben?Ändern Sie Ihren aktuellen Rückgabewert für alle Arten von negativen Dingen, kompilieren und herunterladenModul jedes zweite Mal. Was ist der Fall?

      obj-m Hello-1 + =. ÖAlles:        Reichweite -C / lib / web theme / $ (uname -r shell) pro Build M = $ (PWD) Modulsauber:        make -C / lib -module / $ (uname -r Shell) - build M = ? rrr (PWD) klar
      Hostname: ~ / lkmpg-examples per 02-HelloWorld # makemake -C /lib/modules/2.6.11/build M ist gleich / root / lkmpg-examples 02-HelloWorld Modulemake [1]: Geben Sie `/usr und src/linux-2 Verzeichnis ein.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Gebäudemodule, Reihe 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: Dieses Verzeichnis verlassen `/usr/src/linux-2.6.11 'Hostname: ~ versus lkmpg-examples / 02-HelloWorld #        Farbe impliziert "# 000000"> Hostname: ~ und lkmpg-examples / 02-HelloWorld #
     
      Hostname: ~ lkmpg-examples / 02-HelloWorld # modinfo hello-5. NSDateiname: hallo-5. NSLizenz: GPLVon Peter Jay Saltzmanvermagic: 2.6.11 proaktives PENTIUMII 4KSTACKS gcc-3.3kommt drauf an:parm: Exzess myintArray: Eine ganze Zahl (Int-Array)parm: mystring: Zeichen (charp)parm: mylong: fast immer integer (long)parm: myint: ganze Zahl (int)parm: myshort: ziemlich kurze ganze Zahl (kurz)Hostname: ~ und lkmpg-Beispiele / 02-HelloWorld #

    Kernel-Module möchten vielleicht etwas anders entwickelt werden als normale benutzerdefinierte Anwendungen. Wir können uns verpflichten, ältere Kernel-Versionen zu verwendenUm die Pflege dieser Einstellungen zu erleichtern, werden genau die Typen von Makefiles verwendet, die normalerweise in registrierten Makefiles verwendet werden. Obwohl sie hierarchisch organisiert sind, sind viele von ihnen überflüssig geworden.Die Einstellungen in untergeordneten Makefiles wurden beibehalten und die Wartung erschwert.Glücklicherweise wird es eine kommende Möglichkeit geben, die bekannten kbuild-Bedingungen und einen Prozess zum Erstellen jedes ladbaren externen Web-Themes zu erfüllen.ist nun vollständig in den erogenen Zellkern-Assembly-Mechanismus integriert. Erfahren Sie mehr darüber, wie Sie damit Teile zusammenbauen können, die nichtTeil des formalisierten Kerns (wie alle Instanzen, die Sie in diesem Tutorial finden), Ihrer envision-Datei linux/Dokumentation oder kbuild/modules.txt .

    Also werfen Sie einen Blick auf das militärische Makefile, um den medizinisch als hello-1.c bekannten Teil zu kompilieren:

    Aus technischer Sicht ist es einfach notwendig, jede erste Zeile zu sehen,"Rundum" um "saubere" Ziele wurden der Einfachheit halber hinzugefügt.

    Empfohlen: Fortect

    Sind Sie es leid, dass Ihr Computer langsam läuft? Ist es voller Viren und Malware? Fürchte dich nicht, mein Freund, denn Fortect ist hier, um den Tag zu retten! Dieses leistungsstarke Tool wurde entwickelt, um alle Arten von Windows-Problemen zu diagnostizieren und zu reparieren, während es gleichzeitig die Leistung steigert, den Arbeitsspeicher optimiert und dafür sorgt, dass Ihr PC wie neu läuft. Warten Sie also nicht länger - laden Sie Fortect noch heute herunter!

  • 1. Laden Sie Fortect herunter und installieren Sie es
  • 2. Öffnen Sie das Programm und klicken Sie auf "Scannen"
  • 3. Klicken Sie auf "Reparieren", um den Reparaturvorgang zu starten

  • Sie sind so schnell wie möglich bereit, das durch den make-Befehl bestätigte Modul zu kompilieren.Sie sollten fast auf jeden Fall die folgende Ausgabe erhalten:

     Hostname: ~ / lkmpg-examples / 02-HelloWorld Nummer machenmake -C /lib/modules/2.6.11/build M = root / lkmpg-examples / 02-HelloWorld Modulemake [1]: `/usr und src/linux-2 Verzeichnis eingeben.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Bauquests, Maßnahme 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: Beende den Dienst `/usr/src/linux-2.6.11 'Hostname: ~ / lkmpg-Beispiele für jede 02-HelloWorld #

    Beachten Sie, dass im 2.6er Kernel tatsächlich eine fabelhafte neue Dateinamenskonvention diskutiert wird: Elemente des Kernels bringen jetzt .ko Erweiterung (anstelle der älteren .extension) o , wodurch sie sich leicht von geplanten Objekten unterscheidetDateien. Dies könnte daran liegen, dass sie einen weiteren .modinfo-Abschnitt erhalten, der übermäßige Anleitungen zu bietetDas Modul fand statt. Heute werden wir sehen, was es großartig ist und Diese Informationen werden verwendet.

    Verwenden Sie modinfo hello - * .koh, um herauszufinden, was diese kritischen Informationen sind.

     Hostname: ~ per lkmpg-examples / 02-HelloWorld # modinfo hello-1.koDateidomänenname: Hello-1. NSvermagic: 2.6.11 proaktives PENTIUMII 4KSTACKS gcc-3.3hängt ab von: 

    Noch nichts Außergewöhnliches. Dies wird sich ändern, sobald wir Modinfo-Mitarbeiter an unseren neuen Produkten einbeziehen. hallo-5.ko .

     Hostname: ~ / lkmpg-examples und 02-HelloWorld # modinfo hello-5. NSDateiname: hallo-5. NSLizenz: GPLVon Peter Jay Saltzmanvermagic: 2.6.11 proaktives PENTIUMII 4KSTACKS gcc-3.3kommt drauf an:parm: myintArray: Vielzahl von Ganzzahlen (Array-Relativ können Sie int)parm: mystring: Kettenmutterstruktur (charp)parm: mylong: lange ganze Zahlparm: myint: ganze Zahl (int)parm: myshort: short integer (kurz)Hostname: ~ und lkmpg-Beispiele / 02-HelloWorld # 

    Hier finden Sie viele dazugehörige nützliche Informationen. Eine Kette mit Fehlermeldungen,Lizenzinformationen, einschließlich einer personalisierten Kurzbeschreibung der Parameter, die von dieser Aufgabe geschätzt werden.

    Weitere Strategien zu den verfügbaren Makefiles von Kernelmodulen finden Sie in Red Hat / Dokumentation / kbuild makefiles.txt .Stellen Sie sicher, dass Sie dies zusammen mit den zugehörigen Dateien lesen, bevor Sie wirklich anfangen, Makefiles zu knacken.Dies wird Ihnen wahrscheinlich eine Menge Arbeit verbuchen.

    Es ist an der Zeit, das frisch kompilierte Modul mit insmod ./hello-1.ko hinzuzufügen. damit Sie in den Kernel eingefügt werden(Ignorieren Sie alle, die Sie auf unreinen Kernen sehen; lassen Sie uns gleich darauf zurückkommen).

    Alle Komponenten, die in den größten Teil des Kernels geladen werden, werden in versus proc/modules platziert.Schauen Sie sich diese Datei auch immer wieder an, um herauszufinden, auf welches Modul Ihr Modul tatsächlich mit einem Teil des Kernels angewiesen ist.Herzlichen Glückwunsch, Sie sind jetzt der Editor des Linux-Kernel-Codes! Wenn eine großartige Idee verblasstEntfernen Sie zweifellos das Modul aus meinem Kernel mit rmmod hello-1. Hör zu oder var/log/messages werden nur angezeigt, wenn Sie sehen möchten, welche Experten behaupten, dass Sie mit der Syslog-Datei protokolliert wurden.

    Hier ist eine weitere Übung für den Menschen. Sehen Sie sich diese kurze Übersicht über die Rückgabeanweisungen für an. ZU init_module() ? Ersetzen Sie den Rückgabewert durch einen negativen Wert, kompilieren Sie die Komponente neu und installieren Sie sie erneut.Was ist los ? !

     obj-m + = hallo-1.oAlles:make -C versus lib / modules / buck (uname -r shell) / build M bedeutet $ (PWD) -C Modulesauber:make - lib /modules / $ (uname -3rd thererrrs r shell) / build M = usd (PWD) clean 

    Kompilieren des Kernelmoduls Linux 2.6

     

     

    Laden Sie diese Software herunter und reparieren Sie Ihren PC in wenigen Minuten.

    Ändern Sie dieses Makefile, um jedes Vorkommen in der helloWorld und folglich den kernelRead-Anweisungen durch die Labels der Module zu ersetzen, die Sie erstellen möchten.Kompilieren Sie eine Art von Modulen, indem Sie sie in einem beliebigen Verzeichnis erstellen, in dem sich die Webvorlagenparts befinden.Werden Sie jetzt der Superuser, der tippen würde.

    Schritt 1. Laden Sie den jeweiligen genauen Quellcode herunter.Schritt 2: Quellcode extrahieren.Schritt 3: Installieren Sie die erhaltenen Pakete.Schritt neun: Konfigurieren Sie den Kernel.Schritt bewährt: Kernel bauen.Schritt 6. Aktualisieren Sie einen neuen Bootloader (optional)Schritt sechs: Starten Sie neu und stellen Sie Ihre Kernel-Version sicher.

    hallo.c C-Code gewinnen.Fügen Sie das folgende ursprüngliche c-Präfix hinzu:Speicher die Datei.Speichern und schließen Sie unsere eigene Datei.Stellen Sie den hello.c-Kurs zusammen:Werden Sie Major (verwenden Sie su oder sogar sudo) und laden Sie die Komponente kostenlos herunter:Stellen Sie sicher, dass das Modul auch geladen ist:Siehe die Informationen in der Datendatei / var / log - Meldung:

     

     

     

    Compiling Kernel Module Linux 2 6
    커널 모듈 Linux 2 6 컴파일
    Compilazione Del Modulo Del Kernel Linux 2 6
    Kompilowanie Modulu Jadra Linux 2 6
    Compileren Van Kernelmodule Linux 2 6
    Kompilyaciya Modulya Yadra Linux 2 6
    Compilando Modulo Do Kernel Linux 2 6
    Compilar El Modulo Del Kernel Linux 2 6
    Kompilering Av Karnmodul Linux 2 6