FreeBSD Q2019 XNUMX voortgangsrapport

gepubliceerd rapport over de ontwikkeling van het FreeBSD-project van april tot juni 2019. Onder de veranderingen kunnen we het volgende opmerken:

  • Algemene en systeemvragen
    • Het Core-team besloot een werkgroep op te richten om de mogelijkheid te onderzoeken om de broncode van het gecentraliseerde Subversion-bronbeheersysteem naar het gedecentraliseerde Git-systeem te verplaatsen.
    • Voerde fuzz-tests uit van de FreeBSD-kernel met behulp van het systeem syzkaller en een aantal geïdentificeerde fouten zijn gecorrigeerd. Een laag toegevoegd voor fuzzing-testen van bibliotheken op compatibiliteit met een 32-bits omgeving op systemen met een 64-bits kernel. De mogelijkheid om syzkaller uit te voeren in op bhyve gebaseerde virtuele machines is geïmplementeerd. In de volgende fase is het de bedoeling om de dekking van het testen van systeemaanroepen uit te breiden, LLVM sanitizer te gebruiken om de kernel te controleren, netdump te gebruiken om kerneldumps op te slaan tijdens crashes tijdens fuzzing-tests, enz.
    • Er is begonnen met het bijwerken van de zlib-implementatie op kernelniveau. Voor kerneltoegang tot zlib-code werd de map contrib/zlib hernoemd naar sys/contrib/zlib, en werd ook het headerbestand crc.h hernoemd om conflicten met zlib/crc.h te voorkomen. Verouderde code opgeschoond die afhankelijk was van zlib en inflate. Vervolgens is het de bedoeling om de mogelijkheid te bieden om de kernel gelijktijdig met de oude en nieuwe zlib te bouwen voor de geleidelijke overdracht naar de nieuwe versie van functies die compressie gebruiken;
    • De emulatie-infrastructuur voor de Linux-omgeving (Linuxulator) is bijgewerkt. Verbeterde ondersteuning voor Linux-foutopsporingstools, zoals het hulpprogramma strace. Het linux-c7-strace-pakket is aan de ports toegevoegd, dat kan worden gebruikt om uitvoerbare Linux-bestanden te traceren in plaats van de standaard truss- en ktrace-hulpprogramma's, die sommige Linux-specifieke vlaggen en structuren nog niet kunnen decoderen. Bovendien is het linux-ltp-pakket met uitvoerbare bestanden van Linux Test Project toegevoegd en zijn compatibiliteitsproblemen met uitvoerbare bestanden gekoppeld aan nieuwe versies van glibc opgelost;
    • De implementatie van vertraagde invalidatiebewerkingen in het pmap-mechanisme is overgebracht naar het gebruik van een wachtrijverwerkingsalgoritme dat zonder vergrendelingen werkt, waardoor het mogelijk is geworden om schaalbaarheidsproblemen op te lossen bij het uitvoeren van een groot aantal parallelle unmap-bewerkingen;
    • Het mechanisme voor het blokkeren van vnode tijdens de uitvoering van systeemaanroepen van de execve()-familie is gewijzigd, waardoor het mogelijk is geworden om een ​​grotere efficiëntie te bereiken bij het gelijktijdig uitvoeren van execve() voor hetzelfde bestand (bijvoorbeeld bij het uitvoeren van assemblagebewerkingen met parallellisatie van de lancering van de compiler);
  • veiligheid
    • De bhyve-hypervisor blijft de ondersteuning verbeteren voor livemigratie van gastomgevingen van de ene host naar de andere en de Save/Restore-functionaliteit, waarmee u het gastsysteem kunt bevriezen, de status in een bestand kunt opslaan en vervolgens de uitvoering kunt hervatten.
    • Door het gebruik van de libvdsk-bibliotheek heeft bhyve ondersteuning toegevoegd voor schijfimages in het QCOW2-formaat. Vereist installatie om te werken
      speciaal aangepast versie van bhyve, die is geconverteerd om handlers voor bestandsbewerkingen te gebruiken op basis van libvdsk. Tijdens de rapportageperiode heeft libvdsk ook werkzaamheden uitgevoerd om de integratie van ondersteuning voor nieuwe formaten te vereenvoudigen, de lees- en schrijfprestaties te verbeteren en ondersteuning voor Copy-On-Write toe te voegen. Van de resterende taken wordt de integratie van libvdsk in de hoofdstructuur van bhyve opgemerkt;

    • Aan de havens is een systeem toegevoegd voor het verzamelen van verkeersinformatie
      maltrail, waarmee u valstrikken kunt maken voor kwaadaardige netwerkverzoeken (IP's en domeinen uit zwarte lijsten worden gecontroleerd) en informatie over gedetecteerde activiteit naar een gecentraliseerde server kunt sturen voor daaropvolgende blokkering of analyse van aanvalspogingen;

    • Er zijn platforms aan de poorten toegevoegd voor het detecteren van aanvallen, het analyseren van logs en het bewaken van de bestandsintegriteit Wazuho (vork van Ossec met ondersteuning voor integratie met ELK-Stack);
  • Netwerksubsysteem
    • Het ena-stuurprogramma is bijgewerkt ter ondersteuning van de tweede generatie ENAv2-netwerkadapters (Elastic Network Adapter) die worden gebruikt in de Elastic Compute Cloud (EC2)-infrastructuur om de communicatie tussen EC2-knooppunten te organiseren met snelheden tot 25 Gb/s. NETMAP-ondersteuning is toegevoegd aan het ena-stuurprogramma.
    • FreeBSD HEAD gebruikt een nieuwe MMC/SD-stack, gebaseerd op het CAM-framework, waarmee u apparaten met een SDIO-interface (Secure Digital I/O) kunt aansluiten. SDIO wordt bijvoorbeeld gebruikt in WiFi- en Bluetooth-modules voor veel borden, zoals de Raspberry Pi 3. De nieuwe stack maakt het ook mogelijk om de CAM-interface te gebruiken om SD-opdrachten te verzenden vanuit applicaties in de gebruikersruimte, waardoor het mogelijk wordt om apparaat stuurprogramma's die op gebruikersniveau werken. Er is begonnen met het maken van stuurprogramma's voor draadloze Broadcom-chips die in FullMAC-modus werken (aan de chipkant draait het een beetje op zijn eigen besturingssysteem met implementaties van zijn 802.11 draadloze stack);
    • Er wordt gewerkt aan de implementatie van NFSv4.2 (RFC-7862) voor FreeBSD. De nieuwe versie van NFS voegt ondersteuning toe voor de functies posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA-modi in lseek, en de werking van het lokaal kopiëren van delen van een bestand op de server (zonder overdracht naar de client).

      FreeBSD biedt momenteel basisondersteuning voor de bewerkingen LayoutError, IOAdvise, Allocate en Copy. Het enige dat overblijft is het implementeren van de zoekbewerking die nodig is om lseek(SEEKHOLE/SEEKDATA) te gebruiken met NFS. Ondersteuning voor NFSv4.2 is gepland voor FreeBSD 13;

  • Opslag- en bestandssystemen
    • Het project om de driver voor het FUSE-subsysteem (File system in USErspace) te herwerken, waarmee implementaties van bestandssystemen in de gebruikersruimte kunnen worden gemaakt, nadert zijn voltooiing. De oorspronkelijk meegeleverde driver is verouderd en bevat veel bugs. Als onderdeel van het drivermoderniseringsproject werd ondersteuning voor het FUSE 7.23-protocol geïmplementeerd (eerder werd versie 7.8, die 11 jaar geleden werd uitgebracht, ondersteund), werd code toegevoegd om de toegangsrechten aan de kernelzijde te controleren (“-o default_permissions”), oproepen naar VOP_MKNOD, VOP_BMAP en VOP_ADVLOCK zijn toegevoegd, de mogelijkheid om FUSE-bewerkingen te onderbreken, ondersteuning toegevoegd voor naamloze pipelines en unix-sockets in fusefs, de mogelijkheid om kqueue te gebruiken voor /dev/fuse, het bijwerken van mount-parameters mogelijk via “mount -u”, ondersteuning toegevoegd voor het exporteren van fusefs via NFS, RLIMIT_FSIZE accounting geïmplementeerd, FOPEN_KEEP_CACHE vlaggen en FUSE_ASYNC_READ toegevoegd, zijn er aanzienlijke prestatie-optimalisaties doorgevoerd en is de caching-organisatie verbeterd;
    • Ondersteuning voor de BIO_DELETE-bewerking is toegevoegd aan de swap-pagercode, waardoor u de TRIM-opdracht kunt gebruiken bij het verwijderen van blokken van SSD-schijven om hun levensduur te verlengen.
  • Hardware-ondersteuning
    • Er wordt verder gewerkt aan de implementatie van ondersteuning voor ARM64 SoC Broadcom BCM5871X met ARMv8 Cortex-A57-processors, gericht op gebruik in routers, gateways en netwerkopslag. Tijdens de rapportageperiode is de ondersteuning voor interne en externe iProc PCIe-bussen verbeterd, is ondersteuning voor BNXT Ethernet toegevoegd en wordt er gewerkt aan het gebruik van de ingebouwde crypto-engine om IPsec te versnellen. Integratie van de code in de HEAD-tak wordt in de tweede helft van het jaar verwacht;
    • Er is begonnen met de ondersteuning van de 64-bit SoC NXP LS1046A, gebaseerd op de ARMv8 Cortex-A72-processor met een geïntegreerde versnellingsengine voor netwerkpakketverwerking, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 en USB 3.0. Ondersteuning voor het basisplatform (multi-user SMP) en SATA 3.0 is al geïmplementeerd. Ondersteuning voor USB 3.0, SD/MMC en I2C is in ontwikkeling. De plannen omvatten ondersteuning voor Ethernet, GPIO en QSPI. De voltooiing van de werkzaamheden en opname in de HEAD-vestiging wordt verwacht in het 4e kwartaal van 2019.
    • Bijgewerkte mlx5en- en mlx5ib-stuurprogramma's voor Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] en ConnectX-6 [Dx] Ethernet- en InfiniBand-adapters. Ondersteuning toegevoegd voor Mellanox Socket Direct (ConnectX-6)-adapters, waardoor een doorvoersnelheid tot 200 Gb/s op de PCIe Gen 3.0-bus mogelijk is. Voor multi-core BlueField-chips is ondersteuning voor de RShim-driver toegevoegd. Het mstflint-pakket met een set diagnostische hulpprogramma's voor Mellanox-adapters is aan de ports toegevoegd;
  • Applicaties en poortsysteem
    • Componenten van de grafische stapel zijn bijgewerkt. Het drm.ko-stuurprogramma (Direct Rendering Manager) is geporteerd vanuit de Linux 5.0-kernel. Deze driver wordt als experimenteel beschouwd en is aan de ports-boom toegevoegd als graphics/drm-devel-kmod. Omdat de driver het bijgewerkte Linux KPI-framework gebruikt om compatibel te zijn met de Linux-kernel DRM API, is FreeBSD CURRENT vereist om te kunnen draaien. Het vboxvideo.ko drm-stuurprogramma voor de VirtualBox virtuele GPU is ook geporteerd vanuit Linux. Het Mesa-pakket is bijgewerkt naar versie 18.3.2 en is overgeschakeld naar het gebruik van LLVM vanaf de devel/llvm80-poort in plaats van devel/llvm60.
    • De FreeBSD-poortenboom heeft de 37000 poorten overschreden, het aantal niet-gesloten PR's blijft op 2146. Tijdens de rapportageperiode zijn er 7837 wijzigingen aangebracht door 172 ontwikkelaars. Drie nieuwe deelnemers ontvingen committerrechten. Tot de belangrijke versie-updates in de ports behoren: 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-poorten zijn geconverteerd om de vlag "USES=go" te gebruiken. Vlag "USES=cabal" toegevoegd aan de Cabal-pakketbeheerder die wordt gebruikt voor Haskell-code. De strikte stapelbeschermingsmodus is ingeschakeld. De standaard Python-versie is 3.6 in plaats van 2.7.
    • De hulpprogramma-release is voorbereid nsysctl 1.0, dat een analoog biedt aan /sbin/sysctl dat gebruik maakt van libxo voor uitvoer en biedt een uitgebreide reeks opties. Nsysctl kan worden gebruikt om de status van sysctl-waarden visueel te controleren en informatie over objecten in een gestructureerde vorm te presenteren. Uitvoer in XML-, JSON- en HTML-formaten is mogelijk;

Bron: opennet.ru

Voeg een reactie