Rapport over de ontwikkeling van FreeBSD voor het tweede kwartaal van 2019

Gepubliceerd Verslag over de ontwikkeling van het FreeBSD-project van april tot juni 2019. Opmerkelijke veranderingen zijn onder andere:

  • Algemene en systeemkwesties
    • Het kernteam heeft besloten een werkgroep op te richten om de mogelijkheid te onderzoeken om de bronbestanden van het gecentraliseerde versiebeheersysteem Subversion over te zetten naar het gedecentraliseerde systeem Git.
    • Er zijn fuzzing-tests uitgevoerd op de FreeBSD-kernel met behulp van het systeem syzkaller en een aantal daarin ontdekte fouten zijn opgelost. Er is een laag toegevoegd voor fuzzing-tests van bibliotheken om compatibiliteit met 32-bits omgevingen op 64-bits kernels te waarborgen. De mogelijkheid om syzkaller te draaien in virtuele machines op basis van bhyve is gerealiseerd. In de volgende fase is het de bedoeling het testen van systeemaanroepuitbreidingen uit te breiden, LLVM-sanitizers te gebruiken voor controle van de kernel, netdump te gebruiken voor het opslaan van kernel-dumps tijdens crashes bij fuzzing-tests, enzovoort.
    • De update van de implementatie van zlib op kernel-niveau is begonnen. Voor de toegang van de kernel tot de zlib-code is de map contrib/zlib hernoemd naar sys/contrib/zlib, en het headerbestand crc.h is ook hernoemd om conflicten met zlib/crc.h te voorkomen. Oude code die afhankelijk was van zlib en inflate is opgeruimd. Verder is het de bedoeling de mogelijkheid te bieden om de kernel gelijktijdig te bouwen met zowel de oude als de nieuwe zlib, voor een geleidelijke overstap naar de nieuwe versie van de compressiefuncties.
    • De infrastructuur voor Linux-emulatie (Linuxulator) is bijgewerkt. De ondersteuning voor Linux-debugtools, zoals de strace-tool, is uitgebreid. Het pakket linux-c7-strace is aan de ports toegevoegd, dat kan worden gebruikt voor het traceren van Linux-executable bestanden in plaats van de standaardtracing-tools truss en ktrace, die momenteel niet sommige Linux-specifieke vlaggen en structuren kunnen decoderen. Daarnaast is het pakket linux-ltp met Linux Test Project-executable bestanden toegevoegd en zijn er compatibiliteitsproblemen opgelost met bestanden die zijn samengesteld met nieuwe versies van glibc.
    • De implementatie van uitgestelde opschoning van bindingen aan fysieke geheugenspagina's (delayed invalidation) in het pmap-mechanisme is overgezet naar een lock-free wachtrijverwerkingsalgoritme, wat heeft geholpen bij het oplossen van schaalbaarheidsproblemen bij het uitvoeren van een groot aantal parallelle unmap-operaties.
    • Het mechanisme voor het blokkeren van vnode tijdens de uitvoering van systeemaanroepen uit de execve() familie is gewijzigd, wat heeft geleid tot een verbetering van de efficiĆ«ntie bij gelijktijdige uitvoering van execve() voor hetzelfde bestand (bijvoorbeeld tijdens het uitvoeren van build-operaties met parallelle compilatorstarts);
  • Beveiliging
    • In de hypervisor bhyve is de ondersteuning voor live-migratie van gastomgevingen van de ene host naar de andere en de functionaliteit Save/Restore verder verbeterd, waarmee het mogelijk is om het gastbesturingssysteem te bevriezen en de status in een bestand op te slaan, om vervolgens de uitvoering te hervatten.
    • Door het gebruik van de libvdsk-bibliotheek is de ondersteuning voor schijfimages in het QCOW2-formaat aan bhyve toegevoegd. Voor het gebruik is installatie vereist van
      een speciaal gewijzigde versie van bhyve, die is aangepast voor het gebruik van file operation handlers op basis van libvdsk. In de rapportageperiode is er in libvdsk ook gewerkt aan het vereenvoudigen van de integratie van ondersteuning voor nieuwe formaten, zijn de lees- en schrijfsnelheid verbeterd en is ondersteuning voor Copy-On-Write toegevoegd. Overblijvende taken omvatten de integratie van libvdsk in de belangrijkste samenstelling van bhyve;
    • In de poorten is een systeem voor het verzamelen van informatie over verkeer toegevoegd
      Maltrail, waarmee traps kunnen worden gecreƫerd voor kwaadaardige netwerkverzoeken (IP's en domeinen uit zwartlijsten worden gecontroleerd) en informatie over ontdekte activiteiten naar een gecentraliseerde server kan worden verzonden voor latere blokkering of analyse van aanvalspogingen;
    • In de poorten is een platform voor het detecteren van aanvallen, het analyseren van logs en het volgen van de integriteit van bestanden toegevoegd Wazuh (fork van Ossec met ondersteuning voor integratie met ELK-Stack);
  • Netwerk subsysteem
    • De ena-driver is bijgewerkt met ondersteuning voor tweede generatie netwerkadapters ENAv2 (Elastic Network Adapter), die in de infrastructuur van Elastic Compute Cloud (EC2) worden gebruikt voor communicatie tussen EC2-knooppunten met snelheden tot 25 Gb/s. De ena-driver heeft ondersteuning voor NETMAP toegevoegd.
    • In FreeBSD HEAD, a new MMC/SD stack has been accepted, based on the CAM framework, allowing the connection of devices with SDIO (Secure Digital I/O) interfaces. For example, SDIO is used in WiFi and Bluetooth modules for many boards, such as Raspberry Pi 3. The new stack also allows the use of the CAM interface to send SD commands from user space applications, enabling the creation of device drivers that operate at the user level. Work has begun on creating drivers for Broadcom wireless chips operating in FullMAC mode (similar to an operating system implementation running on the chip with its own wireless 802.11 stack);
    • Work is underway to implement NFSv4.2 (RFC-7862) for FreeBSD. The new version of NFS adds support for posix_fadvise, posix_fallocate functions, SEEKHOLE/SEEKDATA modes in lseek, and local copying of file parts on the server (without transferring to the client).

      Currently, FreeBSD has basic support implemented for LayoutError, IOAdvise, Allocate, and Copy operations. The Seek operation, necessary for using lseek (SEEKHOLE/SEEKDATA) with NFS, still needs to be implemented. NFSv4.2 support is planned to be included in FreeBSD 13;

  • Opslag- en bestandssystemen
    • The project for rewriting the FUSE (File system in USErspace) subsystem driver, which allows the creation of file system implementations in user space, is nearing completion. The originally supplied driver is outdated and contains many bugs. As part of the driver modernization project, support for FUSE protocol 7.23 has been implemented (previously version 7.8, released 11 years ago), code for checking access rights on the kernel side has been added (ā€œ-o default_permissionsā€), VOP_MKNOD, VOP_BMAP and VOP_ADVLOCK calls have been added, the ability to interrupt FUSE operations has been provided, support for unnamed pipes and Unix sockets in fusefs has been added, kqueue can now be used for /dev/fuse, updating mount parameters via ā€œmount -uā€ has been allowed, support for exporting fusefs via NFS has been implemented, RLIMIT_FSIZE accounting has been realized, FOPEN_KEEP_CACHE and FUSE_ASYNC_READ flags have been added, significant performance optimizations have been made, and caching organization has been improved;
    • Support for the BIO_DELETE operation has been added to the memory page eviction code in the swap pager, allowing the use of the TRIM command during the deletion of blocks from SSDs to extend their lifespan.
  • Ondersteuning voor hardware
    • De implementatie van ondersteuning voor de ARM64 SoC Broadcom BCM5871X met ARMv8 Cortex-A57-processors, gericht op gebruik in routers, gateways en netwerkschijven, is voortgezet. Gedurende deze verslagperiode is de ondersteuning voor interne en externe iProc PCIe-bussen verbeterd, is ondersteuning voor BNXT Ethernet toegevoegd en wordt gewerkt aan de inzet van de ingebouwde cryptomotor voor IPsec-versnelling. Integratie van de code in de HEAD-branch wordt verwacht in de tweede helft van het jaar;
    • De ontwikkeling van ondersteuning voor de 64-bits SoC NXP LS1046A op basis van de ARMv8 Cortex-A72-processor met een geĆÆntegreerde netwerkverwerkingsmotor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 en USB 3.0 is gestart. Ondersteuning voor het basisplatform (multi-user SMP) en SATA 3.0 is al gerealiseerd. Ondersteuning voor USB 3.0, SD/MMC en I2C is in ontwikkeling. Plannen bestaan om Ethernet, GPIO en QSPI te ondersteunen. De afronding van het werk en opname in de HEAD-branch wordt verwacht in het vierde kwartaal van 2019.
    • De drivers mlx5en en mlx5ib voor Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] en ConnectX-6 [Dx] Ethernet- en InfiniBand-adapters zijn bijgewerkt. Ondersteuning voor Mellanox Socket Direct-adapters (ConnectX-6), die een doorvoer tot 200Gb/s op PCIe Gen 3.0 mogelijk maken, is toegevoegd. Voor multi-core chips 'BlueField' is ondersteuning voor de RShim-driver toegevoegd. Het pakket mstflint met een set diagnostische tools voor Mellanox-adapters is toegevoegd;
  • Toepassingen en het poortsysteem
    • De componenten van de grafische stack zijn bijgewerkt. De driver drm.ko (Direct Rendering Manager) is gepoort vanuit de Linux-kernel 5.0. Deze driver wordt beschouwd als experimenteel en is toegevoegd aan de ports tree als graphics/drm-devel-kmod. Omdat de driver het bijgewerkte Linux KPI-framework gebruikt voor compatibiliteit met de DRM API van de Linux-kernel, is FreeBSD CURRENT vereist voor gebruik. Ook is de drm-driver vboxvideo.ko voor de virtuele GPU van VirtualBox vanuit Linux gepoort. Het Mesa-pakket is bijgewerkt naar versie 18.3.2 en is overgeschakeld naar het gebruik van LLVM vanuit de port devel/llvm80 in plaats van devel/llvm60.
    • De FreeBSD ports tree heeft de grens van 37.000 ports overschreden, met 2.146 openstaande PR's. Gedurende deze verslagperiode zijn er 7.837 wijzigingen door 172 ontwikkelaars aangebracht. Drie nieuwe deelnemers hebben commitrechten gekregen. Onder significante versies in de ports vallen: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Alle ports in de taal Go zijn overgeschakeld naar het gebruik van de vlag "USES=go". De vlag "USES=cabal" is toegevoegd voor de pakketbeheerder Cabal, gebruikt voor Haskell-code. Strikte stackbeschermingsmodus is ingeschakeld. Standaard wordt versie Python 3.6 aangeboden in plaats van 2.7.
    • De release van de tool is voorbereid nsysctl 1.0, die een alternatief biedt voor \/sbin\/sysctl, gebruikmakend van libxo voor output en die een uitgebreid scala aan opties biedt. Nsysctl kan worden gebruikt voor visuele monitoring van de waarden van sysctl en het presenteren van informatie over objecten in gestructureerde vorm. Output is mogelijk in de formaten XML, JSON en HTML;

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster