Original-URL des Artikels: https://www.golem.de/news/kernel-linux-5-5-bringt-wireguard-unterbau-2001-146302.html    Veröffentlicht: 27.01.2020 16:55    Kurz-URL: https://glm.io/146302

Kernel

Linux 5.5 bringt Wireguard-Unterbau

Die aktuelle Version 5.5 des Linux-Kernels bringt erste wichtige Arbeiten an Wireguard, verbessert das Cifs-Dateisystem für Samba-Shares und die Leistung einiger Komponenten.

Auf der Kernel-Mailingliste hat Chefentwickler Linus Torvalds den ersten Linux-Kernel im neuen Jahr freigegeben. Er trägt die Versionsnummer 5.5. und enthält die ersten wichtigen Arbeiten für die Unterstützung der VPN-Technik Wireguard. Dafür passten die Entwickler die Krypto-API des Linux-Kernels an. Dem gingen jahrelange Diskussionen um die konkrete Ausgestaltung der Wireguard-Umsetzung im Linux-Kernel voraus. Diese sind nun beendet.

Im Laufe des Merge Window für Kernel 5.5 hat Linus Torvalds die Bibliotheks-Schnittstellen für Wireguard von Krypto-Maintainer Herbert Xu in seinen Kernel-Tree geholt. Kurze Zeit später integrierte David Miller den Code für den Wireguard Secure Tunnel in seinen Netzwerk-Zweig (net-next). Dieser wird sehr wahrscheinlich im nun begonnenen sogenannten Merge Window in das kommende Linux 5.6 eingepflegt, so dass Wireguard dann mit einer stabilen Version des Mainline-Kernels genutzt werden kann.

Besseres RAID für Btrfs

Die Entwickler von Dateisystemen, insbesondere von Btrfs und Cifs, haben für das aktuelle Release viele wichtige Funktionen umgesetzt. So ermöglicht Btrfs RAID1-Setups mit drei oder vier Kopien. Bei RAID1C34 handelt es sich um ein neues Blockgruppen-Profil. Der Btrfs-Entwickler David Sterba empfiehlt in seiner Release-Nachricht, RAID1C34 als Ersatz für das RAID6-Profil für Metadaten zu verwenden, um besser gegen Ausfälle von zwei Geräten gewappnet zu sein.

Außerdem unterstützt Btrfs neue Checksummen, die sich beim Anlegen der Dateisysteme erzeugen lassen: Fast Hash (xxhash) und Strong Hash (sha256 und blake2b). Darüber hinaus arbeitet lseek schneller, was parallele Suchvorgänge (SEEK_CUR/SEEK_SET/SEEK_END) bis zu 80 Prozent beschleunigen soll.

Samba mit Root

Über das SMB-Protokoll lassen sich ab Linux 5.5 auch Root-Dateisysteme einhängen. Dazu haben die Entwickler des dazugehörigen Dateisystems Cifs ein neues virtuelles Interface namens /dev/cifs erstellt, das den Kernel anweist, das Root-Dateisystem über das SMB-Protokoll einzuhängen. Die Funktion cifs_root_data() nimmt dabei die geparsten Informationen über die dafür eingeführte Kommandozeilen-Option cifsroot= entgegen. Dann wird über das Kernelmodul cifs.ko die Funktion do_mount_root() mit den passenden Mount-Optionen aufgerufen.

Unterstützt wird hierbei außerdem ipconfig: Das Werkzeug richtet den Network Stack ein und ermöglicht dann den Zugriff auf das SMB-Share mit dem Root-Dateisystem. Dafür braucht es die Option CONFIG_CIFS_ROOT.

Ebenso bringt Cifs nun Multichannel-Support mit. Nach einem erfolgreichen Mount und dem Start der SMB-Session, öffnet Cifs über cifs_try_adding_channels() möglichst viele Kanäle für zusätzliche Netzwerkverbindungen über TCP oder RDMA, was den Dateitransfer beschleunigen sollte. Die Master-Connection wird dabei automatisch zum ersten Channel aufgebaut. Wird die Sitzung beendet, schließt das auch sämtliche Channels.

Jeder Channel verwendet nach dem Einbinden einen eigenen Signing Key. Für eine Verschlüsselung durchläuft smb2_get_enc_key() jedoch alle Sessions, um die passenden Schlüssel zu finden, da die Channels selbst keine eigenen Sitzungen aufbauen. Eine maximale Zahl an Channels lässt sich über den Mount-Parameter max_channels=N einstellen.

Neuerungen für Ext4 und NFS

Änderungen an den Dateisystemen betreffen daneben auch Ext4. Das ermöglicht laut Maintainer Ted Ts'o nun Direct I/O mithilfe der neuen Funktionen ext4_dio_read_iter() und ext4_dio_write_iter(), die sich über iomap_dio_rw in die Iomap-Infrastruktur einklinken. Daneben lassen sich dioread-nolock und eine Dateisystem-Verschlüsselung nach Änderungen an Ext4 auch dann verwenden, wenn die Block-Größe kleiner ist als die Page-Größe. Überarbeitet wurde auch das Credit-Handling des Journal, damit diesem bei vielen Revoke-Aktionen nicht mehr der Platz ausgeht.

Ab NFSv4.2 kann ein Client Kopiervorgänge zwischen Servern anstoßen, ohne dass die Daten zwischen Client und Server hin und her wandern müssen. Das beschleunigt die ganze Sache und nennt sich Server Side Copy (SSC). Ceph behandelt ab Kernel 5.5 nur-lesbare Mappings für Rados Block Devices (rbd) optimaler und verwendet ein neues Mount-API.

Performance, Testing, BPF

Von Ingo Molnar kommen Updates an dem Analysesystem Perf. So können LSMs (Linux Security Modules) wie SELinux nun den Zugriff auf den perf-Systemaufruf blockieren. Auch die Bibliotheken rund um Perf haben Updates erhalten, etwa die Libperf und Libtraceevent. Eine Liste mit aktualisierten Perf-Werkzeugen liefert die Ankündigung.

Mit KUnit erhält der Kernel ein leichtgewichtiges Framework für Unit-Tests und Mocking, das sich allerdings nicht für Ende-zu-Ende-Tests eignet. Aktuell lässt es sich nur mit User Mode Linux (UML) und seinen Subsystemen einsetzen, soll aber auf andere Architekturen erweiterbar sein. Bereits Teil des Framework sind drei KUnit-Tests für proc sysctl, doppelt verlinkte Listen und Ext4.

Bei eBPF handelt es sich um eine mittlerweile fast universell einsetzbare virtuelle Maschine (VM) im Linux-Kernel, die aus dem Berkeley Packet Filter (BPF) hervorgegangen ist. Für Linux 5.5 haben die Entwickler einige Änderungen daran durchgeführt.

So darf Kernelcode dank des neu eingeführten BPF-Trampoline praktisch mit Null Overhead auf BPF-Programme zugreifen. Der von Alexej Starowoitof eingeführte Mechanismus wirkt als Verbindung zwischen Kernelcode, einem BPF-Programm und weiteren BPF-Programmen. Das ermöglicht nicht nur ein kostenfreies Tracing, sondern auch das Beobachten von Netzwerk-bezogenen Programmen ohne Extrakosten. Denn das neue und überarbeitete BPF kommt, wie der Name verrät, auch zum Filtern von Netzwerk-Paketen zum Einsatz. Zugleich lassen sich Funktionsargumente des BPF Type Format (BTF) nun mit tatsächlichen Typen vergleichen.

Sysctl entfernt

Eric Biederman hat den sysctl()-Systemaufruf aus dem Kernel entfernt. Man sei an einem Punkt angekommen, an dem niemand mehr den entsprechenden Code im Kernel brauche und aktiviere, heißt es. Übrig bleibt eine Warnung, der Systemaufruf sei veraltet. Sollte sich Biedermans Eindruck als falsch herausstellen, ließe sich der entfernte Code problemlos wieder einfügen.

Der Aufruf von statx() zeigt hingegen künftig auch ein fs-verity-Bit an, was über FS_VERITY_FL läuft. Auf dessen Basis stellen Programme mühelos fest, ob eine Datei ein Verity-File ist, ohne sie dafür explizit öffnen zu müssen. Auch hier zeichnet sich also ein Performance-Gewinn ab.

Auch die Arbeit an clone3() geht weiter. Der Systemaufruf reicht das TLS-Argument über das struct clone_args weiter und nicht über ein Register. Das stört alle Architekturen, die aktuell nicht copy_thread_tls() implementieren, sondern noch CLONE_SETTLS verwenden.

Ein Patch repariert das Problem für alle Architekturen, die clone3() verwenden möchten (laut __ARCH_WANT_SYS_CLONE3). Ebenso stellt ein neuer Check beim Kompilieren sicher, dass künftige Architekturen, die clone3() einführen wollen, auch copy_thread_tls() implementieren.

RISC-V und Multimedia



Die RISC-V-Entwickler haben im aktuellen Release-Zyklus eine Vielzahl von Neuerungen umgesetzt. Dazu gehören SECCOMP-, Nommu-, und M-Mode-Support. Zudem gibt der Kernel den von den CPU-Kernen unterstützten vollständigen RISC-V ISA-String an den Userspace weiter und behält nicht mehr Teile im Kernel zurück. Darüber hinaus unterstützt das Makefile der Architektur nun die gängigen Kernel-Kompressionsformate bzip2, lz4, lzma und lzo.

Außerdem finden sich zahlreiche weitere Optimierungen und Änderungen über diverse Subsysteme verstreut. Die cpuidle-Einheiten werden jetzt in Nanosekunden, nicht mehr in Mikrosekunden gemessen. Der EFI-RNG-Code für x86-Plattformen liefert eine zusätzliche Quelle an Zufall im frühen Bootstadium. Jiri Pirko hat den Netzwerk-Code um die Möglichkeit ergänzt, alternative Namen für Netzwerkgeräte zu verwenden. Ein neues API hilft dabei, von Livepatch-Callbacks veranlasste Änderungen am Systemzustand zu tracken.

Im Microcode-Bereich ergänzt Borislav Petkov die Late-Loading-Methode durch paralleles Laden, was vor allem in der Cloud interessant zu sein scheint und das Laden von Microcode beschleunigt. Für TPM 2.0 liegt der Trusted-Keys-Code ab Linux 5.5 nicht mehr unter drivers/char/tpm, sondern in security/keys. Gamer könnte interessieren, dass Linux nun die Logitech-G15-Tastatur unterstützt, und den Support für ein paar Geräte verbessert, darunter das Windows Precision Touchpad und Produkte von Primax.

Die Entwickler rund um Jens Axboe feilen weiterhin am io_uring-Support, wobei ein Fokus auf dem Umgang mit Netzwerk-Traffic lag. So ist die Ringgröße für CQ nicht mehr an die SQ-Ringgröße gekoppelt. Das hilft Netzwerk-Anwendungen bei bestimmten Workloads: Diese brauchen nur eine kleine SQ-Ringgröße für kleine IO-Sequenzen, aber eine große CQ-Ringgröße, um noch nicht bearbeitete Anfragen vorzuhalten. Auch spärliche und große Sets an Dateien unterstützt io_uring besser und macht Updates ohne Registrierungen möglich. Ebenso unterstützt io_uring Tracing und verfolgt Poll-Anfragen schneller.

Multimedia und WLAN

Für Alsa und ASoC kündigt Takashi Iwai in den Sound-Updates signifikante Änderungen an. Die Entwickler zerlegen ASoC in Komponenten. Außerdem refaktorieren und vereinfachen sie den Code. Es gibt neuerdings auch Wake-on-Voice-Support für Chromebooks sowie SPI-Support und Trigger-Wort-Detection für den RT5677-Audiotreiber. Hinzu kommen einige neue Treiber für verschiedene Audiogeräte und Verbesserungen im HD-Audio-Bereich.

Auch im Grafikbereich erwarten Linux-Nutzer Änderungen. So gibt es für AMDs Kernel Fusion Treiber (AMDKFD) Support für Navi 12, 14 und die Renoir APU. Für Letztgenannte bietet der AMDGPU-Treiber auch eine Resets-Option an. Der AMDGPU-Treiber unterstützt nun außerdem HDCP. Die Intel-Entwickler haben den Code für die kommenden Gen12-GPUs alias Xe überarbeitet und bestätigen nun offiziell, dass der Treiber auch für dedizierte Grafikkarten genutzt werden wird und nicht nur für die iGPU.

Der Wireless-Treiber mac80211 übernimmt den Code zur Airtime-Kalkulation aus dem Treiber mt76, um ein Airtime Queue Limit zu berechnen. Die Kernel-Patches stammen von Kan Yan (Google) und Toke Høiland-Jørgensen (Red Hat). Sie sind nötig, um Airtime Fairness umzusetzen, was der mt76-Treiber bereits kann. Dabei geht es darum, Daten fair an einen gemischten Gerätezoo zu verteilen, der aus Geräten mit schnellem und langsamen WLAN besteht. Zudem bringt der qtnfmac-Treiber Support für 802.11ax im Access-Point-Modus mit und aktiviert Offload-Bridging-Support.

Herunterladen lässt sich der fertige Kernel wie gewohnt auf kernel.org.  (lm-kki)


Verwandte Artikel:
Nouveau: Nvidia ermöglicht freien Linux-Support für Turing-Karten   
(15.01.2020, https://glm.io/146086 )
Microsoft IDE: Visual Studio vereinfacht Arbeit mit Linux-Systemen   
(27.01.2020, https://glm.io/146288 )
Labor-Version: AVM zieht SMB3-Unterstützung für Fritzboxen zurück   
(27.03.2019, https://glm.io/140292 )
Samba: Swat soll entfernt werden   
(21.02.2013, https://glm.io/97740 )
ZFS erklärt: Ein Dateisystem, alle Funktionen   
(04.11.2019, https://glm.io/144776 )

© 1997–2020 Golem.de, https://www.golem.de/