Systemd Service zum herstellen einer Internetverbindung über den USB-OTG Port.
Tobias Müller 01e3c96f5c README.md: Hinzufügen der Dateibeschreibungen | 6 gadi atpakaļ | |
---|---|---|
Internet_over_USB.service | 6 gadi atpakaļ | |
README.md | 6 gadi atpakaļ | |
install.sh | 6 gadi atpakaļ |
📜 Inhaltsverzeichnis
Hinweis: Wenn Sie dieses Repository downloaden möchten, können Sie es direkt als ZIP-Datei herunterladen, oder mit Hilfe des Git-Repository-Links auf Ihren Rechner bzw. BBB klonen.
☁ Git-Repository-Link: http://es-lab.de:60085/tmueller/BBB_Internet_over_USB_Service
❓ 1. Einleitung
Bei dem Programm handelt es sich um ein Systemd-Service für das BeagleBone Black, dass bei Systemstart den USB-Host-Anschluss für eine Internetverbindung vorbereitet. Für die Installation des Services steht ein Installationssktipt zur Verfügung.
Des Weiterem wird die Einrichtung der Internetverbindung über USB am Host-PC für Windows und Linux erklärt.
📝 2. Skripte
In den folgenden Abschnitten wird die Funktion der Skripte „Internet_over_USB.service“ und „install.sh“ erklärt.
Der "Internet_over_USB"-Service wird automatisch bei jedem Neustart des BeagleBone Black ausgeführt und ermöglicht den Aufbau einer Internetverbindung über den USB-Host-Anschluss des BeagleBone Black. Das Install-Sktipt dient zur Installation des Services. Der Service wird von systemd, einem System und Servicemanager, verwaltet und gestartet. Nach der Installation darf der Speicherort der Service-Datei nicht verändert werden, da sonst der Service nicht mehr korrekt ausgeführt wird. Soll dennoch der Speicherort der Service-Datei geändert werden muss im Anschluss das Insatllationsskript erneut ausgeführt werden.
Die "Internet_over_USB.service"-Datei enthält den folgenden Quellcode:
# Autor: Tobias Müller
# Beschreibung: Dieser Systemd-Service ermöglicht das Herstellen
# einer Internetverbindung über den USB-Host-Anschluss.
[Unit]
# Kurze Beschreibung des Services
Description=Internet über USB
# Service wird nach dem "Network Target" gestartet
After=network.target
[Service]
# Setze Service-Typ auf Simple -> Main-Process
Type=simple
# Starte den Service mit Root-Rechten
User=root
# Starte den Service bei einem Fehler nach 1s für max. 10 Versuche
# innerhalb von 15s neu
Restart=on-failure
RestartSec=1
StartLimitBurst=10
StartLimitInterval=15
# Füge als erstes die IP-Adresse der USB-Host-Schnittstelle als
# Gateway hinzu
ExecStartPre=/bin/sh -c "/sbin/route add default gw 192.168.7.1"
# Füge danach die Google-IP-Adresse als DNS hinzu
ExecStart=/bin/sh -c "echo \"nameserver 8.8.8.8\" >> /etc/resolv.conf"
# Deaktiviere Service, wenn der Prozess beendet wurde
RemainAfterExit=no
[Install]
# Aktiviere und starte den Service für Mehrbenutzersystem, mit
# oder ohne grafische Anmeldung
WantedBy=multi-user.targe
Die „install.sh“-Datei dient zum Installieren der „Internet_over_USB“-Service-Datei. Das Installationsskript muss mit Root-Rechten gestartet werden, da symbolische Verknüpfungen im System angelegt werden. Des Weiteren muss die Service-Datei sich im selben Ordner befinden, wie das Installationsskript.
Die „install.sh“-Datei enthält den folgenden Quellcode:
#!/bin/bash
#
# Autor: Tobias Müller
# Beschreibung: Dieses Skript installiert den "Internet_over_USB" Service.
# Der Service wird automatisch bei jedem Neustart des
# BeagleBone Black ausgeführt und ermöglicht den Aufbau einer
# Internetverbindung über den USB-Host-Anschluss des BeagleBone
# Black. Das Install-Sktipt muss mit Root-Rechten gestartet
# werden.
#
# Sollte sich der Speicherort der "Internet_over_USB.service"
# Datei ändern, muss dieses Skript erneut gestartet werden.
# Dabei muss sich das "install.sh" Skript im selben Ordner
# befinden, wie die "Internet_over_USB.service" Datei.
# Bash-Fenster leeren
clear
# Kontrolle ob Skript mit Root-Rechten gestartet wurde, ansonsten wird
# das Skript mit einem Hinweis beendet
if [ $(id -u) != 0 ]; then
echo ""
echo "Das Skript muss mit Root-Rechten gestartet werden!"
echo ""
exit -1
fi
# Willkommenstext mit Abfrage, ob die Installation gestartet werden soll
echo ""
echo "Willkommen zur Installation des \"Internet_over_USB\"-Services."
echo "Möchten Sie die Installation starten (ja/nein)?"
read answer
while [ "$answer" != "ja" ]; do
if [ "$answer" == "nein" ]; then
echo ""
echo "Beende das Installations-Skript."
echo ""
unset answer
exit 0
else
echo ""
echo "Ich habe Sie nicht verstanden."
echo "Möchten Sie die Installation starten (ja/nein)?"
read answer
fi
done
# Servicename
service_name="Internet_over_USB.service"
# Aktueller Pfad
service_path="`pwd`"
# Kontrolle, ob Service-Datei im selben Verzeichnis wie "install.sh"-Skript
if [ -e "$service_path/$service_name" ]; then
echo ""
echo "Die \"Internet_over_USB.service\"-Datei wurde gefunden."
else
echo ""
echo "Die \"Internet_over_USB.service\"-Datei wurde nicht gefunden."
echo "Beende das Installations-Skript."
echo ""
unset answer
unset service_path
unset service_name
exit -1
fi
# systemd Speicherort für Bibliotheken
systemd_lib="/lib/systemd/system"
# systemd Speicherort Ausführdateien
systemd_run="/etc/systemd/system/multi-user.target.wants"
# Erstelle/Update symbolischen Link von der Systemd-Bibliothek zur Service-Datei
if [ -e "$systemd_lib/$servie_name" ]; then
echo ""
echo "Update der symbolischen Verknüpfung von der Service-Datei:"
echo "\"$service_path/$service_name\","
echo "zur Systemd-Bibliothek:"
echo "\"$systemd_lib/$service_name\"."
ln -sfn "$service_path/$service_name" "$systemd_lib/$service_name"
else
echo ""
echo "Erstelle eine symbolische Verknüpfung von der Service-Datei:"
echo "\"$service_path/$service_name\","
echo "zur Systemd-Bibliothek:"
echo "\"$systemd_lib/$service_name\"."
ln -s "$service_path/$service_name" "$systemd_lib/$service_name"
fi
# Erstelle/Update symbolischen Link vom Systemd-Speicherort für Konfigurations- und
# Informationsdateien zur Service-Datei
if [ -e "$systemd_lib/$servie_name" ]; then
echo ""
echo "Update der symbolischen Verknüpfung von der Service-Datei:"
echo "\"$service_path/$service_name\","
echo "zum Systemd-Speicherort für Konfigurations- und Informationsdateien:"
echo "\"$systemd_run/$service_name\"."
ln -sfn "$service_path/$service_name" "$systemd_run/$service_name"
else
echo ""
echo "Erstelle eine symbolische Verknüpfung von der Service-Datei:"
echo "\"$service_path/$service_name\","
echo "zum Systemd-Speicherort für Konfigurations- und Informationsdateien:"
echo "\"$systemd_run/$service_name\"."
ln -s "$service_path/$service_name" "$systemd_run/$service_name"
fi
# Systemd-Daemon-Prozess neustarten
echo ""
echo "Starte den Systemd-Deamon-Prozess neu."
systemctl daemon-reload
# Aktiviere den Autostart für den "Internet_over_USB"-Service
echo "Aktiviere den Autostart für den \"Internet_over_USB\"-Service."
systemctl enable Internet_over_USB
# Starte den "Internet_over_USB"-Service
echo ""
echo "Möchten Sie den BeagleBone Black neustarten, um den Service:"
echo "\"Internet_over_USB\", zu aktivieren (ja/nein)?"
read answer
while [ "$answer" != "nein" ]; do
if [ "$answer" == "ja" ]; then
# Installationsabschluss
echo ""
echo "Die Serviceinstallation ist abgeschlossen."
echo "Beende das Installations-Skript."
echo ""
echo "Starte den BeagleBone Black neu."
echo ""
# Variablen löschen
unset systemd_lib
unset systemd_run
unset service_name
unset service_path
unset answer
# Warte 5s
sleep 5
# Starte BeagleBone neu
reboot
else
echo ""
echo "Ich habe Sie nicht verstanden."
echo "Möchten Sie die Installation starten (ja/nein)?"
read answer
fi
done
# Installationsabschluss
echo ""
echo "Die Serviceinstallation ist abgeschlossen."
echo "Beende das Installations-Skript."
echo ""
# Variablen löschen
unset systemd_lib
unset systemd_run
unset service_name
unset service_path
unset answer
# Beende Installer
exit 0
💻 3. Einstellungen am Host-PC
In den folgenden Abschnitten wird die weiterführende Einrichtung für das Erstellen einer Internetverbindung über USB am Host-PC (Windows oder Linux) erläutert.
🌐 4. Quellenverzeichnis
[1] FreeDesktop
systemd System and Service Manager
https://www.freedesktop.org/wiki/Software/systemd/
Abfragedatum: 31.10.2017
[2] Ubuntu User Wiki
systemd
https://wiki.ubuntuusers.de/wiki/tags/systemd/
Abfragedatum: 31.10.2017
[3] Debian Wiki
systemd - system and service manager
https://wiki.debian.org/systemd
Abfragedatum: 31.10.2017
[4] Elementz Tech Blog
Sharing internet using Network-Over-USB in BeagleBone Black
https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/
Abfragedatum: 31.10.2017
[5] Carl Lance
Windows 7 Internet Sharing for BeagleBone Black
http://lanceme.blogspot.de/2013/06/windows-7-internet-sharing-for.html
Abfragedatum: 31.10.2017
Hochschule Anhalt | Anhalt University of Applied Sciences | Fachbereich 6 EMW
BeagleBone Black - Internet over USB Service
Tobias Müller, B. Eng.
📧 Tobias.Mueller@Student.HS-Anhalt.de
© es-lab.de, 31.10.2017