Listing 3 zeigt das entsprechende U-Boot-Skript boot.txt dafür, das mithilfe des Programms Mkimage aus dem Paket u-boot-utils einen U-Boot-Header erhält (Listing 4). Haben Sie alles so weit vorbereitet, hängen Sie die beiden Partitionen wieder aus und halten nun ein voll funktionsfähiges System in der Hand.
Der U-Boot-Bootloader lässt sich übrigens ähnlich leicht als 64-Bit-Variante generieren wie der Kernel. Dazu holen Sie per Git den Quellcode auf die heimische Maschine, setzen die Generierungsvariablen ARCH und CROSS_COMPILE, konfigurieren U-Boot für den Raspberry Pi 3 und lassen das Boot schließlich per Make vom Stapel.
Listing 3
fatload mmc 0:1 ${fdt_addr_r} bcm2710-rpi-3-b.dtb
fatload mmc 0:1 ${kernel_addr_r} Image.4.8
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw
booti ${kernel_addr_r} - ${fdt_addr_r}
Listing 4
$ sudo su # cd /usr/src/arm/linux // Kernel und Device Tree installieren # cp arch/arm64/boot/Image /media/quade/A828-120E/Image.4.8 # cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /media/quade/A828-120E/ // Kernel-Module installieren # make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 \ INSTALL_MOD_PATH=/media/quade/efcb352e-67ea-4eea-9ba4-205be4000670/ \ modules_install // U-Boot-Skript anlegen # cd /media/quade/A828-120E # vim boot.txt //Bootloader-Skript generieren # apt-get install u-boot-tools # mkimage -A arm64 -O linux -T script -C none -d boot.txt boot.scr.uimg
Nach dem Generieren findet sich im Quellcodeverzeichnis des Bootloaders unter anderem die Datei u-boot.bin, die das fertige 64-Bit-Executable darstellt. Zur Installation kopieren Sie die Datei auf die Boot-Partition der Micro-SD-Karte (siehe Tabelle “Startdateien auf der Boot-Partition”). Außerdem müssen Sie die Datei config.txt anpassen (Listing 5), die in der vorhandenen Version u-boot-stubbed.bin lädt. Die Kommandos dazu führt Listing 6 auf.
Wer seinen Raspberry Pi dauerhaft mit dem 64 Bit laufen lassen will, muss sich Gedanken machen, wie er den ab und zu anfallenden Kernel-Patches Geltung verschafft. Steht die hier beschriebene Build-Chain, geht das zum Glück einigermaßen simpel, indem der Raspi-Besitzer bei einem anstehenden Update das erwähnte Repository mit git pull anzapft und den Kernel neu crosskompiliert.
Startdateien auf der Boot-Partition
|
Datei |
Bedeutung |
|---|---|
|
|
Original-Raspberry-Bootloader |
|
|
siehe Listing 5 |
|
|
Device Tree |
|
|
64-Bit-Kernel 4.5 |
|
|
64-Bit-Kernel 4.8 |
|
|
Bootloader-Skript zum Laden von Kernel und Device Tree |
|
|
64-Bit-Bootloader |
Listing 5
# config.txt enable_uart=1 # CPU in den 64-Bit-Modus schalten: arm_control=0x200 kernel_old=1 #kernel=uboot-stubbed.bin # Selbst generierter Bootloader: kernel=u-boot.bin disable_commandline_tags=1 # set display Mode to 1920x1080 #hdmi_group=2 #hdmi_mode=82
Listing 6
# export CROSS_COMPILE=aarch64-linux-gnu- # export ARCH=arm64 # git clone git://git.denx.de/u-boot.git # cd u-boot # make rpi_3_defconfig # make # cp u-boot.bin /media/quade/A828-120E/ # vi /media/quade/A828-120E/config.txt [... siehe Listing 5 ...]
Erfahrungen und Fazit
Der Raspberry Pi 3 im nicht vorgesehenen 64-Bit-Modus fühlt sich im ersten Testbetrieb gut an und agiert auf der Kommandozeile sehr flüssig. Abseits des subjektiven Eindrucks zeigen aber einige (ebenso einfache wie nicht repräsentative und ohne Optimierung erfolgte) Benchmarks keine Geschwindigkeitsvorteile. Das ist zwar einerseits bedauerlich, entspricht aber andererseits der ursprünglichen Annahme.
Dennoch erscheint der 64-Bit-Betrieb des neuesten Raspberry Pi sinnvoll – und zwar nicht nur für Admins, die sich an falschen Meldungen (ARMv7 anstelle von ARMv8) stören, sondern auch für Software-Entwickler, die die Funktionstüchtigkeit einer Applikation auf einer 64-Bit-Architektur testen wollen. Rückwärtskompatibilität hin, wenig Speicher her: Irgendwann wird auch die Foundation ein eigenes 64-Bit-System präsentieren, möglicherweise aber erst für den Raspberry Pi 5.
Die Autoren
Eva-Katharina Kunst ist seit den Anfängen von Linux Fan von Open Source. Jürgen Quade, Professor an der Hochschule Niederrhein, hat mit “Embedded Linux lernen mit dem Raspberry Pi” 2014 sein drittes Linux-Buch veröffentlicht. Das gemeinsame Werk “Linux-Treiber entwickeln” erschien jüngst in vierter Auflage.
Glossar
- SIMD
-
Single Instruction, Multiple Data. Schnelle Ausführung gleichartiger Rechenoperationen auf mehrere gleichzeitig zur Verfügung stehende Eingangsdatenströme. SIMD kommt vorwiegend beim Verarbeiten von Multimediadaten zum Einsatz.
Infos
- “Booting AArch64 Linux”: http://lxr.free-electrons.com/source/Documentation/arm64/booting.txt
- Device Tree: Jürgen Quade, Eva-Katharina Kunst, “Kern-Technik – Folge 68”, LM 06/2013, S. 76, http://www.linux-magazin.de/Ausgaben/2013/06/Kern-Technik
- Debootstrap: https://wiki.debian.org/de/Debootstrap
- Vorbereitetes 64-Bit-Image für den RasPi 3: http://www.tom-yam.or.jp/rpi3/rpi3-arm64-debian-20160414.img.xz
- Kernel für den Raspberry Pi: Jürgen Quade, Eva-Katharina Kunst, “Kern-Technik – Folge 69”, LM 08/2013, S. 86, http://www.linux-magazin.de/Ausgaben/2013/08/Kern-Technik
- U-Boot: Jürgen Quade, Eva-Katharina Kunst, “Kern-Technik – Folge 71”, LM 12/2013, S. 90, http://www.linux-magazin.de/Ausgaben/2013/12/Kern-Technik





