Dank des Tools Raspi-config muss kaum ein Anwender die Boot-Konfiguration des RasPi direkt bearbeiten. Dabei schlummern dort viele Schätze, die Sie mit wenig Aufwand heben.
Im Boot-Prozess von Raspbian spielen zwei Konfigurationsdateien eine zentrale Rolle. Die eine ist die /boot/config.txt, die sich um die Hardware-Konfiguration kümmert, die andere die /boot/cmdline.txt, die den Linux-Kernel mit seinen Startparametern versorgt. Letztere spielt in diesem Artikel keine Rolle: Ihr Inhalt bezieht sich überwiegend auf normale Linux-Hausmannskost und ist, abgesehen vom Dateiformat, nicht RasPi-spezifisch.
Beide Dateien liegen auf der ersten, mit FAT formatierten Partition des Boot-Mediums. Das bringt den großen Vorteil mit sich, dass Sie sie mit dem Betriebssystem und dem Editor Ihrer Wahl auf einem beliebigen Rechner bearbeiten können.
Falls Sie einige der Beispiele dieses Artikels nachvollziehen möchten, bietet es sich an, vorher die config.txt zu sichern, etwa als config.bak – auf der ersten Partition steht dafür genug Platz bereit. Da das System die config.txt nur beim Booten ausliest, müssen Sie nach jeder Änderung das System neu starten, um diese zu aktivieren. Die folgenden Abschnitte erwähnen das nicht mehr explizit.
Ein- und Ausschalter
Bevor es an die theoretischen Grundlagen geht, fügen Sie vorab als motivierendes Beispiel die Zeile dtoverlay=gpio-shutdown in die config.txt ein. Außerdem schließen Sie einen Button zwischen den Pins GPIO3 und GND an.
Aber Vorsicht: GPIO3 ist der physische Pin 5, zufällig aber auch der dritte Pin in der linken Reihe. Gegenüber liegt passenderweise Masse. Statt eines Buttons genügen für einen Versuch aber auch zwei Kabel (Abbildung 1), deren blanke Enden sich nicht berühren sollten.

Abbildung 1: Zum Ausprobieren genügt es, anstelle eines Buttons zwei Kabel an GPIO3 und GND anzuschließen.
Mit den Kabeln und dem Eintrag in der config.txt setzen Sie jetzt in neueren Raspbian-Versionen einen einfachen Ein- und Ausschalter für den Pi um. Wenn Sie den Button betätigen beziehungsweise die Kabelenden kurz zusammenführen, fährt der RasPi sauber herunter. Wiederholen Sie den Vorgang, bootet der Mini-Rechner wieder. Schade nur, dass das Standardgehäuse der Foundation keinen Platz für einen Taster vorsieht. Mit einem kleinen Bohrer und etwas Klebeband lässt er sich jedoch in fast jedem Gehäuse nachrüsten.
Bäume, Parameter, Overlays
Der An- und Ausschalter ist nur eine von vielen Perlen, die die Boot-Konfiguration bietet. Bevor wir uns mit weiteren Highlights beschäftigen, zuerst etwas Theorie: Hier geht es vor allem darum, den Mechanismus hinter der config.txt zu verstehen.
Linux wurde ursprünglich für die x86-Architektur entwickelt, und Linus Torvalds selbst meinte anfangs, dass es wohl nie auf einer anderen Architektur laufen werde. Heute kooperiert Linux mit so gut wie allen Architekturen, womit sich das Anpassen des Kernels für neue Hardware immer aufwendiger gestaltet. Schon beim Kompilieren entscheidet der Entwickler, auf welcher Hardware-Familie der Kern später läuft.
Das Problem bei der ARM-Architektur, wie sie der RasPi verwendet, ist dabei die immense Vielfalt an Prozessoren. Hinzu kommt, dass diese viele Funktionseinheiten mitbringen, die sie allerdings nicht alle gleichzeitig aktivieren kann. Abbildung 2 zeigt einen Ausschnitt aus der Hardware-Beschreibung eines der Pi-SoCs [1]. Wie man sieht, übernimmt jeder GPIO-Pin bis zu sechs Funktionen.

Abbildung 2: Ausschnitt aus einem Broadcom-Datasheet. Jeder GPIO-Pin übernimmt bis zu sechs Funktionen – aber naturgemäß nicht gleichzeitig.
Um diese Vielfalt einigermaßen in den Griff zu bekommen, lagern die Entwickler einen Teil der Hardware-Konfiguration aus dem Kernel in den sogenannten Device-Tree (Gerätebaum) aus. Der liegt in kompilierter Form im Boot-Verzeichnis; bei Raspbian handelt es sich um die Dateien bcm*.dtb, deren Anzahl mit jedem neuen RasPi-Modell wächst.
Einmal kompiliert, lässt sich der Device-Tree zum Glück dennoch verändern. Das war früher anders, spezielle Hardware benötigte spezielle Device-Trees. Inzwischen lässt sich der Gerätebaum parametrisieren. Außerdem erlauben es sogenannte Overlays, Teile des Baums zu überlagern.
In der config.txt finden Sie die Parameter als Zeilen mit dtparam= und Overlays als solche mit dtoverlay=. Das dt weist dabei auf den Device-Tree hin. Neben der Boot-Konfiguration gibt es unter Raspbian noch die Befehle dtparam und dtoverlay, die eine Manipulation des Device-Trees zur Laufzeit ermöglichen.
Des Weiteren besteht die Möglichkeit, per vcgencmd get_config Parameter die Konfiguration zur Laufzeit abzufragen. Ein Blick in die config.txt tut es zwar auch, das Kommando erweist sich aber in Skripten als recht nützlich.






