Auch wenn wir uns hier für die Installation mit dem Projekt von Ronald Raike entscheiden, dann brauchen wir zunächst ein Raspberry Pi OS passend zu unser Raspberry Pi-Platine. Bislang konnte man sich Images bei dem Raspberry Pi-Projekt downloaden und als Root mittels dem linux-Befehl dd
auf eine SD-Karte schreiben. Wir benötigen dazu die Lite-Version.
fdisk -l
liefert eine Liste von Platten und eben auch angeschlossene SD-Karten, die man auch unmittelbar nach dem Anschliesen über
dmesg
sehen könnte. Diese Information benötigen wir im nächsten Schritt.
~# unxz 2025-05-06-raspios-bookworm-armhf-lite.img.xz | dd bs=4M of=/dev/sdf status=progress
Mit unxz
entpacken wir das Image und pipen es direkt auf die ermittelte SD-Karte. Dabei nutzen wir die Option bs=4M
, um die Blockgröße beim Schreiben zu erhöhen – das beschleunigt den Kopiervorgang deutlich. Durch die Verwendung von dd
wird das entpackte Image direkt, ohne Zwischenspeicherung, auf das Gerät /dev/sdf
, das wir zuvor als solches ermittelt hatten, geschrieben. Zusätzlich lassen wir uns den Status des Kopierfortschrittes anzeigen.
Leichter und vor allem die Windows-Kanditaten hier geht es mit dem Raspberry PI Imager, den es sowohl als Debian-Package als auch als Exe-Datei und als Apple Disk Image gibt. Das ist wesentlich performanter und anwenderfreundlicher, wenn man im Terminal unter Linux nur
~$ rpi-imager
starten braucht, um ein Anwendungsfenster zu starten. Hier werden das Raspberry PI OS, die Platine und die SD-Karte ausgewählt. Zusätzlich kann man dann all die Dinge (Hostname, Benutzername, Passwort, WLAN, SSH etc.) bereits im Vorfeld erledigen. Mit dem Start wird dann eine vollfunktionfähige SD-Karte für den Raspberry Pi erzeugt. In der zuerst genannten Version, müsste nach dem ersten Login “pi” mit “raspberry” der Befehl
~$ sudo raspi-config
zur Erstkonfiguration des Raspberry Pi durchgeführt werden. So kann man sich sogar gleich nach dem Booten via SSH einloggen.
Jetzt kann sich bereits mittels SSH oder lokal an dem Raspberry Pi mit seinem gewählten Benutzer - oder via Standard mit ‘pi’
und dem Passwort ‘raspberry’
anmelden. Jetzt besteht nur eine Standardinstallation, bei der mir viele Tools wie rsync, vim, postfix, ufw
etc. fehlen und ebenso meine .bashrc
für Root und Benutzer. Des Weiteren fehlen noch die externe USB-Platte, die wir für /var
und /home
nutzen wollen. Außerdem empfinde ich persönlich auf Servern, die ich selber administriere den sudo-Befehl als lästig ansehe. Das ist eine Sicherheitsmassnahme, die von Ubuntu Linux eingeführt wurde, um Linux für Endbenutzer benutzerfreundlicher zu machen.
Mit dieser Reihenfolge schafft man sich ganz leicht den Login als Benutzer root
~$ sudo su -
~# passwd
Nach einer zweimaligen Eingabe eines sicheren Passwortes kann man sich ab sofort direkt als Root einloggen, was im Serverumfeld viel praktischer ist.
Anschließend lassen all die Programme installieren, die man so individuell generell auf seinen Servern zum Arbeiten benötigt.
Im Vorfeld wurde bereits der Nachteil von SD-Karten bei häufiger Schreibbelastung angesprochen, deswegen hängen wir eine USB-Platte, die wir zuvor mittes Gparted
oder fdisk
mit zwei oder mehr Partitionen eingerichtet und mit ext4
formartiert haben.
Auf dem Raspberry Pi suchen wir zunächst die Partitionen
~# blkid
/dev/mmcblk0p1: LABEL_FATBOOT="bootfs" LABEL="bootfs" UUID="F615-3D6A" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="b0477b82-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="8f6cdea4-22b2-47be-88eb-087a00e3ee2b" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="b0477b82-02"
/dev/sda2: LABEL="home" UUID="58efaf89-6eca-4b45-9001-f5697babfba0" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="6231394e-04"
/dev/sda1: UUID="918d28c6-f68e-4a10-badb-10f317b68ebb" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="6231394e-01"
Diese UUID-Werte werden in die /etc/fstab
eingefügt
~# echo "UUID=\"918d28c6-f68e-4a10-badb-10f317b68ebb\" /var ext4 defaults 0 2" >> /etc/fstab
~# echo "UUID=\"58efaf89-6eca-4b45-9001-f5697babfba0\" /var ext4 defaults 0 2" >> /etc/fstab
~# systemctl daemon-reload
Mit dem nachfolgenden Workaround übertragen wir alle bisher erfassten Daten von /var
auf der SD-Karte nach dem künftigen /var
auf der USB-Platte
~# mount /dev/sda1 /mnt/
~# cd /mnt/
~# rsync -arv /var/* /mnt/
~# cd -
~# umount /mnt
~# mount -a
Mit dem letzten Mount-Befehl sind jetzt die beiden Partitionen der USB-Platte wie gefordert eingehängt und werden ab sofort anstelle der jeweiligen Verzeichnisse der SD-Karte genutzt. Somit tragen wir zu einer besseren Lebensdauer der Karte mit dem Betriebssystem bei.
Im Prinzip haben wir jetzt bereits einen entscheidenden Schritt zu einem Backup getan. Denn die Datenbank und die Spool-Verzeichnisse für Asterisk liegen unterhalb von /var
und somit auf der externen USB-Platte. Und die SD-Karte wird selber austauschbar.
Damit wir diesen Schritt der vorbereitenden Installation immer wieder machen müssen, weil entweder die SD-Karte kaputt gegangen ist oder wir bei der nachfolgenden Installation auf Fehler und Probleme stossen, ist ein Backup des aktuellen Status quo in Form eines Images mein Favorit. Dazu führen wir diese Befehle aus.
~# dmesg
~# dd if=/dev/sdf of=RaspberryPI_clean.img bs=4M status=progress
Den Ersten, um den Device-Namen der SD-Karte zu ermitteln, den Zweiten um ein Image der SD-Karte zu erstellen. Eine Backup-SD-Karte (gleiche Größe wie die Original-SD-Karte) wird wie folgt erstellt:
~# dmesg
~# dd if=RaspberryPI_clean.img of=/dev/sdg bs=4M status=progress
Damit sind wir gegen Ausfälle gewappnet und können mit der eigentlichen Installation von unserem Asterisk-Server auf einem Raspberry Pi loslegen.