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

12/2019
RasPi-Alternativen

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Grußbotschaften

    Mit Sonic Pi zaubern Sie komplexe Sounds, die Sie bei Bedarf sogar noch während des Abspielens modifizieren.

  • Das Runde und das Eckige

    Mit dem MCP4725 ergänzen Sie einen RasPi um einem D/A-Wandler, der bei Bedarf noch weitere Funktionen erfüllt.

  • Alles unter Kontrolle

    Schon ein einfaches Mikrocontrollerboard wie das CY8CKIT-049-42xx bietet erstaunlich viele Möglichkeiten beim Ansteuern von Hardware.

  • Viele Kerne

    Das Spresense Development Board von Sony lässt sich mit der Arduino IDE programmieren und bringt auch ein eigenes Entwickler-SDK mit.

  • Exotische Früchte

    Der aus China stammende Orange Pi positioniert sich mit einem guten Preis und interessanten Features gegen die RasPi-Truppe. Kann er sich auch behaupten?

  • Flexibler Surfer

    Mit dem neuen RasPi 4 setzen Sie einen öffentlichen Webkiosk schnell und kostengünstig auf.

  • Auskunftsfreudig

    Viele Devices, so auch der E.ON-Aura-Controller, verwenden eine Schnittstelle namens REST, um Zustandsdaten zu übermitteln. Mit ein wenig Bastelei lesen Sie diese auch über Ihr Smartphone aus.

  • Doppelt gemessen

    Mit wenig Aufwand und einem Pi Zero realisieren Sie einen mobilen Zweikanal-Spannungsprüfer.

  • Elegant zusammengeführt

    Tizonia streamt Musik von Online-Quellen und lokalen Sammlungen. Die schlanke Architektur macht den Player zur guten Wahl für den Einsatz auf dem RasPi.

  • Kommunikativ

    Nicht jeder traut sich zu, sein eigenes Smartphone zu bauen. Allerdings kann jeder Linux-Nutzer den Raspberry Pi im Handumdrehen zu einem VoIP-Telefon aufrüsten.