Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Kernelmodul schreiben und kompilieren, Fehler auf 64-bit System

  1. #1
    Registrierter Benutzer
    Registriert seit
    Feb 2012
    Beiträge
    32

    Kernelmodul schreiben und kompilieren, Fehler auf 64-bit System

    Hallo

    Ich wollte mal in die Kernel-Programmierung einsteigen, scheitere aber bereits beim kompilieren dieses Beispiels:

    Lubuntu 64-bit Standardkernel
    3.11.0-26-generic #45-Ubuntu SMP Tue Jul 15 04:02:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux aus uname

    Dieser Code ist in einem Ordner in meinem home-Verzeichnis in einer Datei test.c
    Alles kopiert vom verlinkten Tutorial.

    Code:
    /*
     * hallo.c - Hallo, Welt! als Kernelmodule
     */
    
    #include <linux/init.h>
    #include <linux/module.h>
    #include <linux/kernel.h>
    
    /*
     * hallo_init - der Entry-Point des Moduls
     */
    static int hallo_init(void)
    {
            printk(KERN_ALERT "hardware stress fractures. Aiee\n");
            return 0;
    }
    
    /*
     * hallo_exit - die exit-function
     */
    static void hallo_exit(void)
    {
            printk(KERN_ALERT "You are screwed!\n");
    }
    
    module_init(hallo_init);
    module_exit(hallo_exit);
    
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("Anyone <anyone@foo.invalid>");
    MODULE_DESCRIPTION("Ein einfaches Beispiel");

    Im gleichen Ordner liegt dieses makefile:

    Code:
    obj-m := test.o
    
    all:
    	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    
    clean:
    	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
    Wenn ich mit der cmd dann dieses Verzeichnis als Arbeitsverzeichnis nehme und "sudo make" reinhaue, kommt folgendes:

    Code:
    make -C /lib/modules/3.11.0-26-generic/build M= modules
    make[1]: Betrete Verzeichnis '/usr/src/linux-headers-3.11.0-26-generic'
    make[2]: *** Keine Regel vorhanden, um das Target »/usr/src/linux-headers-3.11.0-26-generic/arch/x86/syscalls/syscall_32.tbl«, 
      benötigt von »arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h«, zu erstellen.  Schluss.
    make[1]: *** [archheaders] Fehler 2
    make[1]: Verlasse Verzeichnis '/usr/src/linux-headers-3.11.0-26-generic'
    make: *** [all] Fehler 2
    Bin mit der Foren-Sufu und mit Google nicht schlau geworden. Für mich hört sichs so an, als würde Madame versuchen für ein 32-bit System zu erstellen und findet nicht die benötigten Dateien. Es wäre jedenfalls schön, wenn ich jedes Mal einen € kriegen würde, wenn sowas passiert

    Schon mal danke für eure Hilfe

  2. #2
    Besen-Wesen Avatar von Ginsengelf
    Registriert seit
    Feb 2003
    Ort
    Mars
    Beiträge
    589
    Zitat Zitat von BlauerPinguin Beitrag anzeigen
    Code:
    make -C /lib/modules/3.11.0-26-generic/build M= modules
    Moin, so auf Anhieb sieht das M= ohne irgendwas danach komisch aus. Wenn du hier guckst, folgt da ein Pfad. Ich habe aber keine Ahnung, warum bei dir da nichts ersetzt worden ist. Vielleicht erstmal zum basteln hardkodieren.

    Ginsengelf
    God's in his heaven. All's right with the world.
    System: Ryzen 7 auf MSI MAG B550 Tomahawk, AMD Vega, 16 GB RAM, openSUSE Tumbleweed

  3. #3
    Registrierter Benutzer
    Registriert seit
    Feb 2012
    Beiträge
    32
    Das war der Hinweis, den ich gebraucht hab

    Ich hab im Makefile $(PWD) durch $(shell pwd) ersetzt. $(PWD) hat bei mir zwar in nem kleinen Beispiel funktioniert, aber hier irgendwie nicht.
    Modul läuft und dein Tutorial ist find ich besser.

    Tausend Dank
    Pinguin

  4. #4
    Registrierter Benutzer
    Registriert seit
    Sep 2014
    Beiträge
    2
    hallo, das mein erster post in diessem schönen deuschen forum denke mein problem passt hier gut in diesen thread, ich habe änliches problem mit virtualbox-4.3 beim rekompilieren des kernels unter kali linux. Vieleicht weiss jemand wie ich es installiert kriege?

    :~$ sudo dpkg -i virtualbox-4.3_4.3.16-95972~Debian~wheezy_amd64.deb(Lese Datenbank ... 329227 Dateien und Verzeichnisse sind derzeit installiert.)
    Vorbereitung zum Ersetzen von virtualbox-4.3 4.3.16-95972~Debian~wheezy (durch virtualbox-4.3_4.3.16-95972~Debian~wheezy_amd64.deb) ...
    Stopping VirtualBox kernel modules ...done.
    Ersatz für virtualbox-4.3 wird entpackt ...
    virtualbox-4.3 (4.3.16-95972~Debian~wheezy) wird eingerichtet ...
    addgroup: Die Gruppe »vboxusers« existiert bereits als Systemgruppe. Programmende.
    insserv: script virtualbox: service vboxdrv already provided!
    insserv: script virtualbox: service virtualbox already provided!
    Stopping VirtualBox kernel modules ...done.
    Recompiling VirtualBox kernel modules ...failed!
    (Look at /var/log/vbox-install.log to find out what went wrong)
    insserv: script virtualbox: service vboxdrv already provided!
    insserv: script virtualbox: service virtualbox already provided!
    insserv: script virtualbox: service vboxdrv already provided!
    insserv: script virtualbox: service virtualbox already provided!
    insserv: script virtualbox: service vboxdrv already provided!
    insserv: script virtualbox: service virtualbox already provided!
    Trigger für shared-mime-info werden verarbeitet ...
    Trigger für desktop-file-utils werden verarbeitet ...
    Trigger für gnome-menus werden verarbeitet ...
    Trigger für hicolor-icon-theme werden verarbeitet ...
    i:~$ sudo apt-get install build-essential linux-headers-`uname -r` dkms[sudo] password for ####:
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut.
    Statusinformationen werden eingelesen.... Fertig
    E: Paket linux-headers-3.12-kali1-amd64 kann nicht gefunden werden.
    E: Mittels regulärem Ausdruck »linux-headers-3.12-kali1-amd64« konnte kein Paket gefunden werden.
    hell7@kali:~$ sudo apt-get install build-essential linux-headers-generic `uname -r` dkms
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut.
    Statusinformationen werden eingelesen.... Fertig
    Hinweis: »linux-latest-modules-3.12-kali1-amd64« wird für regulären Ausdruck »3.12-kali1-amd64« gewählt.
    Hinweis: »linux-modules-3.12-kali1-amd64« wird für regulären Ausdruck »3.12-kali1-amd64« gewählt.
    Hinweis: »linux-image-3.12-kali1-amd64« wird für regulären Ausdruck »3.12-kali1-amd64« gewählt.
    Hinweis: »linux-image-3.12-kali1-amd64« wird an Stelle von »linux-modules-3.12-kali1-amd64« gewählt.
    Paket linux-headers-generic ist nicht verfügbar, wird aber von einem anderen Paket
    referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst
    wurde oder nur aus einer anderen Quelle verfügbar ist.

    E: Für Paket »linux-headers-generic« existiert kein Installationskandidat.
    :~$ sudo apt-get install linux-image-3.12-kali1-amd64
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut.
    Statusinformationen werden eingelesen.... Fertig
    linux-image-3.12-kali1-amd64 ist schon die neueste Version.
    linux-image-3.12-kali1-amd64 wurde als manuell installiert festgelegt.
    0 aktualisiert, 0 neu installiert, 0 zu entfernen und 17 nicht aktualisiert.
    :~$ sudo apt-get install linux-headers-generic
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut.
    Statusinformationen werden eingelesen.... Fertig
    Paket linux-headers-generic ist nicht verfügbar, wird aber von einem anderen Paket
    referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst
    wurde oder nur aus einer anderen Quelle verfügbar ist.

    E: Für Paket »linux-headers-generic« existiert kein Installationskandidat.


    werde daraus nicht schlau? was bedeutet z.b. kein installationkandidat? Hatte virtualbox schon einmal zum laufen bekommen unter kali als host system mustes system aber komplett neu aufsetzten und jetzt krieg ich es nicht hin..

  5. #5
    Registrierter Benutzer
    Registriert seit
    Feb 2012
    Beiträge
    32
    Kein Installationskandidate bedeutet, dass es das zu installierende Paket nicht gibt, sind die Namen der Pakete denn noch alle aktuell und verfügbar?
    Und was ist mit
    (Look at /var/log/vbox-install.log to find out what went wrong)

  6. #6
    Registrierter Benutzer
    Registriert seit
    Sep 2014
    Beiträge
    2
    hallo, in der datei steht folgendes:

    Uninstalling modules from DKMS
    Attempting to install using DKMS

    Creating symlink /var/lib/dkms/vboxhost/4.3.16/source ->
    /usr/src/vboxhost-4.3.16

    DKMS: add completed.
    Failed to install using DKMS, attempting to install without
    Makefile:183: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Schluss.
    Makefile:183: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Schluss.
    Makefile:183: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Schluss.
    Makefile:183: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Schluss.


    wie bekomme ich die virtualbox wieder zum laufen unter kali host?

  7. #7
    Registrierter Benutzer
    Registriert seit
    Feb 2012
    Beiträge
    32
    Du musst zuerst die Kernelquellen installieren und dann mit dkms die module für virtual box bauen. Also das Kommando, das du als erstes ausgeführt hast zuletzt ausführen.
    Die Pakete für die Source-Pakete findet die Maschine aber ja nicht, probier mal:

    sudo apt-get update

    und checke mal ob

    deb http://http.kali.org/kali kali main contrib non-free
    deb http://security.kali.org/kali-security kali/updates main contrib non-free

    in /etc/apt/sources.list steht, das sind die Links zu den Listen, in denen die verfügbaren Pakete aufgelistet sind.

    https://forums.kali.org/archive/index.php/t-5804.html

    Wenn du es geschafft hast alle zum Modul Bauen nötigen Pakete zu installieren, sollte auch das Installieren von Virtualbox laufen.

    Grüße
    Pinguin

Ähnliche Themen

  1. Ubuntu Kernelmodul kompilieren
    Von slaYer977 im Forum Kompilieren von Kernel und Sourcen
    Antworten: 8
    Letzter Beitrag: 10.08.06, 08:49
  2. Kernelmodul für Bluetooth-also Projekt kompilieren?
    Von mhlzt im Forum Kompilieren von Kernel und Sourcen
    Antworten: 4
    Letzter Beitrag: 05.06.06, 22:17
  3. Kernel auf System A kompilieren und auf System B benutzen - wie?
    Von Gorgoroth im Forum Kompilieren von Kernel und Sourcen
    Antworten: 7
    Letzter Beitrag: 10.08.05, 13:49
  4. Nur einzelnes Kernelmodul kompilieren?
    Von geronet im Forum Kompilieren von Kernel und Sourcen
    Antworten: 9
    Letzter Beitrag: 18.08.03, 06:47
  5. Kernelmodul löschen ohne neu kompilieren?
    Von Sebastian S. im Forum Kompilieren von Kernel und Sourcen
    Antworten: 2
    Letzter Beitrag: 15.07.03, 20:47

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •