Dies ist eine alte Version des Dokuments!


Offloader auf Basis eines Raspberry PI 4B

Bild: Freifunk München Logo

Disclaimer: Die Anleitung ist nur für Leute, die sich bereits mit dem Thema Linux auseinander gesetzt haben oder sich intensiv damit beschäftigen wollen.

Mit dem Raspberry PI 4 ist es das erste Mal möglich, einen Offloader sinnvoll auf einem PI zu betreiben. Denn in dieser Version bietet der Ethernet Anschluss genug Durchsatz und die CPU ist leistungsfähig genug um eine ordentliche fastd Performance zu bieten.

Angeboten wird das PI in einer 1GB, 2GB und 4GB RAM Variante. Will man wirklich nur einen reinen Offloader ohne Zusatzfunktionen betreiben, reicht im Grunde die 1GB Version. Allerdings ist mehr RAM immer besser ;) und man weiß ja nicht, was man im Endefekt noch alles darauf betreiben will.

Nachdem es kein fertiges Gluon Image für das Raspberry PI 4B gibt im Moment, installieren wir erstmal strikt nach Anleitung das aktuelle Raspbian.

Außerdem ermöglicht uns der Einsatz von Raspbian, dass wir alle normalen Anwendungen wie Webserver, Chatserver oder den Unifi-Controller einfach installieren können.

Eine Anleitung dazu findet ihr auf der offiziellen Raspbian Seite.

Am Ende der Prozedur, empfiehlt es sich auf der Boot Partition einfach eine leere Datei mit dem Namen „ssh“ anzulegen. Das aktiviert den SSH Daemon und man kann bequem per Putty, OpenSSH oder sonstigen Clients remote auf das PI zugreifen.

Der Benutzername lautet „pi“ und das Passwort „raspberry“.

Nachdem ihr euch eingeloggt habt, wechseln wir zum Root User und laden das BATMAN Kernelmodul herunter. Das wird gebraucht um nachher das Routing innerhalb des Freifunknetzes zu übernehmen.

Am Besten schaut ihr vorher, welches die aktuelle BATMAN Version ist.

pi@raspberrypi:~ $ sudo su -
root@raspberrypi:~# cd /usr/src/
root@raspberrypi:/usr/src# wget https://downloads.open-mesh.org/batman/releases/batman-adv-2019.2/batman-adv-2019.2.tar.gz
root@raspberrypi:/usr/src# tar xzf batman-adv-2019.2.tar.gz

Nachdem das Kernelmodul manuell gebaut wird, wollen wir natürlich dass das auch Bestand hat, wenn ein Kernelupdate eingespielt wird. Dazu brauchen wir nun einige Pakete.

root@raspberrypi:/usr/src# apt update && apt install dkms raspberrypi-kernel-headers

Anschließend müssen wir auf Grund dessen, dass der Raspberry PI Kernel crosscompiled wurde die make Skripte neu generieren.

root@raspberrypi:/usr/src# cd linux-headers-$(uname -r)
root@raspberrypi:/usr/src/linux-headers-4.19.50-v7l+# make scripts

Es kann passieren, dass hier nach einiger Zeit mit der Fehlermeldung
„scripts/sortextable.c:31:10: fatal error: tools/be_byteshift.h: No such file or directory“
abgebrochen wird, das stellt aber kein Problem dar.

Nun nachdem die Vorbereitungen getroffen sind, zurück zu BATMAN. Und dem Anlegen der dkms.conf.

root@raspberrypi:/usr/src# cd linux-headers-$(uname -r)
root@raspberrypi:/usr/src/linux-headers-4.19.50-v7l+# cd ../batman-adv-2019.2/
root@raspberrypi:/usr/src/batman-adv-2019.2# vi dkms.conf

Der Inhalt der dkms.conf sieht wie folgt aus:

PACKAGE_NAME=batman-adv
PACKAGE_VERSION=2019.2

DEST_MODULE_LOCATION=/extra
BUILT_MODULE_NAME=batman-adv
BUILT_MODULE_LOCATION=net/batman-adv

MAKE="'make'"
CLEAN="'make' clean"

AUTOINSTALL="yes"

Die Datei speichern und schon sind wir bereit für das erste Mal bauen des Kernelmodules.

root@raspberrypi:/usr/src/batman-adv-2019.2# dkms add -m batman-adv -v 2019.2
root@raspberrypi:/usr/src/batman-adv-2019.2# dkms build -m batman-adv -v 2019.2
root@raspberrypi:/usr/src/batman-adv-2019.2# dkms install -m batman-adv -v 2019.2

Als nächstes müssen wir dafür sorgen, dass das Kernelmodul beim Boot auch geladen wird. Dazu müssen wir die Datei „/etc/modules-load.d/batman-adv.module.conf“ wie folgt anpassen.

root@raspberrypi:/usr/src/batman-adv-2019.2# vi /etc/modules-load.d/batman-adv.module.conf
#
# Load batman-adv module on system boot
#
batman-adv
dummy

Nun kann man entweder rebooten oder die Module manuell laden.

root@raspberrypi:/usr/src/batman-adv-2019.2# modprobe dummy batman_adv

Um BATMAN verwalten zu können müssen wir nun noch „batctl“ installieren.

root@raspberrypi:/usr/src/batman-adv-2019.2# apt install batctl

Dann überprüfen wir ob alles korrekt geladen ist.

root@raspberrypi:/usr/src/batman-adv-2019.2# batctl ra
Active routing protocol configuration:

Selected routing algorithm (used when next batX interface is created):
 => BATMAN_IV

Available routing algorithms:
 * BATMAN_IV
 * BATMAN_V

Nachdem wir BATMAN_V bei uns verwenden, sehen wir dass aktuell der falsche Routing Algorithmus ausgewählt ist. Das korrigieren einmal sofort manuell.

root@raspberrypi:/usr/src/batman-adv-2019.2# batctl ra BATMAN_V

Nun kommen wir zur Interface Konfiguration.

/etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:

auto eth0
iface eth0 inet dhcp

auto br-welt
iface br-welt inet dhcp
        bridge-ports bat-welt wlan0
        pre-up /usr/sbin/batctl ra BATMAN_V
        pre-up /sbin/ip link add dummy-welt type dummy
        pre-up /sbin/ip link set dummy-welt up
        pre-up /usr/sbin/batctl -m bat-welt if add dummy-welt
        pre-up /sbin/ip link set bat-welt up
  • knb/raspberry.1562319880.txt.gz
  • Zuletzt geändert: 2020/06/09 17:00
  • (Externe Bearbeitung)