Raspberry Pi - Magic Mirror auf Basis von Arch Linux

7. März 2017 · Betriebssysteme · andreas · Kein Kommentar

Ein Magic Mirror ist eine faszinierende Idee: ursprünglich vom Niederländer Michael Teeuw erdacht kann so aus einem Raspberry Pi und einem überzähligen Bildschirm mit überschaubarem Aufwand ein schick aussehendes Infoterminal für die ganze Familie gebastelt werden. Letztendlich gab der Artikel “Raspberry beschreibt Spiegel” in der Ausgabe 7/2016 der Zeitschrift c’t den Ausschlag, eine konkrete Installation auf einem bereits vorhandenen Raspberry Pi 2 durchzuführen.

Ein Großteil der Projekte rund um den Raspberry Pi setzt auf das von der Raspbian Foundation offiziell unterstützte “Raspbian”, welches aber in seiner Grundkonfiguration eher für Desktop-Anwendungen als für schlanke Serverinstallationen gedacht und geeignet ist.

Während zum Beispiel im Rahmen des Foren-Beitrags “Complete Setup Tutorial” vorgeschlagen wird, die Raspbian-Installation im Schitt “Cleaning up and updating the operating system” nach Installation von nicht benötigten Komponenten zu befreien, bietet sich als Alternative eine schlanke Distribution wie “Arch Linux ARM” an, welche während der Grundinstallation deutlich weniger unnötigen Ballast auf die SD-Karte schaufelt.

Grundinstallation Betriebssystem

Im Gegensatz zur Image-basierten Installation von Raspbian wird Arch Linux auf ein manuell erzeugtes Dateisystem kopiert, weshalb die Grundinstallation am besten auf einem Linux-Rechner erfolgen sollte. Die Installation ist kurz und knapp im Wiki beschrieben und kann Schritt für Schritt abgearbeitet werden - lediglich beim Download des Installationspakets ist es Geschmackssache, ob man dies lieber “wget” überlässt oder den Download der benötigten Datei “ArchLinuxARM-rpi-2-latest.tar.gz” selbst im Browser vornimmt.

Als erster Schritt sollte ermittelt werden, unter welchem Device die SD-Karte bereitgestellt wurde:

root@linux-pc:~# fdisk -l

...

Festplatte /dev/sdb: 14,9 GiB, 15931539456 Bytes, 31116288 Sektoren
 Einheiten: Sektoren von 1 * 512 = 512 Bytes
 Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
 E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
 Festplattenbezeichnungstyp: dos
 Festplattenbezeichner: 0x357df3bd

Device Boot Start End Sectors Size Id Type
 /dev/sdb1 2048 206847 204800 100M c W95 FAT32 (LBA)
 /dev/sdb2 206848 31116287 30909440 14,8G 83 Linux

Das so ermittelte Device (“sdb”) wird dann in allen späteren Schritten angegeben:

root@linux-pc:~# fdisk /dev/sdb

Die nächsten Schritte können dann - wie bereits erwähnt - direkt aus dem Wiki übernommen werden:

  • Type o. This will clear out any partitions on the drive.

  • Type p to list partitions. There should be no partitions left.

  • Type n, then p for primary, 1 for the first partition on the drive, press ENTER to accept the default first sector, then type +100M for the last sector.

  • Type t, then c to set the first partition to type W95 FAT32 (LBA).

  • Type n, then p for primary, 2 for the second partition on the drive, and then press ENTER twice to accept the default first and last sector.

  • Write the partition table and exit by typing w.

Nachdem die SD-Karte partitioniert wurde, werden die benötigten Dateisysteme angelegt und eingebunden:

root@linux-pc:~# mkfs.vfat /dev/sdb1
root@linux-pc:~# mkdir boot
root@linux-pc:~# mount /dev/sdb1 boot
root@linux-pc:~# mkfs.ext4 /dev/sdb2
root@linux-pc:~# mkdir root
root@linux-pc:~# mount /dev/sdb2 root

Anschließend wird das Betriebssystem in auf die SD-Karte in die beiden Partitionen kopiert:

root@linux-pc:~# bsdtar -xpf ArchLinuxARM-rpi-2-latest.tar.gz -C root
root@linux-pc:~# sync
root@linux-pc:~# mv root/boot/* boot
root@linux-pc:~# umount boot root

Nachdem das Betriebssystem erfolgreich kopiert wurde, kann die SD-Karte entfernt und der Raspberry Pi damit gestartet werden.

Erster Systemstart und Einrichtung der Netzwerkverbindung

Nach dem ersten Start sollte dann - sofern der Raspberry Pi nicht mittels Netzwerkkabel verbunden ist, die Netzwerkverbindung konfiguriert werden. Hierzu erfolgt zuerst eine Anmeldung an der Konsole, am einfachsten direkt als Benutzer “root”:

Benutzer: root
Kennwort: root

Hintergrundinformationen zur Installation sind im Artikel “WiFi für den Raspberry Pi Streamingclient” zu finden, im Wesentlichen beschränkt sich aber die Konfiguration auf das Setzen der deutschen Tastaturbelegung (macht das Eintippen des WiFi-Kennwortes einfacher) und den darauffolgenden Aufruf von “wifi-menu”:

[root@alarmpi ~]# loadkeys de-latin1
[root@alarmpi ~]# wifi-menu

Anschließend müssen sowohl das soeben erzeugte Profil sowie der SSH-Dienst aktiviert werden, bevor nach einem weiteren Neustart eine SSH-Verbindung zur Verfügung steht.

[root@alarmpi ~]# netctl enable PROFILNAME
[root@alarmpi ~]# systemctl enable sshd
[root@alarmpi ~]# reboot

Systemkonfiguration

Nachdem das System wieder gestartet ist, kann eine Verbindung über SSH hergestellt werden. Im Gegensatz zur Konsole ist über SSH die direkte Anmeldung als Benutzer “root” deaktiviert, so daß die Anmeldung mit dem standardmäßigen Systembenutzer “alarm” erfolgt.

Benutzer: alarm
Kennwort: alarm

Anschließend wird der Benutzer gewechselt

[alarm@alarmpi ~]$ su -
Password:

Als nächstes werden die Ländereinstellungen konfiguriert, wozu die Datei

[root@alarmpi ~]# vi /etc/locale.gen

bearbeitet und das “#” vor “de_DE.UTF-8 UTF-8” entfernt wird. Anschließend wird die Zeitzone gesetzt.

[root@alarmpi ~]# locale-gen
Generating locales...
de_DE.UTF-8... done
Generation complete.
[root@alarmpi ~]# echo LANG=de_DE.UTF-8 > /etc/locale.conf
[root@alarmpi ~]# export LANG=de_DE.UTF-8
[root@alarmpi ~]# timedatectl set-timezone Europe/Berlin

Auch die Einstellungen für die virtuelle Konsole sollten angepasst werden, wozu folgende zwei Zeilen in die Datei “/etc/vconsole.conf” eingetragen werden.

[root@alarmpi ~]# vi /etc/vconsole.conf
KEYMAP=de-latin1
FONT=lat9w-16

Soll der Rechnername geändert werden, so muss dieser in der Datei “/etc/hostname” eingetragen sowie in der Datei “/etc/hosts” ergänzt werden:

[root@alarmpi ~]# echo mirror-pi > /etc/hostname
[root@alarmpi ~]# vi /etc/hosts
#
# /etc/hosts: static lookup table for host names
#

#
127.0.0.1 localhost.localdomain localhost mirror-pi
::1 localhost.localdomain localhost mirror-pi
# End of file

Als letzter Schritt sollte - ggf. nach einem Neustart - eine komplette Systemaktualisierung durchgeführt werden:

[root@mirror-pi ~]# pacman -Syu

Die abschließenden Systemvorbereitungen und die Installation des MagicMirrors folgen in