Quantcast
Channel: Michael Kofler – kofler.info
Viewing all 274 articles
Browse latest View live

Pop!_OS

$
0
0

Die Linux-Distribution Pop!_OS ist von Ubuntu abgeleitet und wird von der amerikanischen Firma system76 entwickelt. Diese Firma verkauft Notebooks, auf denen standardmäßig Pop!_OS installiert ist. Im Vergleich zu anderen Distributionen ist Pop!_OS besonders gut für Notebooks mit NVIDIA-Grafik optimiert.

Ursprünglich dachte ich, Pop!_OS sei nur ein weiterer Ubuntu-Klon mit modifizierten Gnome-Desktop und integrierten NVIDIA-Treibern. Seit ich die Distribution auf mein neues Lenovo-P1-Notebook installiert habe, weiß ich, dass Pop!_OS weit mehr Eigenheiten hat.

Nach dem Gusto des Autors modifizierter Gnome-Desktop von Pop!_OS

Varianten

Pop!_OS steht aktuell in den Versionen 18.04 LTS und 18.10 sowie in jeweils zwei Varianten zur Auswahl. Diese beiden Varianten unterscheiden sich darin, ob die NVIDIA-Treiber bereits inkludiert sind oder nicht. Ich habe für meinen Tests Pop!_OS 18.10 in der NVIDIA-Variante verwendet.

Notebook-spezifische Vorbereitungsarbeiten

Vor der Installation von Pop!_OS auf meinem Lenovo P1 habe ich das auf einer zweite SSD befindliche Windows aktualisiert und dann ein BIOS-Update durchgeführt (siehe auch diesen heise-Artikel).

Des Weiteren habe ich zwei BIOS-Optionen verändert:

  • UEFI Secure Boot = No
  • F1-F12 as Primary Keys = Enabled

Die erste Option ist zwingend erforderlich, weil Secure Boot in Kombination mit den nicht GPL-kompatiblen NVIDIA-Treibern unmöglich ist.

Die zweite Option entspricht meinen Gewohnheiten. Ich will die Funktionstasten als solche verwenden (F1 bis F12). In meiner Emacs-Konfiguration sind diese Tasten alle mit häufig verwendeten Funktionen verbunden.

Für die Installation von Pop!_OS ist es hingegen nicht erforderlich, Veränderungen am Grafiksystem durchzuführen. Ich habe die Einstellung Graphics Device = Hybrid Graphics also belassen und nicht auf Discrete umgestellt.

Installation

Bei der Installation lautet das Motto von Pop!_OS: Alles oder nichts. Es gibt nur zwei Installationsvarianten:

  • Clean Install verwendet die gesamte Festplatte. (Wenn es mehrere Festplatten/SSDs gibt, können Sie das gewünschte Gerät auswählen.) Diese Variante eignet sich nur, wenn Sie keine Rücksicht auf vorhandene Betriebssysteme nehmen müssen. Sie haben keine Wahlmöglichkeiten bei der Partitionierung. Standardmäßig richtet Pop!_OS eine relativ große Swap-Partition, eine EFI- oder eine boot-Partition sowie eine Datenpartition ein, die die restliche Festplatte/SSD ausfüllt (ext4-Dateisystem). Immerhin können Sie zum Schluss entscheiden, ob das Dateisystem verschlüsselt werden soll oder nicht.
  • Custom (Advanced): Hinter dieser Option verbirgt sich das andere Extrem. Wenn Sie sich dafür entscheiden, müssen Sie sich um die Partitionierung selbst kümmern. Das Pop!_OS-Installationsprogramm öffnet dazu GParted, Sie können aber natürlich auch in einem Terminal mit parted arbeiten. Auf jeden Fall erhalten Sie keine Unterstützung durch das Installationsprogramm, das keinen Partitionseditor hat. Stattdessen zeigt es die mit GParted oder parted erzeugten Partitionen nur an. Sie können nun über kleine Dialoge entscheiden, wie Sie die Partitionen für die Installation nützen möchten.

Es gibt nur wenige Installationsvarianten

Selbstredend habe ich mich für die zweite Variante entschieden. Mein Ziel war, auf der SSD Platz für weitere Linux-Installationen zu lassen. Das Problem besteht nun darin, dass Pop!_OS bei der Custom-Variante keine Verschlüsselungsoption anbietet. Vielmehr müssen Sie die Datenpartition mit crypt_setup selbst vorbereiten.

Ich habe daher in einem Terminal die notwendigen Vorbereitungsarbeiten selbst durchgeführt. Zuerst habe ich auf der SSD eine GPT-Partitionstabelle eingerichtet. (Vorsicht! Alle auf der SSD befindlichen Daten gehen dabei verloren.)

parted /dev/nvme0n1
>   mklabel gpt

Immer noch in parted habe ich eine EFI-Partition eingerichtet:

> mkpart EFI 1mib 1024mib
> set 1 hidden
> set 1 esp

Und schließlich die Datenpartition, wobei die letzten 250 GiB der SSD frei bleiben sollten:

> mkpart encryptedpop 1025mib -250gib
> exit

Die EFI-Partition benötigt ein VFAT-Dateisystem:

mkpart encryptedpop 1025mib -250gib

Die Datenpartition wird mit crypt_setup verschlüsselt. (Dabei müssen Sie zweimal das gewünschte Passwort angeben.) Damit entsteht die neue Device-Datei /dev/mapper/cryptlvm:

cryptsetup luksFormat --type luks2 /dev/nvme0n1p2
ls /dev/mapper/cryptlvm 
    /dev/mapper/cryptlvm

Diese Device-Datei soll nun als Physical Volume für ein Volume Group für LVM dienen. In der Volume Group habe ich mit lvcreate ein Logical Volume eingerichtet.

pvcreate /dev/mapper/cryptlvm
vgcreate popvg /dev/mapper/cryptlvm
lvcreate -L 1500G popvg -n poproot

Auf eine Swap-Partition habe ich angesichts 32 GByte RAM verzichtet. Damit ist der Terminal-Voodoo beendet. Das Pop!_OS-Installationsprogramm erkennt sowohl die EFI-Partition als auch die verschlüsselte Partition und das darin enthaltene LVM-Setup.

Die erste Partition der ersten SSD soll als EFI-Partition genutzt werden. (Die zweite SSD enthält Windows und bleibt unter Linux ungenutzt.)
Die verschlüsselte Partition kann genutzt werden, wenn zuvor das Passwort angegeben wird.
Die verschlüsselte Partition enthält ein LVM-Setup, das wie eine dritte Festplatte angezeigt wird. Im vorbereiteten Logical Volume soll Pop!_OS installiert werden.

Recovery-Partition: Wenn Sie möchten, dass Ihnen nach der Installation auf der Festplatte/SSD ein Recovery-System zur Verfügung steht, müssen Sie eine weitere 4 GByte große Partition vorsehen (VFAT, unverschlüsselt, außerhalb von LVM) und dieser im Installationsprogramm das Verzeichnis /recovery zuweisen. Das Recovery-System ist einfach ein Pop!_OS-Live-System.

Die weitere Installation erfolgt dann ohne weitere Rückfragen und innerhalb weniger Minuten. Nach dem Neustart muss noch ein Benutzer eingerichtet werden — das war’s.

Hinweis: Wenn Sie Pop!_OS in VirtualBox ausprobieren, passt sich die Auflösung der virtuellen Maschine nicht automatisch an die Fenstergröße an. Standardmäßig stehen u.U. nur 800×600 Pixel zur Verfügung. Abhilfe: Öffnen Sie in der virtuellen Maschine die Gnome-Einstellungen, öffnen Sie das Dialogblatt *Devices/Displays* und wählen Sie dort die gewünschte Auflösung aus.

Desktop

Nach dem ersten Login offenbart sich der Pop!_OS-Desktop als ziemlich gewöhnliches Gnome-System mit wenigen Modifikationen, die durch Shell Extensions, eigene Fonts und Themes realisiert sind.

Pop!_OS-Desktop in einer VirtualBox-Installation
Diverse Gnome Shell Extensions sind vorinstalliert

NVIDIA-Unterstützung

Das Alleinstellungsmerkmal von Pop!_OS ist sicherlich die gute NVIDIA-Unterstützung out of the box, also ohne irgendwelche Konfigurationsarbeiten. Pop!_OS verfolgt dabei einen sehr pragmatischen Ansatz: Über zwei in das Gnome-Systemmenü eingebauten Kommandos kann zwischen der NVIDIA- und der Intel-GPU gewechselt werden. Jeder Wechsel erfordert einen Neustart. Das ist weniger bequem als unter Windows, aber es funktioniert (zumindest bei meinen Tests) zuverlässig.

Im Systemmenü können Sie zwischen drei Leistungsprofilen sowie zwischen NVIDIA- und Intel-Grafik wechseln. (Der GPU-Wechsel erfordert einen Neustart.)

Der GPU-Wechsel kann auch durch Kommandos initiiert werden, wobei auch diese Änderungen erst nach einem Reboot wirksam werden.

sudo system76-power graphics nvidia
sudo system76-power graphics intel

Hinter den Kulissen erzeugt system76-power eine neue Initrd-Datei. Anschließend werden die Dateien in /boot/efi/EFI/Pop_OS-xxx erneuert. Neugierig wie ich bin, habe ich die Initrd-Images ausgepackt (unmkinitramfs) und verglichen (diff -rq). Das Ergebnis: Die Initrd-Datei für NVIDIA enthält erwartungsgemäß die NVIDIA-Kernelmodule (nvidia-drm.ko, nvidia-modset.ko). Dafür enthält die Intel-Variante die folgende Datei:

# Datei /etc/modprobe.d/system76-power.conf 
blacklist nouveau
blacklist nvidia
blacklist nvidia-drm
blacklist nvidia-modeset
alias nouveau off
alias nvidia off
alias nvidia-drm off
alias nvidia-modeset off

Sowohl das system76-power als auch die dazugehörige Gnome-Erweiterung sind Open-Source-Projekte auf GitHub zu finden. Als Programmiersprache wurde Rust verwendet.

Als Grafiksystem kommt in Pop!_OS Xorg zum Einsatz. Diverse Wayland-Pakete sind zwar installiert, beim Login gibt es aber keine Möglichkeit, Wayland zu aktivieren. Das ist insofern konsequent, als die NVIDIA-Treiber ja inkompatibel zu Wayland sind).

Energieverwaltung

Mit system76-power und den dazugehörige Gnome Extension können Sie auch zwischen drei Nutzungsprofilen umschalten:

sudo system76-power profile battery 
sudo system76-power profile balanced
sudo system76-power profile performance

Ich habe keine schlüssige Dokumentation gefunden, was die obigen Kommandos exakt tun.

Sicher ist, dass das Battery-Profil die Hintergrundbeleuchtung des Bildschirms stark reduziert. (Die Helligkeit kann per Tastatur natürlich wieder angehoben werden.) Außerdem wird im Battery-Profil der Turbo-Modus der CPU deaktiviert:

cat /sys/devices/system/cpu/intel_pstate/no_turbo
  0

In den beiden anderen Modi lautet das Ergebnis jeweils 1, d.h. bei Bedarf taktet die CPU höher. Der CPU-Governor bleibt bei allen drei Profilen auf powersave:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | uniq
  powersave

Kurzum, der Unterschied zwischen Balanced und Performance ist unklar geblieben. Ich habe keine wesentliche Änderung des CPU-Verhaltens feststellen können. Benchmarks mit Geekbench ergaben jeweils (im Rahmen der üblichen Schwankungen) dieselben Ergebnisse.

Hintergrundinformationen:

https://github.com/pop-os/system76-power/wiki
https://wiki.archlinux.org/index.php/CPU_frequency_scaling

Paketverwaltung

Pop!_OS verwendet zusätzlich zu den Ubuntu-Paketquellen eine eigene Paketquelle:

http://ppa.launchpad.net/system76/pop/ubuntu

Mit meinem im Blogbeitrag Die LTS-Frage vorgestellten Script habe ich ermittelt, wie viele Pakete aus der Pop!_OS-eigenen Paketquelle stammen. Das Ergebnis ist verblüffend. Es sind über 100 Pakete!

accountsservice appstream-data-pop appstream-data-pop-icons
com.github.donadigo.eddy curl dmeventd dmsetup gdm3 geary
gir1.2-accountsservice-1.0 gir1.2-gdm-1.0:amd64
gir1.2-gnomedesktop-3.0:amd64 gnome-control-center
gnome-control-center-data gnome-control-center-faces
gnome-desktop3-data gnome-online-accounts
gnome-shell-extension-alt-tab-raise-first-window
gnome-shell-extension-always-show-workspaces
gnome-shell-extension-do-not-disturb
gnome-shell-extension-pop-battery-icon-fix
gnome-shell-extension-pop-shop-details
gnome-shell-extension-pop-suspend-button
gnome-shell-extension-system76-power hidpi-daemon initramfs-tools
initramfs-tools-bin initramfs-tools-core kernelstub
libaccountsservice0:amd64 libc-bin libc-dev-bin libc6:amd64 libc6:i386
libc6-dev:amd64 libcurl3-gnutls:amd64 libcurl4:amd64
libdevmapper-event1.02.1:amd64 libdevmapper1.02.1:amd64
libegl-mesa0:amd64 libegl1-mesa:amd64 libgbm1:amd64 libgdm1
libgl1-mesa-dri:amd64 libgl1-mesa-dri:i386 libglapi-mesa:amd64
libglapi-mesa:i386 libglx-mesa0:amd64 libglx-mesa0:i386
libgnome-desktop-3-17:amd64 libgoa-1.0-0b:amd64 libgoa-1.0-common
libgoa-backend-1.0-1:amd64 libgranite-common libgranite5:amd64
liblvm2app2.2:amd64 liblvm2cmd2.02:amd64 libnvidia-cfg1-418:amd64
libnvidia-common-418 libnvidia-compute-418:amd64
libnvidia-compute-418:i386 libnvidia-decode-418:amd64
libnvidia-decode-418:i386 libnvidia-encode-418:amd64
libnvidia-encode-418:i386 libnvidia-fbc1-418:amd64
libnvidia-fbc1-418:i386 libnvidia-gl-418:amd64 libnvidia-gl-418:i386
libnvidia-ifr1-418:amd64 libnvidia-ifr1-418:i386 libxatracker2:amd64
linux-generic linux-headers-4.18.0-16 linux-headers-4.18.0-16-generic
linux-headers-generic linux-image-4.18.0-16-generic
linux-image-generic linux-libc-dev:amd64
linux-modules-4.18.0-16-generic linux-modules-extra-4.18.0-16-generic
linux-signed-generic locales lvm2 mesa-va-drivers:amd64
mesa-vdpau-drivers:amd64 mesa-vulkan-drivers:amd64 multiarch-support
nvidia-compute-utils-418 nvidia-dkms-418 nvidia-driver-410
nvidia-driver-418 nvidia-kernel-common-418 nvidia-kernel-source-418
nvidia-utils-418 plymouth-theme-pop-basic pop-default-settings
pop-desktop pop-fonts pop-gnome-initial-setup pop-gnome-shell-theme
pop-gtk-theme pop-icon-theme pop-session pop-shop pop-theme
pop-wallpapers popsicle popsicle-gtk repoman system76-dkms
system76-io-dkms system76-power xserver-xorg-video-nvidia-418

Das macht, offen gesagt, ein wenig skeptisch: Ein modifizierter Kernel, diverse modifizierte Gnome-Pakete (inklusive des eigenen Paketmanagers pop-shop, der natürlich auf Gnome Software basiert und ebenso schlecht wie dieses Programm funktioniert) etc. Ist system76 wirklich in der Lage, all diese Pakete langfristig solide zu warten? Gerade mit modifizierten Gnome-Paketen ist selbst Canonical gescheitert und letztlich zurück in das Mainstream-Lager gewechselt.

Standardmäßig sind keine Snap-Pakete installiert. Selbst auf die Installation des Snap-Dämons hat system76 verzichtet. (Sie können das mit apt install snapd beheben, wenn Sie wirklich wollen.)

systemd-boot statt GRUB

Technisch gesehen die größte Überraschung ist, dass Pop!_OS auf Rechnern oder virtuellen Maschinen mit EFI nicht GRUB verwendet, sondern die systemd-Komponente systemd_boot. (Wenn Sie Pop!_OS hingegen in VirtualBox installieren, wo standardmäßig ein traditionelles BIOS aktiv ist, kommt GRUB zum Einsatz.)

Pop!_OS mit systemd-boot benötigt richtig viel Platz in der EFI-Partition. Auf meinem Notebook ohne Recovery-System sind es ca. 160 MByte:

cd /boot/efi/EFI/
du -h 
  155M  ./Pop_OS-e16cb407-87e1-4333-90b3-e3a05f8e80f7
  92K   ./systemd
  92K   ./BOOT
  155M  .

Bei der Clean Install-Variante beträgt der Platzbedarf sogar 200 MByte, weil ein weiteres Image zum Start des Recovery-Systems eingerichtet wird.

Noch ein paar Anmerkungen zur EFI-Partition: Hier speichern alle auf einem Rechner installierten Betriebssysteme (also Windows sowie alle Linux-Distributionen) ihren Bootloader. Üblicherweise beanspruchen die Dateien ca. 10 bis 20 MByte pro Betriebssystem. Bei Pop!_OS ist der Platzbedarf deswegen so viel größer, weil die Boot-Dateien auch den Kernel und das Initrd-Image mit einschließen. Das ist insofern praktisch, als keine unverschlüsselte Boot-Partition erforderlich ist. Alle für den Boot-Vorgang erforderlichen Dateien sind direkt in der EFI-Partition.

Auf Notebooks mit vorinstalliertem Windows ist die EFI-Partition zumeist 256 MByte groß. Mit Windows und Pop_OS! ist die EFI-Partition dann so gut wie voll. Eine Vergrößerung mit einem Partitions-Manager scheitert zumeist daran, dass sich oft unmittelbar hinter der EFI-Partition eine 16 MByte große reserved windows Partition befindet (siehe z.B. superuser.com).

Weil ich Probleme bei zukünftigen Linux-Installationen ausschließen wollte, habe ich während der Installation eine zweite EFI-Partition eingerichtet. Der EFI-Standard sieht dies vor (nochmals superuser.com), Windows ist aber anscheinend nicht immer glücklich damit. In meinem Fall gab es aber keine Probleme, Windows lässt sich weiter starten und liest die Boot-Dateien aus ’seiner‘ EFI-Partition, während Pop!_OS die zweite EFI-Partition nutzt.

Im Betrieb bleibt systemd-boot normalerweise komplett unsichtbar. Nur wenn Sie exakt zum richtigen Zeitpunkt die Leertaste drücken, erscheint ein Menü mit den zur Auswahl stehenden Systemen. Im Prinzip handelt es sich dabei um Pop!_OS mit dem aktuellen Kernel, Pop!_OS mit dem vorigen Kernel sowie gegebenenfalls ein Recovery-System.

Die Menüeinträge wählen Sie mit den Cursortasten aus. Bei Bedarf gelangen Sie mit [E] in einen Editor, in dem Sie die Kernelparameter verändern können. Weitere interaktive Funktionen gibt es nicht.

Mit der Leertaste gelangen Sie in das Boot-Menü von systemd-boot. Mit E können Sie die Kerneloptionen verändern.

Die Konfiguration von systemd-boot erfolgt durch die Datei /boot/efi/loader/loader.conf. Dort können Sie unter anderem mit timeout n die Zeit in Sekunden einstellen, während der das systemd-boot-Menü angezeigt wird. (Die Defaulteinstellung lautet 0.) Standardmäßig enthält loader.conf nur die Zeile default osname, die auf eine der Menüdateien im loader-Verzeichnis verweist. Mehr Details zu den (spärlichen) Konfigurationsmöglichkeiten finden Sie im archlinuxwiki.

Ist systemd-boot nun besser oder schlechter als GRUB? Das ist schwer zu sagen. An sich gefällt der minimalistische Ansatz im Vergleich zu dem mit Funktionen überladenen GRUB. Sollten allerdings Boot-Probleme auftreten, ist eine allfällige Reparatur vermutlich schwieriger als bei GRUB — schon alleine deswegen, weil systemd-boot wenig verbreitet ist. Im Web sind nur wenige Anleitungen und eine dürftige offizielle Dokumentation und zu finden:

Recovery-System

Wenn Sie während der Installation von Pop!_OS die Option Clean Install wählen, richtet das Installationsprogramm eine 4 GByte große VFAT-Partition ein. Dorthin wird das Installations-Image kopiert. Über das systemd-boot-Menü können Sie somit auch ohne USB-Stick ein Pop!_OS-Live-System starten und dort gegebenenfalls Reparaturarbeiten in einem Terminal durchführen oder Pop!_OS neu installieren. (Das Recovery-System stellt aber keine fertigen Programm oder Tools zur Verfügung, die Ihnen bei einer allfälligen Reparatur des Systems helfen.)

Kurz zusammengefasst bietet das Recovery-System keine Funktionen, die Ihnen nicht ebenso zur Verfügung stehen, wenn Sie Ihren Rechner mit einem USB-Stick booten, auf dem sich das Pop!_OS-Installations-Image befindet. Der einzige Vorteil des Recovery-Systems besteht darin, dass es auch unterwegs zur Verfügung steht, wenn Sie vermutlich weder einen USB-Stick mit Pop!_OS bei sich haben.

https://support.system76.com/articles/pop-recovery/

Fazit

Pop!_OS begeistert insofern, als das früher für Ubuntu zutreffende Motto it just works so wunderbar realisiert ist. Wer ein Notebooks mit NVIDIA-Grafiksystem mit minimalem Aufwand unter Linux nutzen will, für den ist Pop!_OS definitiv eine gute Wahl.

Wenn man bereit ist, die gesamte Festplatte/SSD Pop!_OS zu überlassen, ist die Installation ein Kinderspiel. Danach haben in meinem Fall alle Notebook-Funktionen (Grafik, WLAN, Bluetooth, Funktionstasten, Thunderbolt) auf Anhieb funktioniert.

Bei einer Parallelinstallation zu Windows ist allerdings eine manuelle Partitionierung erforderlich, die Einsteiger überfordern wird. Außerdem gilt zu beachten, dass Pop!_OS genug Platz in der EFI-Partition voraussetzt (ca. 200 MByte). Ein Ausweg besteht darin, eben eine zweite EFI-Partition einzurichten.

Die sonstigen Abweichungen/Eigenheiten gegenüber Ubuntu sind aus meiner Sicht eher Beiwerk und nicht wirklich überzeugend. Sie erwecken vielmehr die Sorge, ob man mit Pop!_OS nicht vielleicht auf eine Distribution oder zumindest auf Features setzt, die es in ein paar Jahren nicht mehr gibt.


Modulverwaltung in Thonny

$
0
0

Thonny ist eine praktische kleine Python-Entwicklungsumgebung, die ideal für Python-Einsteiger geeignet ist. Allerdings verwendet das Programm eine eigene Python-Installation, die von einer eventuell vorhandenen systemweiten Python-Installation vollkommen losgelöst ist. Das gilt auch für die installierten Module. Wenn Thonny also die Fehlermeldung module not found liefert, dann müssen Sie das Modul innerhalb von Thonny installieren.

Dazu führen Sie Tools/Manage packages aus, suchen nach dem gewünschten Paket und installieren es.

Installation zusätzlicher Module in Thonny

Alternativ können Sie auch Tools/Open system shell ausführen. Damit gelangen Sie in ein Terminalfenster, in dem Sie unter anderem pip ausführen kann.

Postfix, Dovecot + SpamAssassin: Spam in den Junk-Folder verschieben

$
0
0

Auf vielen Mail-Servern läuft SpamAssassin, um Spam-verdächtige Mails mit einer Header-Zeile zu markieren. Ordentliche Mail-Client wie Thunderbird können dann mit einer simplen Filter-Regel derartige Mails aussortieren.

Noch besser wäre es aber, wenn die Mails bereits auf dem Server in einen eigenen Junk-Folder verschoben würden. Das ist insbesondere dann praktisch, wenn zum Lesen von Mails auch diverse Mail-Clients auf Smartphones, iPads etc. verwendet werden, die keine Filtermöglichkeiten bieten.

Voraussetzungen

Die folgende Anleitung setzt voraus, dass Sie

  • unter Debian/Ubuntu arbeiten (ich habe zuletzt zwei Systeme unter Ubuntu 16.04 + 18.04 entsprechend konfiguriert)
  • Postfix, Dovecot und SpamAssassin bereits installiert sind und so weit funktionieren, dass eintreffende Spam-Mails gekennzeichnet werden. Werfen Sie einen Blick in den Quellcode einer Spam-Mail; dort sollte X-Spam-Status-Zeile enthalten sein. Ich habe zur SpamAssassin-Konfiguration Milter verwendet, also im Prinzip apt install spamassassin spamass-milter sowie smtpd_milters = unix:spamass/spamass.sock in /etc/postfix/main.cf.

  • die Mail-Accounts lokal konfiguriert sind (also nicht ISP-Style über eine Datenbank)

Die Anleitung funktioniert prinzipiell natürlich auch, wenn bei Ihnen eine andere Konfiguration vorliegt. Aber dann kann es sein, dass irgendwelche Details anders zu lösen sind.

Zusatzpakete installieren

Alle Arbeiten sind mit root-Rechten zu erledigen.

apt install dovecot-lmtpd dovecot-managedsieved swaks
  • LMTPD ist ein Zusatzdienst für Dovecot, der bei der lokalen Zustellung von Mails hilft.
  • Sieve ist eine Sprache für E-Mail-Filterregeln

  • SWAKS ist der Swiss Army Knife SMTP, the all-purpose smtp transaction tester

Sieve-Konfiguration einrichten

Mails, die als Spam erkannt wurden, sollen in den Junk-Folder verschoben werden. Die entsprechenden Anweisungen in der Sieve-Syntax müssen in einer *.sieve-Datei gespeichert werden. Ich habe dazu das Verzeichnis /etc/dovecot/sieve-after eingerichtet und dort die folgende Textdatei gespeichert:

# neue Datei /etc/dovecot/sieve-after/spam-to-folder.sieve
require ["fileinto","mailbox"];
if header :contains "X-Spam-Flag" "YES" {
 fileinto :create "Junk";
 stop;
}

Diese Datei muss kompiliert werden:

cd /etc/dovecot/sieve-after
sievec spam-to-folder.sieve

Dovecot-Konfiguration

Damit Dovecot sowohl LMTP als auch Sieve verwendet, sind eine Menge Änderungen erforderlich. Alle im folgenden erwähnten Dateien befinden sich in /etc/dovecot/conf.d.

10-auth.conf: LMTP erwartet Mail-Usernamen in der Form ’name@host.com. Wenn Sie hingegen einfach name verwenden, müssen Sie dasauth_username_format` wie folgt einstellen:

# Datei /etc/dovecot/conf.d/10-auth.conf
...
# https://serverfault.com/questions/658703
auth_username_format = %Ln
...

10-master.conf: Damit die Kommunikation zwischen Dovecot und LMTP funktioniert, kommentieren Sie in 10-master.conf den Block service lmtp aus und ersetzen ihn durch die folgenden Zeilen:

# Datei /etc/dovecot/conf.d/10-master.conf
...
#  https://serverfault.com/questions/512219/dovecot-lmtp-does-not-exist
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}
...

15-mailboxes.conf: Damit die Mail-Clients den Junk-Folder standardmäßig anzeigen, fügen Sie im schon vorhandenen Abschnitt mailbox Junk die Einstellung auto = subscribe hinzu:

# Datei /etc/dovecot/conf.d/15-mailbox.conf
...
mailbox Junk {
    special_use = \Junk
    auto = subscribe
  }

20-lmtp.conf: Damit Dovecot sowohl LMTP als auch Sieve verwendet, muss im Block protocol lmtp eine gültige Postmaster-Adresse eingestellt sein und das sieve-Plugin aktiviert werden.

# Datei /etc/dovecot/conf.d/20-lmtp.conf
...
protocol lmtp {
  postmaster_address = postmaster@ihr-hostname.bla
  mail_plugins = $mail_plugins sieve
}

90-sieve.conf: Zu guter Letzt muss die zuvor eingerichtete Sieve-Regel aktiviert werden. Dazu ist die folgenden sieve-after-Einstellung erforderlich. Damit werden alle kompilierten Sieve-Dateien in /etc/dovecot/sieve-after berücksichtigt.

# Datei /etc/dovecot/conf.d/90-sieve.conf
...
sieve_after = /etc/dovecot/sieve-after

Postfix-Konfiguration

Weniger aufwendig sind die Änderungen an main.cf. Die erste Zeile aktiviert LMTP für den Transport von Mails in lokale Verzeichnisse. Die zweite Regel ist anscheinend notwendig, damit SpamAssassin mit Postfix als Milter (Mailbox-Filter) funktioniert (Quelle). Ich gestehe, dass sich mir der Sinn dieser Zeile nicht erschlossen hat.

# Datei /etc/postfix/main.cf
...
mailbox_transport = lmtp:unix:private/dovecot-lmtp
milter_connect_macros = i j {daemon_name} v {if_name} _

Test

Um sicherzugehen, dass Postfix und Dovecot alle Änderungen erkannt haben, starten Sie die Programme neu:

systemctl restart postfix
systemctl restart dovecot

Danach senden Sie sich (idealerweise von einem anderen Rechner) mit swaks eine Spam-Test-Mail zu, die von jedem Spam-Tester zuverlässig als Spam erkannt wird:

swaks --to eine-adresse@ihr-host.bla --server localhost --data /usr/share/doc/spamassassin/examples/sample-spam.txt

Im Idealfall taucht die Mail nun im Junk-Folder Ihres Mail-Accounts auf. Wenn nicht, beginnt die Fehlersuche in der Logging-Datei /var/log/mail.log.

Quellen

Erfahrungsbericht: Lenovo Thinkpad P1 unter Linux

$
0
0

Seit ca. einem Monat besitze ich ein Lenovo Thinkpad P1 Notebook. In diesem Beitrag fasse ich meine bisherigen Erfahrungen mit dem Gerät unter Linux zusammen.

Konkret habe ich mich für ein Modell mit der CPU i7 8750H und einem FHD-Display entschieden; RAM auf 32 GByte erweitert, zwei SSDs (256 GB mit Windows, 2 TB mit Linux). Vorweg ein paar Links, um Wiederholungen zu vermeiden:

Das BIOS habe ich unter Windows auf die aktuelle Version 1.19 aktualisiert. Das BIOS-Update hat die Geräuschentwicklung des Geräts spürbar verbessert — für einen lautlosen Betrieb bei meinen Arbeitsbedingungen reicht es aber leider nicht.

Leben mit NVIDIA

Der größte Nachteil des Geräts war mir vor dem Kauf schon klar. Es ist mit einer NVIDIA-Grafikkarte ausgestattet (P1000). Zwar kann der Bildschirm des Geräts auch von der Intel-CPU angesteuert werden; externe Bildschirme erfordern aber zwingend die Aktivierung der NVIDIA-GPU.

Meinen Befürchtungen zum Trotz bereitet die NVIDIA-GPU im Alltag erstaunlich wenig Probleme: Dank vorheriger Recherche habe ich mich gleich für die Ubuntu-Variante Pop!_OS entschieden, die meinen Zwecken genügt. Installation und Betrieb verliefen bzw. verlaufen problemlos.

Anfänglich hatte ich einige Male das Problem, dass der externe Monitor nach dem Aufwachen aus dem Ruhezustand schwarz blieb. Abhilfe schuf in solchen Fällen nur ein Neustart. Seit ich das HDMI-Kabel nicht an den Thunderbolt-Dock sondern direkt an die HDMI-Buchs anschließe, ist dieser Fehler nicht mehr aufgetaucht.

Frei von Nachteilen ist die NVIDIA-GPU aber dennoch nicht. Erstens führt der nicht GPL-konforme Treiber dazu, dass mein Kernel tainted ist. Kein erfreulicher Zustand für einen Linux-Fan:

dmesg | grep taint

nvidia: loading out-of-tree module taints kernel.
nvidia: module license 'NVIDIA' taints kernel.
Disabling lock debugging due to kernel taint
nvidia: module verification failed: signature and/or required key missing - tainting kernel

Zweitens scheidet Wayland als Grafiksystem aktuell aus. (Diesbezüglich ist Besserung in Sicht. Und grundsätzlich kann ich mit X.org gut leben.)

Drittens muss ich auf UEFI Secure Boot verzichten. (Auch das bereitet mir wenig Kummer.)

Viertens (siehe auch Fazit) ist ein lüfterloser Betrieb bei aktiver NVIDIA-Karte unmöglich, nur mit Intel-GPU hingegen schon. Ich habe es nicht erwartet, aber dieser Punkt irritiert mich nach einem Monat mehr als die anderen drei zusammen.

Undervolting

Eine beliebte Maßnahme zur Reduktion der CPU-Temperatur, zur Verlängerung der Akku-Laufzeit sowie zur Verbesserung der Performance (weil die CPU unter Last erst später gedrosselt wird) ist Undervolting. Die CPU wird also mit weniger Spannung versorgt als eigentlich vorgesehen wäre. Einen sehr ausführlichen Bericht über die Konzepte von Undervolting finden Sie auf notebookcheck.com.

Unter Linux bietet sich zum Undervolting das Programm intel-undervolt an (GitHub). Ich verwende nun seit zwei Wochen absturzfrei diese Einstellungen:

# Datei /etc/intel-undervolt.conf
undervolt 0 'CPU'        -130
undervolt 1 'GPU'        -100
undervolt 2 'CPU Cache'  -100
undervolt 3 'System Agent'  0
undervolt 4 'Analog I/O'    0
interval 5000

Beachten Sie, dass jede CPU andere Toleranzen hat! Bei meinen (eher bescheidenen) Benchmark-Tests hat sich daraus ein kleiner Geschwindigkeitsunterschied ergeben (getestet mit GeekBench). Der Stromverbrauch ist ebenfalls nur minimal gesunken (gemessen mit einem billigen Strommessgerät vor dem Netzteil). Meine eigentlicher Wunsch, den Lüfter damit zum Schweigen zu bringen, hat sich nicht erfüllt.

Lüftersteuerung

Ich habe natürlich versucht, den Lüfter mit thinkfan selbst zu steuern, bin aber gescheitert. So weit ich es verstanden habe, hat das Notebook die Steuerungsanweisungen des Programms ganz einfach ignoriert.

CPU-Steuerung

Die meiste Zeit habe ich keinen Bedarf für maximale CPU-Leistung und ziehe einen minimalen Stromverbrauch und möglichst große Ruhe vor. Gelegentlich will ich aber alles an Leistung haben, was die CPU hergibt. Zwar stellt Pop!_OS über das Gnome-Menü drei Leistungsstufen zur Wahl, letztlich habe ich mich aber für die Gnome-Extension cpufreq entschieden, die eine angenehme Oberfläche und mehr Optionen bietet. Empfehlenswert!

Steuerung der CPU mit der Gnome-Extension »cpufreq«

Thunderbolt

Das Notebook hat zwei Thunderbolt-Anschlüsse — Neuland für mich. Ich habe mir bei amazon einen Billig-Hub besorgt und daran ein Netzwerkkabel, Tastatur und Maus, einen Lautsprecher (mit diesem USB-Adapter) und anfänglich auch meinen Monitor angeschlossen. Alles funktionierte auf Anhieb, ohne irgendwelche Einstellungen, Treiberinstallationen etc.! Faszinierend. (Achtung, dieser USB-Hub unterstützt Ethernet nur mit 100 MBit!)

Seit ich an den Hub ein 65W-USB-C-Netzteil angeschlossen habe, lädt dieses das Notebook. Über einen Anschluss (bzw. zwei, seit ich den Monitor wieder direkt mit dem Notebook verbinde) ist die gesamte Büroverkabelung erledigt.

Benchmarks

Ich habe mich nicht besonders lange mit Benchmarktests aufgehalten und nur ein paar wenige Messungen mit dem (ohnedies nicht übermäßig aussagekräftigen) Programm GeekBench 4 durchgeführt. Die Ergebnisse unter Pop!_OS 18.10:

  • Mit Stromversorgung, mit TurboBoost, mit Undervolting: 5175 (Singlecore) / 23366 (Multicore)
  • Akkubetrieb ohne TurboBoost, mit Undervolting: 3054 / 15275

Andere Linux-Distributionen

Aktuell bin ich mit Pop!_OS zufrieden. Tests mit Ubuntu 19.04 und Fedora 30 sind geplant, werden aber noch ein paar Wochen dauern.

Sonstige Anmerkungen

  • Der eingebaute Bildschirm ist gut und ausreichend hell — aber natürlich nicht hochauflösend, sondern nur FHD. Matte, nicht spiegelnde Oberfläche.
  • Der Klang der eingebauten Lautsprecher ist erbärmlich. (Es gibt eine 3,5 mm Buchse für Kopfhörer.)

  • Die Tastatur ist gut, aber die Tastaturen älterer Thinkpads waren besser (deutlich mehr Hub). Immerhin sind, anders als bei Apple, aktuell keine Funktionsstörungen wegen mikroskopisch kleiner Krümel bekannt …

  • Das originale Netzteil ist beachtliche 0,45 kg schwer. Es ist für meine Zwecke mit 135 W total überdimensioniert. Ich habe mir ein 65W-USB-C-Netzteil besorgt, das kaum mehr als die Hälfte wiegt.

Fazit

Grundsätzlich erfüllt das Gerät meine Anforderungen: 15-Zoll-Bildschirm, qualitativ gute mittige Tastatur, hohe CPU-Leistung, RAM und SSD in Hülle und Fülle, relativ niedriges Gewicht. Zum ersten Mal besitze ich ein Notebook, das meinem Arbeitsalltag entspricht. (Bisher habe ich auf Desktop-PCs gearbeitet und ein Notebook nur als Notlösung für unterwegs verwendet.)

Enttäuscht bin ich, dass das Gerät in meiner Hauptkonfiguration (zuhause im Büro, ohne starke CPU-Belastung und ohne TurboBoost, aber mit externem Monitor + Tastatur + Maus) nicht lautlos ist. Der Lüfter säuselt unter diesen Bedingungen zwar nur, aber das ständige Ein- und Ausschalten (ca. zwei bis drei Minuten Ruhe, dann ca. 30 Sekunden Lüfter) nervt dennoch. Die Temperatur pendelt entsprechend zwischen 48 und 58° C, d.h. sie steigt in den lüfterlosen Phasen langsam an und wird dann durch den Lüfter relativ schnell wieder reduziert. Die Leistungsaufnahme variiert zwischen ca. 16 und 30 W, Mittelwert ca. bei 25 W. Klar, dass das zu viel Wärme in dem kleinen Gehäuse verursacht.

Mag sein, dass ich diesbezüglich verwöhnt bin, aber meine beiden Desktop-PCs (ein selbst zusammengestellter Linux-PC und ein iMac) laufen bei gleichen Arbeitsbedingungen komplett lautlos.

Ich gebe die Schuld an der Geräuschentwicklung (ganz objektiv natürlich ;-) ) NVIDIA. Unterwegs, also nur mit Intel-Grafik, läuft das Notebook nämlich lautlos. Im Büro kann ich aber nicht auf die NVIDIA-GPU verzichten, weil ich dann keinen externen Monitor anschließen kann. Offensichtlich ist der Zusatzstromverbrauch der GPU gerade so hoch, dass ein lüfterloser Betrieb selbst im Leerlauf unmöglich ist.

Liebe Notebook-Hersteller, ein Highend-Notebook ohne dezidierte GPU wäre vielleicht eine Marktlücke …

Ubuntu 19.04

$
0
0

Ubuntu 19.04 ist ein Release ohne dramatische Neuerungen. Optisch springen neue Icons in Auge, die dem Desktop mehr Frische geben. Gnome 3.32 unterstützt fractional scaling, was die Arbeit auf hochauflösenden Displays verbessern sollte. Das Feature gilt aber noch als experimentell und muss explizit aktiviert werden. Generell verspricht Gnome etwas mehr Performance. Die lässt sich in Benchmarktests messen, gefühlt hat sich aber nicht viel geändert.

Der Desktop wirkt mit neuen Icons und einem originellem Hintergrundbild gleich ein wenig frischer

Fractional Scaling

In der Vergangenheit mussten Sie sich in Gnome zwischen 100% oder 200% Skalierung entscheiden. Auf hochauflösenden Displays führt die erste Einstellung zu einer winzigen Textdarstellung, während die zweite meist schon zu viel des Guten ist und wertvollen Platz verschwendet. Gnome 3.32 unterstützt nun auch 125%, 150% und 175%. Allerdings stehen diese Einstellungen nur zur Verfügung, wenn Sie das experimentelle Feature vorher aktivieren.

  • X: gsettings set org.gnome.mutter experimental-features "['x11-randr-fractional-scaling']"
  • Wayland: gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

Bei meinen Tests haben die neuen Skalierungsstufen gut funktioniert. Manche Programme werden anscheinend nicht komplett scharf dargestellt. Mir sind allerdings optisch keine Probleme aufgefallen. Wünschen würde ich mir allerdings eine vollkommen freie Einstellung der Skalierungsstufe.

Intern sind die Skalierungsstufen unter Wayland und X unterschiedlich implementiert. Wayland-Programme werden wirklich skaliert, während die Skalierung unter X mittels xrandr erfolgt. (Im Prinzip wird ein virtueller Bildschirm in höherer Auflösung für das Rendering verwendet. Danach wird die Ausgabe auf die tatsächliche Auflösung herunterskaliert. Das ist naturgemäß relativ aufwendig und optisch nicht perfekt.)

Gnome 3.32 bietet endlich mehr Skalierungsstufen

Icons auf dem Desktop

Im Unterschied zum originalen Gnome ist es unter Ubuntu möglich, Dateien auf dem Desktop abzulegen. Canonical hat dazu standardmäßig die Gnome Extension Desktop Icons aktiviert. Von dieser Extension profitieren auch alle, die nicht vor haben, den Desktop mit Icons zu übersäen: Dank dieser Extension enthält Ubuntu zur Abwechslung wieder einmal eine aktuelle Nautilus-Version.

Versionsnummern

Basis             Desktop             Programmierung   Server
---------------   ------------------  --------------   --------------
Kernel      5.0   Gnome        3.32   bash       5.0   Apache     2.4
glibc      2.29   Firefox        66   gcc        8.3   CUPS       2.2
X-Server   1.20   Gimp         2.10   Java        11   MySQL      5.7
Wayland    1.16   LibreOffice   6.2   PHP        7.2   OpenSSH    7.9
Mesa       19.0   Thunderbird    60   Python     3.7   qemu/KVM   3.1
Systemd     240                                        Postfix    3.3
NetworkMan 1.16                                        Samba     4.10
GRUB       2.02 

Quellen

»Swift 5« ist erschienen

$
0
0

Die neueste Auflage meines umfassenden Handbuchs zu Swift ist erschienen. In dem Buch berücksichtige ich auf über 1300 Seiten natürlich alle wichtigen Neuerungen von Swift 5. Ein neues Kapitel behandelt auf vielfachen Leserwunsch Core Data und SQLite. Stark überarbeitet habe ich den Abschnitt zur Lokalisierung von Apps. (Xcode zickt dabei wie eh und je …) Außerdem gibt es da und dort ein paar neue Beispiele (Slider-Puzzle-App, macOS Dark Mode etc.) Weitere Details zum Buch finden Sie hier.

Wie üblich kann das Buch beim Rheinwerk Verlag oder bei Amazon vorbestellt werden. Die E-Book-Ausgabe bzw. das Bundle aus Buch und E+Book gibt es allerdings nur beim Rheinwerk Verlag!

Fedora 30

$
0
0

Fedora 30 ist eine beinahe schon langweilig robuste, stabile und (fast) pünktliche Ausgabe der »Cutting-Edge«-Distribution aus dem Red-Hat-Lager. Möglicherweise sind die Red-Hat-Mitarbeiter momentan so stark mit RHEL 8 beschäftigt, dass die üblichen Experimente und Revolutionen in Fedora diesmal ausgeblieben sind. Selbst das Hintergrundbild war schon einmal origineller …

Fedora 30 mit einem eher faden Hintergrundbild

Bemerkenswert cool ist der Systemstart auf Rechnern mit Intel-Grafik: Da erscheint unter dem Hersteller-Logo das Fedora-Logo. Wenige Sekunden später erscheint die Login-Aufforderung, ohne dass der Bildschirm dazwischen (mehrfach) schwarz wird oder flackert, wie dies bei anderen Distributionen üblich ist.

Die Website phoronix.com hat zudem mit unzähligen Benchmark-Tests bewiesen, dass die Performance von Fedora 30 verbessert wurde. Im alltäglichen Betrieb ist das aber nicht feststellbar.

Versionsnummern

Basis             Desktop             Programmierung   Server
---------------   ------------------  --------------   --------------
Kernel      5.0   Gnome        3.32   bash       5.0   Apache     2.4
glibc      2.29   Firefox        66   gcc        9.0   CUPS       2.2
X-Server   1.20   Gimp         2.10   Java        11   MariaDB   10.3
Wayland    1.17   LibreOffice   6.2   PHP        7.3   OpenSSH    7.9
Mesa         19   Thunderbird    66   Python     3.7   qemu/KVM   3.1
systemd     241                                        Postfix    3.4
NetworkMan 1.16                                        Samba     4.10
GRUB       2.02 

Fedora und NVIDIA

Natürlich habe ich auch getestet, wie sich Fedora auf meinem neuen Notebook schlägt: Bemerkenswert unauffällig.

Die Installation muss im Boot-Menü mit Troubleshooting / Start Fedora in Basic Graphics Mode gestartet werden — sonst scheitert wenige Sekunden später der Wechsel vom Text- in den Grafikmodus. Immerhin ist Fedora so intelligent, dass es bei der Verwendung des Basic Graphics Mode gleich die Kernel-Option nomodeset in GRUB einbaut: Damit gelingt auch der erste Bootprozess nach der Installation problemlos.

Die anschließende Installation der NVIDIA-Treiber ist beinahe so mühelos wie unter Ubuntu: Im Programm Software kann mit einem Mausklick die Paketquelle RPM Fusion for Fedora 30 — Nonfree — NVIDIA Driver aktiviert werden. Im Idealfall können der NVIDIA-Treiber und das Programm nvidia-settings anschließend ebenfalls in Software installiert werden. Bei meinen Tests hat das einmal funktioniert, das zweite Mal nicht. Abhilfe schaffen diese Kommandos:

sudo dnf install xorg-x11-drv-nvidia akmod-nvidia
sudo dnf update -y
Die Aktivierung ausgewählter alternativer Paketquellen kann direkt in »Software« erfolgen

Dass Wayland nun auch im Zusammenspiel mit den NVIDIA-Treibern funktionieren würde (Quelle), kann ich freilich nicht bestätigen. Bei mir fehlt die Wayland-Option im Login-Menü, sobald der NVIDIA-Treiber aktiv ist.

Quellen und Links

Texpander: Textbausteine unter Linux

$
0
0

Textbausteine helfen beim Schreiben von E-Mails und anderen Nachrichten, um immer gleiche Formulierungen (Mit freundlichen Grüßen …) rasch einzufügen. Textbausteine eignen sich aber auch dazu, häufig benötigte Kommandos (ssh name@hostname) oder Code-Anweisungen (// Copyright MeineFirma) effizient einzugeben. Genau diese Aufgabe übernimmt das Mini-Script texpander.sh.

Textbaustein auswählen

Installation

Das großartigste Merkmal von Texpander besteht darin, dass es sich dabei um ein nur 70 Zeilen kurzes Shell-Script handelt! Ich liebe einfache Lösungen!

https://github.com/leehblue/texpander

Zur Installation laden Sie dieses Script von der GitHub-Seite herunter, speichern es an einem beliebigen Ort (gut geeignet ist das Unterverzeichnis bin, das Sie gegebenenfalls vorher in Ihrem Heimatverzeichnis einrichten) und setzen das Execute-Bit (chmod +x texpander.sh).

Das Script greift auf drei andere Tools zurück, die Sie installieren müssen (hier für Debian/Ubuntu):

sudo apt install xsel xdotool zenity

Zu guter Letzt müssen Sie das Script texpander.sh noch mit einem Tastenkürzel verbinden. Die Vorgehensweise hängt dabei von Ihrem Desktop-System ab. Unter Gnome öffnen Sie in den Einstellungen das Modul Geräte / Tastatur. Am Ende der langen Liste aller Tastenkürzel fügen Sie mit dem Plus-Button ein eigenes Kürzel hinzu, wobei Sie als Befehl den exakten Pfad zum Script angeben. Ich habe mich für das Kürzel Strg+, entschieden.

Definition eines Tastenkürzels für den Texpander unter Gnome

Textbausteine definieren

So kurz wie das Texpander-Script ist, so einfach ist das Anlegen von Textbausteinen: Jeder Textbaustein wird als Datei im Verzeichnis .texpander gespeichert. Der Dateiname gibt das Kürzel an. Für die eingangs erwähnten freundlichen Grüße richten Sie also die Datei .texpander/mfg mit dem gewünschten Text ein.

Anwendung

Wenn Sie nach der Definition einiger Tastenkürzel die festgelegte Tastenkombination drücken, zeigt texpander.sh einen kleinen Dialog mit der Liste aller Textbausteine an. Durch die Eingabe der Anfangsbuchstaben wählen Sie das gewünschte Kürzel aus, Return fügt es in das gerade aktuelle Programm ein.

texpander.sh verwendet zum Einfügen die Zwischenablage, stellt deren ursprünglichen Inhalt anschließend aber wieder her. Das Script versucht zu erkennen, ob es sich beim aktuellen Programm um ein Terminalfenster handelt. In diesem Fall wird der Text mit Shift+Strg+V eingefügt, sonst mit Strg+V.

Einschränkungen und Probleme

Nicht mit Wayland: Die zur Zeit verfügbaren Programme zur Eingabe von Textbausteinen setzen alle voraus, dass Xorg als Grafiksystem zum Einsatz kommt! Unter Wayland fehlen ganz einfach noch die Schnittstellen, die zur Programmierung derartiger Funktionen erforderlich sind.

Probleme mit mehreren Gnome-Tastaturlayouts: Sofern Sie in Gnome mehrere Tastaturlayouts eingerichtet haben und zwischen diesen wechseln, tritt ein merkwürdiges Problem auf: Solange das erste Layout aktiv ist, funktioniert der Texpander wunderbar. Ist aber ein anderes Layout aktiv, treten beim Einfügen Verzögerungen auf, die durchaus ein, zwei Sekunden betragen können.

Die Ursache des Problems ist aktuell unbekannt, eine Lösung nicht in Sicht. Betroffen sind davon alle Programme, die wie der Texpander auf xdotool zurückgreifen (siehe auch diesen Bug-Bericht). Verändern Sie gegebenenfalls die Reihenfolge der Tastaturlayouts in den Einstellungen. Das aktuell erste Layout ist von dem Problem nicht betroffen, alle weiteren schon.

Alternativen

Als leistungsfähigstes Linux-Tool zum Einfügen von Textbausteinen sowie ganz allgemein für Automatisierungsaufgaben gilt AutoKey. Die Inbetriebnahme und Konfiguration sind aber kompliziert. Bei meinen Tests war zudem die Anwendung fehleranfällig: Immer wieder verschwanden beim Einfügen von Text einzelne Zeichen.

Links


Ubuntu: Merkwürdiges sudo-Verhalten

$
0
0

sudo verhält sich unter Ubuntu in einem Detail anders als bei den restlichen Linux-Distributionen: Nach sudo -s verwendet root nicht sein eigenes Home-Verzeichnis (/root), sondern das des zuletzt aktiven Benutzers (/home/accountname). Das hat diverse Vor- und Nachteile — und führt offensichtlich zu Sicherheitsproblemen.

Der feine Unterschied

Fedora und die meisten anderen Linux-Distributionen verhalten sich so:

kofler@fedora$ echo $HOME
  /home/kofler

kofler@fedora$ sudo -s

root@fedora# echo $HOME
  /root

Unter Ubuntu gilt hingegen:

kofler@ubuntu$ echo $HOME
  /home/kofler

kofler@ubuntu$ sudo -s

root@ubuntu# echo $HOME
  /home/kofler

Vorteile

Das Verhalten von Ubuntu hat den Vorteil, dass nach sudo -s diverse Einstellungen (/home/accountname/.vim, /home/accountname/.emacs usw.) auch für root gelten. Das ist natürlich praktisch.

Die von anderen Linux-Distributionen abweichende sudo-Konfiguration wurde 2011 in einer Reaktion auf diesen Bugbericht eingeführt.

Nachteile

Mit sudo ausgeführte Programme erzeugen in /home/accountname Dateien mit root-Rechten, die der gewöhnliche Benutzer dann nicht mehr überschreiben kann. Das ist immer wieder lästig, aber nicht wirklich tragisch. (Abhilfe schaffen sudo rm xxx oder sudo chown xxx.)

Allerdings kann das Verhalten unter Umständen auch Sicherheitsprobleme verursachen, wie sie in diesem Bugbericht (erstellt im März 2016!) dokumentiert sind. Deswegen regt der Canonical-Mitarbeiter Dan Streetman nun sowohl im Bugbericht als auch in der Ubuntu-Developer-Mailingliste an, dass Ubuntu in zukünftigen Versionen zurück zur sudo-Defaultkonfiguration wechselt. (Eine Änderung in den aktuellen Versionen erscheint ein zu großer Eingriff.)

Selbsthilfe

Wenn Sie nicht auf die nächste Ubuntu-Version warten möchten, fügen Sie einfach die folgende Zeile in /etc/sudoers ein:

# /etc/sudoers
...
Defaults always_set_home

Quellen

Red Hat Enterprise Linux 8

$
0
0

CentOS 8 ist noch nicht verfügbar. Deswegen habe ich mir eine 30-tägige Testversion von Red Hat Enterprise Linux 8 (RHEL 8) besorgt, um mir ein erstes Bild vom neuen Linux-Server-Standard zu machen.

RHEL8 mit Gnome-Desktop und »Cockpit« im Webbrowser

Installation

Wer schon einmal Fedora oder CentOS installiert hat, stößt bei RHEL 8 auf wenig Überraschungen. Der Partitionierungsdialog ist unübersichtlich wie eh und je, davon abgesehen ist die Installation aber ein Kinderspiel.

Partitionen und Dateisysteme einrichten
Installationsüberblick
Installationsumfang festlegen

Registrierung

Der Code von RHEL ist zwar Open Source, die Nutzung der Enterprise-Distribution und insbesondere der Zugriff auf die Paketquellen erfordert aber eine Lizenz. Die Aktivierung der 30-Tage-Testlizenz hat sich mühsamer gestaltet als erwartet. Der grafische Red Hat Subscription Manager, offenbar eine Art Web-Console, hat bei meinen Tests kläglich versagt. Wenn es dem Programm überhaupt gelang, eine Verbindung zu Red Hat herzustellen, dann scheiterte der Login mit der Fehlermeldung, die Organisation sei ungültig. In meinem für die 30-Tage-Evaluation eingerichteten Account bei https://access.redhat.com/management gibt es aber gar keine Möglichkeit, eine Organisation einzustellen.

Letztlich ist die Registrierung in einem Terminalfenster gelungen (und auch dort erst im fünften oder sechsten Versuch …):

subscription-manager register --username <yourname> --password <pw>
subscription-manager role          --set="Red Hat Enterprise Linux Server"
subscription-manager service-level --set="Self-Support"
subscription-manager usage         --set="Development/Test"
subscription-manager attach
  Aktueller Status der installierten Produkte:
  Produktname: Red Hat Enterprise Linux for x86_64
  Status:      Subskribiert

yum update
  Updating Subscription Management repositories.
  ....

Nach der erfolgreichen Registrierung zeigte dann auch der grafische Subscription Manager den korrekten Status an. Das ändert aber nichts daran, dass ich bei der Inbetriebnahme von RHEL 8 öfters an eine andere Firma gedacht habe (M…t).

Lizenzinformationen im Subscription Manager

Update 17.5.2019: Auf einem PC (also nicht in einer virtuellen Maschine) habe ich heute eine weitere RHEL-8-Installation durchgeführt. Deren Aktivierung im Rahmen eines Red Hat Developer Accounts gelang mit dem grafischen Subscription Manager auf Anhieb. Vielleicht hatte ich gestern einfach Pech?

Paketverwaltung und AppStreams

dnf/yum: Fedora ist schon vor Jahren auf dnf umgestiegen, RHEL jetzt auch (genaugenommen auf die dnf-Version 4.0). Aus Kompatibilitätsgründen kann das Kommando weiterhin mit yum aufgerufen werden. Auch in der Red-Hat-Dokumentation ist immer von yum die Rede.

Aus Sicht eines Fedora-Anwenders extrem lästig ist, dass bei yum install libre<tab> das Autocomplete funktioniert (wenn auch mit sekundenlangen Verzögerungen), mit dnf install libre<tab> hingegen nicht. Red Hat drängt seine Anwender also dazu, das Kommando als yum und nicht als dnf aufzurufen.

AppStream: Das in Fedora 28 eingeführte Modularity-Konzept wurde wie erwartet in RHEL integriert und hat bei der Gelegenheit auch gleich den neuen Namen AppStreams erhalten. Ein Blick in die [Liste des AppStream-Repositories] vermittelt den Eindruck, als würden sich ein Großteil aller Pakete nun dort befinden (und nicht mehr in der Basis-Paketquelle). Hier finden Sie ausführliche Dokumentation zum AppStream-Konzept in RHEL.

AppStreams geben viel neuer Flexibilität, machen den Umgang mit Paketen aber nicht unbedingt einfacher. Das Gnome-Programm Software kommt mit AppStreams überhaupt nicht zurecht und findet die meisten Programme ganz einfach nicht. Immer wieder frage ich mich, was dieses Programm in einer Distribution zu suchen hat, die sich an Administratoren, Entwickler etc., also in der Regel an Profis richtet.

Module sind Gruppen zusammengehöriger Pakete. yum module list liefert eine Liste aller Module. Dabei tauchen bekannte Namen wie mariadb, mysql, nginx, nodejs, php, python36 etc. auf. yum module info <name> liefert Details zu einem Modul:

yum module info mariadb

Name             : mariadb
Stream           : 10.3 [d][a]
Version          : 820190206164045
Context          : 9edba152
Profiles         : client, server [d], galera
Default profiles : server
Repo             : rhel-8-for-x86_64-appstream-rpms
Summary          : MariaDB Module
Description      : MariaDB is a community developed branch of MySQL ...
Artifacts        : Judy-0:1.0.5-18.module+el8+2765+cfa4f87b.x86_64
                 : galera-0:25.3.23-5.module+el8+2765+cfa4f87b.x86_64
                 : mariadb-3:10.3.11-1.module+el8+2765+cfa4f87b.x86_64
                 : mariadb-backup-3:10.3.11-1.module+el8+2765+cfa4f87b.x86_64
                 : mariadb-common-3:10.3.11-1.module+el8+2765+cfa4f87b.x86_64
                 : mariadb-devel-3:10.3.11-1.module+el8+2765+cfa4f87b.x86_64
                 : mariadb-embedded-3:10.3.11-1.module+el8+2765+cfa4f87b.x86_64
...

Um alle Pakete aus einem Modul zu installieren, führen Sie yum module install <modulname> aus.

Es ist nicht immer leicht zu erkennen, ob es von einem Modul mehrere Versionen gibt. (Das entscheidende Feature von AppStream ist es ja, dass ein Paket bzw. ein ganzes Modul in verschiedenen Versionen zur Verfügung gestellt werden kann. Das bedeutet aber nicht, dass alle Pakete im AppStream-Repository von dieser Funktion Gebrauch machen. Vielmehr gibt es von der Mehrheit der Pakete aktuell nur eine Versionsnummer.)

yum module info <name> zeigt immer nur die Hauptversion (Defaultversion) an. Ob es mehrere Versionen gibt, können Sie mit yum module list --all bzw. yum module list --all <name> ermitteln. Das trifft aktuell nur für die Module container-tools, perl und postgresql zu.

yum module list --all postgresql

Name          Stream      Profiles            Summary                                                              
postgresql    10 [d]      client, server [d]  PostgreSQL server and client module                                  
postgresql    9.6         client, server [d]  PostgreSQL server and client module          

Bei postgresql gilt also 10 als Default-Version. Wenn Sie davon abweichend die ältere Version 9.6 installieren möchten, führen Sie dieses Kommando aus:

yum module install postgresql:9.6
yum install @postgresql:9.6             (Kurzschreibweise)

Tipp: Wenn Sie ein Paket partout nicht finden, hilft zumeist yum search <name> weiter.

EPEL: Wie üblich beschränkt sich Red Hat bei den Paketen auf das Wesentliche. Wer nicht-offizielle Pakete sucht, wurde in der Vergangenheit in der EPEL-Paketquelle fündig. Allerdings unterstützt EPEL momentan RHEL 8 noch nicht. Es gibt Berichte, wonach die EPEL-Quellen für RHEL 7 auch für RHEL 8 funktionieren, aber eine optimale Lösung ist das natürlich nicht.

Versionsnummern

Die folgende Tabelle fasst die wichtigsten Versionsnummern in RHEL8 zusammen.

Basis             Desktop             Programmierung   Server
---------------   ------------------  --------------   --------------
Kernel     4.18   Gnome        3.28   bash       4.4   Apache     2.4
glibc      2.28   Firefox ESR    60   gcc        8.2   CUPS       2.2
X-Server   1.20   Gimp          2.8   Java      8/11   MariaDB   10.3
Wayland    1.15   LibreOffice   6.0   PHP        7.2   MySQL      8.0
Mesa       18.3   Thunderbird    60   Python 2.7/3.6   OpenSSH    7.8
systemd     239                                        qemu/KVM  2.12
NetworkMan 1.14                                        Postfix    3.3
GRUB       2.02                                        Samba      4.9

Natürlich ist RHEL nicht so aktuell wie Fedora. Aber Gimp 2.8?

Java-8-Pakete gibt es im Supplementary Repository.

LibreOffice, MariaDB, MySQL und Thunderbird sind im AppStream Repository versteckt.

Interessant ist mitunter auch, was fehlt: Nicht in den offiziellen Paketquellen enthalten sind unter anderem Docker und KDE. (Gnome ist der einzig offizielle Desktop für RHEL. Und zu Docker bietet Red Hat eigene Alternativen an.)

Zuletzt noch die Links zu den offiziellen Paketlisten: Basispakete und AppStream-Pakete

Desktop und Grafik

Für RHEL-7-Anwender macht Gnome mit Version 3.28 einen recht großen Sprung. Bemerkenswert ist auch, dass der Gnome-Classic-Modus zwar weiterhin angeboten wird; standardmäßig kommt jetzt aber das »richtige« Gnome mit der Gnome-Shell zum Einsatz. Wenn möglich, wird als Grafiksystem Wayland verwendet. Xorg steht natürlich weiter zur Verfügung.

Sonstige Neuerungen, veraltete Technologien

  • Das Dateisystem btrfs wird explizit nicht mehr unterstützt, das Kernelmodul steht nicht mehr zur Verfügung. Standardmäßig kommt xfs zum Einsatz, alternativ steht ext4 zur Wahl.
  • Firewalls basieren hinter den Kulissen auf der Nftables-Infrastruktur. Das Kommando iptables ist dazu kompatibel und funktioniert unverändert.

  • Wie bereits erwähnt, erfordert der Einsatz von RHEL (wie bisher) nicht gerade billige Lizenzen. Es gibt aber eine Ausnahme: Ein Basis-Image für den Container-Einsatz steht kostenlos zur Verfügung (siehe z.B. diesen Artikel auf zdnet.com).

  • Das Programm virt-manager zur Verwaltung von virtuellen Maschinen mit QEMU/KVM steht zwar weiter zur Verfügung, gilt aber als deprecated. Virtuelle Maschinen sollen nun in Cockpit eingerichtet werden. Das erfordert die Installation von cockpit-machines.

  • Das Paket network-scripts gilt ebenfalls als deprecated. Für die Netzwerkkonfiguration ist nun alleine der NetworkManager zuständig. (Ich muss wohl meine Empfehlung revidieren, den NetworkManager bei Server-Installationen sofort zu entfernen. Das fällt mir schwer, zu oft habe ich dieses Programm schon verflucht …) Die Kommandos ifup und ifdown stehen weiterhin zur Verfügung, rufen aber den NetworkManager (nmcli) auf.

Cockpit

Beim ersten ssh-Login schlägt RHEL vor, ich solle doch das vorinstallierte Cockpit mit systemctl enable --now cockpit.socket aktivieren. Da lasse ich mich doch nicht zweimal bitten ….

Cockpit ist eine Webkonsole, die einen Systemüberblick gibt und grundlegende administrative Funktionen erfüllt. Der Funktionsumfang wächst, wenn Zusatzpakete wie cockpit-machines, cockpit-composer etc. installiert werden. Die Bedienung erfolgt über den Webbrowser (Adresse localhost:9090). Beim Login gelten die normalen Linux-Accounts. Ein root-Login ist möglich, und auch »gewöhnlichen« Benutzer können mittels sudo bzw. mit PolicyKit (pkexec) administrative Aufgaben erledigen.

Etwas konsterniert war ich, als ich bemerkt habe, dass Port 9090 nicht durch eine Firewall blockiert wird und nach außen hin zugänglich ist. Zudem fehlt Cockpit jeder Schutz gegen automatisierte Passwort-Cracker. Auch wenn sich die Cockpit-Entwickler eine Menge Gedanken gemacht haben, wie sicher Cockpit ist, erscheint mir das Setup doch mutig. Wenn Cockpit vorinstalliert ist, hätte man eigentlich fail2ban samt Cockpit-Regeln auch vorinstallieren können. (Hätte man nicht, weil fail2ban in den Paketquellen fehlt. Voraussichtlich wird das Paket in der EPEL-Paketquelle zu finden sein. Außerdem scheint es in fail2ban aktuell keine fertigen Regeln für Cockpit zu geben. Immerhin protokolliert Cockpit gescheiterte Login-Versuche, siehe journalctl -u cockpit.)

Ich will den Teufel jetzt nicht an die Wand malen, aber ich kann mir wirklich nicht vorstellen, dass ein gedankenloses Aktivieren von Cockpit sicherheitstechnisch empfehlenswert ist. Ob es eine gute Idee ist, dass Red Hat quasi bei erster Gelegenheit eine Anleitung zur Inbetriebnahme von Cockpit präsentiert, muss sich erst weisen.

Benutzerverwaltung in Cockpit in einem anderen Webbrowser im lokalen Netzwerk

CentOS 8

CentOS 8 ist in Arbeit, aber es ist nicht abzusehen, wie lange es dauern wird, bis die neue Version fertiggestellt wird. Einen groben Überblick über den Status der Arbeiten finden Sie auf der CentOS-Projektseite.

Quellen/Links

Red Hat Developer

Im Rahmen des Developer Programs stellt Red Hat eine kostenlose Lizenz für Entwicklungsarbeiten (nicht für den produktiven Einsatz) zur Verfügung:

Cockpit

Tests / Berichte

openSUSE 15.1

$
0
0

openSUSE Leap 15.1 ist ein reines Versions-Update ohne wesentlichen Neuerungen im Vergleich zu openSUSE 15.0. Und selbst bei den Versionsnummern hat sich wenig getan …

openSUSE 15.1 mit KDE-Desktop

Installation

Das Installationsprogramm kann nur dann eine automatische Partitionierung der Festplatte/SSD vornehmen, wenn diese zumindest 12 GiB groß ist. In kleinen virtuellen Maschinen müssen Sie die Partitionen daher selbst einrichten.

Originell ist eine neue Sicherheits-Option CPU-Herabsetzung (eine abenteuerliche Übersetzung des englischen Begriffs CPU Mitigation): Damit können Sie steuern, ob die vielen Kernel-Bugfixes für Intel-CPU-Fehler aktiviert werden sollen (Standardeinstellung Auto) und ob darüberhinaus auch noch das Hyperthreading deaktiviert werden soll (Auto + SMT). Wenn Ihnen allfällige Sicherheitsprobleme gleichgültig sind und Sie mehr Wert auf eine hohe Geschwindigkeit legen, können Sie die Kernel-Bugfixes auch deaktivieren. Das Installationsprogramm baut dann den Kernel-Parameter mitigations=off in die GRUB-Konfiguration ein.

Das Installationsprogramm bietet eine neue Steuerungsmöglichkeit, ob die Kernel-Bugfixes für die Intel-Sicherheitspannen aktiviert werden sollen oder nicht.

Versionsnummern

Wer gern mit aktuellen Software-Versionen arbeitet, ist bei openSUSE Leap fehl am Platz. (Tumbleweed ist diesbezüglich eine spannendere Alternative.)

Basis             Desktop             Programmierung   Server
---------------   ------------------  --------------   --------------
Kernel     4.12   KDE          5.12   bash       4.4   Apache     2.4
glibc      2.26   Firefox        60   gcc        7.4   CUPS       2.2
X-Server   1.20   Gimp          2.8   Java        11   MariaDB   10.2
Wayland    1.16   LibreOffice   6.1   PHP        7.2   OpenSSH    7.9
Mesa       18.3   Thunderbird    60   Python     3.6   qemu/KVM   3.1
Systemd     234                                        Postfix    3.3
NetworkMan 1.10                                        Samba      4.9
GRUB       2.02 

Bemerkenswert ist, dass beim Login eine Plasma-Session mit Wayland zur Auswahl steht. Standardmäßig kommt aber weiterhin Xorg zum Einsatz. Ich habe Wayland+KDE nur in einer virtuellen Maschine getestet. Dabei sind fallweise Darstellungsfehler aufgetreten. Ganz rund läuft es also noch nicht.

Links

»Java-Grundkurs« in der 3. Aufl. erschienen

$
0
0

Der Java-Grundkurs ist soeben in der dritten Auflage erschienen. Das Buch ist aktuell zu Java 11 LTS sowie zu Java 12 (neue switch/case-Syntax).

Raspberry Pi 4 mit Raspbian Buster

$
0
0

Diese Woche wurde vollkommen überraschend der Raspberry Pi 4 vorgestellt. Mittlerweile hatte ich Gelegenheit, erste Tests durchzuführen (1-GByte-Modell).

Raspberry Pi 4

Eckdaten

Kurz zusammengefasst die Eckdaten:

  • Neues System-on-a-Chip (SOC) BCM2711 auf Cortex-A72-Basis (4 Cores, 1,5 GHz)
  • RAM: DDR4, Auswahl zwischen drei Modellen mit 1 GByte / 2 GByte / 4 GByte
  • Grafik: zwei 4k-HDMI-Ausgänge (allerdings mit Micro-HDMI-Buchsen, entweder 1x4k@60Hz oder 2x4k@30Hz)
  • USB: 2 x USB 3.0 plus 2 x USB 2.0
  • Ethernet: direkter Controller, echtes GBit-Ethernet
  • WLAN: 2.4 GHz and 5.0 GHz IEEE 802.11ac
  • Bluetooth: Version 5, BLE
  • GPIOs, Kamera- und Display-Anschluss: weitgehend unverändert und angeblich kompatibel
  • Datenträger: weiterhin nur SD-Karte (eine externe Festplatte/SSD kann über USB 3 angeschlossen werden)
  • Stromversorgung: jetzt über USB-C-Buchse, Leistungsaufnahme im Wesentlichen wie bisher, empfohlen wird ein 15-Watt-Netzteil
  • Raspbian: aktualisiert, basiert nun auf Debian 10 (Buster)

Der Preis für das 1-GByte-Modell ist unverändert im Vergleich zum 3B+, die Modelle mit 2 und 4 GByte sind um ca. 10 bzw. 20 EUR teurer. Aktuell gibt es allerdings je nach Modell Lieferschwierigkeiten.

Die Raspberry Pi Foundation empfiehlt, ein Netzteil mit 15 W zu verwenden. Netzteile bis 12,5 sind auch OK, sofern der Strombedarf der angeschlossenen USB-Geräte in Summe weniger als 500mA (2,5 W) beträgt.

Inbetriebnahme

Erste Tests erfordern in der Regel neue Kabel oder Adapter. Statt den Minicomputer wie bisher mit einem normalen HDMI-Anschluss auszustatten, sind es nun zwei Micro-HDMI-Buchsen. Die Chance, dass Sie ein geeignetes Kabel oder einem Adapter im Keller finden, ist verschwindend … Ganz klar ist mir ehrlich gesagt auch nicht, wozu der Raspberry Pi zwei HDMI-Ausgänge braucht. Zum Basteln auf jeden Fall nicht. Eine normale HDMI-Buchse wäre sinnvoller.

Übrigens ist es nicht egal, an welcher Buchse Sie Ihren Monitor anschließen! Sie müssen die erste Buchse verwenden (die direkt neben dem USB-C-Stromanschluss), sonst bleibt Ihr Monitor schwarz.

Schon eher verständlich ist der Umstieg auf USB-C für die Stromversorgung. Erste Tests mit einem 15-W-Netzteil plus einem USB-C/USB-B-Adapter führten allerdings zu Undervolting-Fehlermeldungen und dem gelben Blitz auf dem Bildschirm. Da wird der nächste Kabelkauf fällig … Glücklicherweise hatte ich noch ein USB-C-Notebook-Netzteil zuhause: Mit seinen 65 W sollte es nicht nur für das aktuelle Modell, sondern auch für die nächsten Raspberry-Pi-Generationen ausreichen ;-) Auf jeden Fall läuft der Raspberry Pi damit stabil.

Geschwindigkeit

Der Raspberry Pi ist in jeder Hinsicht flotter geworden: Er bootet schneller als mein Notebook, fühlt sich beim Arbeiten geschmeidig an und überzeugt durch spürbar größere Übertragungsraten (SD-Karte, USB-C-Datenträger, Ethernet).

Die folgenden Kommandos ermitteln die Taktfrequenzen einiger Komponenten und führen einen simplen Benchmarktest durch. (Alle Vergleichsangaben beziehen sich auf den Raspberry Pi 3B+.)

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
  600000
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
  1500000 (bisher 1400000)
vcgencmd get_config sdram_freq # RAM
  sdram_freq=0 (bisher 500)
vcgencmd get_config core_freq # Video Core
  core_freq=500 (bisher 400)
vcgencmd get_config gpu_freq # 3D-Core
  gpu_freq=500 (bisher 300)

sudo apt install sysbench

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run
  ...
  Test execution summary:
  total time: 63.1 s (bisher 79,7 s)

Auf weitere Benchmark-Tests habe ich verzichtet. Da haben sich andere Leute schon viel Mühe gegeben — siehe Tom’s Hardware oder medium.com.

Bei aller Begeisterung über die gesteigerte Geschwindigkeit kann freilich auch der Raspberry Pi 4 nicht mit modernen Notebooks oder PCs mithalten. Wenn keine hohen Ansprüche gestellt werden, kann der Pi 4 mit 4 GB RAM (4×4 würde sich als Bezeichnung anbieten) aber durchaus als Desktop-Ersatz durchgehen.

Hitzig

Laut diverser Tests ist die Leistungsaufnahme des Pi 4 nicht wesentlich höher als beim Vorgängermodell (ca. 3,5 W im Leerlauf, fast 8 W unter Last). Fakt ist aber, dass die CPU (genaugenommen ist es ein SOC, ein System-on-a-Chip) schon nach wenigen Minuten so heiß wird, dass man beim Angreifen des Geräts aufpassen muss, sich nicht die Finger zu verbrennen. Ein Kühlkörper ist definitiv kein Luxus mehr. Ein kompaktes Gehäuse ohne Luftzufuhr ist sicherlich keine gute Idee.

Dass die neue CPU wieder Overclocking erlaubt (siehe nochmals Tom’s Hardware), wird alle Benchmark-Fanatiker natürlich erfreuen. Ob das angesichts der schon im Normalzustand hohen Wärmeentwicklung der Lebensdauer förderlich ist, sei aber dahingestellt.

Raspbian Buster

Debian 10 alias Buster ist zwar noch nicht fertig, aber das hindert die Raspberry Pi Foundation nicht daran, eine auf Buster aktualisierte Raspbian-Version auszuliefern. Von der in der Ankündigung versprochenen Layout-Modernisierungen am Desktop ist nicht viel zu spüren — rein optisch sieht Raspbian im Prinzip unverändert aus.

Pixel-Desktop von Raspbian Buster

Die folgende Tabelle fasst einige Versionsnummern zusammen:

Basis             Desktop              Programmierung   Server
---------------   ------------------   --------------   --------------
Kernel     4.19   Chromium        74   bash       5.0   Apache     2.4
glibc      2.28   Gimp          2.10   gcc        8.3   CUPS       2.2
X-Server   1.20   LibreOffice    6.1   Java        11   MariaDB   10.3
Mesa       19.1   LXDE            10   PHP        7.3   OpenSSH    7.9
Systemd     241   VLC             10   Python 2.7/3.7   Samba      4.9

Anmerkungen:

  • Java 11 funktioniert offenbar auf den Zero-Modellen nicht mehr (Quelle).
  • Mathematica steht aktuell noch nicht zur Verfügung.
  • Raspbian läuft aus Kompatibilitätsgründen weiterhin im 32-Bit-Modus. Eine Umstellung auf 64-Bit-Code würde vermutlich noch ein wenig mehr Performance bringen.

Wie andere Tester bereits festgestellt haben (z.B. heise.de), gibt es bei der Wiedergabe von Videos noch arge Probleme. Der SoC einhält Hardware-Funktionen zur Decodierung von H264- und HEVC/H265-Videos. Für andere Formate ist aber die CPU zuständig, und die wirkt mit den aktuellen Treibern überfordert. Anders als für ältere Pi-Modelle gibt es keine Hardware-Decodierung für VC1 und MPEG2. Daher ist auch der zusätzliche Kauf der entsprechenden Schlüssel hinfällig (Quelle).

Auch die LibreELEC-Entwickler weisen darauf hin, dass die erste LibreELEC-Alphaversion für den Raspberry Pi 4 wirklich noch experimentellen Charakter hat. (Eigene Tests habe ich noch keine durchgeführt.)

Andere Raspberry-Pi-Distributionen sind aktuell noch gar nicht Pi-4-kompatibel. Das gilt unter anderem für Win 10 IoT, Rasplex, Ubuntu Mate, Volumio etc. Da sich die Hardware des Pi 4 radikal verändert hat, wird es wohl noch einige Zeit dauern, bis es entsprechende Aktualisierungen gibt.

Kurz zusammengefasst: So cool die neue Hardware ist — bei der Software gibt es noch starken Nachholbedarf.

GPIOs

Die 40-polige GPIO-Leiste ist grundsätzlich kompatibel zu den älteren Raspberry-Pi-Modellen. Allerdings haben einige Pins jetzt alternative Funktionen, können also je nach Programmierung bzw. Treiberkonfiguration für unterschiedliche Aufgaben verwendet werden. Ein gutes Diagramm über die vielen Doppelbelegungen der Pins hat Tom’s Hardware zusammengestellt.

Laut raspberrypi.org unterstützt der BCM2711 die folgenden Funktionen/Bus-Systeme:

        BCM2711     am Pi4B verfügbar
-----   ---------   -----------------
CSI     2x          1x
DSI     2x          1x
I2C     6x          6x
SPI     6x          5x (4x in der GPIO-Leiste)
UART    6x          6x

USB- und Network-Booting

Ältere Raspberry-Pi-Modelle konnten von USB-Datenträgern bzw. von über das Netzwerk zur Verfügung gestellten Images booten (PXE). Für den Pi 4 sind diese Funktionen ebenfalls geplant, aber noch nicht realisiert. Angesichts der USB-3-Schnittstelle erscheint die Verbindung des Raspberry Pi mit einer SSD als Datenträger und Boot-Device natürlich extrem spannend.

WLAN-Probleme

In meinem Büro sind zwei WLANs in Reichweite. Alle bisherigen Pi-Modelle konnten eine Verbindung zu beiden WLANs herstellen. Dem Raspberry Pi 4 gelingt dies hingegen nur zu einem der beiden WLANs. Es gibt keine Fehlermeldungen. Die WLAN-GUI sagt, das WLAN sei disassociated. Bisher habe ich auch keine Logging-Dateien gefunden, die Aufschluss über das Problem geben. Merkwürdig.

Quellen

Benchmarks, Overclocking, Leistungsaufnahme

Hardware / BCM2711 / GPIOs

certbot in RHEL 8 installieren

$
0
0

Man möchte meinen, es sei eine triviale Aufgabe — aber ich habe gerade zwei Stunden damit vergeudet, den Let’s-Encrypt-Client certbot unter Red Hat Enterprise Linux 8 (RHEL8) zu installieren. Damit dieser kurze Blog-Beitrag einen Spannungsbogen hat, beginne ich damit, was nicht funktioniert:

EPEL: certbot befindet sich in der EPEL-Paketquelle. Allerdings gibt es aktuell noch keine EPEL-Paketquelle für RHEL 8. Ich habe stattdessen die EPEL-7-Quelle aktiviert, was grundsätzlich oft funktioniert. yum install python2-certbot-apache scheitert aber an nicht erfüllbaren Paketabhängigkeiten.

certbot-auto: https://certbot.eff.org/ listet RHEL 8 nicht unter den unterstützten Distributionen auf. Aber unter dem Punkt other Unix empfiehlt die Website, mit wget das Installations-Script certbot-auto herunterzuladen und auszuführen. Das funktioniert beinahe, endet aber beim Versuch, certbot in einem Python-Environment einzurichten, mit einer wenig hilfreichen Fehlermeldung:

certbot-auto --install-only

...
Creating virtual environment...
Traceback (most recent call last):
  File "<stdin>", line 27, in <module>
  File "<stdin>", line 19, in create_venv
  File "/usr/lib64/python2.7/subprocess.py", line 185, in check_call
    retcode = call(*popenargs, **kwargs)
  File "/usr/lib64/python2.7/subprocess.py", line 172, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib64/python2.7/subprocess.py", line 394, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1047, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

Lösung

pip3: Erfolg hatte ich letztlich mit dem Kommando pip3. Ich sage gleich dazu, dass das nicht die von Red Hat empfohlene Vorgehensweise ist (Quelle). Aber ich habe keinen besseren Weg gefunden, und im Gegensatz zu den bisher empfohlenen Lösungswege klappt es so wenigstens:

yum install python3-pip
pip3 install certbot
pip3 install certbot-apache
/usr/local/bin/certbot --version

  certbot 0.35.1

Beachten Sie, dass Sie beim Ausführen von certbot nun immer den kompletten Pfad angeben müssen, weil das von pip3 genutzte Verzeichnis /usr/local/bin standardmäßig nicht in der Variablen PATH enthalten ist.

USB-C-Ärger mit dem Raspberry Pi 4

$
0
0

Zur Stromversorgung des Raspberry Pi 4 brauchen Sie ein USB-C-Kabel. Am anderen Ende muss sich (laut Raspberry-Pi-Foundation) ein Netzteil mit mind. 12,5 Watt befinden; empfohlen werden 15 W.

So weit, so gut. Nur: Nicht jede Kombination aus Netzteil und Kabel funktioniert, auch wenn am Anfang genug Leistung und am Ende USB-C ist …

Funktioniert gut: Notebook-Netzteil

Notebook-Netzteil 65 W, bei dem das USB-C-Kabel direkt mit dem Netzteil verbunden ist (d.h., beim Netzteil gibt es keine Buchsen).

Notebook-Netzteil ohne Buchse direkt USB-C

(65 W sind überdimensioniert, ich weiß. Bei mir liegen aber gerade keine anderen USB-C-Netzteile herum, und die vielen Watt stören ja nicht. Der Raspberry Pi nimmt nur, was er braucht, typischerweise 4 bis 8 W. Dementsprechend wird das Netzteil nicht einmal warm.)

Funktioniert gut: Netzteil mit USB-A-Buchse, Kabel USB-A zu USB-C

  • Smartphone-Netzteil 10 W mit USB-A-Buchse
  • Kabel USB-A (Netzteil) zu USB-C (Raspberry Pi 4)
Netzteil USB-A, Kabel USB-A -> USB-C

Funktioniert halbwegs: Netzteil mit USB-C-Buchse, Adapter zu USB-A, Kabel USB-A zu USB-C

  • Netzteil 15 W mit USB-C-Buchse
  • Adapter USB-C zu USB-A
  • Kabel USB-A zu USB-C
Netzteil mit USB-C-Buchse, Adapter USB-C -> USB-A, Kabel USB-A -> USB-C

Diese Kombination ist aus einer Notlösung heraus entstanden. Beim Ausprobieren habe ich kein USB-C-zu-USB-C-Kabel gefunden, also habe ich mich mit dem Adapter beholfen. Allerdings kommt beim Raspberry Pi zu wenig Leistung an (oder eine zu niedrige Spannung). Der Raspberry Pi bootet, zeigt aber undervolted-Nachrichten (dmesg) und am Bildschirm den gelben Blitz als Indikator für Probleme mit der Stromversorgung an.

Funktioniert gar nicht: Netzteil mit USB-C-Buchse, Kabel USB-C zu USB-C

  • Netzteil 15 W mit USB-C-Buchse
  • Kabel USB-C zu USB-C

Eigentlich hatte ich geplant, meinen Raspberry Pi so zu betreiben. Aber leider funktioniert das überhaupt nicht, beim Raspberry Pi leuchtet nicht einmal eine LED.

Netzteil mit USB-C-Buchse, Kabel USB-C/USB-C

Die Ursache des Problems ist laut Tyler Ward, dass der USB-C-Anschluss des Raspberry Pi 4 nicht korrekt ausgeführt ist: Mit ‚dummen‘ (passiven) USB-C-Kabeln funktioniert das Laden. Mit ‚intelligenten‘ (aktiven) Kabeln glaubt das Netzteil hingegen, es wäre ein Audio-Device angeschlossen, und das Laden funktioniert nicht.

Quellen


Debian 10 »Buster«

$
0
0

Debian 10 ist fertig! Neben den üblichen Software-Aktualisierungen zeichnet sich Debian 10 durch viele Neuerungen aus und ist deutlich moderner geworden. Für Einsteiger bietet Debian erstmals auf den Live-Images eine extrem einfache Installationsvariante an (den »Calamares Installer«). Für Profis funktioniert die traditionelle Installation wie eh und je: einerseits funktionell und variantenreich, andererseits aber umständlich und altmodisch.

Debian 10 mit Gnome Desktop

Neuerungen

  • Debian 10 unterstützt erstmals UEFI Secure Boot.
  • Das Grafiksystem verwendet nun wie Fedora standardmäßig Wayland. Bei Bedarf kann im Login auch X.org ausgewählt werden.
  • CUPS ermöglicht jetzt die Verwendung von AirPrint-Druckern ohne explizite Treiberinstallation.
  • Das Firewall-Backend wurde auf nftables umgestellt. (Das traditionelle iptables-Kommando funktioniert weiterhin.)
  • Die Verzeichnisstruktur wurde vereinfacht. Insbesondere sind /bin, /lib /sbin nun Unterverzeichnisse von /usr (also /usr/bin, /usr/lib und /usr/sbin).
  • Die Live-Images enthalten einen neuen Installer Calamares (siehe unten).

In einem Punkt hat sich Debian an Ubuntu und (open)SUSE angeglichen: Das Sicherheitssystem AppArmor läuft jetzt standardmäßig. Im Vergleich zu Ubuntu gibt es aber deutlich weniger aktive Profile zur Überwachung von Software. (Weitere optionale Profile enthält das Paket apparmor-profiles-extra.)

aa-status

apparmor module is loaded.
15 profiles are loaded.
13 profiles are in enforce mode.
   /usr/bin/evince
   /usr/bin/evince-previewer
   /usr/bin/evince-previewer//sanitized_helper
   /usr/bin/evince-thumbnailer
   /usr/bin/evince//sanitized_helper
   /usr/bin/man
   libreoffice-senddoc
   libreoffice-soffice//gpg
   libreoffice-xpdfimport
   man_filter
   man_groff
   nvidia_modprobe
   nvidia_modprobe//kmod
2 profiles are in complain mode.
   libreoffice-oopslash
   libreoffice-soffice
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Weitere Details über die Neuerungen in Debian 10 können Sie in den Release Notes nachlesen.

Versionsnummern

Basis             Desktop             Programmierung   Server
---------------   ------------------  --------------   --------------
Kernel     4.19   Gnome        3.30   bash       5.0   Apache     2.4
glibc      2.28   Firefox ESR    67   gcc        8.3   CUPS       2.2
X-Server   1.20   Gimp         2.10   Java        11   MariaDB   10.3
Wayland    1.16   LibreOffice   6.1   PHP        7.3   OpenSSH    7.9
Mesa       18.3   Thunderbird    60   Python     3.7   qemu/KVM   3.1
Systemd     241                                        Postfix    3.4
NetworkMan 1.14                                        Samba      4.9
GRUB       2.02 

Plattformen (Architekturen)

Debian 10 steht für die folgenden Plattformen zur Verfügung:

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

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

Herkömmliche Installation

Der übliche Installationsweg besteht darin, dass Sie Ihren Rechner von einem Installations-Image booten und das dort enthaltene Installationsprogramm ausführen. Die Bedienung hat sich im Vergleich zu früheren Debian-Versionen unverändert und wirkt zunehmend alt. Oft fragt man sich, warum mehrere zusammengehörende Einstellungen (z.B. Benutzername, Account-Name und Passwort) nicht in einem Dialog zusammengefasst werden. Positiv ist anzumerken, dass sich Debian auch bei komplizierten Setups (RAID, LVM, Verschlüsselung) nicht verschluckt. Was nützt das eleganteste Setup-Programm, das beim ersten Sonderwunsch überfordert ist (siehe Ubuntu …)?

Das traditionelle Installationsprogramm sieht aus und fühlt sich an wie vor 10 Jahren.
Im traditionellen Installer haben Sie die Wahl zwischen mehreren Desktop-Systemen, wobei sogar mehrere zugleich ausgewählt werden dürfen.

Unbegreiflich ist auch, warum es immer noch notwendig ist, die DVD bzw. den USB-Stick nach der Installation explizit aus /etc/apt/sources.list zu entfernen. Ist doch eigentlich klar, dass nach der Installation die Paketquellen aus dem Internet für Updates usw. verwendet werden sollen.

Calamares Installer (Live Image)

Weil die Standard-Installation für Einsteiger zu abschreckend ist, bietet Debian 10 auf den Live-Images eine attraktive Alternative: Der auch von anderen Distributionen eingesetzte Calamares Installer erlaubt eine unkomplizierte Installation eines Debian-Grundsystems.

Calamares Installer
Calamares Installer
Calamares Installer
Calamares Installer

Der Live-Installer steht in diversen Varianten für alle erdenklichen Desktop-Systeme zur Auswahl. Der Platzbedarf des Basissystem mit Gnome beträgt ca. 7,2 GByte. Es gibt keine Auswahlmöglichkeiten, welche Pakete gegebenenfalls extra installiert werden sollen.

Standardmäßig wird kein SSH-Server installiert. Abhilfe nach der Installation:

apt update
apt install openssh-server
systemctl start sshd

Sicherheitsproblem bei der Verschlüsselung: Der Calamares Installer weist aktuell eine Sicherheitslücke auf: Wenn Sie bei der Installation angeben, dass das Dateisystem verschlüsselt werden soll, wird Ihr eigentlich geheimes Passwort in der Initrd-Datei im Klartext gespeichert. Abhilfe: Fügen Sie in die Datei /etc/initramfs-tools/conf.d/initramfs-permissions die Anweisung UMASK=0077 ein und erzeugen Sie die Initrd-Datei dann neu: update-initramfs -u Die Release Notes versprechen, dass es demnächst aktualisierte Installer-Images geben wird, in denen dieses Problem behoben ist.

sudo versus su

Ziemlich inkonsequent ist die Art und Weise, wie die beiden Installationsvarianten mit sudo und su umgehen:

  • Herkömmliche Installation: Hier müssen Sie für root ein Passwort eingeben. Ein Wechsel in den Administratormodus gelingt nur mit su -l, wobei Sie das root-Passwort angeben müssen. sudo ist installiert, aber der vom Installationsprogramm eingerichtete Benutzer hat keine sudo-Rechte.
  • Calamares-Installation: Hier gibt es keine Möglichkeit, ein root-Passwort festzulegen. (Das Passwort ist auf ungültig gestellt, ein root-Login daher unmöglich.) Dafür hat der Standardbenutzer sudo-Rechte und kann mit sudo -s und der Angabe seines Passworts in den root-Modus wechseln.

Wenn Sie den Calamares-Installer verwenden, verhält sich Debian also wie Ubuntu.

Update von Debian 9

Ich habe Debian Buster nur im Rahmen einer Neuinstallation getestet. Anweisungen zur Durchführung eines Updates von Debian 9 auf Debian 10 finden Sie hier in den Release Notes.

Quellen und Testberichte

Download-Links (jeweils für AMD/Intel 64 Bit)

CIRCLean USB-Stick-Checker

$
0
0

Was machen Sie mit einem USB-Stick, den Sie auf der Straße finden? Wenn Ihnen die Grundregeln der IT-Sicherheit bekannt sind, dann stecken Sie den USB-Stick natürlich nicht in die Buchse Ihres Notebooks. Da könnte nämlich einiges schief gehen:

  • Vielleicht handelt es sich nicht um einen USB-Stick sondern um ein Gerät, das sich zuerst auflädt und dann über einen Stromstoß Ihren Computer zerstört (siehe https://usbkill.com).
  • Oder, nicht ganz so schlimm, das Gerät ist ein Hacking-Device, das zwar wie ein USB-Stick aussieht, sich in Wirklichkeit aber als Tastatur ausgibt und sofort beim Anstecken Schad- oder Überwachungs-Software installiert. Es gibt ine ganze Palette derartiger Geräte, z.B. Rubber Ducky oder Digispark.
  • Wenn Sie richtiggehend Glück haben, ist Ihr Fund wirklich ein gewöhnlicher USB-Stick. Es könnte aber sein, dass die darauf enthaltenen Dateien Viren oder andere Schad-Software enthalten …

Am sichersten ist es also, das Fundstück — so es keinem Besitzer zuzuordnen ist — zum Elektroschrott zu bringen.

CIRCLean

Wenn die Neugier doch siegt, kommt das Projekt CIRCLean des Computer Incident Response Center Luxembourg ins Spiel. Das ist eine winzige Raspberry-Pi-Distribution, die eine simple Aufgabe erfüllt: Nach dem Start des Raspberry Pi werden die Dateien des ersten USB-Sticks (obere Buchse) auf die eines zweiten USB-Sticks (untere Buchse) kopiert. Bei verdächtigen Dateien (Office-Dateien mit Makros, EXE- und BAT-Dateien) wird dabei der Dateiname in DANGEROUS_<ursprünglicher-name>_DANGEROUS geändert. ZIP-Dateien werden ausgepackt, ihr Inhalt wird natürlich ebenfalls überprüft.

Zur Inbetriebnahme laden Sie das CIRCLean-Image von der folgenden Webseite herunter und übertragen es auf eine SD-Karte:

https://www.circl.lu/projects/CIRCLean

Jetzt brauchen Sie nur noch einen alten Raspberry Pi. (Die Modelle 3B+ und 4B werden leider noch nicht unterstützt.) Die Anwendung von CIRCLean sieht so aus:

  • Sie stecken die SD-Karte in den Raspberry Pi, schalten den Rechner aber vorerst noch nicht ein.
  • Sie stecken den Quell-USB-Stick in eine der oberen USB-Buchsen.
  • Sie stecken den Ziel-USB-Stick in eine der unteren USB-Buchsen. Dieser USB-Stick sollte ein leeres VFAT-Dateisystem enthalten. Das Dateisystem muss genug Platz für alle Dateien der Quelle bieten, wobei Sie berücksichtigen müssen, dass ZIP-Dateien ausgepackt werden.
  • Der Raspberry Pi muss weder mit einem Netzwerk noch mit einem Monitor verbunden werden.
  • Nun verbinden Sie den Raspberry Pi mit der Stromversorgung.
  • CIRCLean bootet, kopiert die Dateien vom Quell- zum Ziel-USB-Stick und fährt den Mini-Computer danach automatisch wieder herunter.
Links das Inhaltsverzeichnis eines USB-Sticks vor der Behandlung durch CIRCLean,
rechts das Inhaltsverzeichnis eines zweiten USB-Sticks mit den von CIRCLean überprüften Dateien

Ohne Monitor ist das Ende des Kopierprozesses schwer zu erkennen. Deswegen werden während des Kopiervorgangs diverse Musikstücke abgespielt. Über einen Lautsprecher oder Kopfhörer mit 3,5mm-Klinkenbuchse können Sie eindeutig feststellen, ob CIRCLean noch arbeitet.

Einschränkungen

Die Grundidee von CIRCLean ist gut, die Implementierung wirkt aber etwas halbherzig.

  • Es gibt keine Benutzeroberfläche. Natürlich ist es toll, dass CIRCLean geringe Hardware-Anforderungen stellt. Ordentliche Status-Ausgaben auf einem angeschlossenen Monitor würden aber wesentlich mehr Sicherheit vermitteln.
  • CIRCLean läuft aktuell nur mit alten Raspberry-Pi-Modellen.
  • Die Überprüfung, ob die Dateien frei von Schad-Software sind, ist rudimentär. Es wird dabei kein Viren-Scanner verwendet. Eine absolute Sicherheit, dass die kopierten Dateien auf dem Ziel-USB-Stick frei von Sicherheitsrisken sind, kann CIRCLean daher nicht geben.
  • Bei USB-Sticks mit vielen Dateien ist CIRCLean langsam.

Quellen

Der Status von EPEL 8

$
0
0

EPEL steht für Extra Packages for Enterprise Linux und ist die wichtigste externe Paketquelle für RHEL- und CentOS-Anwender. EPEL hat deswegen eine so große Bedeutung, weil Red Hat traditionell viel weniger Pakete ausliefert/pflegt als beispielsweise Debian oder Ubuntu. RHEL/CentOS-Anwender, die darüberhinaus weitere Software-Pakete benötigen, richten deswegen zumeist die EPEL-Paketquelle ein.

Wer nach der Freigabe von Red Hat Enterprise Linux 8 (RHEL 8) sofort den Umstieg wagte, musste allerdings ohne EPEL auskommen. Weil Red Hat die Organisation seiner eigenen Pakete grundlegend verändert hat (Modularisierung durch das AppStream-Verfahren), muss auch das EPEL-Repository vollkommen neu organisiert werden — und das kostet Zeit.

Für early adopters bestand zwar grundsätzlich die Möglichkeit, einfach das alte EPEL-7-Repository einzurichten; wirklich praktikabel war das aber nicht, weil sich viele Pakete aufgrund unerfüllbarer Paketabhängigkeiten nicht installieren ließen. (Besonders betroffen waren Python-Pakete.)

EPEL-8-Rollout in mehreren Phasen

Mitte August wurde nun EPEL 8 offiziell freigegeben. Übertriebene Freude ist aber noch nicht angebracht. Wegen der bereits skizzierten Umstrukturierung ist das Paketangebot in EPEL 8 noch viel kleiner als in EPEL 7. Warum das so ist, hat der EPEL-Entwickler Stephen Smoogen bereits im Juli 2019 in seinem Blog skizziert. Demnach wird das EPEL-8-Rollout in mehreren Schritten erfolgen:

  • EPEL 8.0: Das aktuelle Release ist nur der erste Schritt, den Stephen Smoogen »EPEL 8.0« nennt. Es nutzt die Modularisierungsfunktionen von RHEL 8 noch nicht.
  • EPEL 8.1 wird ca. im November 2019 erwartet und wird möglicherweise parallel zu RHEL 8.1 freigegeben. Es soll RHEL-Module teilweise unterstützen.
  • Erst EPEL 8.2 (Zeitraum der Fertigstellung noch unklar) soll vollständig mit dem neuen Modulkonzept von RHEL 8 kompatibel sein.

EPEL 8.0 in der Praxis

Das Einrichten der EPEL-Paketquelle ist unverändert einfach:

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Hinter den Kulissen werden damit die Repository-Dateien /etc/yum.repos.d/epel*.repo eingerichtet. Anschließend können Sie sich mit yum einen Überblick über die aktuell verfügbaren Pakete verschaffen:

yum repository-packages epel list

Verfügbare Pakete
BackupPC.x86_64             4.3.1-2.el8     epel
BackupPC-XS.x86_64          0.59-3.el8      epel
CGSI-gSOAP.x86_64           1.3.11-7.el8    epel
CGSI-gSOAP-devel.x86_64     1.3.11-7.el8    epel
Field3D.x86_64              1.7.2-16.el8    epel
Field3D-devel.x86_64        1.7.2-16.el8    epel
Lmod.x86_64                 8.1.10-2.el8    epel
...

yum repository-packages epel list | wc -l

971

(Nur zum Vergleich: Unter CentOS 7 mit der EPEL-7-Paketquelle kommt yum repository-packages epel list | wc -l auf über 13.000 Pakete!)

Ob Sie mit EPEL 8 im aktuellen Zustand glücklich werden, hängt naturgemäß stark davon ab, welche Pakete Sie brauchen. Ich installiere üblicherweise als Erstes das Paket joe. Es enthält neben anderen Editoren den winzigen Emacs-Klon jmacs, mit dem ich bevorzugt Konfigurationsdateien verändere. (jmacs ist in seinen Grundkommandos zum Emacs kompatibel. Seine größten Vorteile sind ein blitzartiger Start und ein sparsamer Umgang mit Ressourcen.) Um es kurz zu machen: joe steht aktuell nicht zur Verfügung, eben sowenig wie jove (noch ein Emacs-Klon).

Auf meiner EPEL-Hitliste ganz oben steht des Weiteren fail2ban. Dieses Programm blockiert IP-Adressen, wenn von dort wiederholt fehlerhafte Login-Versuche erfolgen. fail2ban ist damit ein wichtiger Schutz vor Angreifern, die (SSH-)Passwörter durch systematisches Probieren erraten möchten. fail2ban ist erfreulicherweise bereits in EPEL 8.0 enthalten.

Dritter Testkandidat war certbot, um Let’s-Encrypt-Zertifikate einzurichten. Leider Fehlanzeige in EPEL 8.0 :-(

Quellen

CentOS 8

$
0
0

Mehr als vier Monate nach der Vorstellung von Red Hat Enterprise Linux 8 ist endlich auch CentOS 8 verfügbar. Genaugenommen lautet die Versionsnummer nicht 8, sondern 8.0.1905. CentOS wurde also von RHEL 8.0 geklont, das im Mai 2019 veröffentlicht wurde. (Dass CentOS erst im September 2019 veröffentlicht wurde, spielt in der Versionsnomenklatur keine Rolle.)

CentOS ist der populärste RHEL-Klon und wird vor allem im Server-Bereich oft als Geld sparende Alternative zu RHEL eingesetzt. Dieser Artikel fasst kurz zusammen, wodurch sich CentOS 8 von RHEL 8 unterscheidet, und erläutert das neue Angebot CentOS Stream.

Aus technischer Perspektive lässt sich zu CentOS 8 nicht allzu viel schreiben, was nicht 1:1 für RHEL 8 gilt. Tatsächlich verweisen die Release Notes von CentOS 8 in erster Linie auf jene von RHEL 8 und zählen nur kurz die wenigen Red-Hat-spezifischen Pakete auf, die in CentOS fehlen.

Dementsprechend kann auch ich nur auf meinen entsprechenden Blogbeitrag vom Mai 2019 hinweisen, in dem ich die wichtigsten Neuerungen und Versionsnummern von RHEL 8 zusammengefasst habe. CentOS verhält sich wie RHEL und ist zu RHEL binärkompatibel. Die Unterschiede betreffen das Copyright, den Support, die Hardware-Unterstützung und die Kosten:

  • CentOS ist samt Updates kostenlos verfügbar, auch für den kommerziellen Einsatz.
  • Bei der Installation bzw. Inbetriebnahme entfällt daher die Registrierung mit dem Subscription Manager.

  • Als einzige Hardware-Architektur wird zur Zeit x86_64 unterstützt.

  • Diverse Bitmaps mit dem Red-Hat-Logo sowie Copyright-Hinweise etc. wurden durch entsprechende CentOS-Logos bzw. -Texte ersetzt.

  • Gleichzeitig müssen Sie auf jede Art von Support verzichten.

  • Der Einsatz von CentOS steht und fällt damit, dass es dem winzigen CentOS-Team weiterhin gelingt, das Projekt einigermaßen zeitgerecht zu warten. Das monatelange Warten auf CentOS 8 hat gezeigt, dass hier die Achillesferse des Projekts ist.

CentOS 8 Installation
Die Lizenz: kurz und bündig
CentOS 8 in einer virtuellen Maschine (KVM/libvirt)
Webadministration mit Cockpit

Minimalinstallation

Es gibt aktuell leider keine Minimal-ISO-Image. Sie haben die Wahl zwischen dem Network-ISO (dann müssen aber während der Installation alle Pakete heruntergeladen werden), oder dem riesigen All-in-ISO (7 GiB).

Den Installationsumfang können Sie im Punkt Software-Auswahl festlegen. Eine minimale Installation beansprucht 1,3 GiB im Root-Dateisystem. Nach dem ersten yum update sind es 1,4 GiB. Im Betrieb reichen für einfache Aufgaben 512 MiB RAM aus. Zur Installation im Grafikmodus ist aber 1 GiB erforderlich.

EPEL

Zusammen mit RHEL/CentOS kommt üblicherweise die externe Paketquelle EPEL zum Einsatz. Wie ich vor ein paar Wochen schon geschrieben habe, ist EPEL 8 allerdings erst halbfertig. Dieses Problem betrifft in gleichem Maße RHEL und CentOS.

Anders als unter RHEL kann EPEL unter CentOS besonders einfach aktiviert werden:

yum install epel-release

Fertig!

CentOS 8 in der Praxis

Es ist ein wenig verwegen, ein paar Stunden nach dem Release schon vom Praxiseinsatz zu schreiben. Aber zumindest meine ersten Tests in einer virtuellen Maschine vermitteln den beruhigenden Eindruck, dass sich CentOS tatsächlich/erwartungsgemäß/weiterhin — exakt wie RHEL verhält. Ja, eigentlich sogar besser! yum update oder yum install arbeiten nämlich auf Anhieb und nicht erst nach einer mühsamen Registrierung. Andere Unterschiede sind mir nicht aufgefallen, wenn man einmal vom blauen statt roten Desktop-Hintergrundbild absieht.

CentOS Stream

Die heutige Ankündigung von CentOS 8 enthielt eine Überraschung: Neben CentOS 8 wurde auch CentOS Stream vorgestellt. Dabei handelt es sich um eine Art Rolling-Release-Variante von CentOS, nicht so progressiv wie Fedora, aber auch nicht so konservativ wie RHEL/CentOS. CentOS Stream ist also eine Distribution, die sich ständig durch Updates erneuert und Pakete enthält, die im offiziellen RHEL/CentOS noch nicht Einzug gefunden haben.

Aus der Sicht von Red Hat soll CentOS Stream neben Fedora eine zweite Spielwiese werden, um neue, schon weitgehend praxistaugliche Enterprise-Features einer größeren Öffentlichkeit/Testgemeinde zugänglich zu machen.

Schleierhaft bleibt, ob CentOS Stream auch von der Anwenderseite auf Interesse stößt: Linux-Fans, die die gerne die neuesten Features ausprobieren möchten, werden bei Fedora bleiben. Administratoren, die eine stabile Server-Umgebung für den Langzeit-Einsatz brauchen, sind mit CentOS gut bedient. Unklar erscheint mir dagegen die Zielgruppe von CentOS Stream.

Hintergründe zum CentOS-Projekt

Das immerhin schon 15 Jahre alte CentOS-Projekt wurde seit jeher von einer relativ kleinen Gruppe von Entwicklern betrieben. Vordergründig geht es ja »nur« darum, den Quellcode der RHEL-Original-Pakete von allen Logos, Copyright-Texten etc. zu befreien, dann neu zu kompilieren und auf Paketservern bzw. in Form von Installations-Images zur Verfügung stellen. Diese Vorgehensweise ist gedeckt durch die GPL.

Tatsächlich sind diese Arbeiten (und insbesondere die damit verbundenen Tests zur Qualitätskontrolle) aber mit enormen Arbeitsaufwand verbunden. Zusammen mit den Umstellungsarbeiten, die durch das in RHEL 8 neu eingeführte Paketverwaltungssystem (»AppStreams«) notwendig waren, dauerte es dann eben über vier Monate, bis CentOS 8 fertig wurde.

Als sich Red Hat 2014 für viele überraschend das CentOS-Team einverleibte, war unklar, welche Konsequenzen dies für das CentOS-Projekt haben würde. Heute kann man wohl zusammenfassen: keine. Red Hat hat das CentOS-Projekt nicht abgewürgt, es hat das Projekt auf der anderen Seite aber auch nicht extra gefördert (zumindest soweit man das von außen beurteilen kann). Und so trägt unverändert ein winziges Team die Last, die Distribution am Leben zu halten und über Jahre/Jahrzehnte für rasche Paket-Updates zu sorgen.

Vermutlich ist der aktuelle Zustand aus der Perspektive von Red Hat bzw. IBM ideal: Einerseits gibt es mit CentOS eine kostenlose und populäre RHEL-Alternative aus dem eigenen Haus. Das ist immer noch besser, als wenn Linux-Enthusiasten auf das ebenfalls von RHEL abgeleitete Oracle Linux umsteigen. (Eine dritte RHEL-Variante, Scientific Linux, wird für Version 8 nicht mehr weiter gepflegt.)

Andererseits muss jedem kommerziellen Anwender klar sein, dass die Sicherheit seiner Installationen an einem winzigen Team, also sprichwörtlichen an einem seidenen Faden hängt; eine gute Motivation also, irgendwann in den sauren Apfel zu beißen und doch das Original zu kaufen …

Ein wenig irritierend war auch das Zustandekommen von CentOS 8 mit einem absolutem Minimum an Kommunikation. Auf in der Mailing-Liste geäußerte Hilfeangebote gingen die Entwickler kaum ein. Ein Community-nahes Open-Source-Projekt sieht anders aus. Aber wahrscheinlich sollte ich an dieser Stelle einfach dankbar sein, dass es CentOS gibt … (Bin ich.)

Quellen

CentOS Stream

RHEL 8

Swift 5.1

$
0
0

Vorige Woche wurde Swift 5.1 ist veröffentlicht. Es zeichnet sich durch vollständige Kompatibilität zu Swift 5.0 und einige neue Features aus. Dass nur ein Bruchteil davon für typische App-Entwickler relevant ist, kann wohl als Zeichen dafür gesehen werden, dass Swift allmählich wirklich ausgereift ist.

Apple verspricht außerdem, dass Swift Module Compatibility bietet. Das bedeutet, dass unter Swift 5.1 erzeugte und kompilierte Bibliotheken ohne Änderungen (und ohne Neukompilieren) mit zukünftigen Swift-Versionen kooperieren.

In diesem Beitrag fasse ich ganz kurz die wichtigsten neuen Features zusammen. (Ein eigener Artikel über die neue Bibliothek SwiftUI ist geplant, aber ich kann noch nicht sagen, wann ich dazu komme.)

Zugriff auf statische Methoden mit Self

Bisher war es ziemlich umständlich, in einem Typ auf statische Methoden zuzugreifen: Dazu musste der Typname vorangestellt werden. Alternativen waren auch self.dynamicType oder type(of: self) möglich. In Swift 5.1 verwenden Sie — wesentlich naheliegender — Self (SE-0068).

struct OtherStruct {
  static func m1() -> Int {  // statische Methode
    return 42
  }
  func m2() -> Int {        // nicht-statische Methode
    // Zugriff auf m1() in Swift 5.0
    let tst1 = OtherStruct.m1()
    let tst2 = self.dynamicType.m1()  // deprecated
    let tst3 = type(of: self).m1()
    // viel eleganter in Swift 5.1
    return Self.m1() + 17
  }
}

Statische Subscripts

Das schon bisher verfügbare Schlüsselwort subscript ermöglichte es, eine Methoden zu formulieren, die in der Folge wie bei einem Array einen Zugriff auf Elemente in der Form obj[index] ermöglichte. Neu in Swift 5.1 ist, dass derartige Subscripts nun auch für statische Daten erlaubt sind (SE-0254).

Das folgende Beispiel zeigt zuerst Code, mit dem in Swift 5.0 ein statischer Key/Value-Speicher realisiert werden kann:

// in Swift 5.0
public enum Store1 {
  private static var data = [String: String]()
  static func get(_ key: String) -> String? {
    return data[key]
  }
  static func set(_ key: String, _ newValue: String) {
    data[key] = newValue
  }
}
Store1.set("somekey", "somevalue")
let result1 = Store1.get("somekey") ?? "not found"

Swift 5.1 erlaubt hier den Einsatz von subscript und führt zu klarerem Code, vor allem bei der Anwendung:

// in Swift 5.1
public enum Store2 {
  private static var data = [String: String]()
  static subscript(_ key: String) -> String? {
    get {
      return data[key]
    }
    set {
      data[key] = newValue
    }
  }
}
Store2["somekey"] = "somevalue"
let result2 = Store2["somekey"] ?? "not found"  // "somevalue"

Defaultparameter in struct-Konstruktoren

Wie bisher erzeugt Swift bei structs einen Default-Konstruktor. Neu ist, dass in diesem Konstruktor nun alle Parameter mit Defaultwerten optional sind (SE-0242):

struct MyStruct {
  var a: Double
  var b: Int = 123
  var c: String = "abc"
}
let data1 = MyStruct(a: 12.3, b: 42, c: "efg") // bisher schon möglich
let data2 = MyStruct(a: 12.3)                  // neu

Implizites return

Bei Closures, die mit nur einem Ausdruck eine Funktion/Methode definieren, können Sie nun auf return verzichten. Das folgende Beispiel stammt direkt aus SE-0255:

// Swift 5.0
extension Sequence where Element == Int {
   func sum() -> Element {
        return reduce(0, +)
    }
}

// Swift 5.1: kein return mehr erforderlich
extension Sequence where Element == Int {
   func sum() -> Element {
        reduce(0, +)
    }
}

Sonstiges

Einige Neuerungen hat es auch in der Swift Standardbibliothek gegeben:

Quellen

Viewing all 274 articles
Browse latest View live