Nach Debians Umstieg auf Systemd läuft unter Raspbian “Jessie” mit der alten Netzwerkkonfiguration nichts mehr so, wie es soll. Mit den richtigen Tricks lösen Sie die Probleme aber schnell.
Eigentlich wollte der Autor dieses Artikels nur einen neuen RasPi aufsetzen und dafür die alten Konfigurationsdateien des Vorgängersystems verwenden – unter anderem die beiden in Listing 1 und Listing 2 gezeigten Exemplare. Doch dieses Vorhaben ging gründlich schief: Nichts funktionierte, wie es sollte. Auch eine Suche im Internet brachte keine schnelle Erkenntnis. Als “Übeltäter” entpuppte sich letztendlich das moderne Init-System Systemd, das in Debian 8.0 alias “Jessie” den Vorgänger SysVinit ablöst.
Hinzu kommt noch eine Raspbian-Besonderheit: Die Macher implementierten die Netzwerkkonfiguration auf eine Weise, die an den normalen Methoden von Debian “Jessie” völlig vorbeiläuft. Das Aufsetzen eines Raspberry-Pi-Servers mit fester IP-Adresse gerät dadurch zu einer unnötig schwierigen Herausforderung.
Listing 1
auto lo iface lo inet loopback iface eth0 inet static address 10.173.112.196 netmask 255.255.255.128 gateway 10.173.112.250 allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
Listing 2
auto lo iface lo inet loopback manual eth0 iface eth0 inet dhcp auto wlan0 iface wlan0 inet static address 10.173.112.196 netmask 255.255.255.128 gateway 10.173.112.250 wpa-ssid "mein-wlan" wpa-psk "MeinGeheimesPasswort"
TIPP
Die Listings zu diesem Artikel finden Sie auch als Textdateien im Verzeichnis RPG/systemd/ auf der Heft-DVD. Dort liegt auch ein PDF mit einem Grundlagenartikel zu Systemd aus unserer Schwesterzeitschrift LinuxUser.
Wie es Raspbian macht
Ein Hinweis bei der Suche im Web führte dann doch auf die richtige Spur. Zuallererst fehlt in Listing 1 die Zeile auto eth0: Mit dieser Ergänzung vergibt Raspbian eine feste IP-Adresse an die Ethernet-Schnittstelle. Allerdings zeigt das Kommando ifconfig diese nicht unbedingt an, da die Schnittstelle zusätzlich noch eine dynamische Adresse erhält und Ifconfig nur die erste vergebene IP aufführt. Erst der Befehl ip addr show brachte das Gesuchte zum Vorschein (Abbildung 1).
Aus unerfindlichen Gründen verwendet Raspbian für die Netzwerkkonfiguration auch bei der Vergabe statischer Adressen den DHCP-Client-Dienst Dhcpcd5. Für die Ethernet-Schnittstelle erzwingen Sie mit den Zeilen aus Listing 3 eine feste IP-Adresse. Dazu hängen Sie die Angaben an die vorhandene /etc/dhcpcd.conf an. Die Konfiguration in der /etc/network/interfaces belassen Sie im Ursprungszustand.
Listing 3
interface eth0 inform 10.173.112.196 static routers=10.173.112.250 static domain_name_servers=10.173.112.236
Stört es Sie nicht, dass auf einem Server ein Client-Dienst läuft, und stellen Sie auch sonst keine weitergehenden Anforderungen an die Netzwerkkonfiguration, etwa weil Sie einen Hotspot einrichten wollen, dann können Sie es bei den beschriebenen Änderungen belassen. Eine saubere Konfiguration, die auch auf weiteren Linux-Systemen funktioniert, erlaubt aber erst ein konsequenter Umstieg auf die Gegebenheiten von Systemd.
Systemd
Systemd zeichnet auf modernen Linux-Systemen für den Bootvorgang und die damit einhergehende Initialisierung aller Dienste verantwortlich. Das alte SysVinit krankte vor allem daran, dass es alle Aufgaben eine nach der anderen abarbeitete. Systemd dagegen setzt auf maximale Parallelisierung und erreicht damit sehr schnelle Boot-Zeiten.
Über Systemd gibt es viele Infos und Tutorials im Netz; unter anderem berichtete unsere Schwesterzeitschrift LinuxUser in der Ausgabe 10/2015 ausgiebig darüber [1]. Der Kasten “Systemd und das Journal” beschreibt die wichtigsten Konzepte.
Systemd und das Journal
SysVinit initialisiert das System beim Booten über Skripte, die in /etc/init.d liegen und von dort auf /etc/rc.? verlinken. Das Fragezeichen steht stellvertretend für eine Ziffer zwischen 0 und 6, die das sogenannte Runlevel repräsentiert. Beim alten Debian entsprach das Runlevel 2 dem normalen Multiuser-Betrieb. Startskripte und Dienste schrieben ihre Meldungen unter anderem nach /var/log/messages oder nach /var/log/daemon.log.
Systemd verfolgt dagegen einen deklarativen Ansatz: Nicht mehr Skripte definieren die Services und ihre Abhängigkeiten, sondern Service-Dateien beschreiben deren Eigenschaften. Diese Files liegen in verschiedenen Verzeichnissen, so etwa unterhalb von /etc/systemd/, /usr/lib/systemd/ und /lib/systemd/. Das Kommando systemctl mit seinen Unterbefehlen wie list, status, enable, start oder stop verwaltet die Services.
Neu ist auch das System-Log, das jetzt Journal heißt. Das Verwaltungskommando dazu lautet journalctl. Im Gegensatz zum alten Journal lässt sich dieses Format gezielt per Parameter filtern, was die Ausgabe wesentlich übersichtlicher gestaltet:
$ journalctl _SYSTEM_UNIT=systemd-networkd.service
Ein Tipp für den Umgang mit Systemctl und Journalctl: Falls Sie als administrativer Benutzer root arbeiten, funktioniert unter Raspbian auf der Kommandozeile die Autovervollständigung der Kommandos und Parameter per [Tab]. Die Taste liefert im Zweifelsfall auch eine Liste mit verfügbaren Möglichkeiten. Wissen Sie also nicht mehr genau, wie der Service heißt, wird Ihnen dadurch eine Auswahl angeboten.







