Custom Overlays im AroioOS anlegen

Einführung - Funktionsprinzip des Aroio-Images

Beim AroioOS handelt es sich um ein Linux-basiertes Betriebssystem für den Raspberry Pi 2 und 3. Bei diesen 1-Platinen-Computern ist es üblich, dass das Betriebssystem auf einer Speicherkarte (in diesem Fall Micro-SD) gespeichert wird. Während das System läuft werden also Daten von der Speicherkarte gelesen und auch wieder auf sie geschrieben. Kommt es während eines solchen Schreibvorgangs nun zu ungewöhnlichen Ereignissen, wie z.B. einem Stromausfall oder einem plötzlichen Abschalten, so können Dateien beschädigt oder unvollständig geschrieben zurückbleiben.

Das ist für ein Gerät, welches es im Alltag für sorglosen Musikgenuss herhalten soll denkbar ungeeignet, denn ein sicheres "Herunterfahren" kann nicht immer sichergestellt werden.

Read-Only-System

Um dieses Problem zu umgehen wurde das AroioOS als Read-Only-System konzipiert. Das heißt, bei Booten wird das Betriebssystem von der SD-Karte gelesen und als virtuelles Filesystem komplett in den Arbeitsspeicher geladen. Wenn das erledigt ist wird die Speicherkarte nicht mehr genutzt und sogar schreibgeschützt. Das komplette Filesystem liegt also während des Betriebs im Arbeitsspeicher.

Die Speicherkarte wird dann wie ein externer Datenträger eingebunden und ist über den Pfad /mnt/mmcblk0p1/ anzusprechen. Um den Schreibschutz aufzuheben, damit im Betrieb etwas in diesem Verzeichnis geändert werden kann kann über SSH der Befehl cardmount rw eingegeben werden.

Der Betrieb als virtuelles Filesystem führt natürlich dazu, dass beim Neustart alle eventuellen Änderungen immer wieder verfallen. Wer nun also denkt, er könnte am AroioOS etwas ändern (was ja absolut erwünscht ist), der wird also enttäuscht feststellen, dass seine Änderungen den Neustart nicht überleben.

Woher weiß denn der Aroio nun überhaupt, wie er heißt und was er tun soll?

Im Stammverzeichnis des Images, also dem, was man auch unter Windows oder iOS auf der Speicherkarte sehen kann, liegen einige Dateien, die beim Booten bestimmte Parameter vorgeben. Die wichtigste Datei ist dabei die userconfig.txt, die eigentlich alle wichtigen Aroio-Einstellungen und -Parameter enthält. Diese Datei kann entweder im laufenden System über eine SSH-Verbindung bearbeitet werden, auf der SD-Karte direkt oder aber über das Webinterface des AroioOS, welches bei Änderungen nichts anderes tut, als diese Datei zu bearbeiten.

Anlegen von Custom Overlays (ab AroioOS Version 3.55)

Um nun Interessierten, versierten Linux-Nutzern dennoch die Möglichkeit zu bieten, Änderungen am System vorzunehmen, wurde die Custom Overlay-Funktion implementiert. Im entsprechenden Ordner /custom_overlay/ auf der SD-Karte können nun Dateien, wie z.B. Shell-Skripte mit Änderungen angelegt werden, die beim Booten 1:1 in das virtuelle Filesystem übertragen werden.

Wichtig ist dabei, dass der Pfad hinter dem /custom_overlay/ exakt identisch mit dem Zielpfad im Filesystem sein muss.

Wie geht das nun genau?

Möchte man nun also z. B. Änderungen am Netwerkskript machen, so muss man sich nun zunächst die Datei

/etc/init.d/network

kopieren und in einen Ordner

/mnt/mmcblk0p1/custom_overlay/etc/init.d/

speichern.

Da dieser Ordner natürlich auch auf der SD-Karte liegt, muss natürlich wie oben beschrieben erst der Schreibzugriff darauf erlaub werden. Theoretisch ließe sich natülich die entsprechende Datei auch in einem Windows oder iOS Computer mit Kartenleser anlegen.

Dort abgelegt kann diese Datei nun verändert werden. Beim Neustart wird diese dann anstelle der unveränderten Datei an dieselbe Stelle im Filesystem kopiert. Das heißt, dass die Datei

/etc/init.d/network

überschrieben wird durch die Datei

/mnt/mmcblk0p1/custom_overlay/etc/init.d/network

Dieses Prinzip ist nun für fast alle Dateien im System anwendbar. Das Gute daran: Läuft das System nach den Änderungen nicht mehr stabil, kann die Datei im Custom Overlay einfach gelöscht werden und alles ist wie vorher.

Welche Dateien liegen eigentlich wo?

Die Skriptdatei für die Netzwerkfunktionalität liegt wie oben erwähnt unter dem Pfad

/etc/init.d/network

Die Dateien des Webinterfaces liegen z.B. im Order

/opt/www/

Und die Dateien, die die Streamerfunktionen starten oder stoppen liegen unter

/usr/bin/startstreamer.sh

und

/usr/bin/stopstreamer.sh

Viel Spaß beim Ausprobieren!