FreeBSD auf dem RasPi installieren

© Dmitry Pichugin, Fotolia

Himbeere mit Sahne

FreeBSD bietet auf dem Raspberry Pi eine interessante Alternative zu den bekannten Linux-Derivaten. Wer die etwas aufwendige Installation nicht scheut, erhält als Lohn der Mühe ein äußerst stabiles System.

README

Die meisten Anwender nutzen den RasPi mit einer der zahlreichen Linux-Distributionen. Es lohnt sich aber, einmal über den Tellerrand zu sehen: FreeBSD bietet eine leistungsfähige Alternative, die jedoch aktuell noch etwas mehr Mühe macht.

Als preiswerter Einplatinen-Computer in der Größe einer Kreditkarte hat sich der Raspberry Pi schnell zum Publikumsliebling gemausert – nicht nur unter Freunden der vielen eigens angepassten Linux-Distributionen, sondern auch unter jenen des ebenfalls freien FreeBSD-Betriebssystems [1].

Die als General Purpose Input/Output (GPIO) bezeichnete, frei programmierbare Schnittstelle des RasPi ermöglicht es Programmierern, ihrer Fantasie freien Lauf zu lassen, indem sie Leuchtdioden, Sensoren, Displays und andere Geräte darüber ansteuern. Zum Ansteuern der GPIO-Ports gibt es Bibliotheken in zahlreichen Programmiersprachen. Die Portierung für FreeBSD läuft noch, danach steht auch dieses Betriebssystem für messtechnische Projekte bereit.

Um die direkte Anbindung einer Kamera und eines LC-Displays kümmern sich ein CSI-Interface (Camera Serial Interface) und ein DSI-Anschluss (Display Serial Interface). Für Ersteren gibt es seit Mai 2013 eine Kamera mit einer Auflösung von 5 Megapixel; unter FreeBSD steuert diese der Treiber bktr(4) an. Ein passendes Display für den DSI-Anschluss befindet sich zwar in Entwicklung, allerdings steht der Erscheinungstermin noch nicht fest.

Die Raspberry-Betriebssysteme kategorisiert man in sogenannte Tiers. Bei FreeBSD handelt es sich um eine Tier-2-Plattform. Das bedeutet, dass sich Tools und Kernel-Quelltexte in der Entwicklungsphase befinden. Dennoch eignet sich FreeBSD durchaus bereits für den produktiven Einsatz, wenn auch Installation und Upgrade noch nicht ganz so glatt von der Hand laufen.

Karten austeilen

Der FreeBSD-Bootvorgang auf dem RasPi setzt eine SD-Karte mit mindestens 4 GByte Speicherplatz und zwei passend präparierten Slices voraus. Slices heißen die BSD-Pendants zu den unter Windows und Linux als Partitionen bezeichneten Abschnitten. Unter BSD nennt man dagegen die in einem Slice enthaltenen, mit Buchstaben gekennzeichneten Segmente Partitionen.

Das erste Slice besteht aus einem bootfähigen FAT32- oder FAT16-Dateisystem. Beim Raspberry enthält nicht, wie bei PCs üblich, ein Flash-ROM die Firmware, sondern sie befindet sich im ersten Slice auf der SD-Speicherkarte (Abbildung 1). Die Firmware eines Raspberry Pi umfasst eine ganze Reihe von verschiedenen Dateien.

Abbildung 1: Die Einteilung einer SD-Karte für den Einsatz von FreeBSD auf dem Raspberry Pi.

Beim Phase-3-Bootloader start_cd.elf handelt es sich um eine abgespeckte Version der Programmdatei start.elf. Sie kommt zum Zug, falls der für die GPU reservierte Speicher weniger als 32 MByte Kapazität aufweist (gpu_mem=16). Die Dateien fixup.dat und fixup_cd.dat enthalten den Programmcode, der den Speicher zwischen GPU und CPU aufteilt. Beide kommen in der dritten Phase des Bootvorgangs zum Einsatz. Die Datei fixup_cd.dat wird wiederum für GPU-Speichergrößen von 16 MByte benötigt.

Bei dem File boot.scr handelt es sich um ein Skript, das aus der Datei boot_ubl.txt ins Binärformat übertragen wurde und das zu ladende Betriebssystem definiert. Im Fall von FreeBSD entspricht es dem an den RasPi angepassten Bootloader ubldr. Dieses Tool lädt in der Folge den Betriebssystemkern von FreeBSD. Die Datei devtree.dat schließlich enthält alle verwendeten Gerätetreiber.

Im zweiten Slice liegt das gewünschte Betriebssystem selbst, also FreeBSD. Um zu verstehen, wie sich FreeBSD bootfähig auf der Speicherkarte ablegen lässt, sehen wir uns im Folgenden zunächst einmal den Bootvorgang genauer an.

Mit der Kirche ums Dorf

Der erste außergewöhnliche Schritt beim Booten des Raspberry Pi besteht darin, dass der Grafikprozessor vor dem Mikroprozessor startet. Sobald Sie den Mini-Rechner mit Strom versorgen, startet ein kleines Programm, das bei der Herstellung des Chips ins ROM gebrannt wurde. Es aktiviert zunächst das Boot-Slice der SD-Karte. Diesen Abschnitt des Bootprozesses nennt man First Stage und das Programm im ROM entsprechend Phase-1-Bootloader oder First Stage Bootloader. Über dieses erhält das System Zugriff auf den Phase-2-Bootloader (Second Stage Bootloader), dessen Programmcode die Datei bootcode.bin enthält.

Weil Mikroprozessor und Arbeitsspeicher an dieser Stelle immer noch nicht aktiviert sind, übernimmt die GPU den weiteren Bootvorgang. Dazu lädt das System den Programmcode aus bootcode.bin in den Cache der GPU und führt ihn aus. Erst jetzt schaltet sich der Arbeitsspeicher ein, und die GPU liest von der Speicherkarte die Datei start.elf ein, den Phase-3-Bootloader (Third Stage Bootloader). Dabei handelt es sich um die Firmware des Grafikprozessors.

Der jetzt folgende dritte Schritt stellt den wichtigsten der gesamten Initialisierungsphase dar. Der Third Stage Bootloader enthält Programmcode, der die Aufteilung des Arbeitsspeichers zwischen GPU und CPU vornimmt und anschließend die Konfigurationsdatei config.txt verarbeitet. Im letzten Schritt schließlich initialisiert das System die CPU. Dazu lädt die GPU das Betriebssystem für den Mikroprozessor gemäß dem in der Datei config.txt gesetzten Parameter kernel= und aktiviert die CPU.

Im Fall von FreeBSD lädt der Phase-3-Bootloader die Datei uboot.img. Dabei handelt es sich um ein Betriebssystem für die CPU, es fährt nun also das FreeBSD-System hoch (Abbildung 2).

Abbildung 2: Schematische Darstellung des Bootvorgangs eines Raspberry Pi.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 9 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Aktuelle Ausgabe

04/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.