Aus Raspberry Pi Geek 01/2016

Raspbian-Installation per Skript automatisieren

© macor, 123RF

Automatisch verpackt

Bernhard Bablok

Das Installieren und Konfigurieren von Raspbian auf einer SD-Karte braucht nicht viel Zeit. Wer allerdings immer wieder dieselben Schritte ausführen muss, wünscht sich eine bessere Lösung. Mit simplen Shell-Skripten lässt sich die RasPi-Installation automatisieren.

Raspbian verwendet ein einfaches Installationsverfahren: Image herunterladen, auf SD-Karte kopieren, booten und die Erstkonfiguration ausführen – fertig. Anschließend bringen die Befehle sudo apt-get update und sudo apt-get upgrade alle Pakete auf den aktuellen Stand. Die weitere Pflege des Systems, einschließlich eines kompletten Umstiegs auf die nächste Betriebssystemversion, erledigen Sie ebenfalls über die Paketverwaltung.

So einfach das Verfahren in der Praxis üblicherweise von der Hand geht, für aktive RasPi-Hacker bringt es einen Nachteil mit sich: Die eingangs fällige Erstkonfiguration – die Wahl der Sprache, das Ausdehnen des Speichers auf die komplette Speicherkarte oder etwaige Einstellungen zum Übertakten – muss von Hand erfolgen. Wer ein einmal eingerichtetes System weiterpflegt, der hat damit keine Probleme. Wer allerdings immer wieder von vorne anfängt, den nerven die immer gleichen Schritte durch das Menü von Raspi-config gewaltig. Da bei der ersten Inbetriebnahme das System neue Rechnerzertifikate erstellt, funktioniert auch der Fernzugriff von anderen PCs nicht mehr ohne Probleme. Jeder Nutzer muss erst einmal die Spuren des alten Rechners aus der ~/.ssh/known_hosts löschen, bevor der Zugriff über denselben Hostnamen wieder funktioniert.

Warum sollte man aber immer wieder von vorne anfangen? Dafür gibt es verschiedene Gründe: einmal der Spieltrieb – diverse Hardware kommt mit eigenen Images – oder man möchte für ein neues Projekt wieder von einem sauberen Stand starten. Ein weiterer Grund liegt darin, dass die Systempflege über die Paketverwaltung zwar problemlos funktioniert, auf diesem Weg aber ganz neue Pakete nicht automatisch auf den Rechner kommen. Und wer etwa zu Schulungszwecken immer wieder die RasPis neu installieren muss, profitiert auch von einer weitergehenden Automation.

Das eigene Image

Mit einem eigenen RasPi-Image gehen Sie dieses Problem an. Dazu kehren Sie den normalen Installationsprozess von Raspbian quasi um. Nach der Erstinstallation und Konfiguration – oder immer, wenn Sie eine Komplettsicherung des Systems wünschen – fahren Sie den RasPi runter, nehmen die Speicherkarte heraus und lesen Sie mit einem Kartenleser am PC ein. Der von Windows-Anwendern gern zum Schreiben von RasPi-Images genutzte Win32 Disk Imager [1] besitzt nun unter anderem eine Funktion, um aus einem Speichermedium ein Image zu erstellen. Linux- und Mac-User drehen stattdessen einfach den Dd-Befehl um (Listing 1). Dabei ersetzen Sie /dev/sdX durch den entsprechenden Gerätenamen des Kartenlesers. An die richtige Device-ID kommen Sie beispielsweise per lsblk.

Listing 1

 

$ sudo dd if=/dev/sdX of=sdcard.img bs=1M

Auf diesem Weg lässt sich ein Image schnell erstellen und wieder auf die SD-Karte schreiben. Das Verfahren hat jedoch auch Nachteile. Kommt das Image nicht direkt nach der Erstkonfiguration auf die Platte, bildet es naturgemäß keinen sauberen Zustand ab. Das Klonen mehrerer Rechner klappt mithilfe dieses Imagings nur mit Nacharbeit – sonst müssten zum Beispiel sämtliche geklonten Rechner dieselben Zertifikate nutzen. Zudem muss das Image einer 8 GByte großen Karte nicht zwingend auf eine andere 8-GByte-Karte passen: Die tatsächliche Kapazität kann von Hersteller zu Hersteller abweichen.

Bei einem für den Datenträger zu großen Image bricht in der Regel der Schreibprozess ab. Ist das im Image enthaltene Dateisystem nicht zu voll, schafft das Schreibprogramm es oft dennoch, das Image auf den Datenträger zu bannen – allerdings sollten Sie im Nachhinein die Partition und das Dateisystem auf die korrekte Größe verkleinern. Dazu braucht es Fachwissen und oft eine ordentliche Partition Geduld.

Es ergibt daher mehr Sinn, die manuellen Schritte der normalen Installation zu automatisieren. Linux stellt dazu in der Shell eine leistungsfähige Skriptsprache bereit, prinzipiell ließe sich aber auch jede andere Skriptsprache verwenden. Sie müssen das Projekt nicht selbst nachprogrammieren: Auf der Heft-DVD sowie im Git-Repository des Autors [2] finden Sie das komplette Skript apiinst (siehe Kasten “Download und Installation”).

Download und Installation

Die in diesem Artikel beschriebenen Skripte klonen Sie aus dem Git-Repository des Autors [2]. Alternativ beziehen Sie sie von dort oder von der Heft-DVD auch in Form eines Zip-Archivs. Das Paket umfasst neben den Skripten für die Offline-Phase (bin/apiinst/) und dem Skript für das Einsammeln der geänderten Dateien (bin/colfiles) noch die Beispieldatei für das Vorlagenverzeichnis unterhalb von files/ (die Datei files/usr/local/sbin/apiinst2). Letztere müssen Sie wie im Text beschrieben an Ihre Bedürfnisse anpassen.

Image vorbereiten

Die Automation zielt auf eine möglichst hohe Flexibilität ab. Daher kopiert das Skript nicht nur das Image auf die SD-Karte, sondern ändert dabei auch alles, was sich ohne Systemstart auf echter Hardware anpassen lässt (Offline-Phase). Andere Konfigurationen funktionieren erst auf dem Ziel-RasPi (Online-Phase), weswegen die Installation in zwei Phasen abläuft (Abbildung 1).

Abbildung 1: Schematischer Ablauf einer per Apiinst automatisierten RasPi-Installation.

Abbildung 1: Schematischer Ablauf einer per Apiinst automatisierten RasPi-Installation.

Im Offline-Abschnitt kümmert sich das Skript um die Partitionierung und kopiert das Image auf die SD-Karte. Als Nächstes schiebt das Installationsskript Dateien aus einem Vorlagenverzeichnis ins RasPi-System. Danach entnehmen Sie die Speicherkarte aus dem Leser, legen sie in den RasPi ein und starten diesen. Direkt nach dem ersten Booten sorgt ein zweites Skript für das Abarbeiten der restlichen Aufgaben, wie etwa die Installation noch fehlender Pakete.

Damit später alles wie beschrieben automatisch abläuft, müssen Sie einige einmalige Vorarbeiten leisten. Hier geht es im Wesentlichen darum, den RasPi normal zu installieren und zu konfigurieren und anschließend die durch die Erstkonfiguration geänderten Dateien für das Vorlagenverzeichnis abzugreifen. Die “normale” Installation erfolgt dabei aber nicht über Dd, sondern mithilfe des Befehls aus Listing 2.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben