Rocky Linux 8 auf dem Raspberry Pi: Updates bis 2029! Installation, Vor- und Nachteile, Vergleich mit dem Raspberry Pi OS

Als Video ansehen
Bereitgestellt über YouTube

Rocky Linux 8 auf dem Raspberry Pi: Updates bis 2029! Installation, Vor- und Nachteile, Vergleich mit dem Raspberry Pi OS

Über eine sogenannte Special Interest Group hat die Gemeinschaft von Rocky Linux ein Abbild für den Raspberry Pi veröffentlicht. Dieser Beitrag stellt dir Rocky Linux vor und zeigt, wie man es auf dem Raspberry Pi installieren kann. Außerdem werfen wir einen kurzen Blick darauf, wie die Distribution entstanden ist und warum sie für den Raspberry Pi interessant sein kann.

Was ist Rocky Linux?

Die Distribution entstand Ende 2020 von einem der CentOS-Gründer. CentOS war eine frei verfügbare Alternative zu Red Hat Enterprise Linux (kurz RHEL). Red Hat ist im Unternehmensumfeld verbreitet, weswegen viele Programme die Distribution unterstützen. Allerdings ist sie kostenpflichtig, dafür bekommt man jedoch auch Unterstützung von Red Hat. CentOS war lange Zeit identisch (binärkompatibel) mit Red Hat und damit eine freie Alternative, falls man keinen kommerziellen Support benötigt.

2020 änderte Red Hat (die CentOS 2014 übernommen haben) jedoch das Projekt massiv: CentOS in der bisherigen Version wird nach Version 8 (mit frühem Lebensende schon 2021) eingestellt und durch CentOS Stream ersetzt. Stream ist nicht mehr identisch wie Red Hat, sondern eine Rolling Release Distribution. Es gibt keine festen Versionen mehr, sondern die Pakete werden laufend einzeln aktualisiert. Damit soll Stream als Versuchskaninchen für Red Hat dienen: Zuerst wird in Stream getestet, wenn alles funktioniert, landen die stabilen Pakete in Red Hat.

Damit hat CentOS sowohl den langen Lebenszyklus von ehemals bis zu 10 Jahren, als auch die Stabilität verloren – beides zeichnete die Distribution aus. Dies missfiel Gregory Kurtzer, einem der ursprünglichen Gründer von CentOS. Er startete mit Rocky Linux daher eine neue Linux-Distribution, die wieder den ursprünglichen Zielen von CentOS entsprechen soll: Ein freies, stabiles Betriebssystem mit 100% Kompatibilität zu Red Hat Enterprise Linux.

Warum Rocky Linux auf dem Raspberry Pi?

Im Unternehmensumfeld ist in der Regel die X86-Architektur Standard – es wird also in den wenigsten Fällen möglich oder sinnvoll sein, solche Programme auf einem Pi zu hosten. Allerdings wird eine Hauptversion von Rocky Linux eben so lange unterstützt, wie Red Hat dies tut. Üblicherweise 10 Jahre, bei der derzeit aktuellen Version 8 erhält man beispielsweise bis zum Jahre 2029 Aktualisierungen und Unterstützung.

Das ist weit mehr, als Debian bzw. das Raspberry Pi OS bieten: Alle zwei Jahre erscheint eine neue Version. Seit kurzem bietet auch das Raspberry Pi OS noch Sicherheitsaktualisierungen für die vorherige Version. Bei Debian für mindestens ein Jahr. Somit kann man eine Hauptversion höchstens etwa drei Jahre lang verwenden. Danach ist eine Neuinstallation mit der Nachfolgeversion fällig – oder ein In-Place Upgrade, wobei dies für den Raspberry Pi nicht unterstützt wird und ggf. Probleme verursachen kann.

Bei Rocky Linux kann man derzeit (2022) die Version 8 installieren und erhält noch 7 Jahre lang Fehlerkorrekturen und Sicherheitsaktualisierungen. Der Nachfolger 9 steht bereits in den Startlöchern, zwischen Juni/Juli 2022 soll die stabile Version 9 veröffentlicht werden. Sie bekommt bis voraussichtlich 2032 Aktualisierungen.

So installierst du Rocky Linux 8 auf dem Raspberry Pi 4

Du benötigst einen Raspberry Pi 3 oder 4. Ältere Generationen werden aufgrund der Einschränkung zu ARM 64 nicht unterstützt. Das Abbild kann im Bereich Alternative Images heruntergeladen werden, in der Mitte ist der Raspberry Pi gelistet. Unter Linux das Archiv entweder zunächst entpacken und dd verwenden – oder xzcat nutzen. Wobei sdX durch das jeweilige Laufwerk zu ersetzen ist (vorher mit z.B. lsblk ermitteln).

xzcat Rocky_Image_file.raw.xz > /dev/sdX

Alternativ lässt sich der Raspberry Pi Imager nutzen. Bei der Auswahl des Betriebssystemes scrollt man bis ans Ende und klickt auf Eigenes Image. Anschließend die zuvor heruntergeladene .xz Datei auswählen. Der Image kann damit umgehen, sodass kein vorheriges manuelles Entpacken notwendig ist.

Die Erweiterten Optionen zur Vorkonfiguration (Zahnrad unten rechts) funktionieren nicht, da diese recht spezifisch für das Raspberry Pi OS entwickelt wurden. Nach dem Schreiben auf eure Micro-SD Karte diese wie gewohnt in den Raspberry Pi einlegen und starten.

Erster Start mit Rocky Linux

Für den ersten Start wird eine Kabelverbindung benötigt, da eine Vorkonfiguration per WLAN nicht über den Imager ohne weiteres möglich ist. Zwar ist der OpenSSH-Server vorinstalliert, sodass man sich theoretisch sofort aus der Ferne verbinden kann. Es gibt jedoch keinen im Netzwerk auflösbaren Hostname (localhost). Man muss daher zunächst die IP-Adresse ermitteln: Entweder mit einem Netzwerkscanner, durch Suchen in der Client-Liste des Routers – oder in dem Bildschirm und Tastatur an den Pi angeschlossen werden. Auf der Konsole kann man sich mit folgenden Daten anmelden:

Benutzer: rocky
Passwort: rockylinux

Hinweis: Standardmäßig ist das englische Tastaturlayout aktiv! Dadurch sind z und y vertauscht. Auf einer deutschen Tastatur müsst ihr somit rockz eintippen, um rocky zu schreiben. Gleiches gilt beim Passwort, wobei die Eingabe unter Linux immer unsichtbar erfolgt. Falls Meldungen auftauchen (dam-dummy-req: disabling), könnt ihr diese ignorieren. Oder (vor dem Login) mit mehrmaligem Drücken der Enter-Taste zum Login zurück kehren.

Falls ihr physisch auf dem System weiter arbeiten möchtet empfiehlt sich, zunächst das Tastaturlayout von Englisch auf Deutsch zu ändern:

localectl set-keymap de

Das Minus-Zeichen findet ihr zwei Tasten links neben der Löschtaste (Backspace), d.H. auf der „?“ Taste deutscher Tastaturen. Bei der anschließenden Authentifizierung (Standard-Passwort rockylinux) ist noch das englische Layout gesetzt, also y und z vertauscht. Wer ausschließlich SSH nutzen möchte, der kann sich die Änderung sparen – SSH verwendet automatisch das Tastaturlayout des Clients.

Damit man sich per SSH verbinden kann, wird die IP-Adresse benötigt – sofern nicht auf den zuvor erwähnten alternativen Wegen bereits ermittelt. Der SSH-Server ist vorinstalliert und läuft, wie man per netstat sehen kann. Der Befehl ip a zeigt die derzeit vergebene IP-Adresse, hier 192.168.0.140.

Mit rocky:rockylinux kann nun von jedem PC aus eine SSH-Verbindung hergestellt werden. Legt der DHCP-Server entsprechende DNS-Einträge an, reicht es, den Hostname auf einen auflösbaren zu setzen und den Pi neu zu starten:

$ sudo hostnamectl set-hostname rockypi
$ sudo reboot

Bei funktionierender DNS-Auflösung kann unter Linux etwa mit ssh rocky@rockypi eine Verbindung nach dem Neustart hergestellt werden. Alternativ eine feste IP-Adresse zuweisen.

Weitere Unterschiede zum Raspberry Pi OS

Paketverwaltung und Format

Unter Linux haben sich zwei Paketsysteme durchgesetzt: DPKG für Debian-Pakete, die ihr dort und auch mit dem Raspberry Pi OS per APT installiert. Es kommt auch unter anderen Derivaten wie z.B. Ubuntu zum Einsatz. Red Hat entwickelte damals das zweite Format RPM. Lange Zeit wurde in der Red Hat Welt Yum verwendet. Seit einigen Jahren gibt es mit Dnf einen Nachfolger, der einige Verbesserungen enthält.

Statt apt verwendet ihr unter Rocky Linux (und anderen Red Hat kompatiblen Distributionen) daher dnf. Letzterer aktualisiert Paketquellen (apt update) und Pakete (apt upgrade) nicht getrennt, sondern vor jeder Aktion (Paket installieren, Updaten etc) automatisch. Etwas verwirrend kann hierbei die Namensgebung sein: apt update aktualisiert nur die Paketquellen, nicht die Pakete selbst. Doch dnf update dagegen vereint beide Befehle. Ansonsten sind manche Befehle/Parameter etwas benannt, eben so wie einige Pakete. Viele heißen gleich oder ähnlich.

# Alle Pakete aktualisieren
apt update
apt upgrade
dnf update

# Paket installieren (hier Beispielsweise den Webserver Nginx)
apt update
apt install nginx
dnf install nginx

# Nach Paketen suchen
apt search nginx
dnf search nginx

Was die Quantität angeht, verfügt DNF unter Alma Linux selbst mit EPEL-Repository nur über etwa 16.000 Pakete – Verglichen mit Debian weniger als 1/4.

$ dnf repolist -v
...
Total packages: 15.935

Bedenken sollte man zudem: Eine Hauptversion (z.B. 8) erhält keine Funktionsaktualisierungen mehr, sondern nur Fehlerkorrekturen und Sicherheitsupdates. Bereits jetzt erhält man dadurch deutlich veraltete Software. Nginx liegt beispielsweise in Version 1.14.1 aus dem Jahre 2018 vor – aktuell ist derzeit 1.23.

$ nginx -V
nginx version: nginx/1.14.1

Rocky Linux 8 wird auch nie eine neuere Hauptversion wie 1.15 sehen, sondern erst die nächste Hauptversion Rocky Linux 9. So wird zwar Stabilität erreicht, jedoch kann das problematisch werden. Sowohl sicherheitstechnisch, als auch wenn man neuere Funktionen nutzen möchte.

Eine Alternative für beide Probleme (Quantität und Aktualität) können Container sein. Neben vielen fertigen Images lassen sich damit Alternativ auch andere Paketsysteme nutzen – etwa Debian. Docker selbst ist in den Standard-Paketquellen nicht enthalten. Das Installationsskript bricht ab, da es Rocky Linux nicht RHEL zuordnen kann. Wer Docker nutzen möchte, muss das Repository daher händisch hinzufügen:

$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

# Auflisten aller im Repo enthaltenen Versionen
# dnf list docker-ce --showduplicates | sort -r

$ sudo dnf install docker-ce
$ sudo systemctl start docker

$ docker --version
Docker version 20.10.17, build 100c701

$ docker run hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Das Compose Plugin ist (noch) nicht in den Paketquellen verfügbar und muss daher händisch nachinstalliert werden.

Firewalld

Rocky Linux bringt ab Werk eine Firewall (firewalld) mit. Neue Dienste sind daher zunächst nicht erreichbar. Installieren wir beispielsweise einen Webserver (Nginx), müssen wir eine Regel anlegen, damit dieser für andere Geräte erreichbar ist:

$ sudo dnf install nginx
$ systemctl enable --now nginx
$ sudo firewall-cmd --permanent --zone=public --add-service=http

Eine weitere Besonderheit: Neu installierte Dienste werden weder automatisch gestartet noch aktiviert, damit sie beim Neustart ebenfalls gestartet werden. Unseren Nginx aus dem Beispiel müssen wir daher erst aktivieren/starten:

$ sudo systemctl enable --now nginx

Wer keine lokale Firewall auf dem Pi einsetzen möchte, kann Alternativ zur Firewallregel auch den Dienst stoppen und deaktivieren:

$ sudo systemctl disable --now firewalld

SELinux

Eine Besonderheit von allen auf Red Hat basierten Distributionen ist SELinux (Security-Enhanced Linux). Vereinfacht gesagt führt es eine Art von Whitelisting ein: Programme dürfen grundsätzlich nichts, außer es ist eine Ausnahme festgelegt. Konsequent eingesetzt kann das die Sicherheit deutlich erhöhen: Eine Kompromittierung im Falle von z.B. Schadsoftware oder Sicherheitslücken wird dadurch eingeschränkt. Da SELinux im Linux-Kernel eingebaut ist, muss es die Anwendung theoretisch nicht unterstützen.

Allerdings muss man als Administrator das Regelwerk mit allem was erlaubt sein soll pflegen bzw. erstellen. Das ist komplex und ein gewisser Aufwand. Standardmäßig ist SELinux aktiv. Viele Standarddienste funktionieren dennoch, da ab Werk einige Regeln (z.B. für Webserver) vorhanden sind. Führt ihr ein Programm aus, wofür es keine Regeln gibt, wird dies nicht funktionieren.

Sicherheitstechnisch macht es durchaus Sinn, sich damit zu beschäftigen. Gerade Anfänger sollten es jedoch zumindest für den Anfang besser deaktivieren, um von diesem mächtigen Werkzeug nicht erschlagen zu werden. Das Programm sestatus zeigt euch an, ob SELinux aktiv ist. Mit setenforce kann es temporär (bis zum nächsten Neustart) abgeschaltet werden. Eine dauerhafte Deaktivierung erfolgt in /etc/selinux/config mit der Variable SELINUX=disabled:

$ sudo setenforce 0
$ sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

Nach einem Neustart ist es komplett deaktiviert:

$ sestatus
SELinux status:                 disabled

Leistung und Ressourcen

In / belegt Rocky Linux mit 1,8 GB etwas mehr als das Raspberry Pi OS (ca 1,3 GB) oder DietPi (ca. 0,5 GB). Auffällig ist, dass die Partition nur 2,6 GB groß ist – obwohl eine 32 GB Karte verwendet wird:

$ df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root       2,6G    1,8G  749M   71% /
devtmpfs        1,9G       0  1,9G    0% /dev
tmpfs           1,9G       0  1,9G    0% /dev/shm
tmpfs           1,9G     25M  1,9G    2% /run
tmpfs           1,9G       0  1,9G    0% /sys/fs/cgroup
/dev/mmcblk0p1  286M     89M  197M   32% /boot
tmpfs           380M       0  380M    0% /run/user/1000

Das Raspberry Pi OS führt beim ersten Start ein Skript aus, welches die Partition auf die Größe der Speicherkarte erweitert. Rocky Linux macht dies nicht automatisch, man kann es mit folgendem Befehl starten:

$ sudo rootfs-expand
/dev/mmcblk0p3 /dev/mmcblk0 3
Extending partition 3 to max size ....
...

Anschließend steht uns die vollständige Größe des Laufwerks zur Verfügung (hier 32 GB):

$ df -h /
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root        29G    1,8G   27G    7% /

Um mit htop einen Blick auf die Auslastung zu werfen, wird das EPEL Repository (Extra Packages for Enterprise Linux) benötigt. Es wird von der Fedora-Gemeinschaft gepflegt, um zusätzliche Open Source Software bereitzustellen. Man kann es mit dnf wie ein Paket installieren:

$ sudo dnf install epel-release
$ sudo dnf install htop

Frisch gestartet haben wir eine Arbeitsspeicherauslastung von ca 140 – 170 MB, ebenfalls deutlich höher als mit anderen Systemen. Red Hat und damit auch Rocky Linux kommen mit mehr vorinstallierter Software, etwa Firewalld oder NetworkManager. Ob dies bei der Leistung ins Gewicht fällt, hängt sicher auch vom verwendeten Pi und dessen Ausstattung ab. Auf dem von mir verwendeten Raspberry Pi 4 mit 4 GB Arbeitsspeicher ist es nicht spürbar. Auf einem Zero dagegen möchte man sicher nicht 1/3 des RAM nur für das Betriebssystem opfern – hier sind leichtgewichtigere Alternativen wie DietPi oder Alpine Linux die bessere Wahl.

Fazit: Rocky Linux als RHEL-Kompatible Distribution auf dem Raspberry Pi

Auf dem Raspberry Pi ist nur eine Stärke interessant: Die Stabilität zusammen mit der langen Update-Versorgung. In anderen Bereichen hinkt Rocky Linux dem Raspberry Pi OS und anderen Alternativen wie DietPi hinterher. Auch die spezifischen Hilfsprogramme wie pinout oder rpi-eeprom-update fehlen. Es ist daher nur eingeschränkt auf stärkeren Pis zu empfehlen. Man sollte prüfen, ob der Einsatzzweck zum Leitbild einer Distribution für Unternehmenskunden mit einem Lebenszyklus von 10 Jahren passt. Vor allem wenn Ressourcen knapp sind, lohnt sich ein Blick auf sparsamere Distributionen.

Leave a Reply