Linux 4.19: Schöner starten und bereit für das WLAN von Morgen

Seite 7: Infrastruktur: Vertrauensfrage, Speicherknappheit & neue Anforderungen

Inhaltsverzeichnis

Beim Bau eines Kernel-Images kann man jetzt über eine Option festlegen, ob der Kernel-eigene Zufallszahlengenerator bei der Initialisierung auch Daten einbeziehen darf, die Zufallszahlengeneratoren moderner Hauptprozessoren liefern. Aber egal, wie die CONFIG_RANDOM_TRUST_CPU genannte Option auch gesetzt ist: Über den neuen Kernel-Parameter random.trust_cpu= können Sie diesen Aspekt jetzt auch beim Booten beeinflussen.

Eine neuen Build-Option legt fest, ob der Kernel den Zufallszahlengeneratoren moderner CPUs traut oder nicht.

(Bild: git.kernel.org, drivers/char/Kconfig )

Die Änderungen rund um die Initialisierung des Congruential Random Number Generator (CRNG) von Linux entstanden im Rahmen von Diskussionen, die LWN.net im Artikel "Initializing the entropy pool using RDRAND and friends" näher erläutert. Auslöser war die Vorstellung des Patches mit der Build-Option, durch den der Kernel bei der Initialisierung den Zufallszahlengenerator des Hauptprozessors einbeziehen kann: Das vermeidet Wartezeiten beim Booten und soll die Qualität der früh im Startprozess zur Verfügung stehenden Zufallszahlen verbessern. Letzteres klingt nach einem unwichtigen Detailproblem, hat aber gerade im Embedded-Umfeld schon mehrfach zu Schwierigkeiten geführt – etwa weil Zufallszahlen bei der Generierung des OpenSSH-Host-Keys nicht so zufällig waren, wie gedacht. Nach Veröffentlichung des Patches meldeten sich allerdings Stimmen, die den Zufallszahlengenerator von CPUs misstrauen und sich daher gegen eine standardmäßige Einbeziehung über Befehle wie RDRAND aussprachen. Letztlich führte das zur Entwicklung des Patches, der den Boot-Parameter nachrüstet. Durch das Ganze legt für die meisten Anwender in Zukunft der Distributor fest, ob der Kernel den Zufallszahlengeneratoren von CPUs jetzt traut oder nicht.

Beim Memory-Controller für Cgroup v2 kann man über memory.oom.group jetzt festlegen, dass der Out Of Memory (OOM) Killer alle Prozesse einer Control Group als Einheit betrachten soll. Das ist etwa relevant, wenn er bei extremer Speicherknappheit einen oder mehrere Prozesse abzuschießen erwägt, damit sich das System nicht festfährt. Sollte er sich für eine so konfigurierte Gruppe entscheiden, beendet er alle darin enthaltenen Prozesse.

Admins können so erreichen, dass der Kernel zuerst unwichtigere Prozesse schließt, wenn der Arbeitsspeicher zur Neige geht. Die dahinter stehende Änderung war ein Teil größerer und bei LWN.net erläuterter Umbauten, um das Verhalten des seit Jahren immer wieder modifizierten OOM Killers besser steuern zu können. Andere Teile dieser Umbauten mussten aber erstmal außen vor bleiben: Die an diesem Bereich arbeitenden Entwickler sind sich bei einigen der Ansätze noch uneins.

Linus Torvalds missfielt die Möglichkeit zur Deprecated-Kennzeichnung so sehr, dass er sie entfernt hat.

(Bild: git.kernel.org – 771c035372a0 )

Linus Torvalds hatte die Nase voll von Compiler-Warnungen zu Codestellen, die als "deprecated" (alt/überholt/missbilligt) gekennzeichnete Funktionen eingebunden haben. Er hat daher die Möglichkeit komplett entfernt, Funktionen so auszuzeichnen. Entwickler sollen stattdessen die Codestellen anpassen, die von ihnen abgekanzelte Funktionen nutzen, um Letztere dann rauszuwerfen. Genau das geht bei Linux vergleichsweise leicht, weil alle wesentlichen Treiber in den Kernel-Quellen stecken und daher an einer Stelle zu finden sind.

Zum Kernel-Bau mit der GNU Compiler Collection (GCC) ist jetzt mindestens die GCC-Version 4.6 erforderlich, die im Frühjahr 2011 erschien. Laut Dokumentation reichte bislang die GCC 3.2 – die Realität hatte diese Angabe aber schon eine Weile überholt, denn mit den Vorgängern vor 4.6 traten Fehler beim Kompilieren auf.

Weitere Neuerungen rund um die Infrastruktur nennen die wichtigsten Commits der Subsysteme ACPI (1, 2), Documentation, Kbuild (1, 2), IDA, Kconfig, Locking, Modules, MMC, RCU, Perf (1, 2), Power Management, (1, 2), Printk, Schedular, Siginfo, Tracing, Timer, Virtio.

Linux 4.19 unterstützt die "Cache Pseudo-Locking"-Funktion von Intels "Cache Allocation Technology" (CAT). Anwendungen können darüber einen Teil des Prozessor-Caches für Daten reservieren, damit der Prozessor sie für schnelle Zugriffe dort dauerhaft vorhält. Details hierzu finden sich in den Änderungen an der CAT-Dokumentation (1, 2, 3, 4).

Ein paar aus historischen Gründen noch in ISO_8859-1 codierte Dateien wurden zu UTF-8 konvertiert, um Darstellungsfehler zu vermeiden.

(Bild: git.kernel.org – 3723c6324785 )

Der Kernel ist jetzt im Unicode-Zeitalter angekommen: Arnd Bergmann hat ein Dutzend in den Quellen enthaltene Dateien in UTF-8 konvertiert, die zuvor in ISO_8859-1 kodierten Text enthielten.

Linux unterstützt jetzt das Raspberry Pi Compute Module samt dessen IO Board.

Ebenfalls neu: Support für das Pinebook, einem mit 64-Bit-ARM-Kern ausgestatteten "Open Source Notebooks" der Macher des Entwicklerboards Pine64.

Weitere Änderungen rund um Architektur-Unterstützung und Support zentraler Systemkomponenten nennen die wichtigsten Commits der Bereiche ARM (SoC, SoC Defconfig, SoC Driver, SoC Device Trees (DT), SoC [nachzügler]), ARM32, ARM64, Clocks, Devicetree, DMA Engine, DMA Mapping, EFI, GPIO, IOMMU, IRQ, I2C, KVM (1, 2), M68k, Mailbox, MFD, Microblaze, MIPS (1, 2), Parisc (1, 2), PCI, Pinctl, PowerPC (1, 2), Power-Suppy, PWM, Regulator, RISC-V (1, 2), Rproc, RTC, SPI, S390 (1, 2), SoC Thermal, x86 (Cache, CPU, Hyper-V, Timers), Xen und Xtensa.