Zum Hauptinhalt Zur Navigation

Linux-Kernel: Mehr Zufall in Linux 3.17

Mit neuen Generatoren für Zufallszahlen, einer Prüfung für Firmware sowie einem schnelleren Block Layer für SSDs und USB im Netzwerk ist Linux 3.17 freigegeben worden.
/ Jörg Thoma
6 Kommentare News folgen (öffnet im neuen Fenster)
Linux 3.17 ist freigegeben. (Bild: Richard Giddins, CC BY 2.0)
Linux 3.17 ist freigegeben. Bild: Richard Giddins, CC BY 2.0

Linus Torvalds hat den Linux Kernel 3.17 freigegeben(öffnet im neuen Fenster) . Es seien weniger aufregende Änderungen eingeflossen als in seinen Vorgänger, heißt es in einer E-Mail(öffnet im neuen Fenster) zu Beginn der Testphase. Das sei wohl der Sommerpause in der nördlichen Hemisphäre geschuldet. Durch das Entfernen von 14 ungepflegten Treibern im Staging-Bereich wurden 250.000 Zeilen Code eingespart. Damit sei Linux 3.17 kleiner als sein direkter Vorgänger. Das sei bisher nur einmal, bei Linux 2.6.36, der Fall gewesen, schreibt Lwn.net(öffnet im neuen Fenster) .

Mehr Knoten für die Grafik

Die bereits in Linux 3.12 eingeführten Render-Nodes im Direct Rendering Manager (DRM) sind ab dieser Kernel-Version standardmäßig aktiviert. Damit können Anwendungen über mehr als einen Knotenpunkt im Linux-Kernel auf Grafikeinheiten zugreifen. So kann beispielsweise der Xserver auch mit einfachen Benutzerrechten laufen und darf trotzdem die Bildschirmauflösung auf dem Grafikchip ändern. Zudem sollen zwei Xserver parallel laufen, die jeweils einen eigenen Monitor mit eigener Auflösung ansteuern können.

Firmware-Prüfung

Nachdem es einige Probleme mit der dynamischen Energieverwaltung für Grafikkarten von AMD gegeben hatte, ist diese für die Cayman-, Barts-, Caicos- und Turks-Chipsätze wieder standardmäßig aktiviert. Zusätzlich wurde die Unterstützung für Radeon-Karten R9 290 und 290X mit dem Hawaii-Chipsatz aktiviert, für die der Code zwar bereits in Linux 3.16 übernommen worden war, auf Grund diverser Fehler aber deaktiviert blieb. Künftig soll die Integration von neuen Firmware-Versionen für den Radeon-Treiber einfacher werden. Dafür haben die Entwickler ein neues Format umgesetzt. Außerdem wurde das Security-Subsystem um die Funktion kernel_fw_from_file() erweitert, mit der sich künftig die Integrität von Firmware überprüfen lässt.

Im i915-Treiber für Grafikchips von Intel gibt es zahlreiche Änderungen(öffnet im neuen Fenster) , die den Leistungsverbrauch senken sollen. Ab Linux 3.17 wird der Energiesparmodus PM Runtime für Display Power Management Signaling (DPMS) auch dann eingeschaltet, wenn DPMS deaktiviert wird und nicht nur, wenn es komplett ausgeschaltet ist. Ferner wurde Panel Self Refresh (PSR) für Haswell- und Broadwell-Chipsätze aktiviert, nachdem die Entwickler noch zahlreiche Codeoptimierungen beigetragen haben. Mit PSR wird das aktuelle Bild in den Speicher kopiert und für einen Refresh verwendet, wenn sich der Bildinhalt nicht ändert. Dadurch kann die GPU entlastet und in einen niedrigeren Energiemodus versetzt werden.

Mehr Ruhezustände für Intel-Chipsätze

Der neue Ruhezustand S0ix, der mit Intels Haswell eingeführt worden war, wurde umgesetzt. Dabei wird die vom Kernel bereitgestellte Infrastruktur Runtime Power Management für Intels neuen Ruhezustand verwendet, der Systeme weitestgehend betriebsbereit hält. Zudem haben die Entwickler bei Intel beim Backlighting und dem Power Sequencer einige Reparaturen durchgeführt.

Damit die Interprozesskommunikation (IPC) leistungsfähiger wird, kann Linux 3.17 mit Dateideskriptoren arbeiten statt die Daten selbst zwischen Speicherbereichen zu kopieren. Dafür wurde der neue Funktionsaufruf memfd_create() eingeführt. Damit die Daten dabei nicht verändert werden können, werden sie durch das sogenannte File Sealing versiegelt. Das soll vor allem beim Verarbeiten großer Datenmengen für mehr Leistung sorgen. Insbesondere der neue IPC-Dienst Kdbus werde diese Funktionen nutzen, sie sollten aber auch dem Grafikserver Waylang zu Gute kommen, schreibt Initiator David Herrmann in einem Blogpost(öffnet im neuen Fenster) .

Mehr Zufallszahlen

Linux 3.17 erhält einen neuen Systemaufruf namens getrandom(2). Die beiden bisher verwendeten virtuellen Geräte /dev/random und /dev/urandom für das Generieren von Zufallszahlen hatten die LibreSSL-Entwickler kritisiert: Ein Zugriff auf diese Geräte benötige Dateisystemoperationen, die manchmal scheitern könnten, etwa wenn keine Filehandles mehr zur Verfügung stünden. Außerdem sei das Dateisystem /dev nicht immer gemountet, so könnte man beispielsweise eine sogenannte Chroot-Umgebung ohne Dev-Dateisystem betreiben. Mit dem Systemaufruf getrandom(2) sollen diese Probleme behoben worden sein. Diese Lösung gibt es bereits bei OpenBSD, sie wurde von den Entwicklern von LibreSSL für Linux gefordert.

Der neue Systemaufruf schließt eine weitere Lücke: Das virtuelle Gerät /dev/random liefert nur dann Zufallszahlen, wenn dem System genügend Entropie zur Verfügung steht, und kann somit in manchen Situationen eine Software blockieren. Urandom produziert hingegen immer Zufallszahlen - auch dann, wenn diese möglicherweise unsicher sind. Der neue Systemaufruf umgeht diese Probleme, indem er erst dann Zufallszahlen liefert, wenn der Pseudorandom Number Generator (PRNG) mit 128 Bit Entropie gestartet wurde.

Außerdem kann der Kernel künftig auch Daten aus Hardware Random Number Generators (HWRNG) über einen Thread abholen. Bislang waren dafür nur die jeweiligen Userspace-Anwendungen zuständig. Neu mit dabei ist auch ein Deterministic Random Bit Generator (DRBG), wie ihn das National Institute of Standards and Technology (NIST) in seiner Empfehlung SP 800-90A vorsieht. Unter diesen Zufallszahlengeneratoren war auch Dual_EC_DRBG, der nachweislich eine Hintertür enthielt, inzwischen nicht mehr zum NIST-Standard gehört und auch im Linux-Kernel nicht umgesetzt wurde. Stattdessen sind die anderen drei mit den Namen Hash_DRBG, CTR_DRBG und HMAC_DRBG in Linux 3.17, wobei nur letzterer standardmäßig vorhanden ist, da er als der schlankeste und schnellste der drei gilt. Die anderen beiden müssten explizit beim Kompilieren des Kernels aktiviert werden(öffnet im neuen Fenster) .

USB über TCP/IP

Künftig können an einen Linux-Rechner angeschlossene USB-Geräte von externen Rechnern über das Netzwerk angesprochen werden. Der Code des dafür zuständigen USB/IP-Stacks wurde aus dem experimentellen Staging-Bereich übernommen. Die dafür benötigten Treiber und Userspace-Programme für Linux gibt es bereits. USB/IP wurde vom gleichnamigen Projekt(öffnet im neuen Fenster) entwickelt. Dort gibt es auch Treiber für Windows, die ReactOS-Entwickler beigesteuert haben. Der Code wurde allerdings seit Juni 2011 nicht mehr weiter gepflegt(öffnet im neuen Fenster) .

Erste Arbeiten an der Unterstützung für Hotplugging über I/O Advanced Programmable Interrupt Controller (I/O Apic) wurden in Linux 3.17 integriert. Mit I/O Apic lassen sich Hardware-Interrupts besser verwalten, etwa indem sie in logische Gruppen zusammengefasst oder mit unterschiedlichen Prioritäten versehen werden können. Damit Hotplugging mit I/O Apic funktioniert, müssen am Apic-Code noch Änderungen vorgenommen werden, beispielsweise die Entfernung überflüssiger Treiber-Abstrahierungen. In dem jetzt eingereichten Patch wurde auch die Unterstützung von Irqdomain in das Apic-Subsystem integriert. Damit sollen später die Interrupts mit I/O Apic verwaltet werden.

Multiqueue und Kexec

Die mit Linux 3.12 begonnene Integration der Multiqueue-Block-Layer-Unterstützung wurde in das SCSI-Subsystem integriert . Zuvor mussten diverse Treiber angepasst werden. Mit mehreren Warteschleifen (Queues) soll der Zugriff auf Datenträger beschleunigt werden, was besonders bei SSDs für einen deutlichen Geschwindigkeitszuwachs sorgen soll.

Der neue Systemaufruf kexec_file_load() sorgt dafür, dass der Kernel eine aktualisierte Version von sich selbst einer Signaturüberprüfung unterzieht, bevor damit gestartet werden kann. Kexec bewirkt, dass das System auch ohne Neustart einen neuen Kernel lädt. Bisher lief Kexec im Userspace, was eine Sicherheitsprüfung verhinderte, die auf Rechnern mit Secure Boot notwendig war. Daher war Kexec auf vielen Linux-Distributionen abgeschaltet worden .

Der Quellcode Linux 3.17 ist unter kernel.org(öffnet im neuen Fenster) verfügbar. Für den nächsten Linux-Kernel 3.18 gibt es wegen Torvalds Reisen und Konferenzen diesmal ein Merge-Fenster von etwa drei Wochen.


Relevante Themen