Die Neuerungen von Linux 4.0

Beim Linux-Kernel 4.0 lassen sich Sicherheitslücken ohne Neustart des Systems beheben. Ein verzögertes Aktualisieren von Dateieigenschaften soll die Performance von Ext4 verbessern.

In Pocket speichern vorlesen Druckansicht 18 Kommentare lesen
Lesezeit: 7 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Linus Torvalds hat den Linux-Kernel 4.0 freigegeben. Trotz dieser Versionsbezeichnung ist am neuen Kernel nichts besonderes, denn der Versionssprung von Linux 3.19 auf 4.0 ist nur kosmetischer Natur: Wie vor Jahren beim Sprung von 2.6.39 auf 3.0 will Linus Torvalds lediglich vermeiden, dass die zweite Stelle der Versionsbezeichnung zu groß wird. Dieser Auffassung waren auch die Mehrzahl der Teilnehmer einer Google+Umfrage, in der Torvalds ein Stimmungsbild zur Frage eingeholt hatte, bevor er den Sprung auf 4.0 verkündete.

Technische Anlässe für ein neues "Major Release" des Kernels gibt es seit nunmehr elf Jahren nicht mehr. Damals hatte Torvalds auf eine kontinuierliche Weiterentwicklung umgestellt, bei der Neuerungen für die jeweils nächste Version aufgenommen werden, so sie denn ausgereift scheinen. Das wird seitdem konsequent praktiziert – auch bei Linux 4.0 wieder, daher bringt die anfangs noch als Linux 3.20 entwickelte Version Änderungen im gewohnten Umfang. Sie gehört allerdings zu den Versionen mit eher wenig Änderungen, woran Weihnachten und Neujahr eine Mitschuld haben.

Eine der größeren Neuerungen ist eine Basis-Infrastuktur, um Sicherheitslücken des Linux-Kernels im Betrieb beheben zu können. Der Code für dieses "Kernel Live Patching" (KLP) stammt von den Red-Hat- und Suse-Entwicklern, die zuvor mit Kgraft und Kpatch ähnliche Lösungen geschaffen haben. Die Kernel-Macher wollten aber keine zwei konkurrierenden und noch dazu ähnlich arbeitende Infrastrukturen zum Live-Patching aufnehmen; die Red-Hat- und Suse-Entwickler haben sich daher zusammengesetzt und KLP geschaffen.

Kompliziertere Funktionen bleiben dabei fürs Erste außen vor, daher lassen sich über KLP nur simple Änderungen vornehmen. Das soll aber reichen, um rund 90 Prozent der typischen Sicherheitslücken im Betrieb beheben zu können; Kgraft und Kpatch schaffen zirka 95 Prozent. Änderungen für KLP, damit es aufschließt und mittelfristig sogar noch mehr Lücken stopfen kann, werden noch diskutiert. Dabei entstanden aber mehrere größere Debatten über das technische Vorgehen, was die Entwicklung von KLP gerade bremst (u. a. 1, 2 3).

Zum Patchen des Kernel muss man Kernel-Module laden. Der Quellcode eines Moduls zum Testen von KLP liegt dem Kernel bei; auch die Kpatch-Tools können Module erzeugen, die den Kernel im Betrieb mit KLP modifizieren. Durch den Einsatz von Modulen stellt das Live-Patching keine zusätzliche Sicherheitsgefahr dar: Angreifer, die Module laden dürfen, können damit von jeher alles mögliche Unheil anrichten und Kernel-Code modifizieren.

Weitere Details zu den Einsatzmöglichkeiten und den Schritten zum Erzeugen eigener Live-Patches hat ein Artikel in c't 7/15 erläutert.

Der Radeon-Kernel-Treiber unterstützt jetzt auch die Audio-Ausgabe via DisplayPort (u.a. 1). Viele Radeon-Grafikkarten der Baureihen HD 7750, 7770, 7950, 7970 oder die R-Modelle 240, 250, 270 und 280 arbeiten mit dem neuen Kernel leiser, denn der Kernel-Treiber aktiviert die SMC-Lüfterregelung nun auch bei Southern-Islands-GPUs, die auf den genannten und einigen weiteren Radeon-Modellen sitzen. Bislang überließ der Kernel die Regelung der Firmware, die die Lüfter oft erheblich schneller und damit lauter drehen lässt als AMDs proprietäre Linux- und Windows-Treiber.

Bei den freien Grafiktreibern für Grafikprozessoren von Nvidia gab es einige größere Umstrukturierungen, die allerdings keine Auswirkungen für Endanwender haben. Unter den Änderungen am Treiber für Intel-GPUs sind einige, durch die der Kernel jetzt alles Wesentliche zur Unterstützung der Grafikeinheiten von Skylake-Prozessoren mitbringt, die Intel offenbar in einigen Monaten unter Modellbezeichnungen wie Core-i7-6000 einführen will.

Beim Angabe der neuen Mount-Option lazytime verzeichnet das Ext4-Dateisystem aktualisierte Zugriffs-, Änderungs- oder Modifikationszeiten (atime, ctime und mtime) lediglich im Arbeitsspeicher, um sie erst später wegzuschreiben – etwa, wenn der Dateisystemeintrag ohnehin angepasst wird. Das soll die Schreibzugriffe auf die Inode-Tabellen bei manchen Zugriffsmustern signifikant reduzieren, um so die Lebensdauer von Datenträgern und die Dateisystemperformance zu steigern (u. a. 1, 2, 3). Weitere Hintergründe erläutert ein LWN.net-Artikel

Das bei 3.18 integrierte Overlay-Dateisystem kann jetzt mehrere Dateisysteme übereinander schichten (1, Dokumentation). Die nach wie vor unfertige RAID-5/6-Unterstützung in Btrfs soll zuverlässiger arbeiten.

Das Ext4-Dateisystem eignet sich durch einige Umbauten (u. a. 1) auch für den Einsatz auf Non-Volatile DIMMs (NVDIMMs) – Arbeitsspeichermodule, die die Daten auch nach dem Ausschalten eines Systems nicht verlieren und ähnlich schnell arbeiten wie normale DIMMs. Dieses "Persistent Memory" ist derzeit allerdings rar und teuer. Hintergründe erläutert der LWN.net-Artikel "Supporting filesystems in persistent memory".

Das bei der Verschlüsselung ganzer Datenträger verwendete Dm-Crypt soll bei Linux 4.0 schneller arbeiten. NFS-Client und -Server beherrscht jetzt "Parallel NFS" (pNFS) (u. a. 1, 2, 3, 4, 5), eine mit NFS 4.1 spezifizierte Protokollerweiterung, bei der NFS-Clients verschiedene Abschnitte einer Datei auf unterschiedlichen Servern abgelegen, um durch parallele Nutzung mehrere Server die Lese- und Schreibperformance zu steigern. Der NFS-Server des Kernel unterstützt das bislang aber nur mit XFS.

Der zur Stauvermeidung bei Netzwerkübertragungen verwendete Congestion-Control-Algorithmus lässt sich jetzt nicht mehr nur global, sondern pro Route festlegen (1, 2). Die Regelung des Netzwerkverkehrs über Traffic Control (TC) gelingt nun auch über Filterprogramme für den Extended Berkeley Packet Filter (eBPF), was eine effizientere Filterung verspricht.

Direkt nach der Freigabe der neuen Version beginnt nun das Merge Window, in dem Linus Torvalds das Gros der Änderungen für die nächste größere Überarbeitung des Linux-Kernels annimmt; diese Phase ist typischerweise zwei Wochen lang und endet mit der Veröffentlichung der ersten Vorabversion.

Zur Aufnahme liegt Kdbus bereit, ein im Systemd-Umfeld entwickelter IPC-Mechanismus, der den D-Bus-Daemon ersetzen soll. Ob Kdbus aber tatsächlich schon in 4.1 einzieht, ist aber nicht sicher: Greg Kroah-Hartman, einer der wichtigsten Kernel-Entwickler, hatte Mitte März angekündigt, Kdbus zur Aufnahme in 4.1 einreichen zu wollen. Nach diesem Statement kritisierten allerdings ein paar Entwickler den Code; einer von ihnen hat sich sogar deutlich gegen eine Aufnahme des jetzigen Entwicklungsstands ausgesprochen.

Sofern Torvalds und seine Mitstreiter im gewohnten Tempo arbeiten, dürfte Linux 4.1 Mitte Juni erscheinen. Ein Artikel wie dieser wird dann wieder einen Überblick über die wichtigsten Neuerungen dieser Version liefern.

Linux-
Version
Anzahl
Dateien¹
Zeilen
Quelltext
(Ohne Doku)²
Entwick-
lungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
3.14 45935 18271989
(17002462)
70 Tage 12311 10601 files changed,
 605655 insertions(+),
 264576 deletions(-)
3.15 46780 18632574
(17323446)
53 Tage 13722 11427 files changed,
 932110 insertions(+),
 571520 deletions(-)
3.16

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(-)
3.18 47971 18994096
(17586160)
63 Tage 11379 9303 files changed,
 485509 insertions(+),
 355800 deletions(-)
3.19 48424 19130604
(17692109)
63 Tage 12617 10739 files changed,
483355 insertions(+),
346843 deletions(-)
4.0 48945
19312370
(17847304)
63 Tage
10346
9489 files changed,
 508686insertions(+),
 326917 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 vx.(y-1)..vx.(y) | wc -l
⁴ git diff --shortstat vx.(y-1)..vx.(y)
Mehr Infos

Linux herunterladen

Die neue Linux-Version steht über Kernel.org zum Download bereit. Den Kernel-Quellcode 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", der das Konfigurieren und Übersetzen eines Kernels mit Hilfe des Make-Targets "localmodconfig" beschreibt.

(thl) (thl)