Aus Raspberry Pi Geek 04/2014

FreeBSD auf dem RasPi installieren (Seite 3)

Listing 6

 

device sc
options SC_DFLT_FONT
makeoptions SC_DFLT_FONT=cp850
### device vt
device ums

Crosscompiling

Nach der Kernel-Konfiguration geht es nun zum Kompilieren. Da die Zielplattform (RasPi) sich von jener des kompilierenden Systems (PC) unterscheidet, kommt hier Crosscompiling zum Einsatz. In unserem Fall läuft FreeBSD auf einem 32- oder 64-Bit-System von Intel beziehungsweise AMD, während der Zielplattform Raspberry Pi eine ARM-CPU zugrunde liegt.

Deshalb setzen Sie zunächst die Umgebungsvariable TARGET_ARCH=armv6 (Listing 7, Zeile 1) und generieren die für das Crosscompiling nötigen Tools wie Compiler und Linker (Zeile 2). Danach erfolgt das Übersetzen des Kernels (Zeile 3). Die Option WITH_FDT=yes aktiviert dabei den Flattened Device Tree, über den der FreeBSD-Kernel den einzelnen Geräten Treiber zuweist. Der Übersetzungsvorgang nimmt je nach Hardware rund eine halbe Stunde in Anspruch. Es folgt der gleiche Prozess fürs Userland (Zeile 4), der etwa zwei Stunden dauert.

Listing 7

 

# export TARGET_ARCH=armv6
# make kernel-toolchain
# make KERNCONF=RPI-B WITH_FDT=yes buildkernel
# make MALLOC_PRODUCTION=yes buildworld

Nach dem fehlerfreien Durchlaufen der Kompilierung ermitteln Sie anhand der ersten Zeile von Listing 8 die restlichen Umgebungsvariablen für die spätere Installation. Abschließend geht es mit dem RasPi-spezifischen Bootloader weiter.

Listing 8

 

# buildenv=`make buildenvvars | sed 's/MACHINE_ARCH=armv6/MACHINE_ARCH=arm/'`
# cd sys/boot
# eval $buildenv make MK_NAND=no UBLDR_LOADADDR=0x2000000 clean obj all
# cd /home/raspberry/fbsd

Installation

Damit haben Sie den langwierigsten Teil der Arbeit bereits hinter sich gebracht. Der folgende Installationsvorgang verlangt dennoch die gleiche Sorgfalt wie die zurückliegenden Schritte. Hängen Sie dazu nun das Firmware-Slice ein und kopieren Sie den Bootloader und die Device-Datenbank darauf (Listing 9). Außerdem editieren Sie die config.txt, damit sowohl CPU als auch GPU die Geräte korrekt ansprechen (Listing 10).

Listing 9

 

# mount -t msdosfs /dev/md0s1 /mnt
# tar -C /mnt -xvzf /home/raspberry/freebsd-uboot-20140101.tar.gz
# cp -iv /usr/obj/arm.armv6/home/raspberry/fbsd/sys/boot/arm/uboot/ubldr /mnt/
# cp -iv /usr/obj/arm.armv6/home/raspberry/fbsd/sys/RPI-B/rpi.dtb /mnt/devtree.dat

Listing 10

 

device_tree=devtree.dat
device_tree_address=0x100
disable_commandline_tags=1
gpu_mem_512=GPUMEM gpu_mem_256=GPUMEM

Der Platzhalter GPUMEM beinhaltet die zuvor ermittelte Speichergröße für die GPU. Die Parameter gpu_mem_512 und gpu_mem_256 repräsentieren einen Raspberry Pi mit 512 beziehungsweise 256 MByte physikalischem Arbeitsspeicher. An dieser Stelle weicht die offizielle Dokumentation ab, sie legt zu diesem Zweck den Parameter gpu_mem nahe. Im Test zeigte sich jedoch, dass in der Praxis nur die Angabe gpu_mem_(512|256) die RAM-Größe korrekt einstellt.

Das Boot-Slice hängen Sie anschließend aus und mounten das zweite Slice. Dort installieren Sie das Betriebssystem nebst Kernel (Listing 11). Damit sind die Installationsarbeiten abgeschlossen, es fehlen nur noch wenige Einstellungsoptionen.

Listing 11

 

# umount /mnt
# mount /dev/md0s2a /mnt
# make KERNCONF=RPI-B DESTDIR=/mnt installkernel
# make DESTDIR=/mnt DB_FROM_SRC=1 installworld distribution

Zunächst ergänzen Sie die Konfiguration des Kernel-Bootloaders in /mnt/boot/loader.rc. Damit der Kernel den Flattened Device Tree findet, teilen Sie ihm die Einsprungadresse mit:

fdt addr 0x100

Des Weiteren muss der Kernel wissen, von welchem Device er booten soll. Dafür zeichnet die Filesystem-Tabelle in /mnt/etc/fstab zuständig. Da außerdem meistens das Prozess-Filesystem benötigt wird, tragen Sie dieses gleich mit ein:

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 9 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben