ADMIN 03/14 stellt Erste-Hilfe-Tipps zu Windows-Rettung, Backup und Recovery bei Datenbanken vor und verrät wie man Linux-Systeme vollständig sichert und ... (mehr)

Installation

Damit ist der langwierigste Teil der Arbeit abgeschlossen. Der folgende Installationsvorgang verlangt dennoch die gleiche Sorgfalt wie die zurückliegenden Schritte. Man hängt als erstes das Firmware-Slice ein und kopiert den Bootloader und die Device-Datenbank darauf:

# 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

Weiterhin editiert man die Konfiguration, damit sowohl CPU als auch GPU die Geräte korrekt ansprechen:

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

Der Platzhalter GPUMEM definiert 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 MByte beziehungsweise 256 MByte physischen Arbeitsspeicher.

An dieser Stelle weicht die offizielle Dokumentation ab, sie legt zu diesem Zweck den Parameter »gpu_mem« nahe. Das ADMIN-Magazin hat im Test jedoch herausgefunden, dass in der Realität nur die Angabe »gpu_mem_(512|256)« die RAM-Größe korrekt einstellt.

Das Boot-Slice hängt man anschließend aus und mountet das zweite Slice. Dort installiert man das Betriebssystem nebst Kernel:

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

Damit sind die Installationsarbeiten abgeschlossen, es fehlen nur noch einige Einstellungsoptionen. Zunächst ergänzt man die Konfiguration des Kernel-Bootloaders in »/mnt/boot/loader.rc« . Damit der Kernel den Flattened Device Tree findet, teilt man ihm die Einsprungadresse mit:

fdt addr 0x100

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

/dev/mmcsd0s2a / ufs rw,noatime 1 1procfs /proc procfs rw0 0

Der Treiber »/dev/mmcsd0« spricht die Speicherkarte an. Das Suffix »s2a« bedeutet, dass es sich um das zweite Slice und die Partition »a« handelt. Das mit UFS formatierte Medium wird zum Schreiben und Lesen (»rw« ) ins Root-Directory »/« gemountet. Um die Schreibgeschwindigkeit nicht auszubremsen, wird der Zeitstempel des Zugriffs (Access Time) an dieser Stelle nicht protokolliert (»noatime« ).

Nun überarbeitet man die zentrale FreeBSD-Konfiguration in »/mnt/etc/rc.conf« . Die Netzwerkkonfiguration per DHCP gestaltet sich einfach:

hostname="raspberry.your.domain"
ifconfig_ue0="DHCP"

Ohne DHCP-Server setzt man die Standardroute manuell; ansonsten bliebe der Raspberry im Netz unerreichbar:

ifconfig_ue0="IP-Adr netmask Netzmaske"
defaultrouter="DefRouter"

Die Platzhalter IP-Adr und Netzmaske stehen für die IPv4-Adresse und Netzmaske des Subnetzes. Mit DefRouter gibt man die Adresse des Default-Routers an, über den sämtliche Datenpakete laufen. Zusätzlich konfiguriert man die Namensauflösung in »/mnt/etc/resolv.conf« :

nameserver DNS-Adr

In »/mnt/etc/hosts« muss zudem diese Zeile stehen:

RPI-Adr raspberry.heim.netz raspberry

Schließlich aktiviert man noch zwei essenzielle Tools: Den Secure-Shell-Daemon »sshd« und den NTP-Client. Letzterer ist wichtig, da der Raspberry keine batteriegestützte Echtzeituhr besitzt, er benötigt deshalb nach jedem Neustart wieder die korrekte Uhrzeit. Diese Information holt er vom Zeitserver mit der IP-Adresse NTP-Adr:

sshd_enable="YES"
ntpdate_enable="YES"
ntpdate_hosts="NTP-Adr"

Abschließend schaltet man das Speichern von Dump-Files ab:

dumpdev="NO"

Damit man nach dem ersten Start die Möglichkeit hat, sich am System als Root-User zu authentifizieren, fügt man in der Konfiguration des SSH-Daemons »/mnt/etc/ssh/sshd_config« diese Zeile hinzu:

PermitRootLogin yes

Man deaktiviert weiterhin den Authentifizierungsprozess in »/mnt/etc/pam.d/sshd« , indem man die folgende Zeile auskommentiert.

auth required pam_unix.so no_warn try_first_pass

Stattdessen kommt die folgende Zeile hinzu:

auth required pam_permit.so

Abschließend setzt man die korrekte Zeitzone. Für Mitteleuropa erledigt das diese einfache Kopieraktion:

# cp -iv /mnt/usr/share/zoneinfo/ Europe/Berlin /mnt/etc/localtime

Die anderen Zeitzonendefinitionen liegen auch im Verzeichnis »/mnt/usr/share/zoneinfo/« und kommen bei Bedarf auf die gleiche Weise zum Einsatz.

Auf die Karte!

Abschließend kopiert man jetzt das fertige Image auf die Speicherkarte. In der hier vorgestellten Installation und dem zugrunde liegenden System repräsentiert »/dev/da0« die Speicherkarte; das Device kann bei anderen Systemen abweichen:

# umount /mnt
# mdconfig -d -u md0
# dd if=/root/rpi.img of=/dev/da0 bs=1m

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019