Dies ist eine alte Version des Dokuments!
Offloader auf Basis eines Raspberry PI 4B
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