Banana Pi Arch Linux Kernel Update

Der Einplatinencomputer „Banana Pi“ ist eine Alternative zum bekannteren und weiter verbreiteten „Raspberry Pi“. Allerdings hat der Banana Pi auch ein paar Vorteile. Dazu gehören unter anderem der SATA Anschluss, um eine Festplatte anzuschließen. Darauf lässt sich dann das Betriebssystem installieren um die Gesamtperformance zu erhöhen. Allerdings ist der Comunity Support nicht so groß wie beim Raspberry Pi. Dies merkt man z.B. auch beim Kernel. Standardmäßig bekommt man für den Banana Pi die Version „3.4.103“, die nicht mehr wirklich aktuell ist. Entweder man kompiliert sich jetzt seinen eigenen Kernel für den Banana Pi oder man greift auf den Arch Linux ARM Kernel kurz „ALARM“ zurück.


Der User „danboid“ hat hierfür einen Beitrag im Lemaker Forum geschrieben, der als Grundlage für diesen Artikel dient. Beim mir kommt der BPI als reiner Headless Server zum Einsatz. Ich bin also nicht auf Sound und Grafik angewiesen. Vor der Aktion empfiehlt sich, ein komplettes Image zu erzeugen, um im Problemfall schnell wieder auf die alte Version zurückkehren zu können. Unter Linux kann das Image schnell und einfach mit Partclone erzeugt werden. Klick
Um die später benötigte „boot.scr“ Datei mit „mkimage“ zu erstellen, müssen die „uboot-tools“ installiert werden.

sudo pacman -S uboot-tools

Danach kann auch direkt der Arch Linux ARM Kernel installiert werden. Pacman meldet sich, falls bestehende nicht mehr benötigte Pakete entfernt werden sollen.

sudo pacman -S linux-armv7

Jetzt müssen alle Komponenten, die für den Start des Banana Pi zuständig sind, angepasst werden. Dazu wird die SD Karte gemountet, damit die Inhalte bearbeitet werden können.

sudo mount /dev/mmcblk0p1 /mnt

Das Kernel Image und die richtige Device Tree Datei müssen kopiert werden.

sudo cp /boot/zImage /boot/dtbs/sun7i-a20-bananapi.dtb /mnt

Jetzt wird eine Datei „boot.cmd“ erzeugt, die später mit mkimage umgewandelt wird.

sudo nano /mnt/boot.cmd

Im Originalbeitrag wird das System nur im Read Only Modus gestartet. Wer auch Schreibzugrif haben möchte, muss den Parameter „rw“ hinzufügen.

setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait panic=10
load mmc 0:1 0x43000000 ${fdtfile} || load mmc 0:1 0x43000000 boot/${fdtfile}
load mmc 0:1 0x42000000 zImage || load mmc 0:1 0x42000000 boot/zImage
bootz 0x42000000 – 0x43000000

Sollte das Linux auf einer Festplatte liegen, die per SATA angeschlossen ist, muss der root Pfad angepasst werden.

setenv bootargs console=ttyS0,115200 root=/dev/sda1 rw rootwait panic=10
load mmc 0:1 0x43000000 ${fdtfile} || load mmc 0:1 0x43000000 boot/${fdtfile}
load mmc 0:1 0x42000000 zImage || load mmc 0:1 0x42000000 boot/zImage
bootz 0x42000000 – 0x43000000

Aus der Datei „boot.cmd“ wird jetzt die Datei „boot.scr“ erzeugt.

cd /mnt
sudo mkimage -C none -A arm -T script -d boot.cmd boot.scr

Jetzt muss noch ein aktuellerer Bootloader hinzugefügt werden, da die standardmäßige u-boot Version aus dem Arch Linux Image zu alt ist. Die aktuellste Version ist hier zu bekommen: Klick Wer einen Banana Pro einsetzt, muss sich auch die dafür entsprechende Datei holen. Der folgende Befehl lädt die u-boot Version für einen Banana Pi.

cd ~/
wget http://dl.linux-sunxi.org/nightly/u-boot-sunxi/u-boot-sunxi-mainline/u-boot-sunxi-mainline-latest/u-boot-sunxi-mainline-bananapi.tar.xz

Das Archiv wird jetzt entpackt.

tar xvf u-boot-sunxi-mainline-bananapi.tar.xz

Je nach Versionsstand muss der Verzeichnisname gewählt werden.

cd u-boot-sunxi-mainline-bananapi-VERSION

Das u-boot Image wird direkt auf die SD-Karte geschrieben.

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8

Jetzt ist der Kernel Update Prozess abgeschlossen. Nach einem Reboot sollte sich der neue Kernel präsentieren. Dies lässt sich mit folgendem Befehl abfragen.

uname -r

Arch Linux ARM ALARM Kernel

Das Kernel Update läuft ab jetzt automatisch, falls ein neuerer Kernel zur Verfügung gestellt wird. Dies kann jedoch zu Problemen führen, da die dazu gehörigen Device Tree Dateien nicht automatisch auf der SD Karte aktualisiert werden. Hier ist noch ein weiterer manueller Schritt erforderlich. Damit der Kernel jetzt nicht automatisch aktualisiert wird, lässt sich das Paket auf die Liste der zu ignorierenden Pakete setzen.

sudo nano /etc/pacman.conf

Hier wird bei der Zeile „IgnorePkg“ das „linux-armv7“ Paket hinzugefügt. Wichtig ist, dass die Zeile nicht auskommentiert sein darf. Ansonsten wird der Eintrag nicht berücksichtigt.

Arch Linux ARM ALARM Kernel

Im Updateprozess zeigt Pacman jetzt an, falls eine neue Version verfügbar ist, installiert diese aber nicht mehr automatisch. Dies kann jetzt manuell erledigt werden.

sudo pacman -S linux-armv7

Arch Linux ARM ALARM Kernel

Jetzt müssen noch die aktuelleren Dateien eingesetzt werden.

sudo mount /dev/mmcblk0p1 /mnt
sudo cp /boot/zImage /boot/dtbs/sun7i-a20-bananapi.dtb /mnt

Das wars auch schon mit dem manuellen Aufwand, damit das zukünftige Kernel Update sauber funktioniert. Ab jetzt lässt sich immer der aktuellste Kernel auf einem Banana Pi unter Arch Linux verwenden. Wer zusätzlich noch Sound und Grafik benötigt, muss diese Variante testen, ob auch wirklich alles funktioniert. Ich habe das nie probiert und kann daher nicht sagen, ob alles ordnungsgemäß funktioniert. Mein Headless System läuft jetzt schon ein paar Wochen mit dem ALARM Kernel ohne Probleme. Für weitere Fragen oder Anregungen stehen die Kommentare zur Verfügung.

Quelle: http://forum.lemaker.org/forum.php?mod=viewthread&tid=22694&extra=page%3D1