Normale Ansicht

Received before yesterday

Fedora 38

19. April 2023 um 15:50

Der Frühlingsreigen neuer Distributionen hat begonnen, überraschenderweise mit Fedora statt wie sonst mit Ubuntu. (Ubuntu 23.04 ist diese Woche auch noch an der Reihe.) Heute habe ich einen ersten Blick auf Fedora 38 geworfen. Mein letzter derartiger »Minitest« liegt schon eineinhalb Jahre zurück (siehe Fedora 35).

Um es kurz zu machen: Abseits neuer Versionsnummern gibt es wenig Neuerungen — sowohl an der Oberfläche als auch hinter den Kulissen. Dass es überhaupt optische Änderungen gibt, ist dem neuen Hintergrundbild sowie Gnome 44 geschuldet. Selbst die Release Notes, sonst ein Konglomerat technischer Details, sind diesmal verblüffend leer.

Fedora 38 mit Gnome 44

Software-Versionen

Wie üblich konzentriere ich in dieser Kurzvorstellung auf die Workstation-Variante von Fedora. Die wichtigsten Versionsnummern des Software-Stacks sehen so aus:

Basis             Desktop             Programmierung   Server
---------------   ------------------  --------------   --------------
Kernel      6.2   Gnome          44   bash       5.2   Apache     2.4
glibc      2.37   Gimp         2.10   gcc       13.0   CUPS       2.4
X-Server   1.20   LibreOffice   7.5   git       2.40   MariaDB   10.5
Wayland    1.21                       Java        17   OpenSSH    9.0
Mesa       23.0                       PHP        8.2   qemu/KVM   7.2
Systemd     253                       Podman     4.4   Postfix    3.7
NetworkMan 1.42                       Python    3.11   Samba     4.18
GRUB       2.06 

Auf die Angabe der Versionsnummern von Thunderbird, Firefox und Chromium verzichte ist — diese Pakete werden ohnedies regelmäßig aktualisiert.

Technische Neuerungen

Fedora arbeitet an einem Unified Kernel Support. Das Ziel ist es, von am Rechner erzeugten Initramfs-Dateien wegzukommen und stattdessen den Kernel und die Initramfs-Datei als ein Paket auszuliefern. Das soll langfristig die Sicherheit verbessern. Details zu diesem Projekt können Sie auf der folgenden Seite nachlesen. Aktuell steckt das Projekt allerdings noch in den Kinderschuhen. Fedora 38 soll lediglich das Fundament für weitere Tests schaffen.

https://fedoraproject.org/wiki/Changes/Unified_Kernel_Support_Phase_1

Links

Ubuntu 23.04 (aktualisiert 28.4.2023)

21. April 2023 um 13:16

Wenige Tage nach Fedora hat Ubuntu nachgezogen. Spannend an der Version »Lunar Lobster« ist der komplett neu implementierte Installer.

Ubuntu verwendet als Desktop Gnome 44, angereichert mit ein paar Erweiterungen

Update 28.4. und 6.5.: Massive Installer-Problem (siehe unten)

Installation

Über die Installation von Standarddistributionen lohnt es sich kaum mehr, etwas zu schreiben. Das Prozedere verläuft in festen Bahnen, Neuerungen gab es in den vergangenen Jahren nur ganz selten. Wozu etwas ändern, wenn alle zufrieden sind?

Canonical sah das anders und hat das Installationsprogramm für Ubuntu rundumerneuert. Interessanterweise kam dabei die plattformunabhängige GUI-Bibliothek Flutter zum Einsatz. Wer sich nun spektakuläre neue Features erwartet, wird aber enttäuscht sein. Auch wenn das Layout ein wenig anders aussieht als bisher, weisen die Dialoge exakt dieselben Optionen auf wie bisher. Bei meinen Tests hat sich der Installer auch wie gewohnt verhalten, wobei ich zugeben muss, dass ich bisher nur einfache Setups ausprobiert habe. Die einzig echte Neuerung ist eine Auswahlmöglichkeit zwischen einem hellen und einem dunklen Desktop-Layout — eine Einstellung, die bei Bedarf auch später einfach geändert werden kann.

Auch wenn die optischen Unterschiede gering sind: Das Installationsprogramm wurde komplett neu implementiert

Canonicals Fehde gegen Flatpak

Wie schon in den vergangenen Versionen setzt Canonical als zweites Paketformat auf die Eigenentwicklung Snap. Neben diversen Bibliotheken sind standardmäßig nur zwei echte Snap-Pakete installiert: Firefox und eine modifizierte Version des Software-Managers. Immerhin wurde ein großer Kritikpunkt an Firefox ausgemerzt: Der Browser startet nun nahezu gleich schnell wie bei einer herkömmlichen Installation. Der Preis für die wenigen Snap-Pakete ist hoch: du /snap liefert einen Installationsumfang von 2,6 GByte (!). Die Images sind zwar komprimiert und brauchen tatsächlich weniger Platz auf der Disk. Aber für die Ausführung von Snap-Paketen ist eine Menge RAM erforderlich.

Andreas Proschofsky weist in seinem ausführlichen Ubuntu-Test auf die bestürzend schlampige Integration von Snap-Paketen im Software-Manager hin. Selbst wäre mir das vermutlich entgangen, weil ich dem Software-Manager (also »Ubuntu Software«) normalerweise aus dem Weg gehe, ganz egal, unter welcher Distribution ich gerade arbeite.

In der Vergangenheit hat Ubuntu das alternative Zweitformat Flatpak aus der Red-Hat-Schmiede nahezu gleichwertig unterstützt. Das gilt nun nicht mehr ganz: Das Paket flatpak ist standardmäßig nicht installiert. Das Paket wird aber weiter mitgeliefert und kann mit apt install flatpak im Handumdrehen installiert werden.

Schon interessanter ist eine andere Regel: »Offizielle« Ubuntu-Derivate müssen Snap verwenden und dürfen nicht auf Flatpak setzen (Quelle). Ob das Snap beliebter macht?

Ein Blick in die Tiling-Zukunft

Ubuntu denkt darüber nach, in Zukunft Tiling-Funktionen in Form einer zusätzlichen Gnome-Erweiterung standardmäßig auszuliefern. »Tiling« gibt vor allem Nutzern von großen Monitoren bessere Möglichkeiten, mehrere Fenster nebeneinander zu platzieren. Wie gut das funktionieren kann, hat (ausgerechnet!) Microsoft in Windows 11 gezeigt.

Wenn Sie die neue Funktion schon jetzt ausprobieren möchten, installieren Sie das entsprechende Paket, das sich bereits in den Paketquellen befindet:

sudo apt install gnome-shell-extension-ubuntu-tiling-assistant

(Ein kürzerer Paketnamen war wohl nicht möglich.) Die Installation lohnt sich alleine schon deswegen, weil Fenster nun endlich in einem Monitorviertel platziert werden können (während Gnome findet, Halbe-Halbe muss reichen). Wird die Größe der Fenster dann verändert, passen sich die anderen Fenster auch gleich an. Nach der Installation der Tiling-Erweiterung tauchen in den Systemeinstellungen zwei neue Optionen auf, mit denen sich das Tiling-Verhalten ein wenig adaptieren lässt.

Die Systemeinstellungen enthalten zwei versteckte Tiling-Optionen, die erst erscheinen, sobald das entsprechende Paket installiert ist

Software-Versionen

Basis             Desktop             Programmierung   Server
---------------   ------------------  ---------------  --------------
Kernel      6.2   Gnome          44   bash        5.2   Apache     2.4
glibc      2.37   Gimp         2.10   docker.io 20.10   CUPS       2.4
X-Server   1.21   LibreOffice   7.5   gcc        12.2   MariaDB  10.11
Wayland    1.21                       git        2.39   MySQL      8.0
Mesa       23.0                       Java         17   OpenSSH    9.0
Systemd     252                       PHP         8.1   qemu/KVM   7.2
NetworkMan 1.42                       Python     3.11   Postfix    3.7
GRUB       2.06                                         Samba     4.17

Installer-Probleme (28.4.2023)

Heute habe ich versucht, Ubuntu 23.04 auf einen weiteren Rechner zu installieren. Es handelt sich um einen recht gewöhnlichen, schon etwas in die Jahre gekommenen PC. Zwei SATA-SSDs, eine mit Windows 11, die andere mit einer bunten Sammlung von Linux-Distributionen. LAN-Integration über Ethernet-Kabel. Intel-CPU, 16 GB RAM.

Auf diesem Rechner bleibt der Installer im ersten Dialog einfach hängen. (Ich habe über 10 Minuten gewartet. Keine CPU-Aktivität, nichts …) Die Logging-Datei bleibt bis auf eine Zeile leer, und auch die Bildschirmausgaben beim Start des Installers aus einem Terminal heraus sind dürftig:

Der neue Installer von Ubuntu 23.04 bleibt auf einem meiner Testrechner einfach hängen

Im Internet habe ich nur wenige vergleichbare Fehlerberichte gefunden:

Dafür gibt es offensichtlich auch andere Fehler, die z.B. hier dokumentiert sind:

Glücklicherweise gibt es ein gut verstecktes ISO-Images mit dem herkömmlichen »Legacy Installer«. Damit ist die Installation mühelos gelungen.

https://cdimage.ubuntu.com/daily-legacy

Noch mehr Probleme

Weiterer Versuch mit den neuen Installer, diesmal auf einem Notebook. Bei der manuellen Installation war es mir nicht möglich, eine EFI-Partition zu erstellen. Ich habe das manuell im Terminal mit parted erledigt. Die Fenstergröße des Installers ist relativ klein; es kann nicht vergrößert werden, und ein horizontales Scrolling ist nicht vorgesehen.

Das Installer-Fenster ist zu klein. Es kann weder vergrößert werden noch kann sein Inhalt horizontal gescrollt werden.

Bis zu Version 24.04 ist ja noch fast ein Jahr Zeit. Aber bis dahin gibt es für Canonical noch viel zu tun …

Quellen und Links

Apple Aluminium-Tastatur unter Linux

20. Mai 2023 um 18:42

Ich bin ein leidenschaftlicher Fan der mittlerweile schon recht alten Apple-Aluminium-Tastatur. Ich habe vier Geräte mit USB-Kabel gehortet und verwende diese auf fast allen meinen Rechnern: diverse Linux-Notebooks und -PCs, Windows-PC, Mac Mini, Raspberry Pi etc. Schwer zu sagen, wie viele tausend Buchseiten ich mit diesen Tastaturen schon verfasst habe! Die Tastaturen scheinen unverwüstlich zu sein.

Schon 2011 habe ich auf dieser Website über die Verwendung dieser Tastatur unter Ubuntu Linux einen Blog-Artikel geschrieben. Mittlerweile hat sich die Konfiguration ein wenig geändert. Zeit also für ein Update!

Alt und dreckig, aber von unvergleichlicher Qualität. Und platzsparend!

Grundsätzlich funktioniert die Tastatur natürlich wie jede andere Tastatur auf Anhieb. Unter Gnome gibt es sogar einen eigenen Eintrag für das Apple-spezifische Layout.

Auf meinem Notebook habe ich zwei Tastatur-Layouts eingerichtet: Eines für die Apple-Tastatur für den stationären Betrieb zuhause und eines für die »gewöhnliche« Notebook-Tastatur für unterwegs.

Allerdings gibt es zwei Probleme:

  • Standardmäßig werden die Funktionstasten für Steuerungsfunktionen verwendet (Lautstärke lauter/leiser usw.). Ich will die Funktionstasten aber wirklich als Funktionstasten verwenden. Ich habe diese im Emacs mit diversen Aktionen verbunden, die ich häufig ausführe.
  • Linux hat bei einigen internationalen Modellen der Apple-Tastatur Probleme damit, die Tasten ^/° und </> richtig zuzuordnen. Die Wirkung der Tasten ist vertauscht.

Ad-hoc führen diese zwei Kommandos zum Ziel:

sudo bash -c 'echo "2" > /sys/module/hid_apple/parameters/fnmode'
sudo bash -c 'echo "1" > /sys/module/hid_apple/parameters/iso_layout'

Damit diese Einstellungen dauerhaft aktiv sind, erzeugen Sie eine neue Modulkonfigurationsdatei:

# Datei  /etc/modprobe.d/hid-apple.conf
options hid_apple fnmode=2
options hid_apple iso_layout=1

Damit der Kernel diese Optionen auch berücksichtigt, müssen Sie die Initrd-Datei neu erzeugen:

dracut --regenerate-all --force           (Fedora, RHEL)
update-initramfs -k all                   (Debian, Ubuntu)
mkinitcpio -p linux                       (Arch Linux)

Quellen/Linux

https://wiki.archlinux.org/title/Apple_Keyboard

Postskriptum

Sie haben nicht zufällig eine solche Tastatur im Keller liegen? Deutsches Modell, klein (also ohne Ziffernblock), mit USB-Kabel. Ein, zwei Tastaturen hätte ich gerne noch, sozusagen für Notfälle :-) Melden Sie sich bei mir!

WordPress-Installation unter RHEL 9 bzw. AlmaLinux 9

22. Mai 2023 um 08:49

Sie wollen WordPress auf einem Server mit RHEL 9 oder einem Klon installieren? Diese Anleitung fasst alle erforderlichen Schritte zusammen. Dabei gehe ich davon aus, dass Sie über eine minimale Installation auf einem Root-Server oder in einer virtuellen Maschine verfügen. Ich habe meine Tests mit AlmaLinux 9 in einer Hetzner-Cloud-Instanz durchgeführt.

DNS-Einträge

Nachdem Sie Ihren Server in Betrieb genommen und sich mit SSH eingeloggt haben, ermitteln Sie die IP-Adressen, unter denen der Server nach außen hin erreichbar ist. Beachten Sie, dass das an sich nützliche Kommando hostname -I nicht in jedem Fall zielführend ist. Wenn Ihre virtuelle Maschine als EC2-Instanz in der Amazon Cloud (AWS) läuft, liefert das Kommando eine Adresse in einem privaten Netzwerk. Diese Adresse gilt aber nur AWS-intern! Sie müssen in der AWS-Konsole ergründen, welche IP-Adresse nach außen gilt.

Ich gehe hier davon aus, dass Ihre WordPress-Installation unter den Adressen example.com und www.example.com zugänglich sein soll und dass Sie IPv4 und IPv6 unterstützen. Dann müssen Sie für Ihre Domain example.com vier DNS-Einträge definieren. Naturgemäß müssen Sie die Beispiel-IP-Adressen durch Ihre echten IP-Adressen ersetzen. Normalerweise dauert es eine Weile (fünf Minuten bis hin zu mehreren Stunden), bis diese DNS-Änderungen wirksam werden.

Typ    Name      Zieladresse
-----  -------   -------------------
A       @        1.2.3.4
A       www      1.2.3.4
AAAA    @        2345:1234:1234::1
AAAA    www      2345:1234:1234::1

Software-Installation

Auf Ihrem Server müssen Sie nun einen Webserver, einen Datenbank-Server sowie PHP installieren. Ich gehe hier davon aus, dass Sie Apache und MySQL verwenden. Statt Apache wäre natürlich auch NGINX denkbar, statt MySQL auch MariaDB. (Beachten Sie aber, dass die mit RHEL 9 uralte MariaDB-Versionen ausgeliefert werden. Wenn Sie MariaDB einsetzen möchten, sollten Sie den Datenbank-Server aus dem Repository von MariaDB installieren, siehe https://mariadb.org/download/?t=repo-config.)

dnf install epel-release httpd mod_ssl mysql-server
dnf module install php:8.1
dnf install php-mysqlnd

Mit systemctl starten Sie den Web- und Datenbank-Server:

systemctl enable --now httpd   
systemctl enable --now mysqld

Firewall

Falls Sie auf einem Root-Server arbeiten, müssen Sie die Firewall für die Protokolle HTTP und HTTPS (also Port 80 und 443) freischalten:

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Bei Cloud-Instanzen entfällt dieser Schritt normalerweise: Die meisten Cloud-Anbieter haben in ihren Instanzen die RHEL-interne Firewall deaktiviert und verwenden stattdessen Firewalls auf Cloud-Ebene, die über die Web-Oberfläche des Cloud-Systems konfiguriert werden muss.

Apache ausprobieren

Um zu testen, dass Ihre Website im Internet zugänglich ist, schreiben Sie »Hello World« in eine Datei im Webverzeichnis /var/www/html:

echo "Hello World" > /var/www/html/index.html

Nun öffnen Sie im Webbrowser auf Ihrem Notebook die Adresse www.example.com oder example.com. Statt »Hello World« wird der Webbrowser eine Sicherheitswarnung anzeigen, weil Ihr Server noch über kein richtiges Zertifikat verfügt. Das ist ein gutes Zeichen: Der Web-Server an sich funktioniert. Ihr Webbrowser erkennt, dass Ihr Server HTTPS unterstützt und will dieses verwenden.

Let’s-Encrypt-Zertifikat für HTTPS einrichten

Es gibt verschiedene Tools, um Zertifikate von Let’s Encrypt zu installieren. Meiner Ansicht nach funktioniert acme.sh am besten. Zur Installation führen Sie die folgenden Kommandos aus:

dnf install tar socat
curl https://get.acme.sh -o acme-setup
less acme-setup                             (kurze Kontrolle)
sh acme-setup email=admin@example.com

An die E-Mail-Adresse werden Warnungen verschickt, sollte in Zukunft die automatische Erneuerung von Zertifikaten nicht funktionieren. Damit Sie das frisch installierte Script verwenden können, müssen Sie sich aus- und neu einloggen. Jetzt fordern Sie das gewünschte Zertifikat an, wobei Sie natürlich example.com wieder durch Ihren tatsächlichen Hostnamen ersetzen:

acme.sh --issue -d --server letsencrypt example.com -d www.example.com -w /var/www/html

  Your cert is in
    /root/.acme.sh/example.com/example.com.cer 
  ...

acme.sh speichert das Zertifikat also vorerst in Ihrem Heimatverzeichnis. Sie könnten die Zertifikatsdateien einfach in das /etc-Verzeichnis kopieren, aber das wäre keine gute Idee: Das Zertifikat muss regelmäßig erneuert werden, und acme.sh muss wissen, wohin die neuen Zertifikate dann kopiert werden müssen. Daher weisen Sie acme.sh an, die Zertifikate in das Verzeichnis /etc/mycert zu kopieren:

mkdir /etc/mycert

acme.sh --install-cert -d example.com \
  --cert-file      /etc/mycert/example.com.cert \
  --key-file       /etc/mycert/example.com.key \
  --fullchain-file /etc/mycert/example.com.fullchain

acme.sh merkt sich den Installationsort und berücksichtigt ihn in Zukunft automatisch bei Updates der Zertifikate. Für diese Updates ist das Kommando acme.sh --cron zuständig, das automatisch einmal täglich durch /var/spool/cron/root ausgeführt wird.

Die Zertifikatsdateien sind nun im /etc-Verzeichnis, aber Apache weiß noch nichts davon. Sie müssen also in der Webserver-Konfiguration angeben, wo sich die Verzeichnisse befinden. Dazu verändern Sie zwei Zeilen in ssl.conf:

# in /etc/httpd./conf.d/ssl.conf zwei Zeilen ändern
SSLCertificateFile    /etc/mycert/example.com.fullchain
SSLCertificateKeyFile /etc/mycert/example.com.key

Jetzt starten Sie Apache neu:

systemctl restart httpd

Danach versuchen Sie nochmals, die Seite example.com im Webbrowser zu öffnen. Jetzt sollte alles klappen, d.h. »Hello World« wird verschlüsselt vom Webserver zum Webbrowser übertragen und der Webbrowser ist mit dem Zertifikat zufrieden.

MySQL absichern

Unbegreiflicherweise ist die MySQL-Installation von RHEL 9 und all seinen Klonen offen wie ein Scheunentor. Jeder Benutzer, der sich auf dem Linux-System anmelden kann, erhält mit mysql -u root ohne Passwort Root-Rechte für MySQL. Abhilfe schafft das Kommando mysql_secure_installation. Die folgenden Zeilen fassen stark gekürzt die wichtigsten Eingaben zusammen:

mysql_secure_installation 

Would you like to setup VALIDATE PASSWORD  component?      n

New password:          xxxxxx
Re-enter new password: xxxxxx

Remove anonymous users?                 y
Disallow root login remotely?           y
Remove test database and access to it?  y
Reload privilege tables now?            y

MySQL-Datenbank einrichten

WordPress braucht eine Datenbank, in der Ihre Einstellungen, den HTML-Code Ihrer Blog-Beiträge, die Kommentare anderer Benutzer usw. speichern kann. Diese Datenbank sowie ein Datenbank-Nutzer, der darauf zugreifen darf, wird jetzt eingerichtet. Ich habe für die Datenbank und den Benutzer jeweils den Namen wp verwendet, aber natürlich sind Sie bei der Namenswahl frei.

mysql -u root -p
Password: xxxxxxx   (gleiches Passwort wie bei mysql_secure_installation)

mysql> CREATE DATABASE wp;
mysql> CREATE USER wp@localhost IDENTIFIED BY 'strengGeheim';
mysql> GRANT ALL ON wp.* TO wp@localhost; 
mysql> exit

WordPress-Dateien installieren

WordPress steht nicht als Paket zur Verfügung, sondern muss manuell installiert werden. Dazu laden Sie die Dateien herunter, packen Sie aus und weisen Ihnen die richtigen Zugriffsrechte samt SELinux-Kontext zu.

cd /var/www/html
rm index.html
wget https://de.wordpress.org/latest-de_DE.tar.gz
tar xzf latest-de_DE.tar.gz
chown -R apache wordpress
chcon -R system_u:object_r:httpd_sys_content_rw_t:s0 wordpress
rm latest-de_DE.tar.gz

Mit der Installation der WordPress-Dateien in /var/www/html/wordpress soll dieses Verzeichnis der Startpunkt für die Dateien in Apache sein. Daher mussdie Variable DocumentRoot von /var/www/html auf /var/www/html/wordpress umgestellt werden. Bei der Gelegenheit können Sie auch gleich den Server-Namen einstellen:

# in /etc/httpd/conf/httpd.conf zwei Zeilen ändern
DocumentRoot "/var/www/html/wordpress"
ServerName example.com

Damit die Einstellungen wirksam werden, ist das folgende Kommando notwendig:

systemctl reload httpd

WordPress konfigurieren

Damit ist es endlich soweit. Sie können nun mit der WordPress-Konfiguration beginnen. Dazu öffnen Sie die Seite example.com/wp-admin/setup-config.php. Im ersten Schritt müssen Sie den Namen der Datenbank, den Datenbank-User sowie dessen Passwort angeben.

Konfiguration des Datenbankzugriffs für WordPress

Im nächsten Schritt legen Sie den Namen Ihrer Website sowie einen Benutzernamen und ein Passwort für die WordPress-Administration fest. Mit diesen Daten können Sie sich danach bei Ihrer neuen Seite anmelden und die mit Inhalten füllen.

Fine Tuning

Wenn alles funktioniert, sollten Sie sich noch um die folgenden Details kümmern:

  • SSH absichern (z.B. mit Fail2Ban)
  • Paket-Updates automatisieren (Paket dnf-automatic)
  • automatische Umleitung HTTP -> HTTPS sowie Optimierung der HTTPS-Optionen (siehe https://ssl-config.mozilla.org)
  • Backup-System einrichten

Wie wird in D, A und CH geheizt?

26. Mai 2023 um 10:53

Aktuell recherchiere ich für ein neues Buch über Wärmepumpen zur Frage, wie in der DACH-Region geheizt wird. Die Unterschiede sind verblüffend. Die folgende Tabelle fasst zusammen, wie viel Prozent der Haushalte über welche Art der Heizung verfügen.

Die Verteilung der Heizungsarten variiert in der DACH-Region stark. D und CH: Stand 2021. A: Stand 2019/2020. Quellen: siehe Ende des Beitrags.

Wie jede Statistik bedarf auch die obige Tabelle einiger Erläuterungen.

Fernwärme

Bei mehr als 40 Prozent aller Fernwärmeanlagen stammt die Wärme aus der Verbrennung von Gas. Immerhin handelt es sich dabei oft um eine Doppelnutzung: Vielen Gaskraftwerke sind mit einer Anlage zur Kraft-Wärme-Kopplung ausgestattet; die im Kraftwerk sowieso entstehende Wärme kann so in das Fernwärmenetz eingespeist werden, was den Gesamtwirkungsgrad des Kraftwerks im Winter verbessert. Andere Wärmequellen sind Industrieanlagen (Nutzung von Prozesswärme), Müllverbrennungsanlagen oder, zum Glück immer seltener, Kohlekraftwerke. Nur ganz vereinzelt können warme Quellen unter der Erde genutzt werden (Geothermie).

Anders formuliert: Der Anteil der Haushalte, die in letzter Konsequenz mit Gas beheizt werden, ist sogar noch höher als die obige Tabelle vermuten lässt.

Holz/Pellets-Heizung

Der Bundesverband der Energie- und Wasserwirtschaft e.V. (BDEW) inkludiert Holz- und Pellets-Heizungen unter »Sonstige« und gibt dafür einen Anteil von 6,2 Prozent an. Laut anderen Quellen heizen in Deutschland ca. 3 bis 4 Prozent aller Haushalte mit Pellets, Hackschnitzel oder Stückholz. Im krassen Gegensatz dazu nimmt Österreich mit einem untypisch hohen Anteil von Pelletsheizungen (ca. 13 Prozent) eine Spitzenposition innerhalb von Europa ein.

Brauchwasser

Die meisten Datenerhebungen differenzieren nicht, ob die Anlage nur die Heizung oder auch das Warmwasser betrifft. Dabei ist das ein wichtiger Unterschied. Die Brauchwassererwärmung beansprucht immerhin ca. ein Sechstel der Gesamtenergiemenge für Heizung und Warmwasser.

Gerade in größeren Wohnanlagen dient die zentrale Heizungsanlage oft nur für die Heizung, nicht für das Warmwasser. Dann braucht jeder Haushalt zusätzlich einen energetisch ungünstigen Elektroboiler für das Warmwasser.

Heizungsanzahl versus Energiemenge

Es gibt im Internet viele Quellen, die den Heizungsmarkt abbilden, wobei es je nach Erhebung und Aktualität zu kleineren Abweichungen kommt. Wenn die Zahlen vollkommen anders als in der obigen Tabelle aussehen, gilt eine ganz andere Methodik. Beispielsweise stellt die Statistik Austria einen Datensatz zur Verfügung, der nicht die Anzahl der Haushalte, sondern die pro Heizungsart aufgebrachten Energiemengen vergleicht.

Quellen Deutschland

Quellen Österreich

Quellen Schweiz

openSUSE 15.5

08. Juni 2023 um 05:39

openSUSE Leap 15.5 ist ein weiteres Minor-Release, das auf SUSE Linux Enterprise Server 15 (SLES 15) basiert. Nach längerer Pause (zuletzt habe ich mir in diesem Blog openSUSE 15.1 angesehen) ist es wieder einmal Zeit, einen Blick in die openSUSE-Welt zu werfen.

openSUSE 15.5 mit KDE/Plasma-Desktop

Aktualisiert am 3.8.2023: NVIDIA-Treiberinstallation

Versionsnummern

openSUSE zeichnet sich durch einen seltsamen Mix aus alter und aktueller Software aus. Vollkommen unbegreiflich ist die uralte Python-Version (aktuell wäre 3.11).

Basis             Desktop             Programmierung   Server
---------------   ------------------  --------------   --------------
Kernel     5.14   KDE Plasma    5.27  bash       4.4   Apache     2.4
glibc      2.31   Gimp          2.10  docker   20.10   CUPS       2.2
X-Server   1.20   LibreOffice    7.4  gcc       12.2   MariaDB   10.6
Wayland    1.21                       git       2.35   OpenSSH    8.4
Mesa       20.2                       Java     11/17   qemu/KVM   7.1
Systemd     249                       PHP    7.4/8.0   Postfix    3.7
NetworkMan 1.38                       podman     4.4   Samba     4.17
GRUB       2.06                       Python     3.6

Sie können bei der Installation zwischen mehreren Desktop-Systemen wählen. Viele openSUSE-Anwender entscheiden sich für KDE. Gnome steht nur in der ziemlich alten Version 41 zur Verfügung.

Wenn Sie openSUSE in Kombination mit aktueller Software einsetzen möchten, sollten Sie sich die Rolling-Release-Variante Tumbleweed ansehen. Persönlich bin ich der Meinung, dass Tumbleweed das »bessere« openSUSE ist.

Installation und Administration

Die Installation von openSUSE funktioniert gut wie eh‘ und je. Das Installationsprogramm brilliert vor allem bei komplizierten Setups mit RAID und LVM. Standardmäßig kommt das Dateisystem btrfs zum Einsatz, wobei diverse Subvolumes für /var, /tmp usw. eingerichtet werden. Außerdem werden bei jeder Paket-Installation und bei jedem Update Snapshots erstellt. Diese Snapshots ermöglichen es, eine fehlgeschlagene Paketoperation rückgängig zu machen. (Allzu oft tritt dieser Fall in der Praxis nicht auf. Ich hatte dazu in den letzten Jahren nie die Notwendigkeit, egal, unter welcher Distribution ich gerade gearbeitet habe.)

Das Systemadministrations-Tool YaST war über lange Zeit das Unterscheidungsmerkmal zwischen SUSE und anderen Distributionen. Mittlerweile wirkt YaST aber definitiv angestaubt. Beispielsweise sind die Module zur Software-Verwaltung aus heutiger Sicht unübersichtlich und verwirrend organisiert. Das Firewall-Modul findet außer ‚docker‘ keine Netzwerkschnittstellen. Das AppArmor-Modul eignet sich gerade noch dazu, AppArmor zu deaktivieren bzw. wieder zu aktivieren.

Probleme bei der NVIDIA-Treiberinstallation

Bei vergangenen openSUSE-Versionen gestaltete sich die Installation des proprietären NVIDIA-Treibers sehr einfach: NVIDIA-Paketquelle aktivieren, dann im YaST-Modul Online-Aktualisierung das Menükommando Extras/Alle
passenden empfohlenen Pakete installieren
ausführen.

Aktuell scheitert allerdings die Aktivierung der NVIDIA-Paketquelle. Abhilfe: Richten Sie die Paketquelle
manuell mit Hinzufügen/URL angeben ein und verwenden Sie dabei die Adresse `http://download.nvidia.com/opensuse/leap/15.5` (mit HTTP, nicht HTTPS!). Siehe auch diesen Beitrag im NVIDIA-Forum.

Warum openSUSE?

Ich habe mich in den letzten Jahren immer wieder gefragt: Was macht die Attraktivität von openSUSE aus? Laut metrics.opensuse.org sind die Nutzerzahlen in den letzten zwei Jahren stark gestiegen. Auch auf distrowatch.com hält sich openSUSE in den Top-10. (Ich war vor 20 Jahren selbst großer SUSE-Fan, aber das hat sich gelegt.)

  • openSUSE ist großartig, wenn Sie beruflich oder für den Unterricht eine kostenlose Trainingsumgebung für SLES brauchen.
  • openSUSE konzentriert sich für die Desktop-Anwendung auf KDE. Wer KDE bevorzugt, hat im Linux-Mainstream wenig Auswahl. openSUSE ist dann durchaus eine sinnvolle Option.

  • openSUSE verzichtet in der Grundausstattung auf Snap- oder Flatpak-Pakete. Gerade im Vergleich zu Ubuntu kann man das als Pluspunkt sehen.

Ausblick

Für seine Enterprise-Version arbeitet SUSE momentan an einem Komplettumbau. SLES 15 soll durch die Adaptable Linux Platform (ALP) abgelöst werden. ALP basiert auf Micro OS, einer neuartigen immutable Distribution, bei der Updates in Form von atomaren Transaktionen (und nicht durch die Aktualisierung von Paketen) erfolgen. SUSE ALP ist allerdings nur das Kern-Betriebssystem. Die darin installierten Anwendungen sollen ähnlich wie Container (denken Sie an Docker oder Podman) laufen. Red Hat und Canonical experimentieren mit Silverblue bzw. mit Ubuntu Core und Snaps und in eine ähnliche Richtung.

openSUSE ALP soll diesen Paradigmen-Wechsel nachvollziehen. Bis es soweit ist, wird wohl noch einige Zeit vergehen — denn vorher soll es mit openSUSE 15.6 noch ein Minor Release geben (siehe news.opensuse.org).

Update 13.6.2023: Das in SUSE-Frage stets gut informierte Blog MerCurius weist darauf hin, dass ALP vermutlich eine reine Server-Plattform sein wird und keine Desktop-Pakete enthält. Damit openSUSE ALP als Desktop-System funktionieren kann, sucht openSUSE nach Unterstützung durch die Community.

Quellen/Links

Download, Release Informationen und sonstige Dokumentation

ALP/MicroOS/Silverblue/Ubuntu Core

NVIDIA-Paketquelle

Debian 12 »Bookworm«

17. Juni 2023 um 18:33

Debian 12 »Bookworm« vervollständigt den Distributionsreigen der letzten Monate. Debian wird ca. alle zwei Jahre aktualisiert. Die nun präsentierte Version zeichnet sich vor allem durch Software-Updates und ein paar technische Neuerungen aus. Erfreulich ist, dass die für den Betrieb von Netzwerk-Adaptern und anderen Hardware-Komponenten erforderliche Firmware-Dateien nun gleich mitgeliefert wird. Diese pragmatische Entscheidung des Debian-Entwicklerteams erleichtert die Installation von Debian auf aktuellen Notebooks. Davon abgesehen hat sich am Installations-Programm nur wenig geändert. Wenn man die Logik der Dialoge einmal kennt bzw. verstanden hat, lässt sich das Programm aber sehr effizient bedienen. Selbst komplexe Setups inklusive LVM, RAID und Verschlüsselung sind kein Problem.

Das Debian-Installationsprogramm ist optisch keine Glanzleistung, funktioniert dafür aber ausgezeichnet

Während der Installation haben Sie die Wahl zwischen mehreren Desktop-Systemen (Gnome, KDE, XFCE etc.). Ich habe meine Tests mit Gnome durchgeführt.

Debian 12 mit Gnome-43-Desktop

Versionsnummern

Basis             Desktop             Programmierung   Server
---------------   ------------------  ---------------  --------------
Kernel      6.1   Gnome          43   bash        5.2   Apache     2.4
glibc      2.36   Gimp         2.10   docker.io 20.10   CUPS       2.4
X-Server   21.1   LibreOffice   7.4   gcc        12.2   MariaDB  10.11
Wayland    1.21                       git        2.39   OpenSSH    9.2
Mesa       22.3                       Java         17   qemu/KVM   7.2
Systemd     252                       PHP         8.2   Postfix    3.7
NetworkMan 1.42                       Podman      4.3   Samba     4.17
GRUB       2.06                       Python     3.11                  

Generell ist festzustellen, dass die Versionsnummern — eigentlich untypisch für Debian — erfreulich aktuell sind. Insbesondere gilt dies für MariaDB und PHP. Gerade bei MariaDB liefern die meisten anderen Distributionen Uralt-Versionen aus. Debian macht es hier besser! (MySQL fehlt dafür.)

Plattformen (Architekturen)

Debian 12 steht (unverändert im Vergleich zu Debian 11) für die folgenden Plattformen zur Verfügung:

  • Standard-PCs: i386 und amd64
  • ARM: arm64, armhf, armel
  • MIPS: mipsel, mips64el
  • PowerPC: ppc64el
  • S390X: s390x

Weitere Details zur Hardware-Unterstützung können Sie hier nachlesen:

Technische Neuerungen

Firmware-Dateien: Ich habe in der Einleitung darauf hingewiesen, dass die offiziellen Installationsmedien nun auch Firmware-Dateien enthalten. Hinter den Kulissen wurde für diese Dateien die neue Paketquelle non-free-firmware geschaffen, die automatisch aktiv ist.

Logging: Der traditionelle Syslog-Dämon rsyslogd wird standardmäßig nicht mehr installiert. Stattdessen erfolgt das Logging nun über das Journal (eine systemd-Komponente). Die Logging-Daten werden dauerhaft in binärer Form gespeichert (Verzeichnis /var/log/journal) und können mit journalctl ausgewertet werden. Der wichtigste Unterschied im Vergleich zu früher besteht darin, dass diverse Logging-Dateien (z.B. /var/log/mail*) nicht mehr zur Verfügung stehen. Abhilfe schafft gegebenenfalls die Installation von rsyslog. Das Paket befindet sich weiter in den Paketquellen.

Keys für externe Paketquellen: apt-key ist veraltet. Beim Einrichten von neuen Paketquellen muss nun ein Schlüssel in /etc/apt/trusted.gpg.d hinterlegt werden. Auf diesen Schlüssel muss in /apt/sources.list.d/*.conf Bezug genommen werden. Das neue Prozedere ist sicherer, aber leider auch wesentlich umständlicher. Hintergründen können Sie z.B. in der Debian-Dokumentation oder auf syslog.me nachlesen.

Keine anderen Betriebssysteme im GRUB-Menü: Während der Installation verzichtet Debian so wie aktuelle Ubuntu-Versionen darauf, das Script os-prober auszuführen und alle anderen auf den SSDs/Festplatten gefundenen Betriebssysteme in das GRUB-Menü einzubauen. Dieser Schritt ist nicht nur zeitaufwändig, sondern auch überflüssig, weil Sie das zu startende Betriebssystem ja auch über ein EFI-Menü auswählen können. Sollte dabei etwas schief gehen, ist es ganz einfach, den os-prober zu reaktivieren. Dazu fügen Sie die folgende Zeile am Ende von /etc/default/grub ein:

# in /etc/default/grub
GRUB_DISABLE_OS_PROBER=false

Es geht nichts über eine doppelte Verneinung ;-)

Anschließend erzeugen Sie grub.cfg mit einem Aufruf von update-grub neu.

Wartungszeitraum

Anders als bei Ubuntu sind die Angaben zum Wartungszeitraum von Debian ein wenig vage. Grundsätzlich gibt es bei Debian ca. alle zwei Jahre ein neues Release. Das jeweils vorige Release wird dann noch ca. ein Jahr mit Updates versorgt, womit sich ein offizieller Wartungszeitraum von ca. drei Jahren ergibt.

Ein Team von Freiwilligen versucht Debian für die Plattformen i386, amd64, arm64 und armhf über den offiziellen Wartungszeitraum hinaus insgesamt fünf Jahre mit kritischen Sicherheits-Updates zu versorgen (Projekt Debian LTS).

»Bitte legen Sie das Medium mit dem Namen ‚Debian GNU/Linux‘ ein«

Der Standardinstaller hinterlässt in /etc/apt/sources.list eine Zeile mit dem Installationsmedium (USB-Stick oder DVD). Wenn Sie nach der Installation ein Paket installieren wollen (apt install <name>), will apt, dass Sie das Installationsmedium wieder einlegen, anstatt das betreffende Paket einfach herunterzuladen. Das ist (schon seit vielen Jahren) nicht mehr zeitgemäß.

Abhilfe: Öffnen Sie /etc/apt/sources.list mit einem Editor und entfernen Sie die Zeile, die mit deb cdrom beginnt.

Fazit

Debian ist mit »Bookworm« ein grundsolides, überdurchschnittlich modernes Release gelungen. Snaps und Flatpaks sind optional möglich, aber nicht erforderlich. Vielleicht ist das altmodisch, aber ich sehe es als Pluspunkt.

Gerade in Zeiten, wo dem Linux-Desktop ein rauer Wind entgegen weht (Red Hat will keine LibreOffice-Pakete mehr erstellen, SUSE überhaupt keine kommerzielle Desktop-Distribution mehr anbieten usw.) ist es großartig, dass Debian nicht nur am Server brilliert, sondern auch ein gutes Angebot für Desktop-User darstellt.

Ich habe es in meinen früheren Debian-Artikel schon erwähnt, aber man kann es nicht oft genug sagen: Debian ist das Fundament für eine große Palette weiterer Distributionen: Ubuntu und all seine Varianten, Kali Linux, Raspberry Pi OS usw. Die Linux-Community kann dem Debian-Team gar nicht dankbar genug sein, dass es dieses Fundament immer wieder neu zusammenstellt!

Quellen/Links

Andere Tests

Ärger für Red-Hat-Klone

22. Juni 2023 um 06:08

Red Hat Enterprise Linux (RHEL) besteht aus Open-Source-Code, der öffentlich zugänglich ist. Diesen Umstand nutzen AlmaLinux, Oracle Linux, Rocky Linux und einige weitere Distributionen, um zu RHEL kompatible Distributionen anzubieten. Es ist verständlich, dass dies Red Hat (oder noch mehr IBM?) ein Dorn im Auge ist. Die Klons funktionieren so gut wie das Original, und wer keinen Support braucht oder mit externen Support-Angeboten das Auslangen findet, kann sich viel Geld für Lizenzen sparen.

Nachdem Red Hat schon 2020 das CentOS-Projekt (quasi einen Red-Hat-eigener RHEL-Klon) beendet hat und durch das für den Produktivbetrieb weniger attraktive CentOS Stream ersetzt hat, hat die Firma Ende Juni verkündet, den öffentlichen Zugang auf die RHEL-Quellen unter https://git.centos.org zu beenden. Den RHEL-Quellcode erhalten dann möglicherweise nur noch zahlende Kunden. Das Ganze wurde in bestem Marketing-Sprech als Aufwertung des CentOS-Stream-Projekts verkündet. Die zentrale Aussage lautet: CentOS Stream will now be the sole repository for public RHEL-related source code releases.

Aktuell ist noch unklar, was das für AlmaLinux, Rocky Linux & Co. bedeutet. Grundsätzlich könnten die hinter den Projekt stehenden Organisationen einfach ein RHEL-Abo abschließen. Die Frage ist aber, in welcher Form der Zugang auf den Quellcode dann erfolgt (über SRPM-Pakete?), und wie flott diese Pakete aktualisiert werden. Letztlich könnte die ganze Aktion darauf hinauslaufen, die natürlich weitgehend automatisierten Build-Prozesse der Klone zu behindern oder zu verzögern.

Eine weitere Frage ist, ob irgendwelche EULA-Regeln die Verwendung dieses Codes zum Nachbau anderer Distributionen verbieten können. Das erscheint mir — ohne juristisches Wissen — eher unwahrscheinlich. Es galt immer und es gilt weiterhin die GNU Public License.

Es bleibt also spannend. AlmaLinux verkündet auf Twitter: Don’t panic. Wahrscheinlich eine gute Idee.

Quellen/Links

Ausgewählte Artikel und Updates nach Erscheinen meines Blog-Artikels

📚 Scripting-Buch erschienen

22. Juni 2023 um 07:46

In meinem Arbeitsumfeld sind Scripts allgegenwärtig. Ich verwende Scripts, um den Energiesparmodus meines Notebooks einzustellen, um aus Markdown-Dateien die PDF-Datei für den Druck dieses Buchs zu erzeugen, um auf Servern das Backup zu automatisieren, um E-Books mit Wasserzeichen auszustatten, um in einer Webapplikation neue Kunden einzurichten, um Dutzende von Datenbanken nach logischen Fehlern zu durchsuchen, um virtuelle Maschinen für den Unterricht zu erstellen, um Fotos zu sortieren usw. Im Herbst 2022 habe ich außerdem einen Lehrauftrag zum Thema Scripting an der FH JOANNEUM übernommen. Höchste Zeit also, um Scripting-Know-how in ein Buch zu fassen.

Umfang: 492 Seiten
Autor: Michael Kofler
ISBN: 978-3-8362-9424-9
Preis: Euro 39,90 (in D inkl. MWSt.)

Das soeben im Rheinwerk Verlag veröffentlichte Buch behandelt die Sprachen Bash, Python und PowerShell. Es ist in drei Teile konzipiert. Der Grundlagenteil enthält einen Crashkurs für die drei genannten Programmiersprachen. Der zweite Teil stellt im Scripting-Umfeld häufig eingesetzte Tools und Werkzeuge vor: Reguläre Ausdrücke, JSON- und XML-Bibliotheken, SSH und Git etc. Der dritte Teil gibt konkrete Anwendungsbeispiele. Diese reichen von Backups über Bildverarbeitung bis hin zur Administration von Datenbank- und Virtualisierungssystemen.

Das Buch steht unter dem Motto: Scripting ist die Kunst, IT-Probleme in zehn Zeilen Code zu lösen. Lesen Sie hier das Vorwort!

Vorwort (PDF)

Mehr Details und Bestellinformationen finden Sie hier.

Kommentar: Red Hat und die Parasiten

23. Juni 2023 um 06:47

Die Einstellung des Git-Repos mit den RHEL-Quellen (siehe auch Ärger für Red-Hat-Klone) hat im Netz erwartungsgemäß für hitzige Diskussionen gesorgt. Ein wenig irritiert haben mich die Kommentare auf lwn.net, eigentlich der seriösesten Linux-News-Quelle: Dort wurden AlmaLinux, Rocky Linux und speziell Oracle von manchen Autoren als »Parasiten« bezeichnet.

Nun ist es unbestritten, dass die Zusammenstellung einer Distribution wie RHEL mit richtig viel Arbeit verbunden ist. Noch viel mehr Mühe bereitet es, das Software-Angebot über 10 Jahre zu warten und auch bei veralteter Software Sicherheits-Patches rückzuportieren. (Python 2.7 ist ein klassisches Beispiel.)

Wenn nun die RHEL-Klone die Quellen einfach kopieren und daraus ein kostenloses Produkt machen (oder, wie im Falle von Oracle, wahlweise kostenlos oder kostenpflichtig mit Support), ist das noch fair? Ist die Bezeichnung »Parasiten« womöglich zutreffend?

Anmerkung: Dieser Artikel wurde zwischen 23.6. und 24.6.2023 mehrfach aktualisiert.

Open Source ist keine Einbahnstrasse

ABER: Linux ist Open-Source-Software. Und das gilt nicht nur für den Kernel, das gilt auch für alle weitere Komponenten: Apache, NGINX, PHP, PostgreSQL, Samba, Postfix, Java, die Bash, der C-Compiler, Python, GRUB usw. Ich könnte hier vermutlich 1000 Open-Source-Komponenten aufzählen, die in RHEL zum Einsatz kommen. Ja, Red Hat arbeitet intensiv an manchen Open-Source-Projekten mit (dem Kernel, systemd, Gnome usw.) und unterstützt viele weitere finanziell. Von anderen Projekten profitiert es, ohne etwas zurückzugeben.

Dazu noch eine Anmerkung aus meiner beruflichen Praxis: Red Hat hat mit Podman ein Konkurrenzprodukt zu Docker geschaffen. Beide Programme stehen unter Open-Source-Lizenzen, beide halten sich an den öffentlichen OCI-Standard und beide funktionieren großartig. In der Presse genießt Docker aber einen zweifelhaften Ruf, weil es versucht, Geld zu verdienen. (Gerade c’t und iX bzw. einige Heise-Autoren sind sehr Docker-kritisch eingestellt.) Übersehen wird dabei: Die Firma Docker betreibt — mit beträchtlichem finanziellem Aufwand — den Docker Hub, die weltweit größte Quelle von Container-Images. Red Hat betreibt zwar auch Registries für ein paar eigene Software-Projekte, aber davon abgesehen gilt: Wer Podman anwendet, bezieht in aller Regel die Images vom Docker Hub (also von docker.io) und verursacht so weitere Kosten für Docker. Red Hat und Podman sind hier also Nutznießer einer Infrastruktur, die von einer anderen Firma geschaffen wurde. (Und ja, das ist Open Source. Das bessere Angebot wird sich langfristig durchsetzen.)

Das Open-Source-Modell funktioniert dann am besten, wenn Einsatz/Aufwand und Nutzen einigermaßen fair verteilt sind. Das Linux-Ökosystem als Ganzes profitiert von erfolgreichen Open-Source-Firmen, und Red Hat war ohne Zweifel die erfolgreichste. (Seit 2018 ist Red Hat Teil von IBM.) Red Hat wiederum profitiert vom riesigen Angebot exzellent gewarteter Open-Source-Software.

Wenn nun umgekehrt kleine Entwickler, Organisationen ohne riesige Finanzmittel, Schulen usw. RHEL-kompatible Software über den Umweg von AlmaLinux, Rocky Linux und Co. kostenfrei nutzen dürfen, erscheint mir das fair. Wiederum profitieren alle, letztlich sogar Red Hat bzw. IBM, weil ihre Software von vielen Anwendern genutzt und getestet wird, weil Studenten die Administration von RHEL-kompatiblen Systemen lernen (und nicht etwas die von Debian oder Ubuntu) usw.

Ohne Not in den Shit Storm

Der Schritt von Red Hat, die Quellen zu RHEL (soweit es GPL-technisch überhaupt möglich ist) zu kappen, wäre verständlich, wenn man sich um die finanzielle Stabilität von Red Hat Sorgen machen müsste. Aber soweit man den Finanzberichten trauen kann, ist das nicht der Fall. IBM hat 2018 Red Hat für 34 Mrd. Dollar gekauft. Damals machte Red Hat 2,9 Mrd Dollar Umsatz und 259 Mil. Dollar Gewinn (Quelle). Seither werden keine eigenen Red-Hat-Zahlen mehr veröffentlicht, aber die Red-Hat-Sparte innerhalb von IBM hat sich offenbar prächtig weiterentwickelt (Quelle). Red Hat kämpft also nicht um sein finanzielles Überleben. Eher ist es wohl die Gier (IBMs?), aus einem gut gehenden Geschäft noch mehr rauszuholen. Auch wenn dabei die Fairness auf der Strecke bleibt.

Und eines muss man schon sagen: Das Timing ist bösartig, ein freundlicheres Wort fällt mir nicht ein. Sowohl die Kommunikation über das CentOS-Ende (Ende 2020) als auch der Stopp der Veröffentlichung der RHEL-Quellen unter git.centos.org (Juni 2023) erfolgte jeweils äußerst kurzfristig mitten im Release-Zyklus. Es ist beabsichtigt, die Anwender von (damals) CentOS und (heute) AlmaLinux, Rocky Linux, Oracle Linux ganz bewusst zu verunsichern und vor den Kopf zu stoßen.

fosspost.org hat die Aktion Red Hat als Schuss ins Knie bezeichnet. Mir erscheint diese Einschätzung zutreffend. Ansible-Entwickler Jeff Geerling fragt: »Are you dumb?« und überlegt, ob er sich überhaupt noch die Mühe machen soll, RHEL zu unterstützen (also z.B. Fehlermeldungen zu bearbeiten, die sich auf RHEL beziehen).

Als Red Hat das CentOS-Projekt in seiner bisherigen Form stoppte, hatte ich Sorgen um die freie Verfügbarkeit von RHEL-Klonen. Dann erlebte das Konzept in Form von AlmaLinux und Rocky Linux eine Wiedergeburt und funktioniert heute besser denn je. Womöglich wird sich dieses Spiel wiederholen. An den Regeln der GNU Public Licence geht auch für Red Hat/IBM kein Weg vorbei. Sicher ist aber schon jetzt: Red Hat (IBM) verliert in der Open-Source-Community gerade massiv Reputation und Gunst.

Quellen/Links

Reaktionen

»Parasiten«-Diskussion

Finanzielle Daten zu Red Hat

HEIC/HEIF-Dateien unter Ubuntu und Fedora verarbeiten

14. August 2023 um 16:46

Das High Efficiency Image File Format (HEIF) ist ein relativ neues Dateiformat für Bilder und Bildsequenzen. Es ist durch die Moving Picture Experts Group (MPEG) standardisiert und wird seit 2017 vor allem von Apple eingesetzt. Die resultierenden *.heif– bzw. *.heic-Dateien ermöglichen bei gleicher Bildqualität kleinere Dateigrößen. Die Kennung *.heic weist auf die Kombination von HEIF mit dem Video-Codec Efficiency Video Coding (HEVC) hin.

Kürzlich wollte ich ein paar mit dem iPhone aufgenommene Bilder unter Linux mit Shotwell verarbeiten. Dabei bin ich, leider beinahe erwartungsgemäß, auf Probleme gestoßen. Einige ließen sich lösen, aber nicht alle.

Mit etwas Überredungskunst kann Shotwell auch mit HEIC-Dateien umgehen.

Ubuntu

Es beginnt damit, dass das weit verbreitete Foto-Management-Programm Shotwell erst seit April 2023 (Version 0.32) kompatibel mit dem HEIF-Format ist. Ubuntu bis einschließlich Version 23.04 liefert Shotwell aber in der Version 0.30 aus.

Um Version 0.32 zu installieren, müssen Sie zuerst ein Private Package Archive (PPA) aktivieren. Außerdem müssen
Sie die Bibliotheken libheif1 und heif-gdk-pixbuf installieren. (Diese Pakete gelten nicht als Abhängigkeiten und werden daher nicht automatisch installiert.)

sudo add-apt-repository ppa:ubuntuhandbook1/shotwell
sudo apt update
sudo apt install shotwell libheif1 heif-gdk-pixbuf

Sind diese Hürden einmal überwunden, funktioniert der Import von HEIC-Dateien in Shotwell problemlos, wenn auch sehr langsam.

Fedora

Unter Fedora 38 sieht die Lage nicht viel besser aus. Shotwell steht zwar in der aktuellen Version 0.32 wahlweise als Flatpak- oder als RPM-Paket zur Verfügung, scheitert aber in beiden Varianten beim Import von HEIC-Dateien. Schuld sind wiederum fehlende Bibliotheken.

Bei der Flatpak-Variante lässt sich dieses Problem aktuell nicht lösen, weil Shotwell die Bibliotheken aus Framework-Flatpaks liest, auf die Sie als Anwender keinen Einfluss haben. (Habe ich schon einmal erwähnt, dass ich weder von Snaps noch von Flatpaks viel halte?)

Die RPM-Version von Shotwell wird HEIF-kompatibel, wenn Sie die Paketquellen RPM Fusion Free und Nonfree aktivieren (siehe https://rpmfusion.org/Configuration) und das dort enthaltene Paket libheif-freeworld installieren:

sudo flatpak remove shotwell
sudo dnf install shotwell libheif-freeworld

Unter Fedora scheiterte Shotwell jetzt aber am Auslesen der EXIF-Daten. Damit fehlen Informationen, wann die Fotos aufgenommen wurden. Eine Lösung zu diesem Problem habe ich nicht gefunden. Die Sache ist ein wenig unbegreiflich, weil der Import unter Ubuntu mit EXIF-Daten funktioniert.

Nautilus und Gimp

Nicht nur Shotwell zickt, wenn es auf HEIC-Dateien stößt, ähnliche Probleme haben auch Gimp, Nautilus und Co. Bei Gimp besteht die Lösung darin, das Paket gimp-heif-plugin zu installieren.

Nautilus unter Debian/Ubuntu setzt den heif-thumbnailer voraus, der aber ebenfalls nicht automatisch installiert wird. Unter Fedora müssen Sie stattdessen die libheif-tools installieren.

heic-convert

Eine Notlösung besteht darin, HEIC-Dateien vorweg in das JPEG-Dateien umzuwandeln. Dabei hilft das Kommando heif-convert aus dem Paket libheif-tools (Fedora) bzw. libheif-examples (Ubuntu). Das folgende Kommando durchläuft alle *.HEIC-Dateien im aktuellen Verzeichnis und erzeugt JPEG-Dateien in hoher Qualität. Die resultierenden Dateien sind leider wesentlich größer als die HEIC-Originale.

for f in *.HEIC; do heif-convert -q 95 --with-exif $f $f.jpg; done

Fazit

Wenn sich immer wieder einmal jemand wundert, warum aus Linux am Desktop nichts wird — hier ist die Antwort: Aufgrund vieler Kleinigkeiten versagt Linux im praktischen Betrieb und treibt seine Anwender zur Verzweiflung. Und den schwarzen Peter jetzt Apple zuzuschieben, das partout HEIF/HEVC einsetzt, ist nicht ganz fair: Diese Dateiformate kommen nun seit sechs (!) Jahren zum Einsatz, nicht erst seit gestern.

Und tatsächlich sind unter Linux eigentlich alle Puzzle-Stücke schon da. Aber ohne stundenlange Internet-Recherche lassen sie sich nicht zusammenfügen. (Ein verblüffendes Gegenbeispiel ist übrigens KDE Neon, ansonsten eigentlich nicht meine Lieblingsdistribution: Dort werden HEIC-Dateien auf Anhieb im KDE-Dateimanager korrekt angezeigt. Auch Digikam kommt mit den Dateien sofort zurecht. Leider auch nur fast: Digikam scheitert, im Portrait-Modus aufgenommene Bilder richtig zu drehen, obwohl die EXIF-Daten eigentlich da wären.)

Quellen/Links

Raspberry Pi 5 ab Oktober 2023

28. September 2023 um 07:14

(Aktualisiert am 11.10.2023, jetzt mit eigenen Tests)

Völlig überraschend hat die Raspberry Pi Foundation heute den Raspberry Pi 5 vorgestellt. Die wichtigsten Eckdaten im Überblick:

  • Neuer SoC (BCM2712 mit Quad-Core Cortex-A76) mit ca. zwei- bis dreifacher CPU-Leistung
  • Höherer Stromverbrauch (Leerlauf 3,25 W, Vollast 8,6 W ohne externe Geräte, laut heise.de)
  • Höhere Anforderungen an das USB-C-Netzteil: 5V/3A DC Minimum (15 W), 5V/5A DC empfohlen (25 W)
  • Lüfter empfohlen, es gibt einen eigenen Lüfteranschluss
  • Vorerst Modelle mit 4 und 8 GiB RAM
  • Weiterhin SD-Card als primärer Datenträger
  • Neuer SD-Card-Transfermodus SDR104 verspricht 100 MByte/s bei kompatiblen SD-Karten
  • PCIe-SSDs sollen in Zukunft über Erweiterungen (HATs) unterstützt werden
  • Ein/Aus-Schalter
  • Kein 3,5-mm-Klinkenstecker mehr (ungünstig für Audio-Anwendungen)
  • Sonstige Anschlüsse (GPIO, 4xUSB, 2x MicroHDMI, Ethernet) kompatibel zu den bisherigen Pis
Raspberry Pi 5

Das Gerät soll ca. ab Ende Oktober lieferbar sein. Die Preisempfehlung lautet 60 $ für das 4-GiB-Modell, 80 $ für das 8-GiB-Modell. Welche €-Preise sich daraus ergeben (inklusive Umsatzsteuer, evt. inklusive neuem Netzteil + Lüfter), muss abgewartet werden.

Erste Tests

Die Raspberry Pi Foundation hat mir dankenswerterweise ein Vorab-Exemplar für Journalisten zukommen lassen. Die Inbetriebnahme gelang erwartungsgemäß mühelos. Wie alle anderen Webseiten kann auch ich bestätigen, dass der Rechner bei der Desktop-Nutzung jetzt unglaublich schnell ist. Bei einem Neustart dauert es nur wenige Sekunden, bis der Desktop erscheint. (Das geht definitiv viel schneller als bei meinem 2000-EUR-Notebook, auch wenn dieses zugegebenermaßen nicht mehr ganz neu ist. Dennoch faszinierend.)

Der winzige Ein/Aus-Schalter ist eine unscheinbare aber dennoch enorm zweckmäßige Verbesserung und schont sicher die USB-C-Buchse für die Stromversorgung. Bisher war es immer notwendig, das Kabel zu lösen und neu einzustecken, um einen ausgeschalteten Raspberry Pi wieder in Betrieb zu nehmen. Jetzt reicht ein Tastendruck.

Sehr empfehlenswert ist der von der Raspberry Pi Foundation angebotene Lüfter. In Kombination mit Raspberry Pi OS wird dieser nur bei Bedarf verwendet. Im Leerlaufbetrieb bleibt der Lüfter ausgeschalten, der Raspberry Pi profitiert aber dennoch vom relativ großen Kühlkörper. Die Temperatur beträgt dann ca. 45 bis 50°C — mehr als genug. Nur bei CPU-intensiven Aufgaben springt der Lüfter an und sorgt für eine aktive Kühlung und somit mehr Rechenleistung. (Ohne Kühlung reduziert der Raspberry Pi automatisch die CPU-Frequenz.)

Raspberry Pi OS

Meinem Exemplar lag eine SD-Karte mit einer Vorab-Version von Raspberry Pi OS Bookworm bei (also auf der Basis von Debian 12). Auf den ersten Blick hat sich an der Desktop-Oberfläche wenig geändert.

Hinter den Kulissen ist mehr neu:

  • Der Kernel läuft standardmäßig im 64-Bit-Modus.
  • Die Netzwerkkonfiguration erfolgt über den NetworkManager (kein dhcpcd mehr).
  • Die gesamte Software hat Debian 12 als Fundament (d.h. z.B. Python 3.11).

Bei meinen Tests verlangte Mathematica einen Lizenzcode. Ob es dabei bleibt, kann ich nicht sagen — das wäre sehr schade.

Mehr Infos zu Raspberry Pi OS Bookworm folgen demnächst auf diesem Blog.

Einschätzung

Die höhere CPU-Leistung ist vor allem bei der Anwendung des Geräts als Desktop-Rechner, zur Software-Entwicklung bzw. als Media-Center spannend. Aus dieser Perspektive ist es sehr schade, dass der Pi 5 weiterhin keine Möglichkeit bietet, SSDs direkt anzuschließen. Zwar gibt es eine neue PCI-Schnittstelle; die soll in Zukunft über ein Erweiterungs-Board (HAT) genutzt werden können. Das ist aber eine umständliche und teure Lösung.

Aus Bastel-Perspektive war schon die Leistung der bisherigen Modelle (3B+, 4B) ausreichend. Diese Modelle werden — sofern sie zu vernünftigen Preisen lieferbar sind — weiterhin eine attraktive Basis für Bastelprojekte bleiben. Das neue Modell 5 ist aus Maker-Sicht dagegen ein zweischneidiges Schwert: Ja, mehr CPU-Leistung ist immer gut. Aber die höheren Anforderungen an Netzteil und Lüfter sowie der Umstand, dass es vorerst keine Modelle mit weniger als 4 GiB RAM geben soll, führen zu einer massiven Preissteigerung selbst für Minimal-Setups. Auch der höhere Strombedarf im Leerlauf ist kein Pluspunkt.

Quellen/Links

PS: Eine Neuauflage des Raspberry-Pi-Buchs ist natürlich geplant, sie wird 2024 erscheinen. Mehr weiß ich gegenwärtig selbst nicht.

Bedienung des Fronius-Hybridwechselrichters »Symo GEN24«

29. September 2023 um 17:32

Seit gut einem Monat ist meine neue PV-Anlage mit einem Wechselrichter von Fronius in Betrieb. In den ersten Tagen habe ich die dreigeteilte Benutzeroberfläche etwas verwirrend gefunden: App versus Cloud-Webseite versus LAN-Weboberfläche. Dieser Blog-Beitrag erklärt das dahinterstehende Konzept mit seinen Vor- und Nachteilen — und versucht ein wenig hinter die Kulissen zu schauen.

An sich gibt es zu den Fronius-Wechselrichter ausgezeichnete Handbücher und Videos, die sich aber eher an den Techniker, Elektriker bzw. an den Installationsbetrieb richten. Ein übersichtliches Handbuch für Anwender habe ich dagegen nicht gefunden. Insofern helfen die folgenden Informationen (Motto: »The Missing Manual«) vielleicht anderen Anwendern bzw. geben zukünftigen Anlagenbesitzern einen kompakten Überblick über die Funktionen.

Sicht auf das Innenleben des Wechselrichters während der Montage

Basics

Ein Wechselrichter ist ein Gerät, das die Gleichspannung der PV-Module in die Wechselspannung des Haushaltsstrom umwandelt. Ein Hybridwechselrichter enthält zusätzlich Funktionen, um eine Batterie (einen Akku) zu laden und zu entladen. Je nachdem, wie viel Strom gerade lokal produziert und benötigt wird, versorgt der Wechselrichter den Haushalt mit Strom, lädt oder entlädt die Batterie und speist überschüssigen Strom in das Netz ein. Optional und gesteuert durch diverse Regeln kann der Wechselrichter auch weitere Verbraucher ansteuern (Wallbox des E-Autos, Heizstab oder Wärmepumpe für das Warmwasser etc.).

Der Wechselrichter steuert die Be- und Entladung des Batteriespeichers und des Elektroautos. (Gleichstrom: blau; Wechselstrom: orange; Steuerung: grün strichliert)

Aus technischer Sicht ist ein Wechselrichter ein Computer (denken Sie etwa an den Raspberry Pi), der die vielen elektronischen Komponenten steuert, über verschiedene Schnittstellen Daten anbietet bzw. liest und der schließlich eine lokale Weboberfläche zur Verfügung stellt. Im Fronius-Wechselrichter läuft Linux, anscheinend auf einer x86_64-CPU (siehe das nmap-Ergebnis am Ende dieses Beitrags).

Meine Anlage besteht aus einigen PV-Modulen (Ost/West-Montage), einem »Fronius Symo GEN24 6.0 Plus« Hybridwechselrichter samt eigenem Smartmeter sowie einer BYD-Batterie (Lithium-Eisen-Phosphat-Akku = LFP-Akku).

Bedienung und Steuerung

Fronius-Wechselrichter werden nach Möglichkeit mit dem Internet verbunden, per WLAN oder vorzugsweise über ein Ethernet-Kabel. In meinem Fall befindet sich der Wechselrichter im Keller, wo ein Netzwerk-Switch das ganze Haus mit Internet versorgt. Der Anschluss per Ethernet-Kabel war also ein Kinderspiel.

Grundsätzlich ist ein Betrieb natürlich auch ohne Internet möglich, allerdings ist dann kein Cloud-Zugriff auf die Produktionsdaten möglich. Ohne Internet steht zudem nur die lokale Weboberfläche zur Verfügung (wahlweise in einem lokalen Netzwerk oder mit einer Ad-Hoc-WLAN-Verbindung zum Wechselrichter, wenn Sie direkt vor Ort sind).

Damit sind wir bei den drei Varianten, über die Sie mit Ihrem Wechselrichter kommunizieren können:

  • per App
  • über die Cloud-Weboberfläche
  • über die lokale Weboberfläche

Die ersten beiden Varianten setzen voraus, dass der Wechselrichter mit dem Internet verbunden ist und dass Sie ein Konto in der Fronius-Cloud einrichten. Dieses Konto ist kostenlos. Wenn Sie allerdings Zugriff auf Daten wollen, die älter als drei Tage sind, müssen Sie für diese »Premium«-Funktion zahlen, aktuell 2 EUR/Monat.

Die dritte Variante steht Ihnen immer kostenlos zur Verfügung, sofern Sie vor Ort sind. Dazu verbinden Sie Ihr Notebook oder Smartphone mit dem lokalen Netzwerk, in dem sich auch der Wechselrichter befindet; alternativ stellen Sie eine WLAN-Verbindung zum Access Point des Fronius Wechselrichters her. Der Access Point ist nur aktiv, wenn der Wechselrichter nicht mit einem lokalen Netzwerk oder WLAN verbunden ist.

Die drei Varianten sind keineswegs gleichwertig: Die App gibt nur einen oberflächlichen Zugang auf die Produktionsdaten, bietet aber keine Einstellmöglichkeiten. Die Cloud-Weboberfläche stellt wesentlich mehr Daten deutlich übersichtlicher dar. Sie können Ihren Wechselrichter registrieren (längere Garantie), Service-Meldungen auszulesen etc.

Wenn es Ihnen um das Tuning geht, also z.B. welche Regeln für das Laden/Entladen der Batterie gelten sollen, dann müssen Sie in die lokale Weboberfläche. Sämtliche Einstellmöglichkeiten befinden sich hier. Dafür fehlt hier der Zugang auf historische Daten. Sie sehen nur, was die Anlage aktuell macht, aber nicht, was für fünf Minuten oder vor fünf Tagen war.

App-Bedienung

Fronius stellt die App Solar.Web für Apple und Android zur Verfügung. Damit Sie die App nutzen können, sind drei Voraussetzungen erforderlich:

  • Ihr Wechselrichter muss Internet-Zugang haben.
  • Er muss mit der Fronius-Cloud verbunden sein.
  • Sie brauchen ein Konto in der Fronius-Cloud, über das Sie sich in der App anmelden.

In der Regel kümmert sich Ihre PV-Firma bzw. Ihr Installateur um die ersten beiden Schritte. Sie richten unter https://www.solarweb.com/ einen Account ein. Ihr Installateur verbindet dann Ihre Anlage mit dem Account. Sie erhalten an Ihre E-Mail-Adresse einen Einladungs-Link, der in die App führt.

Die Bedienung der App ist einfach. Das Dialogblatt Aktuell zeigt die aktuellen Daten an, also PV-Produktion, lokaler Verbrauch, Ladezustand der Batterie und Einspeisung. Die Daten sind live und werden alle fünf bis zehn Sekunden aktualisiert. Besonders spannend ist der aktuelle Verbrauch, weil Sie so das Einschalten eines Lichts, eines Föns oder einer Herdplatte unmittelbar nachvollziehen können. Beachten Sie, dass die Werte nicht (immer) auf das Watt genau stimmen.

Im Dialogblatt Historie sehen Sie Daten aus der Vergangenheit. Der Blick in die letzten drei Tage der Vergangenheit ist kostenlos, mehr historische Daten erfordern ein »Premium«-Cloud-Abo bei Solar.Web. Einerseits ist es ärgerlich, dass diese recht elementare Funktion kostenpflichtig ist. Andererseits werden tatsächlich ziemlich viele Daten gespeichert und in einer sehr übersichtlichen Form zugänglich gemacht. Sie können nicht nur nachvollziehen, wie viel Strom Sie am 21.5.2022 produziert haben, sondern auch den zeitlichen Verlauf, die Ladung des Akkus, die Spannungskurven der PV-Module usw. Im Sinne eines Anlagen-Monitorings sind diese Daten sehr wertvoll und allemal die Kosten von aktuell 2 EUR/Monat wert.

Zu beachten ist, dass die Historie nur alle ein bis zwei Stunden aktualisiert wird. Während das Dialogblatt Aktuell Live-Daten zeigt, enden die Tageskurven für den Stromverbrauch, den Akku-Ladezustand usw. oft ein bis zwei Stunden vor dem aktuellen Zeitpunkt

Das Dialogblatt Historie hat mehrere Darstellungsformen: Den Verlauf über einen Tag, der Rückblick auf die Tage eines Monats, auf die Monate eines Jahrs bzw. auf die Jahre seit Inbetriebnahme der Anlage.

Drei Ansichten der Solar.Web-App. Links die aktuellen Daten, in der Mitte eine grafische Darstellung der Daten des Vortags, rechts ein Monatsüberblick

Wenn Sie in der Fronius-Cloud hinterlegen, wie viel Cent Sie pro kWh Strom zahlen bzw. wie viel Sie beim Einspeisen erhalten, rechnet die App auch gleich aus, wie viel Geld Sie sich mit Ihrer PV-Anlage ersparen (Dialogblatt Erträge).

Außerdem zeigt die App einige Feed-Good-Daten an — wie viel kg CO₂ Sie angeblich eingespart haben (das hängt aber vom Energiemix Ihres Stromversorgungsunternehmen und von der Tages- und Jahreszeit ab, kann also nicht genau ermittelt werden), wie viel Auto- oder Flug-km das sind usw. Entbehrlich!

Recht oft passiert es, dass die App gar keine Daten anzeigt, weil sie gerade keine Verbindung zur Fronius-Cloud herstellen kann, weil die Übertragung der Live-Daten Ihrer Anlage in die Cloud gerade nicht funktioniert oder weil die App gerade hängt. Am häufigsten ist Letzteres der Fall. Oft hilft ein Wechsel zwischen den Dialogblättern oder ein Neustarten der App. Hier gibt es noch Verbesserungsbedarf …

Weboberfläche der Cloud

Anstelle der App können Sie sich auch in jedem Webbrowser in die Cloud-Oberfläche von Solar.Web anmelden. Dazu benötigen Sie die E-Mail-Adresse und das Passwort Ihres Fronius-Cloud-Accounts. Über die Oberfläche können Sie wesentlich mehr Daten als in der App auslesen, unter anderem auch Leistung und Spannung der PV-Stränge. Generell ist die Weboberfläche extrem gut gelungen. Allerdings meldet auch die Weboberfläche manchmal, dass keine aktuellen Daten zur Verfügung stehen. Ein Seiten-Refresh hilft oft, aber nicht immer. Die folgenden Screenshots bilden die wichtigsten Seiten der Weboberfläche ab.

Aktuelle Leistung
Leistung der beiden PV-Stränge (grün = Ost, blau = West) sowie Gesamtleistung an einem schönen Tag (am Nachmittag mit ein paar kurzen Phasen mit Bewölkung)
Produktionsansicht bei Regenwetter. Der Akku schaltet sich um 2:00 aus, weil er leer ist. Tagsüber reicht der PV-Ertrag nur zwischenzeitlich aus, um den Verbrauch abzudecken. Der Akku kann am Nachmittag immerhin auf gut 30% aufgeladen werden, bis 24:00 sinkt seine Ladung aber schon wieder auf rund 10 %.
Produktionssansicht bei Schönwetter. Tagsüber produziert die Anlage viel mehr Strom, als gebraucht wird. Zuerst wird der Eigenbedarf gedeckt (gelb) und der Akku aufgeladen (grün bis ca. 12:00), danach wird der überschüssige Strom eingespeist (grau).
Verbrauchsansicht bei Schönwetter für den gleichen Tag wie beim vorigen Bild. Über die Nacht sinkt die Akku-Ladung auf etwas über 50%. Tagsüber produziert die Anlage viel mehr Strom, als gebraucht wird. Zuerst wird der Akku aufgeladen, danach wird der überschüssige Strom eingespeist (in der Verbrauchsansicht nicht zu sehen). Ab ca. 17:30 versorgt der Akku das Haus.
Der tägliche Verbrauch im September pendelt zwischen 8 und 13 kWh. Der Großteil kann direkt durch die PV-Anlage (gelb) oder durch den Akku (grün) gedeckt werden. Nur am 25. und 26.9. ist der Akku komplett leer, es wird Strom aus dem Netz bezogen.
Die tägliche PV-Produktion erreicht Anfang September noch rund 30 kWh, Ende September sind es nur noch rund 20 kWh. An den meisten Tagen wird 1/3 für den Eigenbedarf und zur Akkuladung verwendet (gelb und grün), der Rest eingespeist. Nur zwischen 23. und 25. September ist das Wetter so schlecht, dass der Ertrag auf 4 bis 7 kWh sinkt. Dieser Strom wird vollständig für den Eigenbedarf verwendet. Für 29. und 30.9. prognostiziert die Fronius-Cloud einen Ertrag von gut 20 kWh (Premium-Funktion/Spielerei). Die Prognose ist immer etwas zu hoch, weil die Berechnung die Ost-Lage unseres Hauses nicht berücksichtigt. Die letzten 1 1/2 h vor Sonnenuntergang liegen alle PV-Module im Schatten.
In der Weboberfläche können auch die Service-Meldungen ausgelesen werden. Die meisten Meldungen stammen vom Tag der Inbetriebnahme, an dem auch die Notstromfunktion getestet wurde.
Einstellung der Anlagendaten. Die Parameter der beiden PV-Modulfelder sind für die Prognosefunktion erforderlich.

Lokale Weboberfläche

Ziemlich sperrig ist der Einstieg in die dritte Fronius-Oberfläche, die nur im lokalen Netzwerk zur Verfügung steht. Zuerst einmal müssen Sie herausfinden, welche IP-Adresse der Wechselrichter im lokalen Netzwerk überhaupt hat. Dazu verwenden Sie am besten die Oberfläche Ihres Routers (in meinem Fall eine FritzBox). Ein Klick auf den Fronius-Eintrag führt in die wenig einladende Startseite der Wechselrichter-Weboberfläche.

Die Router-Oberfläche führt zum Wechselrichter
Die Startseite der Weboberfläche des Wechselrichters ist eher abweisend.

Die drei roten Buttons sind nur für die Inbetriebnahme der Anlage relevant. Ihre PV-Firma bzw. Ihr Installateur hat das höchstwahrscheinlich alles schon erledigt. Um in die eigentliche Oberfläche zu gelangen, müssen Sie sich zuerst rechts oben als Customer anmelden. Es gibt zwei Accounts, Technician und Customer. Ihre PV-Firma hat beide Passwörter eingestellt und hoffentlich an Sie weitergegeben. Zumindest das Customer-Passwort brauchen Sie unbedingt. Das Technician-Passwort ist nur für ganz wenige Spezialeinstellungen notwendig.

Nach dem Customer-Login klicken Sie auf den unscheinbaren Button Abschließen bzw. Finish. Damit gelangen Sie in das Dashboard der Weboberfläche. Die Ansicht Allgemein sieht so ähnlich aus wie die Startseite der Cloud-Oberfläche. Interessanterweise weichen die lokalen Leistungsangaben immer um ein paar Watt gegenüber den Angaben in der Cloud ab. Welche stimmen? Ich weiß es nicht. Das Dialogblatt Erweitert zeigt weitere Leistungsdaten des Wechselrichters im Textmodus und ohne grafische Spielereien an.

Das Dashboard der lokalen Weboberfläche
Die aktuellen Leistungsdaten des Wechselrichters

Wo sind nun die Einstellungen? Dorthin gelangen Sie über den Menü-Button, der — leicht zu übersehen — am linken Rand angezeigt wird. Dort finden sich erstaunlich viele Einstellmöglichkeiten. Beispielsweise habe ich über Energiemanagement / Batteriemanagement festgelegt, dass der Akku zwischen 8:00 und 13:00 mit max. 2 kW geladen wird. Meine Anlage liefert bei idealem Wetter deutlich mehr Leistung, aber das etwas gemächlichere Laden schont (vermutlich) den Akku. Sollte der Akku bis 13:00 noch nicht voll sein, wird er so schnell wie möglich fertiggeladen.

Das Menü ist am linken Bildschirmrand versteckt.
Limitierung der Ladeleistung zwischen 8:00 und 13:00 auf 2 kW

Über Energiemanagement / Lastmanagement können Regel festgelegt werden, wann welcher Verbraucher bevorzugt mit Energie beliefert werden (Batterie, Ohmpilot, Warmwasser etc.). Über System / Event-Log können die Systemmeldungen ausgelesen werden.

Einige Funktionen, unter anderem Gerätekonfiguration / Komponenten und Gerätekonfiguration / Funktionen und I/Os sind mit dem Customer-Login nicht zugänglich. Veränderungen können Sie nur durchführen, wenn Sie das Technician-Passwort kennen. Dazu sollten Ihnen aber klar sein, was Sie tun!

Unter den Komponenten wird unter anderem der Akku aufgeführt. Dort können Sie den Lade-Modus einstellen und ein minimales Entladelimit sowie ein maximales Ladelimit einstellen.
Im Dialogblatt Funktionen und I/Os ist festgelegt, welche Steuerungs-Pins welche Funktion haben. Die dargestellte Konfiguration gilt für eine Konfiguration mit Akku samt Notstromfunktion.

Eine lange Diskussion zur optimalen Einstellung der Akku-Parameter finden Sie im PV-Forum. Ich habe mangels besseren Wissens vorerst die Defaultwerte bzw. die vom Installationsbetrieb vorgegebenen Werte belassen.

Beachten Sie in der letzten Abbildung den Punkt »Reservekapazität«! Der dort eingestellte Wert gibt an, wie weit der Akku im normalen Betrieb maximal entladen wird. Dieser Wert hat Vorrang gegenüber dem SoC-Limit bei den Batterieeinstellungen. Die verbleibenden 7 Prozent würden dann einen (sehr) kurzen Notstrombetrieb ermöglichen.

Quellen/Links

Technische Daten, Handbuch und Video-Tutorials

Fronius Cloud

Diskussionen über Fronius-Wechselrichter im PV-Forum:

Fronius hat — sehr korrekt! — in schier endlos langen Dateien die im Wechselrichter verwendete Open-Source-Produkte samt Lizenzen aufgelistet:

Anhang: nmap-Ergebnis

Mit nmap habe ich mir die offenen Ports meines Fronius-Wechselrichters im lokalen Netzwerk angesehen.

sudo nmap -sV -O <ipadresse-des-wechselrichters>

Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-29 08:26 CEST
Nmap scan report for Fronius-nnnnn.fritz.box (nnn.nnn.nnn.nnn)
Host is up (0.0030s latency).
Not shown: 993 filtered tcp ports (no-response)

PORT      STATE   SERVICE        VERSION
22/tcp    closed  ssh
80/tcp    open    http           webserver
4000/tcp  closed  remoteanything
4001/tcp  closed  newoak
4002/tcp  closed  mlchat-proxy
5000/tcp  open    upnp?
5001/tcp  closed  commplex-link

2 services unrecognized despite returning data ...

SF-Port80-TCP:V=7.94%I=7%D=9/29%Time=65166E1E%P=x86_64-pc-linux-gnu%r(GetR
SF:equest,16A0,"HTTP/1\.0\x20200\x20OK\r\nContent-Type:\x20text/html...

SF-Port5000-TCP:V=7.94%I=7%D=9/29%Time=65166E23%P=x86_64-pc-linux-gnu%r(Ge
SF:tRequest,194,"HTTP/1\.0\x20404\x20Not\x20Found ...

Aggressive OS guesses: Linux 5.0 - 5.5 (93%), Linux 2.6.32 - 3.13 (93%), Linux 2.6.39 (93%), Linux 5.0 - 5.4 (93%), Linux 2.6.22 - 2.6.36 (91%), Linux 2.6.32 - 2.6.39 (91%), Linux 2.6.37 (91%), Linux 3.10 - 4.11 (91%), Linux 5.0 (91%), Linux 2.6.32 (90%)

No exact OS matches for host (test conditions non-ideal).

📚 Docker, 4. Auflage erschienen

30. September 2023 um 15:05

Soeben ist die 4. Auflage des Docker-Buchs von Bernd Öggl und mir erschienen.

Umfang: 510 Seiten
ISBN: 978-3-8362-9646-5
Preis: Euro 39,90 (in D inkl. MWSt.)

Für diese Auflage haben wir das Buch vollständig aktualisiert und das Installationskapitel mit seinen unzähligen Varianten übersichtlicher strukturiert. Wichtige inhaltliche Neuerungen sind:

  • mehr Podman-Beispiele und -Details
  • Docker und Podman Desktop: neue GUIs zur Container-Administration
  • Multi-Architecture-Builds: Images für Intel- und ARM-CPUs
  • Caddy: Nutzung des HTTPS-only-Webservers als Container
  • Go: kleines REST-Beispiel

Alle weitere Informationen zum Buch finden Sie hier.

Raspberry Pi OS »Bookworm«

12. Oktober 2023 um 17:21

Seit gestern ist die neue Version von Raspberry Pi OS auf der Basis von Debian 12 (»Bookworm«) verfügbar. Diese Version ist Voraussetzung für den Raspberry Pi 5, läuft aber natürlich auch auf älteren Raspberry Pis. Ich habe meine Tests auf einem Pi 5 sowie einem Pi 400 durchgeführt.

Auf den ersten Blick sieht der Desktop auf der Basis von LXDE nahezu unverändert aus. Aber dieser Eindruck täuscht erheblich: Raspberry Pi OS verwendet jetzt Wayland, PipeWire und den NetworkManager.

Auf den Modellen Pi 4, Pi 400 und Pi 5 läuft der Pixel Desktop unter Wayland

Wayland für Pi 4 und 5, Abschied von X in Raten

Auf aktuellen Raspberry-Pi-Modellen (Pi 4, Pi 400, Pi 5) kommt nun standardmäßig Wayland statt xorg als Fundament für das Grafiksystem zum Einsatz.

pi5$ echo $XDG_SESSION_TYPE
  wayland

Das ist ein großer Schritt, weil dafür viele Komponenten verändert bzw. hinzugefügt werden mussten:

  • Compositor: Wayfire
  • Panel/Desktop-Shell: wf-panel-pi

Zusammen mit dem Panel mussten auch die diversen Plugins für das Menü, die Bluetooth- und WLAN-Konfiguration, Lautstärkeeinstellung usw. neu implementiert werden.

Das für Wayland neu implementierte Panel hat zwei Plugins, die die CPU-Auslastung und -Temperatur anzeigen

Der Wayland-Umstieg ist mit den von anderen Desktop-Systemen bekannten Einschränkungen bzw. Kinderkrankheiten verbunden: Fernwartung, Screenshots usw. zicken bzw. funktionieren gar nicht. Auf das Thema VNC und Remote Desktop gehe ich hier in einem eigenen Artikel ein. Zum Erstellen von Screenshots verwenden Sie am besten das Kommando grim (siehe Projektseite). Gimp und scrot liefern lediglich schwarze Bilder, shutter stürzt ab.

Ältere Raspberry-Pi-Modelle (Pi 3, Zero etc.) verwenden aufgrund von Performance-Problemen weiterhin xorg. Aber auch bei diesen Modellen ist in Zukunft der Wechsel zu Wayland geplant.

Audio-System PipeWire

Nach Fedora, Ubuntu & Co. verwendet nun auch Raspberry Pi OS das neue PipeWire-Audiosystem. Es ersetzt PulseAudio. Für die Desktop-Nutzung der Audio-Funktionen sollten sich dadurch nichts ändern. Wenn Sie Audio-Funktionen per Script steuern möchten, müssen Sie sich an die neuen pw-xxx-Kommandos gewöhnen (siehe https://docs.pipewire.org/page_tools.html).

Netzwerkkonfiguration mit dem NetworkManager

Ähnlich wie beim Audio-System passt sich Raspberry Pi OS auch bei der Netzwerkkonfiguration den anderen Distributionen an und verwendet nun den NetworkManager als Backend. dhcpcd hat ausgedient. Wiederum ist von der Änderung an der Oberfläche nicht viel zu sehen. Die Konfigurationswerkzeuge zur Herstellung einer WLAN-Verbindung sehen ähnlich aus wie bisher. Allerdings gibt es nun diverse neue Funktionen, z.B. zur Herstellung von VPN-Verbindungen. Änderung ergeben sich auch, wenn Sie die Netzwerkkonfiguration per Script verändern möchten. Das wichtigste neue Kommando ist nmcli. Die Konfigurationsdateien werden in /etc/NetworkManager gespeichert. WLAN-Passwörter landen in /etc/NetworkManager/system-connections/*.conf.

Bei meinen Tests traten im Zusammenspiel mit dem Raspberry Pi Imager bei der Vorweg-Konfiguration (z.B. für Headless-Systeme) noch Fehler auf. Es ist aber zu erwarten/hoffen, dass diese bald gelöst sein werden.

Webbrowser: Firefox oder Chromium?

In der Vergangenheit galt Chromium als Default-Webbrowser für Raspberry Pi OS. In Kooperation mit Mozilla wurde nun auch Firefox besser an die Hardware- und Software-Eigenheiten angepasst und wird nun als gleichwertige Alternative angeboten. Standardmäßig sind beide Programme installiert. Den Default-Webbrowser können Sie im Programm Raspberry-Pi-Konfiguration festlegen.

Mathematica

Aus nostalgischen Gründen bin ich ein großer Fan von Mathematica und finde es fantastisch, dass das Programm Raspberry-Pi-OS-Anwendern kostenlos zur Verfügung steht. Das gilt auch für die neue Version von Raspberry Pi OS — aber aktuell nicht auf dem Pi 5. Dort erscheint beim Start der Hinweis, dass ein Lizenzcode erforderlich ist. Anscheinend soll dieses Problem
noch behoben werden. Die Raspberry Pi Foundation wartet diesbezüglich auf ein Update von Wolfram (Quelle).
Update 9.11.2023: Mit den neuesten Updates funktioniert nun auch Mathematica wieder — und zwar schneller denn je!

Versionsnummern

Dank des neuen Fundaments auf der Basis von Debian 12 haben sich viele Versionsnummern geändert:

Basis             Desktop              Programmierung   Server
---------------   ------------------   --------------   --------------
Kernel      6.1   Gimp          2.10   bash       5.2   Apache     2.4
glibc      2.36   LibreOffice    7.4   gcc       12.2   CUPS       2.4
Mesa       23.2   LXDE            11   Java        17   MariaDB  10.11
Systemd     247   VLC            3.0   PHP        8.2   OpenSSH    9.2
X-Server   21.1                        Python    3.11   Samba     4.17
Wayland    1.21

Python-Module

Bisher war es unter Python gebräuchlich, Zusatzmodule einfach mit pip bzw. pip3 zu installieren. In aktuellen Python-Versionen ist das nicht mehr erwünscht und führt zu einem Fehler:

$ pip install --user matplotlib

error: externally-managed-environment

  This environment is externally managed
  To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    For more information visit http://rptl.io/venv

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Es gibt zwei Auswege:

Der geänderte Umgang mit Python-Modulen hat übrigens nichts mit Raspberry Pi OS zu tun, sondern ist eine von der Python-Entwicklergemeinde vorgegebene Änderung, die alle modernen Linux-Distributionen betrifft.

32 oder 64-Bit?

Auf https://www.raspberrypi.com/software/operating-systems sowie im Programm Raspberry Pi Imager wird nach wie vor die 32-Bit-Version von Raspberry Pi OS empfohlen. Die 64-Bit-Version ist dort nur die zweite Option.

Ich habe meine Tests dagegen mit der 64-Bit-Version durchgeführt, die für Pi-Modelle mit mehr als 2 GByte zweckmäßiger ist, einzelnen Prozessen mehr RAM zuordnen kann und etwas mehr Geschwindigkeit verspricht.

Interessanterweise kommt je nach Raspberry-Pi-Modell eine unterschiedliche Pagesize zum Einsatz: 16 kByte auf dem Raspberry Pi 5 aber wie bisher 4 kByte auf dem Raspberry Pi 400.

pi5$ getconf PAGESIZE
16384

pi400$ getconf PAGESIZE
4096

Die 16-kByte-Pagesize ist übrigens zu manchen Programmen inkompatibel. Unter anderem kann deswegen Geekbench 6.2 nicht in der 64-Bit-Version von Raspberry Pi OS ausgeführt werden.

Lüftersteuerung

Der Raspberry Pi 5 enthält eine Buchse zum Anschluss eines CPU-Lüfters. Raspberry Pi OS kümmert sich darum, den Lüfter nur nach Bedarf einzuschalten, und auch dann dynamisch (also nur in der erforderlichen Drehzahl). Im Leerlaufbetrieb bleibt der Raspberry Pi 5 lautlos.

Upgrade

Ein Upgrade eines bereits installierten Raspberry Pi OS »Bullseye« auf Version »Bookworm« ist theoretisch durch eine Veränderung der Paketquellen möglich (siehe z.B. hier im Raspberry-Pi-Forum). Diese Vorgehensweise wird aber explizit nicht unterstützt und führt nach meinen eigenen Erfahrungen oft zu massiven Problemen. Wenn Sie die aktuelle Version von Raspberry Pi OS nutzen möchten, müssen Sie also eine SD-Karte neu damit einrichten. Das hat natürlich den Nachteil, dass Sie alle Konfigurationsarbeiten wiederholen und ggfs. Ihre eigenen Projekte bzw. Ihren Code manuell übertragen und womöglich auch adaptieren müssen.

Quellen/Links

Ubuntu 23.10 auf dem Raspberry Pi 5

13. Oktober 2023 um 15:16

(Aktualisiert am 15.10.2023, Geekbench-Ergebnisse mit/ohne Lüfter)

Nach Raspberry Pi OS Bookworm habe ich mir heute auch Ubuntu 23.10 auf dem Raspberry Pi angesehen. In aller Kürze: Der Raspberry Pi 5 ist ein großartiger Desktop-Rechner, Ubuntu mit Gnome unter Wayland läuft absolut flüssig.

Ubuntu 23.04 mit Gnome-Desktop und Wayland auf einem Raspberry Pi 5

Systemvoraussetzungen

Die Desktop-Version von Ubuntu 23.10 läuft nur auf den Modellen 4B, 400 und 5 und beansprucht zumindest 4 GiB RAM. Bei meinem Test mit offenem Terminal, Firefox (zwei Tabs mit GitHub und orf.at) sowie dem neuen App Center waren erst gut 2 GiB RAM in Verwendung. Mit offenem Gimp, VS Code und App Center steigt der Speicherbedarf dann auf 4 GiB. Insofern sind für’s ernsthafte Arbeiten 8 GiB RAM sicher kein Schaden.

Installation

Zur Installation habe ich mit dem Raspberry Pi Imager Ubuntu 23.10 auf eine SD-Karte übertragen. Die Spracheinstellung in der Konfigurationsphase beim ersten Starts bleibt wirkungslos und muss später in den Systemeinstellungen nachgeholt werden. Außerdem müssen mit Installierte Sprachen verwalten alle erforderlichen Sprachdateien heruntergeladen werden.

Ein initiales Ubuntu-Desktop-System beansprucht etwa 6 GByte auf der SD-Karte. Mit Schuld am verhältnismäßig großem Speicherbedarf für ein Ubuntu-»Minimalsystem« ohne Anwendungsprogramme ist der unmäßige Speicherbedarf der vorinstallierten Snap-Paketen (App Center, Firefox plus alle dazu erforderlichen Basisbibliotheken).

Gnome

Gnome 45 mit Wayland läuft absolut flüssig. Nur der Start von Snap-Apps führt zu kleinen Verzögerungen — das kennt man ja auch von Ubuntu-Installationen auf hochwertiger Hardware. Bei meinem Testrechner (Pi 5 mit 8 GiB RAM) braucht Firefox beim ersten Start ca. 4 Sekunden, bis es am Bildschirm erscheint. Damit kann man wirklich leben ;-)

Screenshots funktionieren auf Anhieb.

Bei der Erkennung der Systemdaten (also Info/Systemdetails in den Einstellungen) versagt Gnome aber und kann weder die CPU noch die Größe der SD-Karte erkennen (siehe die Abbildung oben). Aber das sind Kleinigkeiten.

Kernel

Ubuntu verwendet mit Version 6.5 einen neueren Kernel als Raspberry Pi OS. Im Gegensatz zu Raspberry Pi OS kommt die »normale« Pagesize von 4 kByte zum Einsatz:

pi5u$ uname -a
  Linux pi5u 6.5.0-1005-raspi #7-Ubuntu SMP PREEMPT_DYNAMIC 
  Sun Oct  8 08:06:18 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux

pi5u$ getconf PAGESIZE
4096

Visual Studio Code

Erstaunlicherweise fehlt in der Snap-Bibliothek Visual Studio Code. Ein Debian-Paket für ARM64 kann von https://code.visualstudio.com heruntergeladen werden. Es muss dann mit sudo apt install ./code_xxx.deb installiert werden. Die nachfolgende Fehlermeldung pkgAcquire::Run / Keine Berechtigung können Sie ignorieren. Vergessen Sie aber nicht, ./ bzw. einen gültigen Pfad voranzustellen, sonst glaubt apt, code_xxx.deb wäre der Paketname und verweigert die Installation der lokalen Datei.

Geekbench

Unter https://www.geekbench.com/preview/ gibt es eine AArch64-Version von Geekbench, die ich heruntergeladen, ausgepackt und ausgeführt habe. Die Temperatur des SoC steigt während der Tests auf über 85 °C. Die CPU-Frequenz wird in der Folge auf 1,5 GHz gedrosselt. Ich habe keine Kühlung verwendet (weder aktiv noch passiv). Ergebnisse unter diesen Voraussetzungen: 657
Single-Core Score, 1233 Multi-Core Score. Mehr Details finden Sie hier: https://browser.geekbench.com/v6/cpu/3060411

Geekbench

Im Leerlauf unter Ubuntu 23.10 beträgt die CPU-Temperatur übrigens gut 70°C, also auch schon mehr als genug.

Ubuntu fehlt eine dynamische Lüftersteuerung. Sobald ein Lüfter angeschlossen wird, läuft dieser mit maximaler Leistung und produziert ein durchaus störendes Ausmaß an Lärm. Die CPU-Temperatur sinkt dann im Leerlauf auf gut 30°C. Selbst während der Ausführung von Geekbench steigt die Temperatur nur kurzzeitig über 45°C. Gleichzeitig fallen die Werte etwas besser aus (siehe auch https://browser.geekbench.com/v6/cpu/3095791).

Geekbench 6      Single-Core      Multi-Core
--------------  ------------    ------------
Ohne Lüfter              657            1233
Mit Lüfter               737            1542

Eine letzte Anmerkung zu Geekbench: Die 64-Bit-Version von Raspberry Pi OS und Geekbench 6.2 sind wegen der 4-kByte-Pagesize inkompatibel zueinander.

Abstürze

Während meiner Tests kam es zweimal zu kapitalen Abstürzen (Bildschirm wurde schwarz, kein Netzwerkzugriff mehr etc.). Möglicherweise war das von mir eingesetzte Netzteil zu schwach. (Unter Raspberry Pi OS hatte ich mit demselben Netzteil allerdings keine Probleme.)

Ich bin dann auf das neue Original-Raspberry-Pi-Netzteil umgestiegen (27 W für einen Minirechner erscheinen wirklich mehr als üppig, aber sei’s drum). Die Komplett-Abstürze haben sich nicht wiederholt.

Allerdings ist in der Folge auch Gimp bei der Verwendung des Dateiauswahldialogs zweimal abgestürzt. Das kenne ich von meinem Notebook überhaupt nicht. Ich kann natürlich nicht sagen, ob dieses Problem ARM-, Ubuntu- oder Raspberry-Pi-spezifisch ist. Aber für zwei Stunden Betrieb waren das für meinen Geschmack recht viele Abstürze …

Quellen/Links

Ubuntu 23.10

18. Oktober 2023 um 11:10

Nachdem Hasskommentare in der ukrainischen Übersetzungsdateien entfernt wurden (siehe auch omgubuntu.co.uk), steht das ISO-Image von Ubuntu 23.10 »Mantic Minotaur« wieder zum Download zur Verfügung. Die neueste Version von Ubuntu ist das letzte Release vor der nächsten LTS-Version — und insofern besonders interessant: »Mantic Minotaur« vermittelt eine erste Vorstellung, wie Ubuntu LTS die nächsten Jahre prägen wird.

Updates: 14.11.2023, Netplan

Installation und App Center

Ich habe die Installation diesmal nur in virtuellen Maschinen getestet. Zumindest dort hat das neue Installationsprogramm problemlos funktioniert — auf jeden Fall besser als in Version 23.04, in der das Installationsprogramm erstmalig zum Einsatz kam. Die für die meisten Nutzer wichtigste Neuerung besteht darin, dass nun standardmäßig eine »Minimalinstallation« durchgeführt wird — ohne LibreOffice, Thunderbird, Foto-Verwaltung, Audio-Player usw.

Standardmäßig wird eine Minimalinstallation ohne Office-Programme durchgeführt

Grundsätzlich mag ich diesen Minimalismus. Bei der Installation der fehlenden Programme hilft das mit der Bibliothek Flutter neu implementierte »App Center«, dessen Versionsnummer 1.0.0-alpha lautet. 1.0.0 klingt an sich schon abschreckend, »alpha« macht es noch schlimmer. Bei meinen Tests sind aber erfreulicherweise keine Probleme aufgetreten. Im App Center führt Entdecken / Jump start your desktop in die Sammlung Ubuntu Desktop, die auf bisher vorinstallierte Pakete verweist.

Eine Rubrik im neuen App Center offeriert wichtige Office-Programme ausschließlich im Snap-Format

Eines sollte Ihnen aber klar sein: Anders als manche Tester von Ubuntu 23.10 geschrieben haben, werden mit dem App Center ausschließlich Snap-Pakete installiert. Ob das gewünschte Programm auch im Debian-Format zur Verfügung steht oder nicht, spielt keine Rolle. Für das App Center gilt Snap only. Falls Sie Debian-Pakete vorziehen, müssen Sie diese nun im Terminal mit apt suchen und installieren (also z.B. apt install gimp). In Ubuntu gibt es keine (vorinstallierte) grafischer Oberfläche mehr, um Debian-Pakete zu installieren.

Das App Center ist auch insofern ein Rückschritt, als es nicht in der Lage ist, heruntergeladene Debian-Pakete zu installieren. Wenn Sie im Webbrowser die gerade heruntergeladene *.deb-Datei anklicken, erhalten Sie die Fehlermeldung, dass es kein (grafisches) Programm zur Verarbeitung von *.deb-Dateien gibt. Sie müssen die Installation wie folgt durchführen:

sudo apt install ~/Downloads/name.deb

Platzbedarf

Ich habe in der Vergangenheit oft über den immensen Platzbedarf von Snap-Paketen geschimpft, sowohl auf der SSD als auch (nach dem Start) im Arbeitsspeicher. Für diesen Artikel wollte ich diese Aussagen mit neuem Zahlenmaterial untermauern, bin aber auf überraschende Ergebnisse gestoßen.

Die neue »Minimalinstallation« beansprucht 4,7 GByte Platz auf der SSD. Nicht mitgerechnet ist dabei die Swap-Datei /swap.img. Das Installationsprogramm richtet diese Datei je nach Hardware sehr großzügig ein (bei meinen Tests mit 3,9 GiB). Tipps, wie Sie die Swap-Datei bei Bedarf verkleinern können, folgen gleich.

Der Snap-Anteil nach einer Minimalinstallation beträgt ca. 1 GByte:

du -h -d 0 /var/lib/snapd/

  970M   /var/lib/snapd/

snap list

  Name                       Version          Revision  Tracking         Herausgeber  Hinweise
  bare                       1.0              5         latest/stable    canonical✓   base
  core22                     20230801         864       latest/stable    canonical✓   base
  firefox                    118.0.1-1        3216      latest/stable/…  mozilla✓     -
  firmware-updater           0+git.e8771be    109       latest/stable/…  canonical✓   -
  gnome-42-2204              0+git.ff35a85    141       latest/stable/…  canonical✓   -
  gtk-common-themes          0.1-81-g442e511  1535      latest/stable/…  canonical✓   -
  snap-store                 0+git.e118b05    1046      latest/stable/…  canonical✓   -
  snapd                      2.60.4           20290     latest/stable    canonical✓   snapd
  snapd-desktop-integration  0.9              83        latest/stable/…  canonical✓   -

ls -lhS /var/lib/snapd/snaps/

  -rw------- 2 root root 497M Okt 16 12:41 gnome-42-2204_141.snap
  -rw------- 2 root root 241M Okt 16 12:40 firefox_3216.snap
  -rw------- 2 root root  92M Okt 16 12:41 gtk-common-themes_1535.snap
  -rw------- 2 root root  74M Okt 16 12:41 core22_864.snap
  -rw------- 2 root root  41M Okt 16 12:41 snapd_20290.snap
  -rw------- 2 root root  12M Okt 16 12:41 firmware-updater_109.snap
  -rw------- 2 root root  11M Okt 16 12:41 snap-store_1046.snap
  ...

Ich habe nun alle Snaps aus der Rubrik Ubuntu Desktop installiert, also LibreOffice, Thunderbird, Shotwell usw., insgesamt 10 Pakete. Der Platzbedarf der Snaps steigt auf 2,8 GByte:

du -h -d 0 /var/lib/snapd/

  2,8G   /var/lib/snapd/


ls -lhS /var/lib/snapd/snaps/

  -rw------- 2 root root 1,1G Okt 18 08:39 libreoffice_300.snap
  -rw------- 2 root root 497M Okt 16 12:41 gnome-42-2204_141.snap
  -rw------- 2 root root 350M Okt 18 08:38 gnome-3-38-2004_143.snap
  -rw------- 2 root root 241M Okt 16 12:40 firefox_3216.snap
  -rw------- 2 root root 153M Okt 18 08:37 remmina_6117.snap
  -rw------- 2 root root 105M Okt 18 08:35 thunderbird_395.snap
  -rw------- 2 root root  92M Okt 16 12:41 gtk-common-themes_1535.snap
  -rw------- 2 root root  74M Okt 16 12:41 core22_864.snap
  -rw------- 2 root root  64M Okt 18 08:35 core20_2015.snap
  -rw------- 2 root root  45M Okt 18 08:35 shotwell_7.snap
  -rw------- 2 root root  41M Okt 16 12:41 snapd_20290.snap
  -rw------- 2 root root  36M Okt 18 08:35 cheese_37.snap
  -rw------- 2 root root  14M Okt 18 08:35 gnome-calendar_182.snap
  -rw------- 2 root root  12M Okt 16 12:41 firmware-updater_109.snap
  -rw------- 2 root root  11M Okt 16 12:41 snap-store_1046.snap
  -rw------- 2 root root 4,3M Okt 18 08:35 transmission_54.snap
  -rw------- 2 root root 3,6M Okt 18 08:35 gnome-mahjongg_170.snap
  ...

Der RAM-Bedarf des Ubuntu-Desktops im Leerlauf mit einem Terminal-Fenster und dem Programm Systemüberwachung beträgt laut free -h ca. 1,2 GByte. Nun habe ich Firefox (ca. 8 Sekunden), Shotwell (wieder 8 Sekunden) und LibreOffice Writer (20 Sekunden) gestartet, ohne darin aktiv zu arbeiten. Alle Tests habe ich in einer virtuellen Maschine mit 2 CPU-Cores und 4 GiB RAM durchgeführt. Auf echter Hardware sind schnellere Startzeiten zu erwarten.

Der Speicherbedarf im RAM steigt dann auf moderate 1,9 GByte an.

Kurz und gut: Der Platzbedarf von Snap-Paketen sowohl auf dem Datenträger als auch im Arbeitsspeicher ist beträchtlich, aber er ist nicht mehr so exorbitant hoch wie früher. Und je mehr Snap-Pakete parallel installiert werden, desto geringer ist der gemeinschaftliche Overhead durch die Parallelinstallation diverser Bibliotheken. (Unter Ubuntu 23.10 ist Gnome 45 installiert. Aber damit alle Snap-Pakete der Kategorie Ubuntu Desktop ausgeführt werden können, ist parallel dazu auch Gnome 42 und Gnome 3.38 erforderlich — siehe das obige Listing.)

Die Startzeiten von Programmen sind weiterhin etwas höher als bei einer gleichwertigen Installation durch Debian-Pakete, aber damit kann ich mich abfinden. Canonical hat seine Snap-Infrastruktur also in den vergangenen Jahren schrittweise verbessert. Sie funktioniert nun spürbar besser als in den ersten Versionen.

Als wichtigster Kritikpunkt bleibt der proprietäre Snap Store, der alleine durch Canonical verwaltet wird. Alternative Snap-Paketquellen sind nicht vorgesehen (ganz im Gegensatz zu Red Hats Flatpak-System).

Swap-Datei verkleinern

Sie können die Swap-Datei bei Bedarf Ihren eigenen Bedürfnissen entsprechend verkleinern:

sudo swapoff /swap.img
sudo rm /swap.img
sudo dd count=1024 bs=1M if=/dev/zero of=/swap.img  # 1024 x 1 MiB = 1 GiB
sudo chmod 600 /swap.img
sudo mkswap /swap.img
sudo swapon /swap.img

CUPS doch nicht als Snap-Paket

Canonical wollte CUPS eigentlich in ein Snap-Paket umbauen (siehe openprinting.github.io) und in dieser Form in Ubuntu integrieren. Aufgrund technischer Probleme ist dieses Vorhaben nun voraussichtlich bis Version 24.10 verschoben. Die LTS-Version 24.04 ist für derartige Experimente nicht so gut geeignet.

TPM-Verschlüsselung

Technisch sehr interessant ist Canonicals Konzept, die Verschlüsselung des Datenträgers mittels TPM (Trusted Platform Modules, also in die CPU eingebaute Kryptografie-Funktionen) abzusichern. Unter Windows, macOS, iOS und Android ist dies längst eine Selbstverständlichkeit. Mangels geeigneter Hardware habe ich diese Funktionen allerdings nicht testen können.

Aktuell bezeichnet die Dokumentation dieses Feature zudem noch als experimentell. Es wird nur ausgewählte TPM-Hardware unterstützt. Die Implementierung basiert (natürlich) auf Snap-Paketen für den Bootloader und den Kernel. Proprietäre Kernel-Module (NVIDIA) können nicht verwendet werden. Soweit ich das Konzept verstanden habe, muss das Verschlüsselungspasswort weiterhin eingegeben werden, d.h. das Hochfahren und Authentifizieren nur per Fingerabdruck ist nicht möglich. Oder, anders formuliert: Das Boot-Konzept wird sicherer, aber nicht komfortabler.

Netplan

Ubuntu verwendet mit Netplan seit 2016 ein selbst entwickeltes System zur Administration der Netzwerkverbindungen. Netplan ist vor allem bei Server-Installationen wichtig, wo es eine zentrale Rolle einnimmt. Am Desktop delegiert Netplan die Kontrolle über die WLAN-Schnittstellen dagegen an den NetworkManager. Insofern haben Desktop-Anwender Netplan nie bemerkt.

Grundsätzlich ändert sich daran auch mit Version 23.10 nichts. Neu ist aber, dass die Kommunikation zwischen dem NetworkManager und Netplan nicht länger eine Einbahnstraße ist. Bisher wusste Netplan nichts von den durch den NetworkManager verwalteten Netzwerkverbindungen. Laut dem Ubuntu Blog hat sich das mit Version 23.10 geändert: Vom NetworkManager eingerichtete Verbindungen werden nun in /etc/netplan gespeichert (und nicht mehr in /etc/NetworkManager/system-connections/). Dabei kommt die Netplan-eigene Syntax für Konfigurationsdateien zum Einsatz. Bei einem Update von älteren Ubuntu-Versionen werden vorhandene WLAN-Verbindungen automatisch nach /etc/netplan migriert.

Desktop

Ubuntu 23.10 verwendet Gnome 45 als Desktop. Mehrere vorinstallierte Shell Extensions (Desktop Icons, Ubuntu AppIndicators, Ubuntu Dock und Ubuntu Tiling Assistand) stellen sinnvolle Zusatzfunktionen zur Verfügung:

  • Das Dock kann wahlweise links, rechts oder unten platziert werden.
  • Fenster können so verschoben werden, dass diese ein Bildschirmviertel ausfüllen (Quarter Tiling). Außerdem gibt es einige fortgeschrittene Tiling-Funktionen. (Gnome ohne Erweiterungen kennt bekanntermaßen nur Bildschirmhälften, was auf einem großen Monitor mager ist.)

  • Auf dem Desktop können Icons dargestellt werden.

  • Ältere Gnome-Programme können Indikator-Icons im Panel darstellen.

Ubuntu verwendet Gnome 45 als Desktop, angereichert um ein paar Extensions für das vertikale Dock, Quarter-Tiling und Desktop-Icons

Versionsnummern

Basis             Desktop             Programmierung   Server
---------------   ------------------  ---------------  --------------
Kernel      6.5   Gnome          45   bash        5.2   Apache     2.4
glibc      2.38   Gimp         2.10   docker.io 20.10   CUPS       2.4
X-Server   21.1   LibreOffice   7.6   gcc          13   MariaDB  10.11
Wayland    1.22                       git        2.40   MySQL      8.0
Mesa       23.2                       Java         17   OpenSSH    9.3
Systemd     252                       PHP         8.2   qemu/KVM   8.0
NetworkMan 1.44                       Python     3.11   Postfix    3.8
GRUB       2.12                                         Samba     4.18

Der Fokus auf Snap macht es nicht immer ganz klar, wo welches Paket zu suchen ist. Gimp, LibreOffice, aber auch Docker (!) können als Snap-Pakete installiert werden. Programmiersprachen wie C, Java, Python oder PHP (Ausnahme: Go, siehe Kommentare) sowie Server-Anwendungen wie Apache, MySQL oder Samba sind vorerst noch gewöhnliche Debian-Pakete.

Raspberry Pi

Ubuntu 23.10 läuft auch auf dem nagelneuen Raspberry Pi 5. Einen diesbezüglichen Test habe ich schon vor ein paar Tagen veröffentlicht.

Fazit

Aus meiner Sicht ist und bleibt Ubuntu die erste Anlaufstelle für Linux-Einsteiger. Der Desktop ist optisch ansprechend, Gnome Shell Extensions helfen dort nach, wo Gnome Defizite hat. In ganz vielen Fällen gilt: It just works.

Allerdings hat sich Canonical — allen Widerständen zum Trotz — dazu entschieden, voll auf das eigene Snap-Paketformat zu setzen. Grundsätzlich funktioniert das gut. Aus der Sicht von Canonical ist es natürlich toll, nur ein Paket für verschiedene Ubuntu-Releases warten zu müssen — und die Paket-Version losgelöst von der Ubuntu-Version auch aktualisieren zu können. Canonical kann also durch die Änderung eines Pakets ein LibreOffice-Update auf das nächste Major-Release für alle gerade aktiven Ubuntu-Versionen durchführen. Diesem Vorteil steht anwenderseitig ein — sagen wir mal — großzügiger Umgang mit Ressourcen gegenüber.

Bisher konnte man als erfahrener Ubuntu-Anwender Snap-Paketen aus dem Weg gehen, also snap deinstallieren und anstelle von Snap-Paketen gleichwertige Debian-Pakete installieren. Das wird zunehmend unmöglich, und das ist letztlich auch der falsche Denkansatz. Vielmehr gilt: Wer Ubuntu sagt, muss auch Snap sagen. Und wer das nicht will, muss sich von Ubuntu verabschieden.

Ich bin deswegen auf ArchLinux umgestiegen und habe es nicht bereut. Für Linux-Einsteiger, die dem Snap-Kosmos misstrauisch gegenüberstehen, sind Debian oder Linux Mint einfachere Alternativen. Wenn Sie dagegen keine ideologischen Einwände gegen Snap haben und einen ordentlichen Rechner besitzen, ist Ubuntu samt Snap eine runde Sache.

Quellen/Links

Andere Tests

Hilfe, pip funktioniert nicht mehr!

19. Oktober 2023 um 08:08

pip ist das Paketverwaltungs-Tool von Python. Wenn Sie in einem Script ein Zusatzmodul benötigen, führen Sie einfach pip install xxx bzw. unter macOS und bei manchen Linux-Distributionen pip3 install xxx aus. pip lädt das erforderliche Modul sowie eventuelle Abhängigkeiten herunter und installiert die Pakete lokal (d.h., sie brauchen meine root-Rechte).

Meistens funktioniert pip gut — aber nicht immer. Die häufigste Fehlerquelle unter Windows ist die Parallelinstallation mehrerer Python-Versionen. Dann ist nicht immer klar, auf welche Python-Version sich pip bezieht. Nach meiner Erfahrung scheint pip zumeist die falsche Version zu nehmen. Daher mein Tipp: Vermeiden Sie unter Windows unbedingt die Mehrfachinstallation von Python!

Aber auch unter Linux kann es Probleme geben. Die Ursache hier besteht darin, dass viele Distributionen selbst eine riesige Sammlung von Paketen mit Python-Erweiterungen anbieten. Die Parallelinstallation eines Moduls, einmal mit apt oder dnf und ein zweites Mal mit pip, kann dann zu Konflikten führen — insbesondere dann, wenn nicht exakt dieselben Versionen zum Einsatz kommen. Die Python-Entwickler haben deswegen im ‎Python Enhancement Proposals (PEP) 668 festgeschrieben, dass in solchen Fällen Pakete aus Linux-Repositories vorzuziehen sind. PEP 668 gilt grundsätzlich seit Python 3.11. Tatsächlich implementiert ist es momentan nur in aktuellen Linux-Distributionen:

  • Ubuntu ab Version 23.04
  • Debian ab Version 12
  • Raspberry Pi OS ab dem Bookworm-Release (Okt. 2023)
  • Arch Linux

Noch nicht implementiert ist PEP 668 dagegen unter RHEL und Fedora (auch nicht in Version 39 Beta).

pip-Fehlermeldung

Der Versuch, mit pip ein Modul zu installieren, führt bei aktuellen Debian-, Ubuntu- und Raspberry-Pi-OS-Versionen zur folgenden Fehlermeldung:

$ pip install matplotlib

error: externally-managed-environment
This environment is externally managed

    To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python 
installation or OS distribution provider. You can override this, 
at the risk of breaking your Python installation or OS, by 
passing --break-system-packages. Hint: See PEP 668 for the 
detailed specification.

Lösung 1: Installation des äquivalenten Linux-Pakets

Die obige Fehlermeldung weist direkt auf die beste Lösung hin — nämlich die Installation des entsprechenden Linux-Pakets mit apt python3-xxx, wobei xxx der Paketname ist. Für die matplotlib führen Sie unter Debian, Ubuntu und Raspberry Pi OS das folgende Kommando aus:

sudo apt install python3-matplotlib

Diese Empfehlung ist mit zwei Einschränkungen verbunden: Sie erfordert, dass Sie root– oder sudo-Rechte haben, und sie setzt voraus, dass das gewünschte Modul tatsächlich im Repository Ihrer Linux-Distribution zur Verfügung steht. Letzteres ist oft der Fall, aber nicht immer. Auf pypi.org gibt es fast 500.000 Projekte, die Debian-Standard-Repositories enthalten dagegen »nur« gut 4000 (apt list | grep python3- | wc -l).

Lösung 2: Verwendung einer virtuellen Umgebung

Ein Virtual Environment im Kontext von Python ist ganz einfach ein Projektverzeichnis, in das die für das Projekt erforderlichen Module lokal und projektspezifisch installiert werden. Das hat mehrere Vorteile:

  • Es ist klar, welche Module ein bestimmtes Projekt benötigt. Das Projekt lässt sich später einfacher auf einen anderen Rechner übertragen.
  • Es kann keine Konflikte zwischen unterschiedlichen Projekten geben, die unterschiedliche Module erfordern.
  • Sie sind nicht auf die von Ihrer Linux-Distribution angebotenen Python-Module eingeschränkt und brauchen keine Administratorrechte zur Installation von Linux-Paketen.

Virtuelle Umgebungen werden von Python durch das Modul venv unterstützt. Dieses Modul muss vorweg installiert werden, entweder mit apt install python3-venv oder durch apt install python3-full. Anschließen richten Sie Ihr Projekt ein:

$ python3 -m venv my-project

Python erzeugt das Verzeichnis my-project, falls dieses noch nicht existiert, und richtet dort eine minimale Python-Umgebung ein. (»Minimal« bedeutet: ca. 1500 Dateien, Platzbedarf ca. 25 MByte. Nun ja.) Nun führen Sie in Ihrem Terminal-Fenster mit source das Shell-Script activate aus, um die Umgebung zu aktivieren:

$ cd my-project
$ source bin/activate
(my-project)$ 

In dieser Umgebung funktioniert pip wie gewohnt. In der Folge können Sie Ihr Script ausführen, das die lokal installierte Module nutzt:

(my-project)$ pip install requests beautifulsoup4
(my-project)$ ./my-webscraping-script.py

Anstelle venv direkt zu nutzen, gibt es diverse Tools, um die Verwaltung Ihrer virtuellen Umgebungen zu vereinfachen. Am bekanntesten sind pipenv und virtualenv. Persönlich ist mir pipenv am liebsten. Das Tool muss vorweg installiert werden (apt install pipenv).

Lösung 3: Das Kommando pipx

pipx ist eine Variante zum klassischen pip-Kommando, das sich gleichzeitig um die Einrichtung einer virtuellen Umgebung kümmert (siehe auch die Dokumentation). pipx ist allerdings nicht zur Installation von Bibliotheken gedacht, sondern zur Installation fertiger Python-Programme. Diese werden in .local/bin gespeichert.

pipx ist nur dann eine attraktive Option, wenn Sie ein als Python-Modul verfügbares Programm unkompliziert installieren und ausführen wollen. Wenn Sie dagegen selbst Scripts entwickeln, die von anderen Modulen abhängig sind, ist pipx nicht das richtige Werkzeug.

Lösung 4: Option pip --break-system-packages

Ein vierter Lösungsweg besteht darin, an pip die Option --break-system-packages zu übergeben. Die Option ist weniger schlimm, als ihr Name vermuten lässt. Im Prinzip funktioniert pip jetzt so wie bisher und installiert das gewünschte Modul, ganz egal, ob es ein äquivalentes Paket Ihrer Distribution gibt oder nicht, und unabhängig davon, ob dieses Paket womöglich schon installiert ist.

Empfehlenswert ist der Einsatz dieser Option in CI-Scripts (Continuous Integration), z.B. in Test- oder Deploy-Scripts für git (siehe auch diesen Blog-Beitrag von Louis-Philippe Véronneau). Die Option --break-system-packages ist oft der schnellste und bequemste Weg, nicht mehr funktionierende Scripts wieder zum Laufen zu bringen.

Quellen/Links

10 Jahre beim Rheinwerk-Verlag

21. Oktober 2023 um 09:58

Im Winter 2013 hat Pearson Education den deutschen Addison-Wesley-Verlag für mich vollkommen unerwartet in einer Hau-Ruck-Aktion abgewickelt. Pearson sah für IT-Bücher keine Zukunft mehr. Innerhalb weniger Monate wurde der Verkauf aller deutschsprachigen Addison-Wesley-Bücher eingestellt. Für mich war das einigermaßen unangenehm: Über 20 Jahre lang hatte ich fast alle meiner Bücher für Addison-Wesley geschrieben. Als einer der wenigen hauptberuflichen IT-Autoren im deutschen Sprachraum lebe ich nicht nur für meine Bücher, sondern auch von ihnen.

Glücklicherweise fand ich rasch eine neue Heimat im Rheinwerk Verlag, der damals noch den schöneren Namen Galileo Press hatte. Dort landeten nicht nur meine etablierten Bücher (das Linux-Buch und die Linux-Kommandoreferenz); ich konnte auch eine Menge komplett neuer Titel realisieren. Zu den Highlights der Themenpalette zählen der Raspberry Pi, Hacking & Security, Python, Docker und Git. Ganz neu sind die Bücher zu Photovoltaik (nächste Woche erscheint die 2. Auflage) und zu Wärmepumpen (erscheint in gut einem Monat), mit denen ich den Sprung aus dem IT-Segment in den allgemeinen Sachbuchmarkt wage.

Der Blick ins Buchregal zeigt die Produktion der letzten vier Jahre inklusive einiger Übersetzungen (Docker, Git, Hacking & Security). Für die Titel, die in diesem Jahr erscheinen, ist noch Platz, dann wird es Zeit für das nächste Regal :-)

Die Bilanz der letzten 10 Jahre lässt sich sehen: über 40 Bücher (inklusive Neuauflagen und Übersetzungen), fast 300.000 verkaufte Exemplare. Ja, der Markt für IT-Bücher ist schwieriger geworden, aber er ist immer noch sehr lebendig.

Bei dieser Gelegenheit möchte ich mich bei meinen Hauptkontaktpersonen im Rheinwerk Verlag bedanken: Christoph Meister, Sebastian Kestel (hat den Verlag zwischenzeitlich verlassen) und Norbert Englert haben mir bei neuen Projekten immer einen großen Vertrauensvorschuss gewährt. Sie sind mir in inhaltlichen Fragen ebenso wie bei den Arbeitsabläufen (Eigensatz mit Markdown und LaTeX) weit über das übliche Maß entgegengekommen. So macht Autor sein Spaß!

Remote Desktop und Raspberry Pi OS Bookworm

21. Oktober 2023 um 15:47

Die aktuelle Raspberry-Pi-Version verwendet auf den Raspberry-Pi-Modellen 4B, 400 sowie 5 Wayland als Default-Grafiksystem. Aus diesem Grund funktionieren viele Programme zur Fernwartung bzw. für Remote-Desktop-Funktionen nicht mehr wie gewohnt. Betroffen ist unter anderem RealVNC, bisher die Default-Lösung der Raspberry Pi Foundation. RealVNC verspricht etwas vage, im Verlauf des Jahres 2024 eine Wayland-kompatible Version ihrer Software zu veröffentlichen. An dieser Stelle erkläre ich Ihnen, was Sie tun können, wenn Sie nicht solange warten möchten.

Xorg versus Wayland

Das X Window System und der Xorg-Server bilden das traditionelle Grafiksystem von Linux. Es basiert auf einem Client/Server-Modell und hat sich jahrzehntelang bewährt. Allerdings ist der Xorg-Server mit vielen Altlasten und Sicherheitsproblemen verbunden. Die Software wird schon seit mehrere Jahren nicht mehr weiterentwickelt und kaum noch aktiv gewartet. Seine Zeit läuft ab.

Der Nachfolger von Xorg heißt Wayland ist dagegen »nur« ein neues Protokoll für die Kommunikation zwischen dem Wayland Compositor (einem Display-Server) und den Anwendungsprogrammen (Clients). Wayland bricht mit dem X Window System und verspricht ein System, das schlanker, sicherer und effizienter ist. Wayland gehört die Zukunft.

Zwar sind mittlerweile viele Programme Wayland-kompatibel, aber leider nicht alle. Besonders große Probleme gibt es bei Programmen, die den Bildschirminhalt auslesen wollen, also Tools für Screenshots, Screencasts, Screen Sharing und Remote Desktop. Derartige Funktionen sind auch unter Wayland möglich, müssen aber vollständig neu implementiert werden.

Aktuelles Grafiksystem ermitteln

Ob Ihr Raspberry Pi Wayland oder Xorg als Grafiksystem verwendet, stellen Sie am einfachsten mit einem Kommando im Terminal fest:

echo $XDG_SESSION_TYPE
  wayland

Im Desktop-Betrieb lauten die möglichen Antworten wayland oder x11. In einer SSH-Session im Textmodus lautet das Ergebnis dagegen tty.

Lösung 1: Xorg statt Wayland verwenden

Die bei weitem einfachste Lösung besteht darin, das Grafiksystem von Wayland zurück auf Xorg umzustellen. Dazu führen Sie in einem Terminal-Fenster sudo raspi-config aus und wählen zuerst den Menüpunkt Advanced Options, dann Wayland. Jetzt können Sie sich zwischen dem X11 Backend und dem Wayland Backend entscheiden. Gleichzeitig ändert sich auch der Window Manager (Openbox versus Wayfire). Optisch ergeben sich daraus aber nur geringe Unterschiede.

Die Einstellung wird in der Datei /etc/lightdm/lightdm.conf gespeichert:

# in der Datei /etc/lightdm/lightdm.conf
...
# für Wayland:
user-session=LXDE-pi-wayfire
# oder für X:
user-session=LXDE-pi-x

Die Umstellung des Grafiksystems wird erst nach einem Neustart wirksam. Die meisten Remote-Desktop-Tools inklusive RealVNC sollte nun wieder wie gewohnt funktionieren. Der RealVNC-Server ist standardmäßig installiert. Die Aktivierung kann aber nicht über das Raspberry-Pi-Konfigurationsprogramm erfolgen. Dessen VNC-Option gilt nur für wayvnc und muss deaktiviert (!) sein, sonst kommt es zu einem Port-Konflikt. Den RealVNC-Dienst aktivieren Sie anschließend wie folgt:

sudo systemctl enable --now vncserver-x11-serviced

Ein VNC-Icon im Panel zeigt an, dass der Start funktioniert hat, und gibt Aufschluss darüber, ob gerade eine Verbindung aktiv ist.

Allerdings gibt es auch hier eine Einschränkung: Der RealVNC-Server funktioniert nur in der 64-Bit-Version von Raspberry Pi OS Bookworm, nicht aber mit der 32-Bit-Version. Dieses Problem soll aber in naher Zukunft behoben werden.

Lösung 2: wayvnc

Wenn Sie bei Wayland bleiben, steht das neue Programm wayvnc zur Verfügung. Sie aktivieren es am einfachsten mit dem Programm Raspberry Pi-Konfiguration im Dialogblatt Schnittstellen, Option VNC.

Aktivierung des VNC-Servers im »Raspberry Pi-Konfigurationsprogramm«

Daraus resultiert die folgende Konfigurationsdatei /etc/xdg/autostart/wayvnc.desktop:

[Desktop Entry]
Type=Application
Name=wayvnc
Comment=Start wayvnc
NoDisplay=true
Exec=/usr/bin/wayvnc --render-cursor --keyboard=de
OnlyShowIn=wayfire

Jetzt brauchen Sie auf Ihrem Client-Rechner (auf dem Rechner, mit dem Sie Ihren Raspberry Pi steuern möchten), einen zu wayvnc kompatiblen VNC-Client. Der Raspberry-Pi-Blog empfiehlt das Programm vncviewer des Projekts TigerVNC. Die meisten Linux-Distributionen stellen ein entsprechendes Paket zur Verfügung. Für Windows und macOS (Intel) finden Sie hier Downloads.

Hier läuft der TigerVNC-Client auf meinem Notebook mit ArchLinux und ermöglicht die Fernsteuerung des Raspberry-Pi-Desktops

Bei meinen Tests unter Windows ist der Verbindungsaufbau mit dem Programm Remotedesktopverbindung gescheitert. Mit dem vncviewer von TigerVNC hat es dann aber funktioniert.

Sofern der Raspberry Pi mit einem eigenen Monitor verbunden ist, gilt für den Remote Desktop dieselbe Bildschirmauflösung. Wenn der Raspberry Pi dagegen »headless« läuft, können Sie die gewünschte Auflösung mit sudo raspi-config, Display Options, VNC Resolution einstellen (maximal 1920×1080, erfordert einen Reboot).

Quellen/Links

📚 Linux (18. Aufl.) und Photovoltaik (2. Aufl.) erschienen

27. Oktober 2023 um 09:26

Im Herbst-Doppelpack sind diese Woche die 18. Auflage meines Linux-Buchs und die 2. Auflage des Photovoltaik-Buchs erschienen, das ich zusammen mit Christian Ofenheusle verfasst habe:

Das Linux-Buch habe ich wie üblich vollständig aktualisiert. Es berücksichtigt jetzt alle bis Sommer 2023 aktuellen Linux-Distributionen. Sämtliche Anleitungen und Setups wurden damit getestet. Ausführliche Informationen zum Inhalt des Buchs finden Sie hier.

Beim Photovoltaik-Buch ergeben sich die meisten Neuerungen aus gesetzlichen Änderungen. Das Buch geht nun auf das »Photovoltaik-Paket I« ein, das in Deutschland diverse Erleichterung für den Betrieb von Balkonkraftwerken mit sich bringt. Gleichzeitig haben wir das Buch an einigen Stellen ergänzt und erweitert. Lesen Sie hier die vollständige Beschreibung des Buchs!

📚 Das Buch »Wärmepumpen« ist erschienen

23. November 2023 um 15:25

Als letzte und vielleicht spannendste Veröffentlichung in diesem Jahr ist heute das Buch »Wärmempumpen« erschienen. Es beschreibt — fernab vom politischen Getöse — die Funktionsweise und die Vor- und Nachteile von Wärmepumpen. In diesem Buch, das ich zusammen mit dem Energieberater Tobias Otta verfasst habe, wollen wir Sie beraten, unter welchen Umständen der Einsatz von Wärmepumpen zweckmäßig ist und ob sich das auch finanziell lohnt.

Dabei belassen wir es natürlich nicht bei der Wärmepumpe an sich, sondern behandeln auch die vielen Detailfragen rund um die Integration mit der Heizung (Warmwasser, Hydraulik, Puffer usw.). Wir erklären Ihnen die Unterschiede zwischen verschiedenen Wärmepumpenarten (Luft-, Erdwärme- und Grundwasserwärmepumpen) und wie Sie die Wärmepumpe im Sommer auch zum Kühlen verwenden können. Außerdem erläutern wir, warum eine Kombination mit einer PV-Anlage oft sinnvoll ist, obwohl die Sonne gerade im Winter, wenn der größte Strombedarf besteht, am wenigsten scheint. Ein ausführliches Kapitel mit Beispielen aus der Praxis samt umfassenden Kostenkalkulationen zeigt, welche Kosten bei der Errichtung und der Verwendung zu erwarten sind (natürlich immer im Vergleich zu einer Gasheizung).

Weitere Informationen zum Inhalt des Buch sowie eine Leseprobe finden Sie hier.

Umfang: 236 Seiten
ISBN: 978-3-8362-9773-8
Preis: Euro 39,90 (in D inkl. MWSt.)

MongoDB-Beispieldatenbanken für Docker einrichten

27. November 2023 um 07:51

Aktuell setze ich mich ein wenig mit MongoDB auseinander und habe mir lokal mit Docker eine Test-Installation eingerichtet:

docker run --name mongo -d mongodb/mongodb-community-server:latest

docker exec -it mongo mongosh

  Using MongoDB: 7.0.3
  Using Mongosh: 2.1.0

test> ...

Je nachdem, wie Sie Docker installiert haben, müssen Sie sudo vor jedes docker-Kommando stellen.

Zum Kennenlernen hätte ich nun gerne ein paar Beispieldatenbanken. Und tatsächlich stellt Mongo für sein Cloud-Angebot Atlas eine ganze Palette von Testdatenbanken zur Verfügung. Eine Kurzbeschreibung der Datenbanken finden Sie hier:

https://www.mongodb.com/docs/atlas/sample-data

Genau die Datenbanken hätte ich gerne in meiner lokalen Installation als »Spielwiese«. Leider ist die Installation dieser Beispieldatenbanken bei der lokalen Verwendung von MongoDB umständlich. Auf GitHub gibt es Dumps (Backups) der Beispieldateien im JSON-Format:

git clone https://github.com/mcampo2/mongodb-sample-databases.git
cd mongodb-sample-databases
lstree sample_*

  sample_airbnb/
    listingsAndReviews.json
  sample_analytics/
    accounts.json
    customers.json
    transactions.json
  sample_geospatial/
    shipwrecks.json
  ...

Jetzt geht es darum, die Datenbanken zu importieren. Unter Linux oder macOS führen Sie dazu für jede JSON-Datei aus samples_xxx ein Kommando nach dem folgenden Muster aus:

cat sample_airbnb/listingsAndReviews.json | \
  docker exec -i mongo mongoimport --db sample_airbnb --collection listingsAndReviews

Beachten Sie, dass Sie docker exec mit der Option -i ausführen müssen (nicht -it wie bisher für den interaktiven Betrieb), damit die Weitergabe von Daten über den Pipe-Operator | funktioniert.

Anstatt nun jede JSON-Datei einzeln zu importieren, bietet sich die Formulierung eines winzigen Scripts an. Er richtet für jedes DB-Verzeichnis sample_xxx eine gleichnamige Datenbank ein und importiert jedes JSON-Dokument als Collection. (Beachten Sie, dass die auf Atlas definierten Indize nicht eingerichtet werden. Wenn Sie zum Testen einen Index brauchen, müssen Sie diesen selbst einrichten.)

#!/bin/sh
for db in sample_*; do
  for file in $db/*.json; do
      collection="$(basename $file .json)"
      cat $file | docker exec -i mongo mongoimport --db $db --collection $collection
  done
done

Das Script muss in dem Verzeichnis ausgeführt werden, in dem sich die von GitHub heruntergeladenen sample_xxx-Verzeichnisse befinden.

Nach dem Import können Sie sich in der Mongo Shell überzeugen, dass alles geklappt hat:

docker exec -it mongo mongosh

test> show dbs

  admin                40.00 KiB
  config               72.00 KiB
  local                40.00 KiB
  sample_airbnb        52.09 MiB
  sample_analytics      9.39 MiB
  sample_geospatial   784.00 KiB
  sample_mflix         28.39 MiB
  sample_supplies     968.00 KiB
  sample_training      61.30 MiB
  sample_weatherdata    2.55 MiB
  samples_airbnb       52.09 MiB
  test                112.00 KiB

test> use sample_airbnb

sample_airbnb> show collections

  listingsAndReviews

sample_airbnb> db.listingsAndReviews.findOne()

 {
    _id: '10009999',
    listing_url: 'https://www.airbnb.com/rooms/10009999',
    name: 'Horto flat with small garden',
    ...
  }

Quellen/Links

GPIO Reloaded I: Python

29. Dezember 2023 um 19:30

Dieser Artikel ist der Auftakt einer Mini-Serie, die sich mit der Script-Programmierung des Raspberry Pi 5 beschäftigt. Geplant sind drei Artikel:

  • GPIO Reloaded I: Python (gpiozero, lgpio, gpiod, rpi-lgpio)
  • GPIO Reloaded II: Bash (gpiod, gpioget, gpioset, pinctrl)
  • GPIO Reloaded III: Kamera (rpicam-xxx, Picamera2)

Hinter den Kulissen hat sich mit der Vorstellung des Raspberry Pi 5 mehr geändert, als es in den ersten Testberichten den Anschein hatte. Schuld daran ist der neue I/O-Chip RP1, der unter anderem für die Kommunikation mit der GPIO-Leiste und der Kamera zuständig ist. Der RP1 bringt natürlich viele Vorteile mit sich (u.a. die Möglichkeit, zwei Kameras anzuschließen und größere Bild- bzw. Videomengen zu verarbeiten); er führt aber auch dazu, dass über Jahre etablierte Module und Kommandos nicht mehr funktionieren. Ja, die Raspberry Pi Foundation hat vorgearbeitet und empfiehlt schon eine Weile alternative Werkzeuge. Aber aus Bequemlichkeit blieben viele Programmierer bei langjährig bewährten Tools. Damit ist jetzt Schluss. Wer den Pi 5 als Maker-Tool nutzen will, muss umlernen.

Wo ist das Problem?

In der Vergangenheit gab es mehrere GPIO-Kommuniktionsmechanismen, z.B. das Lesen/Schreiben von sysfs-Dateien (sys/class/gpio) bzw. das direkte Verändern von Speicherbereichen. Diese Verfahren haben schon in der Vergangenheit oft Probleme bereitet. Beim Raspberry Pi 5 funktionieren sie schlicht nicht mehr. Neue Verfahren verwenden die lgpio-Bibliothek, die wiederum auf eine neue Kernel-Schnittstelle zurückgreift. Diese ist nach außen hin durch die Device-Dateien /dev/gpiochip* sichtbar.

Aus Python-Sicht ist insbesondere das Modul rpi.gpio betroffen. Es ist inkompatibel zum Pi 5 und es gibt anscheinend auch keine Pläne, den Code RP1-kompatibel zu reorganisieren.

Welche Alternativen gibt es?

Schon seit einiger Zeit empfiehlt die Raspberry Pi Foundation, das gpiozero-Modul zu verwenden. Es stellt für den Einstieg gut geeignete Klassen wie LED oder Button zur Verfügung, eignet sich aber auch für anspruchsvollere Maker-Aufgaben.

Wenn Sie sich partout nicht mit gpiozero anfreunden wollen, gibt es drei Alternativen: lgpio, gpiod und rpi-lgpio.

gpiozero

Das Python-Modul gpiozero macht die Steuerung von Hardware-Komponenten durch GPIOs besonders einfach. Für häufig benötigte Hardware-Komponenten gibt es eigene Klassen. Dazu zählen unter anderem:

  • LED (Leuchtdiode ein-/ausschalten)
  • PWMLED (Helligkeit einer Leuchtdiode mit Software Pulse Width Modulation steuern)
  • RGBLED (dreifarbige LED, die über drei GPIO-Ausgänge gesteuert wird)
  • TrafficLights (Kombination aus einer roten, gelben und grünen Leuchtdiode)
  • MotionSensor (für PIR-Bewegungssensoren)
  • LightSensor (Lichtdetektor)
  • Button (Taster)
  • Buzzer (Summer)
  • Motor (zur Steuerung von zwei GPIOs für Vorwärts- und Rückwärts-Signale)
  • Robot (zur Steuerung mehrerer Motoren)
  • MCP3008 (für den gleichnamigen A/D-Converter)

Das Modul gpiozero ist umfassend dokumentiert:

https://gpiozero.readthedocs.io/en/latest

Ein Hello-World-Beispiel sieht so aus:

#!/usr/bin/env python3
from gpiozero import LED
import time
myled = LED(7)    # BCM-Nummer 7 = Pin 26 des J8-Headers
print("LED ein")
myled.on()
time.sleep(1)
print("LED aus und Programmende")
myled.off()

Dieses Script setzt voraus, dass Pin 26 der GPIO-Leiste (intern BCM/GPIO 7) über einen Vorwiderstand mit einer Leuchtdiode verbunden ist. Anstelle der GPIO-Nummer gibt es einige alternative Adressierungsverfahren, wobei Sie den gewünschente GPIO-Kontakt als Zeichenkette angeben:

# alternative, gleichwertige Schreibweisen
myled = LED(7)          # GPIO 7 = BCM-Nummer 7
myled = LED("GPIO7")    # GPIO 7 (Achtung, nicht "GPIO07")
myled = LED("BCM7")     # BCM 7  (nicht "BCM07")
myled = LED("BOARD26")  # Pin 26 auf der GPIO-Leiste des Boards
myled = LED("J8:26")    # Pin 26 des J8-Headers (= GPIO-Leiste)

lgpio

lgpio (der Projektname lautet noch kürzer lg) ist eine C-Bibliothek zur lokalen Steuerung der GPIOs. Das gerade erwähnte Modul gpiozero verwendet intern seit Version 2.0 die lgpio-Bibliothek. Alternativ stellt das gleichnamige lgpio-Modul eine direkte Python-Schnittstelle zur lgpio-Bibliothek her. Deren Funktionen sind Hardware-näher implementiert. Der GPIO-Zugriff verbirgt sich also nicht hinter Klassen wie LED oder Button, vielmehr werden die GPIO-Schnittstellen direkt angesprochen.

Ein Hello-World-Beispiel mit lgpio sieht so aus:

#!/usr/bin/env python3
import lgpio, time

# Zugriff auf /dev/gpiochip4 für RP1-Chip
handle = lgpio.gpiochip_open(4)

# Raspberry Pi 4 und früher:
# handle = lgpio.gpiochip_open(0)

# GPIO 7 = Pin 26 als Output verwenden
led = 7
lgpio.gpio_claim_output(handle, led)  

# LED zehnmal ein- und ausschalten
for i in range(10):
    print("LED ein")
    lgpio.gpio_write(handle, led, 1)
    time.sleep(1)
    print("LED aus")
    lgpio.gpio_write(handle, led, 0)
    time.sleep(1)

# nichts blockieren
lgpio.gpiochip_close(handle)

Beachten Sie, dass die Initialisierung des Handles für den GPIO-Zugriff je nach Modell variiert! Bei den älteren Raspberry-Pi-Modellen bis einschließlich 4B/400 müssen Sie handle = lgpio.gpiochip_open(0) ausführen. Beim Raspberry Pi 5 ist für die GPIO-Steuerung dagegen der neue RP1-Chip zuständig, den Sie mit gpiochip_open(4) ansprechen. (Die richtige Chip-Nummer stellen Sie am einfachsten mit dem Kommando gpioinfo aus dem Paket gpiod fest. Der hier benötigte Kontakt GPIO7 heißt in gpioinfo ein wenig verwirrend PIN7.)

Wenn Sie mit Python ein lgpio-Script schreiben wollen, das auf allen Pi-Modellen funktioniert, müssen Sie Code zur Erkennung des Pi-Modells integrieren.

Weiterer Codebeispiele finden Sie hier:

rpi-lgpio

Was tun, wenn Sie Code für ältere Modelle entwickelt haben, den Sie nun für den Raspberry Pi 5 portieren möchten? Am schnellsten wird dies oft mit dem neuen Modul rpi-lgpio gelingen, das weitgehende Kompatibilität zu rpi.gpio verspricht.

Vor der Installation müssen Sie das in Raspberry Pi OS standardmäßig installierte Modul rpi.gpio installieren. Eine Parallelinstallation beider Module ist ausgeschlossen, weil rpi.gpio und rpi-lgpio den gleichen Modulnamen verwenden (import RPi.GPIO).

sudo apt remove python3-rpi.gpio

Da es in Raspberry Pi OS für rpi-lgpio kein fertiges Paket, installieren Sie dieses am einfachsten mit pip. Da es kein passendes Systempaket gibt, sind keine Konflikte zu erwarten. Wenn Sie die Option --break-system-packages dennoch vermeiden möchten, müssen Sie eine virtuelle Python-Umgebung einrichten.

pip install --break-system-packages rpi-lgpio

Das obige pip-Kommando installiert das Modul lokal, also nur für Ihren Account. Wenn Sie Ihr Script in einem anderen Account ausführen möchten (z.B. als Cron-Job), stellen Sie dem Kommando sudo voran und installieren so rpi-lgpio systemweit.

Nach diesen Vorbereitungsarbeiten sollten viele Ihre alten Scripts ohne Änderungen laufen. Einige Sonderfälle sind hier dokumentiert:

https://rpi-lgpio.readthedocs.io/en/release-0.4/differences.html

Die folgenden Zeilen zeigen einmal mehr eine Schleife zum Ein- und Ausschalten einer Leuchtdiode:

#!/usr/bin/env python3
# Das Script setzt voraus, dass vorher 
# rpi-lgpio installiert wurde!
import RPi.GPIO as gpio
import time

# BCM-GPIO-Nummern verwenden
gpio.setmode(gpio.BCM)

# LED an Pin 26 = GPIO 7 
gpio.setup(7, gpio.OUT)

# LED über Pin 26 fünf Mal ein- und ausschalten
for _ in range(5):
    print("LED ein")
    gpio.output(7, gpio.HIGH)
    time.sleep(1)
    print("LED aus")
    gpio.output(7, gpio.LOW)
    time.sleep(1)

# alle vom Script benutzten GPIOs/Pins wieder freigeben
gpio.cleanup()

gpiod

Das Python-Modul gpiod wird durch das Paket python3-libgpiod zur Verfügung gestellt, das unter Raspberry Pi OS standardmäßig installiert ist. Das Modul stellt eine Python-Schnittstelle zur Bibliothek libgpiod her. Diese Bibliothek ist wiederum eine Alternative zu der schon erwähnten lgpio-Bibliothek. Da es zum Python-Modul kaum Dokumentation gibt, ist gpiod nur für Entwickler von Interesse, die mit libgpiod bereits C-Programme entwickelt haben. Als Ausgangspunkt für eine eigene Recherche eignen sich die beiden folgenden Seiten:

Das folgende Minibeispiel zeigt, wie Sie eine LED an Pin 26 (GPIO 7) fünf mal ein- und ausschalten:

#!/usr/bin/env python3
import gpiod, time
chip = gpiod.Chip('gpiochip4')  # RP1 (Raspberry Pi 5)
led = chip.get_line(7)          # GPIO 7 = Pin 26 des J8-Headers
led.request(consumer="example", type=gpiod.LINE_REQ_DIR_OUT)

for _ in range(5):              # 5x ein- und ausschalten
    led.set_value(1)
    time.sleep(1)
    led.set_value(0)
    time.sleep(1)

Quellen/Links

GPIO Reloaded II: Bash

06. Januar 2024 um 16:42

Das ist der zweite Teil einer Mini-Serie zur GPIO-Nutzung am Raspberry Pi 5:

  • GPIO Reloaded I: Python (gpiozero, lgpio, gpiod, rpi-lgpio)
  • GPIO Reloaded II: Bash (gpiod, gpioget, gpioset, pinctrl)
  • GPIO Reloaded III: Kamera (rpicam-xxx, Picamera2)

Zu den wichtigsten Neuerungen beim Raspberry Pi 5 zählt nicht nur der viel schnellere SoC (System-on-a-Chip), sondern auch ein eigener I/O-Controller, der als eigener Chip realisiert ist (RP1). Dieser I/O-Chip bringt mit sich, dass etablierte Mechanismen zur GPIO-Steuerung nicht mehr funktionieren. Besonders stark betroffen sind Kommandos, die im Terminal oder in Bash-Scripts aufgerufen werden.

Veraltet: WiringPi, »gpio«, »raspi-gpio« und »pigpiod/pigs«

Im Verlauf eines Jahrzehnts haben sich diverse Kommandos etabliert, die mittlerweile veraltet sind. Dazu zählt das Kommando gpio aus dem WiringPi-Projekt, das bereits 2019 eingestellt wurde. Ebenfalls verabschieden müssen Sie sich von dessen Nachfolger-Kommando raspi-gpio: Das Kommando ist nicht mit dem neuen I/O-Chip RP1 kompatibel. Glücklicherweise lässt sich das Kommando relativ einfach durch pinctrl ersetzen.

Deutlich ärgerlicher ist, dass auch der beliebte Dämon pigpiod und das dazugehörende Kommando pigs der Kompatibilität zu RP1 zum Opfer gefallen ist. Absurderweise kann der Dienst Anfang 2024 im Raspberry-Pi-Konfigurationsprogramm als GPIO-Fernzugriff scheinbar weiterhin aktiviert werden.

Der »GPIO-Fernzugriff« kann scheinbar weiterhin aktiviert werden. Er ist aber inkompatibel zum Pi 5!

journalctl -u pigpiod beweist aber, dass der Dienst nicht funktioniert:

journalctl -u pigpiod

systemd[1]: Starting pigpiod.service - Daemon required to control GPIO pins via pigpio...
systemd[1]: Started pigpiod.service - Daemon required to control GPIO pins via pigpio.
pigpiod[88161]: 2023-12-29 11:02:24 gpioHardwareRevision: unknown rev code (d04170)
pigpiod[88161]: 2023-12-29 11:02:24 initCheckPermitted:
pigpiod[88161]: +---------------------------------------------------------+
pigpiod[88161]: |Sorry, this system does not appear to be a raspberry pi. |
pigpiod[88161]: |aborting.                                                |
pigpiod[88161]: +---------------------------------------------------------+
pigpiod[88161]: Can't initialise pigpio library
systemd[1]: pigpiod.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: pigpiod.service: Failed with result 'exit-code'.

Das Problem ist bekannt, aber es sieht nicht so aus, als könnte es behoben werden: https://github.com/joan2937/pigpio/issues/589

gpioget und gpioset

Welche Kommandos funktionieren dann noch? Sie haben die Wahl zwischen den gpioxxx-Kommandos aus dem Paket gpiod sowie pinctrl (siehe den folgenden Abschnitt). Das Paket gpiod ist standardmäßig installiert. Die darin enthaltenen Kommandos nutzen zur Kommunikation mit dem Kernel die Device-Dateien /dev/gpiochip<n> und die Bibliothek libgpiod2.

Der größte Nachteil der Kommandos gpioget, gpioset usw. besteht darin, dass Sie als ersten Parameter die GPIO-Chip-Nummer angeben müssen. Diese variiert je nach Raspberry-Pi-Modell. Bei den Modellen der Serie 1 bis 4 müssen Sie die Nummer 0 angeben, ab Modell 5 die Nummer 4.

# LED ein- und ausschalten, die über den GPIO 7 gesteuert wird
# (= Pin 26 des J8-Headers)

# gpioset auf dem Raspberry Pi 5
gpioset 4 7=1; sleep 3; gpioset 4 7=0

# gpioset auf dem Raspberry Pi 1 bis 4
gpioset 0 7=1; sleep 3; gpioset 0 7=0

Warum variiert die GPIO-Chip-Nummer? Weil beim Raspberry Pi 4 die Kernel-Schnittstelle /dev/gpiochip0 für die GPIO-Steuerung verantwortlich ist (das sind in den BCM 2711 integrierte Funktionen), beim Pi 5 aber der RP1 (ein externer Chip) mit der Kernel-Schnittstelle /dev/gpiochip4. Informationen darüber, welche GPIO-Schnittstellen es gibt und welche GPIO-Funktion wie »verdrahtet« ist, geben die Kommandos gpiodetect und gpioinfo. Die folgenden Ausgaben gelten für den Raspberry Pi 5:

gpiodetect  

  gpiochip0 [gpio-brcmstb@107d508500] (32 lines)
  gpiochip1 [gpio-brcmstb@107d508520] ( 4 lines)
  gpiochip2 [gpio-brcmstb@107d517c00] (17 lines)
  gpiochip3 [gpio-brcmstb@107d517c20] ( 6 lines)
  gpiochip4 [pinctrl-rp1]             (54 lines)


gpioinfo    

  gpiochip0 - 32 lines:
    line   0:   "-"              unused   input  active-high 
    line   1:   "2712_BOOT_CS_N" "spi10 CS0" output active-low
    line   2:   "2712_BOOT_MISO" unused   input active-high 
    ...
  gpiochip1 - 4 lines:
    line   0: "WIFI_SDIO_D0"     unused   input active-high 
    line   1: "WIFI_SDIO_D1"     unused   input active-high 
    ...
  gpiochip2 - 17 lines:
    line   0: "RP1_SDA"          unused   input  active-high 
    line   1: "RP1_SCL"          unused   input  active-high 
    line   2: "RP1_RUN" "RP1 RUN pin"     output active-high 
    ...
  gpiochip3 - 6 lines:
    line   0: "HDMI0_SCL"        unused   input  active-high 
    line   1: "HDMI0_SDA"        unused   input  active-high 
    ...
  gpiochip4 - 54 lines:
    line   0: "ID_SD"            unused   input  active-high 
    line   1: "ID_SC"            unused   input  active-high 
    line   2: "PIN3"             unused   input  active-high 
    line   3: "PIN5"             unused   input  active-high 
    line   4: "PIN7"        "onewire@0"   output active-high
    line   5: "PIN29"       "onewire@0"   output active-low
    line   6: "PIN31"            unused   input  active-high 
    line   7: "PIN26"            unused   input  active-high 
    line   8: "PIN24"            unused   input  active-high 
    line   9: "PIN21"            unused   input  active-high 
    line  10: "PIN19"            unused   input  active-high 
    ...
    line  28: "PCIE_RP1_WAKE"    unused   input  active-high 
    line  29: "FAN_TACH"         unused   input  active-high 
    line  30: "HOST_SDA"         unused   input  active-high 
    line  31: "HOST_SCL"         unused   input  active-high 
    line  32: "ETH_RST_N"   "phy-reset"  output  active-low 
    ...

Um Scripts zu programmieren, die universell funktionieren, können Sie die folgenden Zeilen in den Code einbauen:

# chip=4 für RPi5, chip=0 für ältere Modelle
if gpiodetect | grep -q "pinctrl-rp"; then
  chip=4
else
  chip=0
fi

In der einfachsten Form schalten Sie mit gpioset einen GPIO-Ausgang auf High oder Low. In den folgenden Beispielen bezieht sich der erste Parameter auf die gpiochip-Nummer. 7 gibt die GPIO-Nummer in BCM-Nomenklatur an, 1 oder 0 den gewünschten Zustand:

gpioset $chip 7=1   # GPIO 7 (Pin 26) auf High stellen
gpioset $chip 7=0   # GPIO 7 (Pin 26) auf Low stellen

Sie können auch mehrere Ausgänge auf einmal steuern (hier GPIO 7, 8 und 25):

gpioset $chip 7=0 8=1 25=0 

Durch diverse Optionen können Sie weitere Funktionen steuern (siehe auch man gpioset):

  • --bias=as-is|disable|pull-down|pull-up aktiviert die internen Pull-up- oder Pull-down-Widerstände.
  • --mode=exit|wait|time|signal gibt an, wie lange das Kommando laufen soll. Standardmäßig gilt exit, das Kommando wird also sofort beendet. Mit wait wartet das Programm, bis der Benutzer [Return] drückt. Bei der Einstellung time können Sie mit --sec=<n> oder --usec=<n> die gewünschte Wartezeit einstellen. signal bedeutet, dass das Programm weiterläuft, bis es mit [Strg]+[C] beendet wird.

  • --background führt das Kommando als Hintergrunddienst weiter.

gpioget funktioniert analog zu gpioset: Sie übergeben im ersten Parameter die gpiochip-Nummer (in aller Regel 0), im zweiten Parameter die BCM-Nummer des GPIOs, dessen Input Sie auswerten wollen. Das Ergebnis des Kommandos lautet 0 oder 1, je nachdem, welchen Zustand der Eingang hat.

gpioget $chip 9   # Zustand von GPIO 9 (Pin 21) auslesen
0

pinctrl

Auch mit pinctrl aus dem Paket raspi-utils können Sie GPIO-Funktionen steuern. Der Vorteil von pinctrl besteht darin, dass das Kommando zur Zeit mit allen Raspberry-Pi-Modellen kompatibel ist. Eine Fallunterscheidung, ob das Script auf einem alten oder neuen Modell mit RP1-Chip läuft, entfällt. Außerdem ist das Kommando syntaktisch weitestgehend zu raspi-gpio kompatibel.

Gegen den Einsatz des Kommandos spricht der Umstand, dass das Kommando laut pinctrl -h (der einzigen mir bekannten Dokumentation) nur für Debugging-Zwecke gedacht ist.

Die folgende Aufzählung fasst die wichtigsten Anwendungen des Kommandos zusammen:

  • pinctrl get [gpionr] ermittelt den aktuellen Status aller GPIOs bzw. des angegebenen GPIOs.
  • pinctrl funcs [gpionr] ermittelt, welche alternativen Funktionen der angegebene GPIO bzw. alle GPIOs erfüllen können.

  • pinctrl set gpionr options verändert den Status des angegeben GPIOs. Mögliche Optionen sind:

    • ip = Input
    • op = Output
    • dl = Zustand Low (Drive Low)
    • dh = Zustand High (Drive High)
    • pu = Pull-up-Widerstand aktiv
    • pd = Pull-down-Widerstand aktiv
    • pn = keine Pull-up/down-Funktion
    • a0 bis a7 = alternative Funktion n aktivieren
    • no = Deaktivieren (no function)

Soweit sich sinnvolle Kombinationen ergeben, dürfen mehrere der obigen Optionen auf einmal übergeben werden, jeweils getrennt durch Leerzeichen. Welche alternative Funktionen ein GPIO unterstützt und wie sie nummeriert sind, geht aus pinctrl funcs hervor.

Das folgende Kommando ermittelt, welche Funktionen der GPIO mit der BCM-Nummer 23 unterstützt. Auf dem Raspberry Pi ist dieser GPIO mit Pin 16 des J8-Headers verbunden. GPIO23 kann diverse Funktionen übernehmen:

pinctrl funcs 23

  23, PIN16/GPIO23, SD0_CMD, DPI_D19, I2S0_SDO1, SCL3, 
  I2S1_SDO1, SYS_RIO023, PROC_RIO023, PIO23

Wenn Sie über Pin 26 (BCM-Nummer 07) eine Leuchtdiode angeschlossen haben, dann können Sie die LED wie folgt ein- und ausschalten:

pinctrl set 7 op dh   # LED an Pin 26 ein
pinctrl set 7 op dl   # LED an Pin 26 aus

Quellen/Links

❌