zurück zum Artikel

Die Neuerungen von Linux 3.17

| Thorsten Leemhuis

Die Linux-Entwickler schaffen Probleme beim Ausliefern von Zufallszahlen aus der Welt. Thunderbolt funktioniert nun auch bei Apple-Rechnern. Zwei neue Funktionen legen Grundlagen zur effizienten Interprozess-Kommunikation mit Kdbus.

Linus Torvalds hat den Linux-Kernel 3.17 freigegeben [1]. Zu dessen wichtigsten Neuerungen gehört die Unterstützung für den Multi-Stream Transport (MST) [2], wie ihn DisplayPort 1.2 spezifiziert – eine Technik, mit der Grafikchips über eine DisplayPort-Verbindung mehrere Monitore ansprechen können. Sie ist zur besseren Unterstützung von 4K-Monitoren wichtig, denn manche von ihnen gaukeln dem Betriebssystem vor, sie seien zwei per MST angesprochene Displays. Bislang implementiert aber nur der Intel-Grafiktreiber MST [3].

Programme können nun über den Funktionsaufruf getrandom() [5] Zufallszahlen beim Kernel abrufen. Das vermeidet ein Problem bei Zufallszahlenabruf via /dev/random und /dev/urandom, denn dabei erhält ein Prozess manchmal Zufallszahlen, die zuvor schon ein anderer Prozess erhalten hat. Dieses schon länger bekannte Verhalten spielt Angreifern in die Hände, daher hatten die LibreSSL-Entwickler darum gebeten [6], es zu beseitigen.

Ferner liefert der neue Syscall beim Setzen eines Flags erst Zufallszahlen, nachdem der Zufallszahlengenerator mit mindestens 128 Bit an Entropie initialisiert wurde. Bei x86-Systemen ist das normalerweise schon sehr früh im Boot-Prozess der Fall, nicht aber bei Embedded-CPUs, was hier zu schwacher Kryptographie [7] führen kann.

Mehr Infos

Im Detail

Bereits in den vergangenen Wochen hat die Kernel-Log [8]-Artikelserie "Was 3.17 bringt" detailliert über die Änderungen von Linux 3.17 berichtet. Das war möglich, weil die Hauptentwicklungsphase dieser Version bereits Mitte August endete [9]:

  1. Storage & Netzwerk [10]
  2. Infrastruktur [11]
  3. Treiber [12]

Der nebenstehende Text fasst die wichtigsten Neuerungen dieser Artikel zusammen und gibt einen Ausblick auf einige Neuerungen, die in 3.18 einfließen dürften.

Über den neuen Funktionsaufruf memfd_create() [14] können Programme jetzt einen File Descriptor anlegen, der auf einen anonymen Arbeitsspeicherbereich verweist. Das ebenfalls neue File Sealing versiegelt einen File Descriptor, was Änderungen an den darüber referenzierten Speicherbereichen unterbindet. Diese Funktionen wurden vornehmlich für den designierten D-Bus-Nachfolger Kdbus [15] entwickelt, damit der Dienst zur Interprozesskommunikation (IPC) Daten nicht im Arbeitsspeicher hin und her kopieren muss. Es ist allerdings weiter unklar, ob und wann Kdbus in den Kernel einfließt.

Erheblich umgebaut haben die Kernel-Entwickler das bei 3.4 integrierte Dma-Buf [17], das Buffer zum Direct Memory Access (DMA) einrichtet, die mehrere Hardware-Bausteine und deren Treiber verwenden. Durch die Umbauten unterstützt der Code nun "Fences". Mit ihnen kann ein Treiber sicherstellen, dass etwa eine Webcam ein Einzelbild eines gerade aufgezeichneten Videos vollständig in einen Buffer schreibt, bevor der Grafikchip mit der Ausgabe der dort enthaltenen Daten beginnt. Solch eine Barriere vermeidet Bildstörungen, denn der Grafikchip gibt Müll aus, wenn er den Bildbuffer schneller liest, als ihn die Webcam füllt.

Die Fences haben aber auch noch andere Einsatzgebiete. Bei PC-Hardware sind sie beispielsweise für moderne Hybridgrafiksysteme interessant, wo der Grafikkern des Prozessors ein Bild ausgibt, das ein zugeschalteter Grafikchip von AMD oder Nvidia berechnet hat.

Der USB/IP-Stack, über den ein System die USB-Geräte eines anderen Rechners im Netz verwenden kann [19], hat den Staging-Bereich verlassen und gilt daher nicht mehr als unzulänglicher Code. USB/IP wurde ursprünglich vom USB/IP-Projekt [20] entwickelt. Das hat auch Treiber und Werkzeuge im Angebot, durch die ein Windows-PC auf ein von Linux mit USP/IP freigegebenes USB-Gerät zugreifen kann. Die Windows-Software und die Projekt-Webseite wurden allerdings seit 2011 nicht mehr aktualisiert.

Bei Windows-8-Notebooks soll die Regelung der Bildschirmhelligkeit nun besser funktionieren. Das ist einer anderen Herangehensweise zu verdanken, die bislang standardmäßig deaktiviert war, weil sie auf manchen Notebooks zu Problemen führte. Diese Probleme soll 3.17 nun ausräumen [23], nachdem die Grundlagen dafür schon bei 3.16 gelegt wurden [24].

Teile des Kexec-Frameworks, mit dem ein Kernel einen anderen Kernel booten kann, wurden vom Userspace-Tool Kexec in den Kernel verlagert. Zusammen mit den Kernel-eigenen Möglichkeiten zur Signatur-Prüfung beseitigt das ein Schlupfloch beim Einsatz von Secure Boot. Dadurch können demnächst auch solche Distributionen Kexec nutzen, die es derzeit aus Angst vor der Secure-Boot-Lücke lahmlegen, wenn sie per Secure Boot gestartet werden.

Das SCSI-Subsystem und seine Treiber können nun auf den bei Linux 3.13 integrierten und bei 3.16 verbesserten [27] Multi-Queue Block IO Queueing Mechanism (blk-mq) zurückgreifen, mit dem sich die Leistungsfähigkeit der heute schnellsten Datenträger besser ausschöpfen lässt.Bei Ext4 und Btrfs gab es nur kleinere Fehlerkorrekturen und Aufräumarbeiten.

Das zum Zugriff auf Windows- und Samba-Server genutzte CIFS-Dateisystem soll Aussetzer der Netzwerk-Verbindung nun besser verkraften. Beim SMB2- und SMB3-Protokoll beherrscht CIFS jetzt "multi-credit", was unter anderem die Performance beim Zugriff auf große Dateien verbessern kann.

Thunderbolt soll nun auch bei Apple-Systemen funktionieren. Das ist einem speziellen Treiber [29] zu verdanken, der IRQs und andere Systemressourcen konfiguriert, wenn man Thunderbolt-Hardware an- oder absteckt. Das ist eigentlich Aufgabe der Firmware, wie Kernel-Entwickler Greg Kroah-Hartman in seinem Blog erklärt hat [30] – Apple überlässt es aber dem Betriebssystem.

Der Sound-Treiber Virtuoso unterstützt nun auch die Asus Xonar Essence STX II [32]. Der Joystick-Treiber arbeitet jetzt mit dem Xbox One Controller [33] zusammen. Der Alps-Treiber spricht Alps-Touchspads der Generation v7 an [34], die etwa im Toshiba Portege Z30-A stecken. Der Treiber für Synaptic-Touchpads unterstützt nun die als "ForcePads" [35] bezeichneten Touchpads, die HP etwa beim EliteBook 1040 einsetzt.

Der Kernel bringt einen Treiber für den Fallsensor mit, den Toshiba in einigen Notebooks einsetzt. Wie die Treiber für die Fallsensoren einiger Dell- und HP-Geräte arbeitet er mit einem Userspace-Dienst zusammen, der die Festplattenköpfe parkt, um das Risiko von Datenverlust und Festplattenschäden zu senken.

Direkt nach der Freigabe der neuen Version beginnt nun das Merge Window [37], in dem Linus Torvalds das Gros der Änderungen für den Nachfolger annimmt. Diese Phase ist typischerweise zwei Wochen lang; diesmal werden es aber wohl drei, weil Torvalds auf Reisen ist.

Zur Aufnahme sind Änderungen vorgesehen [38], durch die der Radeon-Treiber den Video-Beschleuniger UVD nutzen kann, den einige ältere Radeon-Kerne enthalten; darunter die GPUs RV6xx, RS[78]80 und RV7[79]0 [39], die unter den Radeon-HD-Bezeichnungen 2400 bis 4290 vermarktet wurden. Ferner soll der Radeon-Treiber die User Pointer [40] unterstützen, mit denen der Intel-Grafiktreiber seit Linux 3.16 [41] den Overhead reduzieren kann, wenn der Grafikkern auf Speicherbereiche von Userspace-Prozessen zugreifen muss. In den Nouveau-Treiber sollen Änderungen einfließen, die die Unterstützung für die Lüfterregelung und DisplayPort-Audio verbessern.

Sofern Torvalds und seine Mitstreiter mit dem gewohnten Tempo arbeiten, dürfte 3.18 Ende November oder Anfang Dezember erscheinen. Ein Artikel wie dieser wird dann wieder einen Überblick über die wichtigsten Neuerungen dieser Version liefern.

Linux-
Version
Anzahl
Dateien¹
Zeilen
Quelltext
(OhneDoku)²
Entwick-
lungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
3.10 [43] 43016 16955489
(15803499)
63 Tage 13637
10471 files changed,
 660572 insertions(+),
 391966 deletions(-)
3.11 [44] 44002 17403279
(16225814)
63 Tage 10893 9692 files changed,
 788982 insertions(+),
 341196 deletions(-)
3.12 [45] 44586
17726872
(16529850)
62 Tage 10927 8636files changed,
 587004 insertions(+),
 263408 deletions(-)
3.13 [46]

44970 17930916
(16703764)
77 Tage 12127 9843 files changed,
 441474 insertions(+),
 237428 deletions(-)
3.14 [47] 45935 18271989
(17002462)
70 Tage 12311 10601 files changed,
 605655 insertions(+),
 264576 deletions(-)
3.15 [48] 46780 18632574
(17323446)
53 Tage 13722 11427 files changed,
 932110 insertions(+),
 571520 deletions(-)
3.16 [49]

47425 18879129
(17527507)
56 Tage 12804 9807 files changed,
 513830 insertions(+),
 267276 deletions(-)
3.17 47490 18864388
(17484200)
63 Tage 12354 10605 files changed,
 651466 insertions(+),
 666200 deletions(-)
¹ find . -type f -not -regex '\./\.git/.*' | wc -l
² find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l; echo "($(find . -name *.[hcS] -not -regex '\./\.git.*' | xargs cat | wc -l))"
³ git-log --no-merges --pretty=oneline v3.(x-1)..v3.(x) | wc -l
⁴ git diff --shortstat v3.(x-1)..v3.(x)
Mehr Infos

Linux herunterladen

Die neue Linux-Version steht über Kernel.org zum Download [50] bereit; bereits kurz nach der Veröffentlichung liefern auch viele Spiegelserver [51] den neuen Kernel aus.

Den Quellcode von Linux gibt es in Tar-Archiven, die mit Gzip und Xz komprimiert wurden. Die folgenden Befehle zeigen am Beispiel von Linux 3.1, wie Sie die Quellen herunterladen, entpacken und auf Unversehrtheit prüfen:

[thl@thl tmp]$ export linux_version=3.1
[thl@thl tmp]$ wget --quiet \
http://www.kernel.org/pub/linux/kernel/v3.0/linux-${linux_version}.tar.sign \
http://www.kernel.org/pub/linux/kernel/v3.0/linux-${linux_version}.tar.xz
[thl@thl tmp]$ xz -d linux-${linux_version}.tar.xz
[thl@thl tmp]$ gpg --verify linux-${linux_version}.tar.sign
gpg: Unterschrift vom Mo 24 Okt 2011 09:17:58 CEST mittels RSA-Schlüssel ID 00411886
gpg: Korrekte Unterschrift von "Linus Torvalds <torvalds@linux-foundation.org>"
gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg: Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.
Haupt-Fingerabdruck = ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886

Einige Hinweise zur Installation eines neuen Kernels finden Sie im Artikel "Linux-Kernel maßgeschneidert [52]", der die Einrichtung eines Kernels mit Hilfe des Make-Targets "localmodconfig" beschreibt.

(thl [53]) (thl [54])


URL dieses Artikels:
https://www.heise.de/-2404284

Links in diesem Artikel:
[1] http://article.gmane.org/gmane.linux.kernel/1801708
[2] https://git.kernel.org/linus/ad7f8a1f9ced7f049f9b66d588723f243a7034cd
[3] https://git.kernel.org/linus/0e32b39ceed665bfa4a77a4bc307b6652b991632
[4] 
[5] https://git.kernel.org/linus/c6e9d6f38894798696f23c8084ca7edbf16ee895
[6] https://www.heise.de/news/LibreSSL-Linuxer-und-OpenBSDler-raufen-sich-zusammen-2262843.html
[7] http://cseweb.ucsd.edu/~hovav/dist/earlyentropy.pdf
[8] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[9] https://www.heise.de/news/Linux-3-17-wird-Zufallszahlen-zuverlaessiger-liefern-2293032.html
[10] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-1-Dateisysteme-Storage-2399706.html
[11] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-3-Infrastruktur-2401713.html
[12] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-4-Treiber-2404210.html
[13] 
[14] https://git.kernel.org/linus/9183df25fe7b194563db3fec6dc3202a5855839c
[15] https://www.heise.de/hintergrund/Die-Kernel-Dbus-Implementation-Kdbus-2089531.html
[16] 
[17] https://www.heise.de/hintergrund/Kernel-Log-Was-3-4-bringt-3-Grafik-1569854.html
[18] 
[19] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/tools/usb/usbip/README
[20] http://usbip.sourceforge.net/
[21] 
[22] 
[23] https://git.kernel.org/linus/8ab58e8e7e097bae5fe39cbc67eb93a91f7134b7
[24] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-4-Treiber-2267746.html
[25] 
[26] 
[27] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-1-Dateisysteme-Storage-2244446.html
[28] 
[29] https://git.kernel.org/linus/16603153666d22df544ae9f9b3764fd18da28eeb
[30] http://www.kroah.com/log/linux/hardware.html
[31] 
[32] https://git.kernel.org/linus/f42bb22243d2ae264d721b055f836059fe35321f
[33] https://git.kernel.org/linus/1a48ff81b3912be5fadae3fafde6c2f632246a4c
[34] https://git.kernel.org/linus/3808843cf10e4a696d942359d99822eff1a2de8e
[35] https://git.kernel.org/linus/5715fc764f7753d464dbe094b5ef9cffa6e479a4
[36] 
[37] https://www.heise.de/glossar/entry/Entwicklungszyklus-des-Linux-Kernels-397915.html
[38] http://thread.gmane.org/gmane.comp.video.dri.devel/113054/
[39] http://xorg.freedesktop.org/wiki/RadeonFeature/#index5h2
[40] http://thread.gmane.org/gmane.comp.video.dri.devel/112065/
[41] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-4-Treiber-2267746.html
[42] 
[43] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-10-1898006.html
[44] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-11-1944715.html
[45] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-1981573.html
[46] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-2087964.html
[47] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-2150433.html
[48] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-2196231.html
[49] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-2278810.html
[50] http://www.kernel.org/pub/linux/kernel/v3.0/
[51] http://www.kernel.org/mirrors/
[52] https://www.heise.de/tests/Linux-Kernel-massgeschneidert-1402386.html
[53] mailto:thl%40ct.de
[54] mailto:thl@ct.de