Raspbian Jessie mit Systemd und NetworkManager für besseres Netzwerkmanagement

Mittlerweile ist Debian 8 alias Jessie der Standard bei Raspbian, also Zeit endlich mit meinem Pi ebenfalls umzusteigen.

(Ich habe den Artikel wegen des neuen Raspbian Images angepasst, da der Umweg über Wheezy mit Update auf Jessie nicht mehr notwendig ist. Wer trotzdem ein Update von Wheezy auf Jessie machen muss, kann das am Ende des Artikels nachlesen.)

Mit Jessie führen die Debian-Entwickler endlich Systemd ein, was immer mehr Distributionen als Standard beim Init Prozess verwenden. Das ist ein Grund für mich meinen RaspPi mit Jessie zu installieren und Systemd zu verwenden, um in den Genuss einiger Vorteile bei der Administration zu kommen. Weiterhin werde ich die Netzwerkverwaltung auf NetzworkManager umstellen.

Installation des aktuellen Rasbian Images (Lite oder Full)
Download hier: https://www.raspberrypi.org/downloads/raspbian/

Ich gehe hier nicht näher auf die Installation des Images ein, da es im Netz dazu genügend Anleitungen gibt.

Netzwerkverbindungen auf NetworkManager umstellen

Als nächstes sollen die Netzwerkverbindungen vom alten /etc/network/interfaces Script auf den modernen NetworkManager umgestellt werden. Der bietet auch auf der Kommandozeile mit dem Tool nmcli viel größere Flexibilität beim Umgang mit den Netzwerkverbindungen.

Zuerst werden die Programmpakete für den NetworkManager installiert. Dies geschieht mit sudo apt-get install network-manager.

Anschließend kommentiert man in der bisherigen Netzwerkkonfigurationsdatei /etc/network/interfaces bis auf das loopback Interface (lo) alle Einträge aus (danke an Jörg Neumann für den Hinweis). Würde man das nicht tun, würde Debian beim Start weiterhin die Informationen dieser Konfig-Datei verwenden.

So sollte die Datei /etc/network/interfaces dann aussehen:

 

Mit nmcli eine neue LAN-Verbindung erstellen

Das Tool nmcli bedient sich am besten per sog. „tab completion“. D.h man beginnt einen Befehl und durch Tab wird er vervollständigt, oder er zeigt weitere Optionen an. So kann man sich den kompletten Befehl einfach „zusammenbauen“. Dafür installiert man das Paket bash-completion nach.

Als nächstes prüft man, ob der NetworkManager Daemon beim Booten automatisch gestartet wird (auf die Groß-/Kleinschreibung bei NetworkManager achten):

Mit systemctl enable/start/stop/restart NetworkManager lässt sich der Daemon steuern.

Das Kommandozeilen Tool nmcli hat schließlich folgende Hauptbereiche:

  • general – Zeigt Informationen zum generellen Status des NetworkManagers und Berechtigungen
  • networking – Zeigt oder setzt globale Netzwerkoptionen, oder aktiviert/deaktiviert das Netzwerk.
  • radio – Zeigt oder setzt globale Wireless Optionen bzw. de-/aktiviert WLAN
  • connection – Hier werden die Netzwerkverbindungen hinzugefügt, konfiguriert und gemanaged
  • device – Dient zum anzeigen und managen der physischen Netzwerk Interfaces

Der Status wird immer durch Ergänzen des Parameters „status“ oder „show“ abgefragt.

Zum Abfragen des aktuellen Netzwerk Status gibt man z.B. folgenden Befehl ein:

So lange der Befehl eindeutig ist, können die Parameter auch abgekürzt werden, oder mit Tab komplettiert werden.

Die Eingabe von nmcli c s schließlich dürfte noch keinerlei Einträge zu Tage fördern.

Beim nächsten Reboot wird jedoch automatisch die kabelgebundene Netzwerkverbindung (eth0) vom NetworkManager definiert und aktiviert.

Will man zusätzlich noch manuell eine weitere Kabelverbindung hinzufügen, hangelt man sich mit der Tab Completion durch den folgenden Befehl:

Damit wird eine DHCP Connection eingerichtet. Soll dagegen eine statische IP-Adresse verwendet werden ergänzt man den Befehl noch um ip4 <xx.xx.xx.xx/24> gw4 <xx.xx.xx.xx> z.B.:

Fertig ist die Netzwerkverbindung.

Nmcli c s <den mit con-name definierten Namen der Verbindung> zeigt im Detail alle manuell gesetzten und alle Standard Parameter, z.B.:

Mit nmcli con modify test123 können noch viele weitere Optionen verändert werden. Z.B. kann hier noch explizit für eine Netzwerkverbindung der DNS-Server (ipv4.dns) und die DNS-Search Domain (ipv4.dsn-search) festgelegt werden, oder spezielle Routing-Einträge vorgenommen werden (ipv4.routes).

Den globalen DNS-Server trägt der NetworkManager übrigens automatisch in die Datei /etc/resolv.conf ein (erkennbar an dem Zusatz: #Generated by NetworkManager)

Hinzufügen einer Wi-Fi Verbindung

Zum Anzeigen der verfügbaren Wi-Fi access points, gibt man folgenden Befehl ein:

Das Erstellen eines WLAN Profils mit statischer IP Konfiguration, aber automatischer Ergänzung der DNS Adresse, erledigt folgender Befehl:

Will man stattdessen wieder eine DHCP Adresse für das WLAN Profil, lässt man einfach die Parameter ip4 und gw4 weg.

Zum setzen eines WPA2 Passwortes, zum Beispiel „test123“, führt man folgende Befehle aus:

Im „Red Hat Enterprise Linux 7 Security Guide“ kann man übrigens mehr zur Passwort Sicherheit nachlesen.

Zum Schluss muss man die WLAN Verbindung noch aktivieren mit:

Folgender Befehl schaltet das WLAN komplett aus und wieder ein:

Um einen bestimmten Parameter z.B. mtu zu prüfen, verwendet man folgenden Befehl:

Und zum Ändern des Parameters führt man dann folgenden Befehl aus:

Anschließend kann man die Konfigurationsänderung wie folgt überprüfen:

Für die evtl. Fehlersuche filtert man einfach im Journal nach NetworkManager:

 

Somit hat man die Basis geschaffen für ein modernes Debian System mit dem RaspberryPi.

Viel Spaß damit.

 

Anhang

Für diejenigen, die ein bestehendes Raspbian Wheezy auf Jessie updaten müssen, ist hier der Ablauf beschrieben:

Der Weg führt über Wheezy

Man installiert also Raspbian Wheezy (bei mir ein Raspberry Pi 2) und konfiguriert alle nötigen Optionen mit raspi-config. Wichtig ist hier, dass man die SD-Card vergrößert, weil das Upgrade auf Jessie mindestens 1,5 GB Speicherplatz benötigt. Außerdem muss für Locales UTF-8 als Standard gesetzt sein, da es sonst beim Upgrade auf Jessie Probleme geben kann.

Anschließend aktualisiert man noch mit sudo apt-get update && sudo apt-get upgrade -y das neu installierte System.

Aktualisierung von Debian 7 (Wheezy) auf Debian 8 (Jessie)

Jetzt geht’s ans Upgrade! Vor der eigentlichen Aktualisierung prüft man jedoch noch den Status der installierten Pakete mit: sudo dpkg –audit. Nicht korrekt installierte Pakete müssen nochmals aktualisiert oder notfalls entfernt werden, bis der Befehl keine Meldungen mehr ausspuckt.

Sicherheitshalber erstellt man dann noch ein Backup des Etc-Verzeichnisses mit den Konfigurationsdateien und den Datenbanken der Softwareverwaltung dpkg und apt.

Nun wird die Repository-Datei auf den Jessie Pfad geändert: /etc/apt/sources.list
Dort ersetzt man einfach „wheezy“ durch die Zeichenkette „jessie“. Die weiteren Repositories unter /etc/apt/sources.list.d (collabora.list und raspi.list) bleiben wie sie sind, denn dafür gibt es keinen separaten Jessie-Zweig.

Dann wird mit sudo apt-get update && sudo apt-get upgrade -y die Aktualisierung der Pakete gestartet. Dies kann je nach Umfang sehr lange dauern und zwischendurch wird man immer wieder mal gefragt, wie mit den vorhandenen Konfigurationsdateien umgegangen werden soll. Hier einfach den Standard (N) bestätigen.

Wenn dieser Vorgang ohne Fehler beendet ist, erfolgt die vollständige Systemaktualisierung mit sudo apt-get dist-upgrade. Erst danach wird das System das erste mal neu gestartet.

Aufräumarbeiten

Nach dem Neustart kann man mit sudo apt-get autoremove alle veralteten Pakete entfernen, und mit sudo apt-get purge $(dpkg -l | awk ‚/^rc/ { print $2 }‘) können anschließend noch die nicht mehr benötigten Konfigurationsdateien entfernt werden, die anderenfalls sonst Probleme verursachen können. Damit wird dann auch Sysvinit vollständig entfernt.

Comments are closed.