Quellen finden und selber einen Kernel bauen
Spannend wird es, einen eigenen, aktuellen 64-Bit-Kernel zu kompilieren. Auf dem Raspberry Pi 3 selbst ist das ein zeitraubender Vorgang. Schneller geht es als Cross-Entwicklung von einem PC aus. Auf einem aktuellen Ubuntu sind die dazu benötigten Cross-Entwicklungswerkzeuge als Paket gcc-aarch64-linux-gnu problemlos zu installieren.
Der Quellcode des Linux-Kernels ist ohnehin fürs Cross-Übersetzen vorbereitet. Dafür nötig sind die Kernelquellen aus dem Raspberry-Pi-Archiv, die sich zwar nur wenig vom Vanilla-Linux-Kernel unterscheiden, aber der Garant fürs fehlerfreie Übersetzen sind. Insbesondere bringt das Archiv der Foundation die für 64 Bit benötigte Standard-Konfiguration bcmrpi3_defconfig mit, die dem Original noch fehlt. Der Quellcode selbst lässt sich beispielsweise im Verzeichnisbaum mit Hilfe von Git ablegen. Das Git-Archiv enthält alle Kernelversionen, sodass der Entwickler noch lokal die aktuelle Kernel-Version 4.8 auschecken muss.
Ist der Kernel ausgecheckt, kann es losgehen. Als Erstes sind zwei Environment-Variablen zu setzen, die das Kernel-Buildsystem anweisen, nicht den Hostcompiler gcc, sondern eben den Crosscompiler aarch64-linux-gnu-gcc zu verwenden. Vor dem Start der Generierung ist der Kernel für den Raspberry Pi 3 zu konfigurieren. Ein make -j 4 Image dtbs modules startet den Build. Die Option -j 4 erlaubt es, Make bis zu vier Prozesse parallel laufen zu lassen, oder wahlweise eben auch mehr.
Das Übersetzen des Kernels, der Module und des Device Tree kann schon mal - abhängig von der eingesetzten Hardware - ein Stündchen dauern. Die genauen Kommandos vom Download des Quellcodes bis zum Generieren aller Komponenten sind im Folgenden mit Kommentaren versehen zusammengefasst.
# Cross-Compiler in Ubuntu installieren # sudo apt install gcc-aarch64-linux-gnu # Kernelquellcode fuer den Raspberry Pi downloaden # mkdir -p arm/ cd arm git clone https://github.com/raspberrypi/linux.git cd linux # im Git-Archiv vorhandene Versionen anzeigen # und eine aktuelle Version auschecken git branch -a git checkout rpi-4.8.y # Cross-Generierung des Kernels # export CROSS_COMPILE=aarch64-linux-gnu- export ARCH=arm64 make bcmrpi3_defconfig make -j 4 Image dtbs modules
Die Installation von Kernel, Modulen und Device Tree wird etwas komplizierter. Als Grundlage nimmt diese Anleitung eine mit dem vorgestellten Image präparierte Micro-SD-Karte an, die in den Entwicklungsrechner gesteckt wird. Ein auf dem Entwicklungs-PC laufendes Ubuntu wird die beiden Partitionen der Karte Boot und Root automatisch unterhalb von /media/$Username/ einhängen.
Zum Einspielen des eigenen Kernels bieten sich zwei Möglichkeiten an: Die Variante für Ungeduldige und die professionelle Variante. Ungeduldige kopieren nur den selbst kompilierten Kernel arch/arm64/boot/Image auf die Bootpartition. Das auf der Bootpartition befindliche U-Boot-Skript erwartet ihn nämlich dort unter dem Namen Image, sodass keine Änderung der Konfiguration notwendig ist. Wer auf Nummer sicher gehen will, rettet den auf der SD-Karte unter gleichem Namen liegenden 64-Bit-Kernel, bevor er ihn mit dem eigenen Kernel überschreibt. Für einen ersten Test eignet sich der auf der SD-Karte ebenfalls schon vorhandene Device Tree. Nach dem Kopieren des Kernels wird die SD-Karte ausgehängt und in den Raspberry Pi gesteckt. Mit Strom versorgt sollte dieser nun den selbst generierten Kernel starten.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
| Willkommen im U-Boot und Geräte-Baum | Profis konfigurieren U-Boot |










Guten Abend, das Ergebnis von : export CROSS_COMPILE=aarch64-linux-gnu- export ARCH...
dem direkt verlinkten image? Beim Klick darauf wird direkt de download gestartet. dabei...
Man kann auch einfach SUSE Linux Enterprise for Pi3 nehmen https://www.suse.com...
Erinnert mich an die Probleme mit Android. Könnte Android (theoretisch) auch Device Tree...