2017-11-01 13 views
0

Bis jetzt, als ich mein Kernel-Modul kompiliert habe, habe ich installiert: kernel-devel, kernel-headers.
Später musste ich Kernelquellen hinzufügen.
Also die Pakete, die ich installiere, um mein Kernelmodul zu kompilieren, sind: kernel-devel, kernel-headers und kernel.src.rpm (kernel source).
Ich bin dabei, einen "Build-Rechner" zu erstellen, der nach Verfügbarem neuesten Kernel sucht, notwendige Pakete herunterlädt und das Kernel-Modul für diesen Kernel kompiliert.
Ich möchte das Paket nicht installieren, nur um es herunterzuladen, und kopieren Sie die Dateien an ihren Speicherort (download kernel.src.rpm, rpm2cpio, cpio, und kopieren Sie nach/lib/modules/kernel-XY /) Ich bemerkte Wenn Kernel src installiert ist, sind keine Kernel-Header erforderlich.Kompilieren des Kernel-Moduls - welche Pakete werden benötigt

kernel-devel wird benötigt ??, ich bin nicht sicher, dass es, wenn sie ohne Kernel-devel zu installieren versuchen, ich die folgende Ausnahme erhalten:

make[2]: Entering directory `/usr/src/kernels/3.10.0-693.el7.x86_64' 

    ERROR: Kernel configuration is invalid. 
     include/generated/autoconf.h or include/config/auto.conf are missing. 
     Run 'make oldconfig && make prepare' on kernel src to fix it. 
    WARNING: Symbol version dump ./Module.symvers 
      is missing; modules will have no dependencies and modversions. 

Was bin ich? Wenn ich kernel-devel installiere, bekomme ich diese Ausnahme nicht, ich möchte kernel-devel nicht installieren.

+0

„Im in den Prozess der Schaffung einer "Build-Maschine", die auf verfügbare neueste Kernel überprüfen wird, lade notwendige Pakete herunter und kompiliere das Kernelmodul für diesen Kernel. " - Laden Sie nicht die Quellen herunter und machen Sie einfach eine Marke? Ich meine, dass sollte Ihre Build-Struktur –

+0

bei der Verwendung von yum installieren Kernel oder kernel-devel konfigurieren, kompiliert es die Build-Struktur? – ilansch

+1

hast du eigentlich die Fehlermeldung gelesen ?? Es sagt dir, was falsch ist. –

Antwort

3

Bevor Sie den Kernel make ausführen können, müssen Sie make oldconfig ausführen oder eine .config-Datei in den Build-Baum kopieren. make oldconfig verwendet dann die .config und aktualisiert sie zum neueren Kernel.

Sie haben auch andere Optionen:

ein einfaches make help | grep -i config im Kernel-Quellverzeichnis zeigt:

Configuration targets: 
    config  - Update current config utilising a line-oriented program 
    nconfig   - Update current config utilising a ncurses menu based 
    menuconfig  - Update current config utilising a menu based program 
    xconfig  - Update current config utilising a Qt based front-end 
    gconfig  - Update current config utilising a GTK+ based front-end 
    oldconfig - Update current config utilising a provided .config as base 
    localmodconfig - Update current config disabling modules not loaded 
    localyesconfig - Update current config converting local mods to core 
    silentoldconfig - Same as oldconfig, but quietly, additionally update deps 
    defconfig - New config with default from ARCH supplied defconfig 
    savedefconfig - Save current config as ./defconfig (minimal config) 
    allnoconfig  - New config where all options are answered with no 
    allyesconfig - New config where all options are accepted with yes 
    allmodconfig - New config selecting modules when possible 
    alldefconfig - New config with all symbols set to default 
    randconfig  - New config with random answer to all options 
    listnewconfig - List new options 
    olddefconfig - Same as silentoldconfig but sets new symbols to their 
    kvmconfig - Enable additional options for kvm guest kernel support 
    xenconfig  - Enable additional options for xen dom0 and guest kernel support 
    tinyconfig  - Configure the tiniest possible kernel 
    kselftest-merge - Merge all the config dependencies of kselftest to existing 
        .config. 
    configuration. This is e.g. useful to build with nit-picking config. 
    i386_defconfig   - Build for i386 
    x86_64_defconfig   - Build for x86_64 
    make O=dir [targets] Locate all output files in "dir", including .config 
Verwandte Themen