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

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Verschlungene Pfade

    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.