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

08/2019
Smarte Hacks

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Immer der Reihe nach

    Mit einer einfachen Schaltung testen Sie Bausteine, die über den SPI-Bus miteinander kommunizieren.

  • Einzigartig

    Eine MAC-Adresse ermöglicht die Kommunikation im Netzwerk. Der 24AA02E48 liefert sie für Setups, die aus grundlegenden Komponenten bestehen.

  • Steinkuchen

    Der Raspberry Pi hat viele Fans, doch nicht ohne Grund sehnen sich viele Anwender nach einem RasPi 4. Der Rock Pi 4 übertrumpft den RasPi 3 in Sachen Leistung um Längen und schlägt sich auch in der Praxis gut.

  • Kerngeschäft

    Der Einstieg in die Welt der Mikrocontroller fällt nicht ganz leicht. Mit dem Nucleo F401RE haben Sie jedoch ein Entwicklerboard samt abgestimmter Entwicklungsumgebung an der Hand.

  • Himbeer-Geräte

    Mit Maus und Tastatur im weiß-roten Raspberry-Look macht die Raspberry Pi Foundation das eigene Angebot an Peripheriegeräten für den Mini-Rechner komplett.

  • Unter Kontrolle

    PiCockpit ist eine speziell auf den RasPi zugeschnittene Online-Monitoring-Lösung. Wir werfen einen ersten Blick auf den brandneuen und in Ausbau befindlichen kostenlosen Dienst.

  • Ins rechte Licht gesetzt

    Selbst ohne eigenen Garten holen Sie sich Pflanzen mithilfe von LEDs in jeden Raum und sehen ihnen mit dem RasPi beim Wachsen zu.

  • Helligkeit nach Maß

    Wer bei wechselnden Lichtverhältnissen nicht ständig die Beleuchtung manuell nachregeln möchte, der spannt dafür einen PiXtend ein.

  • Geschrumpft

    Kleine Bildschirme gibt es zwar viele, aber der Support von Raspbian ist überraschend schlecht. Mit ein paar Tricks erzielen Sie trotzdem ein optimales Ergebnis.

  • Brüllwürfel

    Kompakt-Stereoanlagen mit CD-Spieler und Kassettendeck sind inzwischen oft ein Fall für den Recyclinghof – oder für die digitale Wiederbelebung mit einem RasPi und etwas Geschick.