Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision |
software:linux:linux-kernel_crosscompilieren [2014-10-06 10:47] – graf | software:linux:linux-kernel_crosscompilieren [2015-01-06 15:11] – graf |
---|
- 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>mv /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. \\ 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 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> |