Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
| software:linux:linux-kernel_kreuzkompilieren [2013-08-30 14:38] – kalberer | software:linux:linux-kernel_kreuzkompilieren [2014-10-06 09:53] (aktuell) – gelöscht graf |
|---|
| ====== Linux-Kernel kreuzkompilieren ====== | |
| Wird der Linux-Kernel aus den Quellen übersetzt, wo wird als Zielplattform automatisch die ausgewählt, auf der der Compiliervorgang ausgeführt wird. Compiliert man den Kernel auf einer einem normalen PC mit einer modernen Intel CPU, so wird ein x86-64 oder x86-32 Binary erstellt. Möchten wir aber den Kernel auf einem Embedded System mit einem PowerPC oder ARM Prozessor verwenden, so muss die Kernel-Build-Konfiguration entsprechend eingerichtet werden. Dazu ist eine sogenannte Cross-Toolchain notwendig. Dafür kann unter Debian-basierenden Systemen z.B. die Emdebian-Toolchain verwendet werden. | |
| |
| Nachfolgend sind die Befehle aufgelistet, die für einen solchen Cross-Build benötigt werden. In diesem Beispiel wird von der Emdebian Toolchain ausgegangen. Wie diese Cross-Toolchain installiert wird, ist [[.:emdebian:cross-toolchain|hier]] zu finden. | |
| |
| - gewünschten Kernel von http://kernel.org herunterladen und entpacken | |
| - Konsole öffnen und in den vorher entpackten Kernel-Sourcecode navigieren | |
| - 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 kompilieren bereitgestellt werden. <code>$ mv /path/to/my/config .config</code> Wobei //config// die bestehende Kernel-Config darstellt, die übernommen werden soll.\\ 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 aufrufen von <code>$ make menuconfig</code> | |
| - Kernel kreuzkompilieren für die gewünschte Architektur, zum Beispiel ARM: <code> make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-</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> | |