Heute zeige ich euch wie Ihr für x86 erstellte Software, zum Beispiel den TeamSpeak 3 Server, auf eurem Raspberry Pi ausführen könnt obwohl kein Paket für die Raspberry Pi Plattform (ARM) Verfügbar ist.
In der Computer Welt gibt es verschiedene Prozessor-Familien, die verbreitetste ist die Familie der x86 Prozessoren die Ihr vermutlich von eurem Desktop Rechner kennt. Der Raspberry Pi verwendet allerdings eine ARM CPU und somit auch den ARM-Befehlssatz.
Da sich die Befehlssätze zwischen x86 und ARM unterscheiden kann nicht einfach ein für x86 erstelltes Programm auf einer CPU mit ARM Befehlssatz ausgeführt werden. Es ist immer eine passende „Übersetzung“ eines Programms für den jeweilige Befehlssatz notwendig. Viele Softwarehersteller sparen sich den Aufwand Ihre Programme für ARM bereitzustellen und zu pflegen, wenn der Programmcode nicht öffentlich verfügbar hat man bisher Pech gehabt.
Inhaltsverzeichnis
x86 Emulation mit Exagear Desktop
Mittlerweile gibt es aber eine Lösung x86 Programme auf der ARM CPU des Raspberry Pi auszuführen, die Firma Eltechs stellt einen passenden Emulator bereit um Software, welche nur für x86 verfügbar ist, auf eurem Raspberry Pi auszuführen. In unserem speziellen Fall benutzen wir WINE (Emulator für Windows unter Linux) und eine beliebige Windows Software.
Bei der Emulation eines „fremden“ Befehlssatzes ist, wie es sich schon vermuten lässt, zusätzlicher Rechenaufwand notwendig daher laufen emulierte x86 Anwendungen auf dem Raspberry Pi nicht ganz so schnell wie auf einer CPU mit nativer x86 Unterstützung.
Der Emulator kann leider keine Kernel-Module (Treiber für spezielle Geräte) oder Grafikanwendungen die auf die RasPi Grafikeinheit zurückgreifen nur schlecht Emulieren, für einfache 32Bit x86 Anwendungen ohne aufwändige Grafikausgabe ist Exagear Desktop aber bestens geeignet. Wie das genau funktioniert zeige ich euch jetzt.
Programme mit Exagear Desktop ausführen
Als Basis für meinen Server verwende ich das aktuelle Raspbian Image auf meinem Raspberry Pi mit folgendem Setup.
- Einen Raspberry Pi 3
- Ein Standard Micro USB Netzteil
- Ein einfaches Gehäuse für den Pi
- Eine 32GB Micro SD Karte
- Ein Ethernet Kabel
- Die Exagear Desktop Software
Nach der Grundeinrichtung des Raspberry Pi 3 aktualisiere ich als erstes das System.
1 2 |
sudo apt-get update && sudo apt-get -y upgrade sudo rpi-update |
Wer möchte kann nun seinen RasPi 3 übertakten um mehr Leistung zu erhalten.
Danach können wir direkt die Exagear Desktop Software installieren, hierzu laden wir uns diese runter.
1 2 |
cd ~/Downloads/ wget http://downloads.eltechs.com/exagear-desktop-v-1-5/exagear-desktop-rpi3.tar.gz |
Übertragt eure persönliche Lizenzdatei (xyz.key) mit WinSCP in euren Downloads Ordner (/home/Pi/Downloads/), sonst läuft die Installation nicht komplett durch und ihr erhaltet einen Fehler.
Entpacken die Software und installiert diese
1 |
tar -xvzpf exagear-desktop-rpi3.tar.gz |
Zur Installation von Exagear Desktop führen wir das passende Script aus
1 |
sudo ./install-exagear.sh |
Nach der Installation wechseln wir in die Exagear x86 Emulations-Umgebung (ein simpler „arch“ Befehl verrät das wir uns in einer x86 Umgebung befinden). Innerhalb dieser Umgebung können nun x86 Anwendungen installiert und ausgeführt werden.
1 |
exagear |
Ein Update der Paket Liste ist notwendig da wir uns ja jetzt in einer x86 Umgebung befinden und andere Pakete benötigt werden
1 |
sudo apt-get update |
Wer möchte kann sich nun mit folgendem Befehl alle verfügbaren Pakete anzeigen lassen. Die Pakete kommen von Launchpad und Debian.
1 |
sudo apt-cache search . |
Teamspeak 3 Server auf dem Raspberry Pi installieren
Nachdem wir nun unsere Laufzeitumgebung fertig haben können wir uns der Installation von Teamspeak 3 in der Server Variante auf unserem Raspberry Pi widmen.
Wechselt wieder in die Exagear Umgebung. Wir erstellen uns einen neuen Benutzer „teamspeak“ unter welchem der Teamspeak Server später laufen soll, das ist aus Sicherheitsgründen wichtig. Vergebt ein sicheres Passwort!
1 |
sudo adduser teamspeak |
Dann erstellen wir das Installationsverzeichnis für TS3 und geben dem erstellten Benutzer Rechte darauf (Change Owner)
1 2 |
sudo mkdir /usr/local/teamspeak sudo chown teamspeak /usr/local/teamspeak |
Wir installieren uns noch bzip und den Editor Nano um den Server entpacken und konfigurieren zu können
1 |
sudo apt-get install bzip2 nano |
Nun melden wir uns mit dem Teamspeak Benutzer an und starten den Download / Installation des Servers. Prüft bitte vorab ob nicht eine neuere TS Version verfügbar ist und passt den wget / tar / rm Befehl entsprechend an.
1 2 3 4 5 6 |
su teamspeak cd /usr/local/teamspeak wget http://dl.4players.de/ts/releases/3.0.13.5/teamspeak3-server_linux_x86-3.0.13.5.tar.bz2 tar -xjvf teamspeak3-server_linux_x86-3.0.13.5.tar.bz2 rm teamspeak3-server_linux_x86-3.0.13.5.tar.bz2 |
Nun erstellen wir uns noch ein Start-Script für den Teamspeak Server, zum Glück kann Exagear eingerichtet Autostarts innerhalb der Umgebung erkennen und startet diese direkt beim Neustart des Pi mit ohne in die Exagear Umgebung wechseln zu müssen.
Wir wechseln wieder auf unseren Pi Benutzer, bleiben aber innerhalb der Exagear Umgebung
1 |
exit |
Dann erstellen wir eine Autostart Datei mit dem Editor Nano
1 |
sudo nano /etc/init.d/teamspeak |
Die Datei erhält folgenden Inhalt via Copy und Paste.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#!/bin/sh ### BEGIN INIT INFO # Provides: teamspeak # Required-Start: $local_fs $network # Required-Stop: $local_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Teamspeak Server ### END INIT INFO USER="teamspeak" DIR="/usr/local/teamspeak/teamspeak3-server_linux_x86" case "$1" in start) su $USER -c "${DIR}/ts3server_startscript.sh start" ;; stop) su $USER -c "${DIR}/ts3server_startscript.sh stop" ;; restart) su $USER -c "${DIR}/ts3server_startscript.sh restart" ;; status) su $USER -c "${DIR}/ts3server_startscript.sh status" ;; *) echo "Usage: {start|stop|restart|status}" >&2 exit 1 ;; esac exit 0 |
Speichert die Datei mit STRG+X, Y und Enter. Das Script müssen wir noch ausführbar machen und an Init.d übergeben
1 2 |
sudo chmod 755 /etc/init.d/teamspeak sudo update-rc.d teamspeak defaults |
Jetzt könnt ihr ganz einfach starten / stoppen, neustarten und den Status abfragen. Wir starten nun den TS3 Server das erste mal.
1 |
/etc/init.d/teamspeak start |
WICHTIG! Beim ersten Start legt uns der Server zum glück direkt einen Server-Admin Account samt Security Token an. Kopiert euch diese Info!
Beendet den Dialog mit STRG+C, die Grundeinrichtung ist abgeschlossen, wir verlassen nun erst mal die Exagear Umgebung und rebooten unseren Pi.
1 2 |
exit sudo reboot |
Teamspeak 3 Server einrichten
Ladet euch den TeamSpeak Client auf euren Rechner. Klickt auf Verbindungen und gebt die IP-Adresse eures Pis als Server an und den Benutzer serveradmin mit dem eben notierten Passwort.
Teamspeak fordert euch auf den ebenfalls vorher kopierten Key einzutragen, klickt dann auf Okay.
Nun könnt ihr euren Server nach euren Wünschen konfigurieren, Passwörter setzen und Channels erstellen. Klickt hierzu auf den Server Rechts und wählt „virtuellen Server editieren“.
TeamSpeak Server über das Internet erreichbar machen
Was nützt euch ein TeamSpeak Server wenn dieser nicht über das Internet für Freunde erreichbar ist? Richtig, nichts! Um auf einen TeamSpeak Server via Internet verbinden zu können muss der Netzwerk-Port 9987 für das Protokoll UDP freigeschalten werden. Zusätzlich wird ein DynDNS benötigt sodass der Server via Internet immer über den selben Namen erreichbar ist, also zum Beispiel meints3.dyndns.de
- Falls ihr einen DS-Lite (IPv6) Anschluss besitzt findet ihr hier eine Anleitung zum Einrichten von DynDNS und Port Forwarding
- Falls ihr noch einen normalen IPv4 Anschluss besitzt könnt ihr DynDNS wie beschrieben einrichten und nur eine Port Weiterleitung an eurem Router konfigurieren
Beliebte x86 Software auf dem Raspberry Pi
Eltechs bezeichnet die Software übrigens als „application-level virtual machine“, ich bevorzuge aber lieber den Begriff „Emulator“, da für mich eine virtuelle Maschine in der Lage sein muss alle Hardware zu virtualisieren was im Falle von Exagear Desktop nicht gut funktioniert. Folgende Software wird gerne via Exagear auf dem Raspberry Pi ausgeführt:
- Spotify Connect
- Google Chrome
- Dropbox
- Teamviewer
- Plex Media Server
- WINE zum Ausführen von Windows Programmen (z.B. Skype)