Bericht über die Entwicklungen von FreeBSD im zweiten Quartal 2019

Veröffentlicht Bericht über die Entwicklung des FreeBSD-Projekts von April bis Juni 2019. Zu den Änderungen zählen:

  • Allgemeine und systembezogene Fragen
    • Das Kernteam hat beschlossen, eine Arbeitsgruppe einzurichten, um die Möglichkeit der Migration von Quelltexten aus dem zentralisierten Versionskontrollsystem Subversion in das dezentralisierte Git-System zu prüfen.
    • Es wurde Fuzzing-Testing des FreeBSD-Kernels unter Verwendung des Systems syzkaller durchgeführt und mehrere dabei entdeckte Fehler behoben. Eine Schicht für Fuzzing-Tests von Bibliotheken zur Kompatibilität mit 32-Bit-Umgebungen auf 64-Bit-Kernelsystemen wurde hinzugefügt. Es wurde die Möglichkeit implementiert, syzkaller in virtuellen Maschinen auf Basis von bhyve auszuführen. In der nächsten Phase ist geplant, den Testumfang auf Systemaufrufe auszuweiten, den LLVM-Sanitizer zur Überprüfung des Kernels zu verwenden und netdump zum Speichern von Kernel-Dumps während Abstürzen bei Fuzzing-Tests zu nutzen usw.
    • Die Arbeiten zur Aktualisierung der zlib-Implementierung auf Kernel-Ebene haben begonnen. Um dem Kernel den Zugriff auf den zlib-Code zu ermöglichen, wurde das Verzeichnis contrib/zlib in sys/contrib/zlib umbenannt, ebenso wurde die Header-Datei crc.h umbenannt, um Konflikte mit zlib/crc.h zu vermeiden. Veralteter Code, der von zlib und inflate abhängt, wurde bereinigt. Zukünftig ist geplant, die Möglichkeit zu schaffen, den Kernel sowohl mit der alten als auch mit der neuen zlib gleichzeitig zu bauen, um einen schrittweisen Wechsel auf die neue Version der komprimierenden Funktionen zu ermöglichen.
    • Die Infrastruktur zur Emulation der Linux-Umgebung (Linuxulator) wurde aktualisiert. Die Unterstützung für Linux-Debugging-Tools wie das strace-Utility wurde erweitert. Im Ports-Bereich wurde das Paket linux-c7-strace hinzugefügt, das zur Nachverfolgung von Linux-Ausführungsdateien verwendet werden kann und die Standard-Utilities truss und ktrace ersetzt, die derzeit einige spezifische Linux-Flags und -Strukturen nicht dekodieren können. Darüber hinaus wurde das Paket linux-ltp mit den Ausführungsdateien des Linux Test Project hinzugefügt und Probleme mit der Kompatibilität zu Ausführungsdateien, die mit neuen Versionen von glibc kompiliert wurden, wurden behoben.
    • Die Implementierung verzögerter Ungültigmachung von Bindungen an physische Speicherseiten (delayed invalidation) im pmap-Mechanismus wurde auf einen lockfreien Queue-Verarbeitungsalgorithmus umgestellt, wodurch Skalierbarkeitsprobleme bei der Ausführung einer großen Anzahl paralleler unmap-Operationen gelöst werden konnten;
    • Der Vnode-Sperrmechanismus während der Ausführung von Systemaufrufen der execve()-Familie wurde geändert, was eine Verbesserung der Effizienz bei der gleichzeitigen Ausführung von execve() für die gleiche Datei ermöglichte (zum Beispiel bei Build-Vorgängen mit paralleler Kompilierungsstart);
  • Sicherheit
    • Im Hypervisor bhyve wurde die Unterstützung für die Live-Migration von Gastumgebungen von einem Host zu einem anderen sowie die Funktionalität Save/Restore weiter verbessert, die es ermöglicht, das Gastbetriebssystem in einen Zustand zu versetzen und diesen in einer Datei zu speichern, um später die Ausführung fortzusetzen.
    • Durch die Verwendung der Bibliothek libvdsk wurde in bhyve die Unterstützung für Disk-Images im QCOW2-Format hinzugefügt. Für die Nutzung ist eine Installation erforderlich
      einer speziell modifizierten Die bhyve-Version wurde auf die Nutzung von Dateihandhabungs-Operationen auf Basis von libvdsk umgestellt. Im Berichtszeitraum wurde in libvdsk zudem an der Vereinfachung der Integration neuer Formate gearbeitet, die Lesegeschwindigkeit und Schreibgeschwindigkeit verbessert sowie die Unterstützung für Copy-On-Write hinzugefügt. Zu den verbleibenden Aufgaben gehört die Integration von libvdsk in den Hauptbestand von bhyve.
    • Im Ports wurde ein System zur Erfassung von Verkehrsinformationen hinzugefügt.
      Maltrail, das es ermöglicht, Fallen für schadhafte Netzwerkabfragen zu erstellen (IP-Adressen und Domains werden aus Schwarze Listen überprüft) und Informationen über erkannte Aktivitäten an einen zentralen Server zur späteren Blockierung oder Analyse von Angriffen zu senden.
    • Im Ports wurde eine Plattform zur Erkennung von Angriffen, zur Log-Analyse und zur Überwachung der Dateiintegrität hinzugefügt. Wazuh (ein Fork von Ossec mit Unterstützung für die Integration von ELK-Stack);
  • Netzwerksubsystem
    • Der ENA-Treiber wurde mit Unterstützung für die zweite Generation von ENAv2-Netzwerkadaptern (Elastic Network Adapter) aktualisiert, die in der Infrastruktur von Elastic Compute Cloud (EC2) verwendet werden, um die Kommunikation zwischen EC2-Knoten mit Geschwindigkeiten von bis zu 25 Gb/s zu ermöglichen. Der ENA-Treiber unterstützt nun NETMAP.
    • Im FreeBSD HEAD wurde ein neuer MMC/SD-Stack eingeführt, der auf dem CAM-Framework basiert und die Anbindung von SDIO (Secure Digital I/O) Geräten ermöglicht. Beispielsweise wird SDIO in WiFi- und Bluetooth-Modulen vieler Platinen verwendet, wie etwa dem Raspberry Pi 3. Der neue Stack ermöglicht es zudem, das CAM-Interface zu nutzen, um SD-Befehle von Anwendungen im Benutzerspeicher zu senden, was die Entwicklung von Gerätetreibern auf Benutzerebene eröffnet. Es wird an Treibern für Broadcom-Wireless-Chips gearbeitet, die im FullMAC-Modus funktionieren (d.h. der Chip führt eine Art eigenes Betriebssystem mit einer Implementierung seines drahtlosen 802.11-Stacks aus);
    • Es wird an der Implementierung von NFSv4.2 (RFC-7862) für FreeBSD gearbeitet. In der neuen Version von NFS wurde Unterstützung für die Funktionen posix_fadvise, posix_fallocate sowie die Modi SEEKHOLE/SEEKDATA in lseek und die Möglichkeit des lokalen Kopierens von Dateiteilen auf dem Server (ohne Übertragung an den Client) hinzugefügt.

      Derzeit bietet FreeBSD bereits eine grundlegende Unterstützung für die Operationen LayoutError, IOAdvise, Allocate und Copy. Es bleibt noch die Implementierung der Operation Seek, die für die Verwendung von lseek(SEEKHOLE/SEEKDATA) mit NFS erforderlich ist. Die Unterstützung für NFSv4.2 wird voraussichtlich in FreeBSD 13 aufgenommen;

  • Speichersysteme und Dateisysteme
    • Das Projekt zur Überarbeitung des FUSE (File system in USErspace) Treibers neigt sich dem Ende zu. Dieser ermöglicht die Erstellung von Dateisystemimplementierungen im Benutzerspeicher. Der ursprünglich gelieferte Treiber ist veraltet und enthält zahlreiche Fehler. Im Rahmen des Treiber-Modernisierungsprojekts wurde die Unterstützung für das FUSE-Protokoll 7.23 implementiert (früher wurde die Version 7.8 unterstützt, die vor 11 Jahren veröffentlicht wurde). Es wurde Code zur Überprüfung der Berechtigungen auf Kernel-Ebene hinzugefügt („-o default_permissions“) sowie Aufrufe von VOP_MKNOD, VOP_BMAP und VOP_ADVLOCK. Darüber hinaus wurde die Möglichkeit zur Unterbrechung von FUSE-Operationen eingeführt, die Unterstützung für unbenannte Pipes und Unix-Sockets in fusefs ermöglicht. Es besteht nun die Möglichkeit, kqueue für /dev/fuse zu nutzen, das Aktualisieren von Montageparametern über „mount -u“ wurde erlaubt, und die Unterstützung für den Export von fusefs über NFS ist eingeführt. Das Konto für RLIMIT_FSIZE wurde implementiert, die Flags FOPEN_KEEP_CACHE und FUSE_ASYNC_READ hinzugefügt, erhebliche Leistungsoptimierungen durchgeführt und die Cache-Organisation verbessert.
    • Im Swap-Pager-Code für den Speicher wurde die Unterstützung für die BIO_DELETE-Operation hinzugefügt, die es ermöglicht, den TRIM-Befehl beim Löschen von Blöcken auf SSDs zu verwenden, um deren Lebensdauer zu verlängern.
  • Hardware-Unterstützung
    • Die Arbeit zur Unterstützung des ARM64 SoC Broadcom BCM5871X mit ARMv8 Cortex-A57-Prozessoren, die für Router, Gateways und Netzwerkspeicher konzipiert sind, wurde fortgesetzt. Im Berichtszeitraum wurde die Unterstützung für interne und externe iProc PCIe-Busse verbessert, die Unterstützung für BNXT Ethernet hinzugefügt, und es wird an der Implementierung der integrierten Kryptografie-Engine zur Beschleunigung von IPsec gearbeitet. Die Integration des Codes in den HEAD-Branch wird im zweiten Halbjahr erwartet.
    • Die Arbeiten an der Unterstützung des 64-Bit SoC NXP LS1046A basierend auf dem ARMv8 Cortex-A72-Prozessor mit integriertem Netzwerkpaketverarbeitungsbeschleuniger, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 und USB 3.0 haben begonnen. Die Unterstützung der Basisplattform (Multi-User SMP) und SATA 3.0 ist bereits implementiert. An der Unterstützung von USB 3.0, SD/MMC und I2C wird gearbeitet. Die Unterstützung von Ethernet, GPIO und QSPI ist in Planung. Der Abschluss der Arbeiten und die Einbindung in den HEAD-Branch wird für das 4. Quartal 2019 erwartet.
    • Die Treiber mlx5en und mlx5ib für die Ethernet- und InfiniBand-Adapter Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] und ConnectX-6 [Dx] wurden aktualisiert. Die Unterstützung für Mellanox Socket Direct (ConnectX-6) wurde hinzugefügt, was eine Bandbreite von bis zu 200 Gb/s über den PCIe Gen 3.0-Bus ermöglicht. Für die Mehrkern-Chips der "BlueField"-Reihe wurde die Unterstützung des RShim-Treibers hinzugefügt. Im Port ist das Paket mstflint mit einer Sammlung von Diagnosetools für Mellanox-Adapter enthalten;
  • Anwendungen und Ports
    • Die Komponenten des Grafikstapels wurden aktualisiert. Der Treiber drm.ko (Direct Rendering Manager) wurde aus dem Linux-Kernel 5.0 portiert. Dieser Treiber gilt als experimentell und wurde als graphics/drm-devel-kmod in den Ports hinzugefügt. Da der Treiber das aktualisierte Linux KPI-Framework zur Kompatibilität mit der DRM API des Linux-Kernels verwendet, ist FreeBSD CURRENT erforderlich. Auch der drm-Treiber vboxvideo.ko für die virtuelle GPU von VirtualBox wurde aus Linux portiert. Das Paket Mesa wurde auf die Version 18.3.2 aktualisiert und zu devel/llvm80 statt devel/llvm60 migriert.
    • Der FreeBSD-Paketbaum hat die Marke von 37.000 Ports überschritten, während die Zahl der offenen PRs bei 2.146 bleibt. Im Berichtszeitraum wurden 7.837 Änderungen von 172 Entwicklern vorgenommen. Drei neue Mitglieder haben Commit-Rechte erhalten. Bedeutende Versionsaktualisierungen in den Ports umfassen: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Alle Go-Ports verwenden nun die Flagge „USES=go“. Eine neue Flagge „USES=cabal“ wurde für den Paketmanager Cabal hinzugefügt, der für Haskell-Code verwendet wird. Der strenge Modus zur Schutz der Stapel wurde aktiviert. Standardmäßig wird nun Python 3.6 anstelle von 2.7 angeboten.
    • Ein Release der Dienstprogramme nsysctl 1.0, das eine Alternative zu /sbin/sysctl bietet und libxo für die Ausgabe verwendet und eine erweiterte Auswahl an Optionen bereitstellt. Nsysctl kann verwendet werden, um den Zustand von sysctl-Werten visuell zu überwachen und Informationen über Objekte in strukturierter Form darzustellen. Ausgaben sind in den Formaten XML, JSON und HTML möglich;

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster