Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
software:linux:linux-kernel_crosscompilieren [2014-10-08 12:56] kalberersoftware:linux:linux-kernel_crosscompilieren [2015-01-06 15:11] graf
Zeile 7: Zeile 7:
   - Konsole öffnen und in den vorher entpackten Kernel-Sourcecode navigieren   - Konsole öffnen und in den vorher entpackten Kernel-Sourcecode navigieren
   - Im Hauptverzeichnis des Kernels ausführen von: <code>make clean </code>   - Im Hauptverzeichnis des Kernels ausführen von: <code>make clean </code>
-  - Falls schon eine Kernel-Config besteht, kann diese übernommen werden und für das nachfolgende Compilieren bereitgestellt werden. <code>cp /path/to/my/config .config</code> Wobei //.config// die bestehende Kernel-Config darstellt, die übernommen werden soll. Häufig ist gibt es ein Makefile-Target, das eine bestehende Konfiguration in einem Verzeichnis (z.B. in //arch/powerpc/configs/xxx//) kopiert. Dazu muss aber zuerst, wie weiter unten beschrieben, die gewünschte Architektur definiert werden.\\ Wenn noch keine Kernel-Config vorhanden ist, muss diese erstellt werden. Dabei ist auszuwählen, was alles an Treibern und Subsystemen in den Kernel aufgenommen werden soll. Dies geschieht durch den Aufruf von <code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig</code> Auch eine bestehende oder übernommende Konfiguration kann so kontrolliert  oder angepasst werden.+  - Falls schon eine Kernel-Config besteht, kann diese übernommen werden und für das nachfolgende Compilieren bereitgestellt werden. <code>cp /path/to/my/config .config</code> Wobei //.config// die bestehende Kernel-Config darstellt, die übernommen werden soll. Häufig ist gibt es ein Makefile-Target, das eine bestehende Konfiguration in einem Verzeichnis (z.B. in //arch/powerpc/configs/xxx//) kopiert. Dazu muss aber zuerst, wie weiter unten beschrieben, die gewünschte Architektur definiert werden.\\ Wenn noch keine Kernel-Config vorhanden ist, muss diese erstellt werden. Dabei ist auszuwählen, was alles an Treibern und Subsystemen in den Kernel aufgenommen werden soll. Dies geschieht durch den Aufruf von <code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig</code> Ist noch keine Konfiguration vorhanden, kann auch mit der Default-Konfiguration gestartet werden. <code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- defconfig</code> Häufig wird eine ältere Konfiguration auch für einen neuen Kernel verwendet. Der neue Kernel hat dann neue Optionen. <code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- oldconfig</code> Dieser Befehl fragt nur die neuen Optionen ab und speichert das Resultat auch wieder in ''.config'' ab.
   - Kernel crosscompilieren für die gewünschte Fremdarchitektur und den gewünschten Crosscompiler, zum Beispiel ARM: <code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-</code> Alternativ können auch vor dem Aufruf von make die notwendigen Variablen definiert werden mit (hier am Beispiel für eine PPC-Architektur) <code>export ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-</code>    - Kernel crosscompilieren für die gewünschte Fremdarchitektur und den gewünschten Crosscompiler, zum Beispiel ARM: <code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-</code> Alternativ können auch vor dem Aufruf von make die notwendigen Variablen definiert werden mit (hier am Beispiel für eine PPC-Architektur) <code>export ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-</code> 
   - Das erstellte Image ist dann anschliessend im Architektur-Verzeichnis als //Image//, //zImage// oder //uImage// zu finden, in diesem Falle unter ARM: <code>KERNELDIR/arch/arm/boot</code>   - Das erstellte Image ist dann anschliessend im Architektur-Verzeichnis als //Image//, //zImage// oder //uImage// zu finden, in diesem Falle unter ARM: <code>KERNELDIR/arch/arm/boot</code>