Eigenes Raspberry Pi OS Image erstellen und anpassen

Als Video ansehen
Bereitgestellt über YouTube

Eigenes Raspberry Pi OS Image erstellen und anpassen

Du möchtest dein eigenes Raspberry Pi OS Image erstellen, dass man – genau wie das offizielle – mit wenigen Mausklicks auf die Speicherkarte übertragen kann? Das ist gar nicht so schwierig! Wie das geht, schauen wir uns heute an.

Doch zunächst ein paar mögliche Anwendungsfälle, bei denen das Sinn macht:

  • Man möchte mehrere Pis installieren: Schon alleine durch das Einbinden aktueller Updates kann man einiges an Zeit sparen – besonders wenn das letzte veröffentlichte Raspberry Pi OS Image schon etwas älter ist
  • Vor allem mit langsamer Internetverbindung spart man sich Bandbreite. Auch die Paketquellen der Raspberry Pi Organisation werden geschont, da man die Updates einmalig für das Image herunterlädt statt für jeden Pi separat
  • Eine Reihe an Tools die man auf jedem Pi haben möchte lassen sich im Image integrieren, sodass die händische Installation entfällt
  • Wer selbst (umfangreichere) Software entwickelt, kann ein fertiges Image bereitstellen, in dem sie vorinstalliert ist. Dies haben beispielsweise die Entwickler von RetroPi gemacht.

Sehr praktisch: Man kann sein selbst erstelltes Image nach wie vor über die Erweiterten Optionen in Imager (STRG + Shift + X) anpassen – beispielsweise, um den Hostname zu setzen, WLAN einzurichten etc. Es verhält sich also wie das offizielle Raspberry Pi OS Image, enthält aber die eigenen Anpassungen.

Wie funktioniert das?

Wir erstellen hierbei kein komplettes Betriebssystem. Das wäre selbstverständlich deutlich aufwändiger und erfordert tiefes Wissen. Stattdessen nehmen wir das Raspberry Pi OS als Grundlage und passen es an unsere Vorstellungen an: Beispielsweise durch die Installation von Programmen, bestimmten Voreinstellungen oder das Einbinden von Dateien. Im Gegensatz zur Entwicklung eines eigenen Betriebssystems geht das nicht nur viel schneller, sondern hat auch zwei entscheidende Vorteile: Für den Nutzer verhält es sich wie ein Raspberry Pi OS. Außerdem kann er sämtliche Updates aus den offiziellen Raspberry Pi Paketquellen einspielen. Wir müssen uns also um das Drum-Herum gar nicht kümmern, weil das vom Raspberry Pi OS bereits abgedeckt ist. Stattdessen kann man sich auf die eigenen Anpassungen fokussieren.

Das benötigst du

Zunächst natürlich einen Raspberry Pi mit Speicherkarte und einen Speicherkartenleser für deinen PC. Falls du den Inhalt der Karte außerhalb des Pis ändern möchtest, solltest du am besten einen Linux-Computer haben. Falls ihr nur einen Computer mit Windows habt, alternativ eine Virtuelle Maschine. Zu empfehlen wäre ein Ubuntu-Flavour. Mit dem Windows Subsystem für Linux wird es schwieriger. Da es sich an manchen Stellen nicht wie ein richtiges Linux verhält, rate ich davon ab. Mit Abstand am schnellsten funktioniert es aber mit einer richtigen, nativen Linux-Installation.

Im Folgenden verwende ich Xubuntu. Es funktioniert mit anderen Ubuntu-Flavours und auch anderen Linux-Distributionen ähnlich.

Grundlage: Raspberry Pi OS auf deiner Speicherkarte anpassen

Um dies umzusetzen, lädt man sich das gewünschte Raspberry Pi OS Basis-Image auf eine SD-Karte. Damit den Pi starten und wie gewünscht konfigurieren, Software installieren etc und am besten per Ethernet mit dem Netzwerk verbinden.

Beachte: Alles was du einrichtest, ist später im Image enthalten! Auch z.B. der WLAN-Schlüssel, sofern du WLAN verwendest. Es macht daher Sinn, am Ende eine Bereinigung durchzuführen. Zumindest wenn du das Image an andere weitergibst, sollten definitiv alle während der Einrichtung eingegebenen persönlichen Daten entfernt werden. In diesem Falle empfiehlt es sich, den Pi über ein Netzwerkkabel zu verbinden und keine persönlichen Informationen bei der Einrichtung zu hinterlegen oder diese anschließend sauber zu entfernen.

Durch das Bereinigen wird das Image zudem kleiner. Beispielsweise könnt ihr mit apt autoremove oder apt-get clean.

Wenn ihr fertig seid, den Pi herunterfahren, die Speicherkarte entnehmen, an euren PC anschließen und ein Image erstellen.

Verwendung des USB-Speicherkartenleser unter einer VM auf einem Windows-System

Falls du keinen Linux-PC oder Laptop besitzt und unter Windows Solltest du unter Windows mit einer VirtualBox-VM arbeiten, musst du deinen Kartenleser freigeben. Dazu ist es notwendig, die Gasterweiterung zu installieren und USB-Geräte mithilfe des Extension Packs zu aktivieren.

Über das Geräte-Menü lassen sich USB-Geräte an eine VM unter VirtualBox weiterreichen, sofern Extension Pack und Gasterweiterung installiert sind und die Funktion in den VM-Einstellungen aktiviert ist.

Falls hier mehrere Geräte gelistet sind die sich nicht eindeutig identifizieren lassen, am besten alle anderen USB-Geräte die nicht zwingend benötigt werden abstecken. Du kannst auch die Verbindung zum Speicherkartenleser trennen, ein Bildschirmfoto der Liste erstellen, anschließend den Kartenleser wieder anschließen und schauen, welches Gerät neu hinzugekommen ist.

Vorbereitung: Einlegen der Speicherkarte und ggf. finale Anpassungen

Zunächst ermitteln wir das Laufwerk des Kartenlesers. Dazu empfehle ich, lsblk vor dem Einlegen der Karte aufzurufen und einmal danach. Ich empfehle, dabei alle anderen Speichermedien (externe Festplatten, USB-Sticks etc) möglichst zu trennen (bzw. bei VirtualBox nicht freizugeben).

$ sudo lsblk -e 1,7 -d
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0   80G  0 disk 
sr0   11:0    1 58,3M  0 rom

# Speicherkarte in den Kartenleser einlegen

$ sudo lsblk -e 1,7 -d
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0   80G  0 disk 
sdc    8:32   1 29,7G  0 disk 
sr0   11:0    1 58,3M  0 rom

Neben der Größe erkennen wir die Karte somit am neu hinzugekommenen Gerät, hier sdc mit 32 GB. Diesen bitte für später merken. Unter Linux können wir das Abbild mounten und damit noch nachträglich verändern, etwa Dateien ins Dateisystem kopieren bzw. nicht benötigte Dinge entfernen. Wenn aktiviert, mountet Ubuntu dies sogar automatisch beim Einlegen der Karte in /media/<benutzername>/rootfs:

Dies entspricht dem Wurzelverzeichnis / auf dem Raspberry Pi. Falls automatisches Einhängen bei euch nicht aktiv ist, könnt ihr es manuell mounten:

$ sudo lsblk -e 1,7 -o NAME,FSTYPE,SIZE,VENDOR,MOUNTPOINT
...
sdc            29,7G Mass
├─sdc1 vfat     256M                         
└─sdc2 ext4    29,5G

Hier sehen wir die zwei Partitionen auf der Karte: sdc1 als Boot-Partition und sdc2 ist das Wurzel-Verzeichnis. Einfach einen Ordner erstellen und die gewünschte Partition dort einhängen.

$ sudo mkdir /mnt/rpi_card
$ sudo mount /dev/sdc2 /mnt/rpi_card/
$ ls -lh /mnt/rpi_card/preconfigured_u-labs_12.10.2021 
-rw-r--r-- 1 root root 133 Okt 12 21:20 /mnt/rpi_card/preconfigured_u-labs_12.10.2021

Nachdem ihr fertig seit, die Partition wieder aushängen:

$ sudo umount /mnt/rpi_card

Anlegen des Abbildes der Raspberry Pi Speicherkarte

Nun müsst ihr nur noch ein Abbild (auch Image genannt) der Speicherkarte erstellen – schon habt ihr euer eigenes, selbst angepasstes Raspberry Pi OS! Unter Windows benötigt ihr dazu externe Programme. Wie es dort funktioniert, habe ich in einem eigenen Beitrag bereits gezeigt. Linux liefert alle nötigen Werkzeuge automatisch mit.

Achtung: dd ist ein vielseitiges, aber auch mächtiges Werkzeug. Die falsche Verwendung kann zu Datenverlusten führen oder das System unbrauchbar machen! Achtet daher unbedingt darauf, sdc mit dem zuvor notierten Laufwerksname der Karte zu ersetzen.

Von der kompletten Speicherkarte sdc wird nun ein vollständiges Abbild erstellt, etwa im Home-Verzeichnis:

sudo dd if=/dev/sdc of=~/rpi_image.img status=progress

Je nach Größe der Karte und Geschwindigkeit kann das eine Weile dauern. Vor allem unter Windows erreiche ich virtualisiert nur 4-5MB/s, wogegen ich nativ unter Linux selbst mit einem älteren, billigen USB-Adapter immerhin auf 15MB/s komme. Mein UGreen 4-in-1 Kartenleser kann die Samsung-Speicherkarte deutlich besser ausreizen: Mit 70-75 MB/s kopiert erstellt er das Abbild der 32 GB Karte in nur gut 7 Minuten. Ein natives Linux ist also auch hier am performantesten.

Fazit

Das Image-Format ist im Grunde nur ein Abbild der Partition. Man kann es daher mit wenig Aufwand anpassen, um sein eigenes Raspberry Pi OS Derivat zu erstellen. Für Fortgeschrittene Nutzer kann das unter manchen Umständen sinnvoll sein.

Weiterführend macht es nun Sinn, das erstellte Abbild zu verkleinern und zu komprimieren. Ansonsten benötigt es unnötig viel Speicherplatz. Dies zeigen wir in einem eigenen Beitrag.

Leave a Reply