FreeBSD Q2019 XNUMX Vorderingsverslag

gepubliseer verslag oor die ontwikkeling van die FreeBSD-projek van April tot Junie 2019. Onder die veranderinge kan ons let op:

  • Algemene en stelselvrae
    • Die kernspan het besluit om 'n werkgroep te stig om die moontlikheid te ondersoek om bronkode van die gesentraliseerde Subversion-bronbeheerstelsel na die gedesentraliseerde Git-stelsel te verskuif.
    • Het fuzz-toetsing van die FreeBSD-kern uitgevoer met behulp van die stelsel syzkaller en 'n aantal geïdentifiseerde foute is reggestel. Bygevoeg 'n laag vir fuzzing toetsing van biblioteke vir verenigbaarheid met 'n 32-bis omgewing op stelsels met 'n 64-bis kern. Die vermoë om syzkaller in bhyve-gebaseerde virtuele masjiene te laat loop, is geïmplementeer. In die volgende stadium word beplan om die dekking van stelseloproeptoetsing uit te brei, LLVM-reiniger te gebruik om die kern na te gaan, netdump te gebruik om kernstortings te stoor tydens ineenstortings tydens fuzzing-toetsing, ens.
    • Werk het begin om die zlib-implementering op kernvlak by te werk. Vir kerntoegang tot zlib-kode, is die contrib/zlib-gids hernoem na sys/contrib/zlib, en die crc.h-koplêer is ook hernoem om konflik met zlib/crc.h te vermy. Skoongemaak legacy kode wat afhang van zlib en inflate. Vervolgens word beplan om die vermoë te bied om die kern gelyktydig met die ou en nuwe zlib te bou vir die geleidelike oordrag na die nuwe weergawe van funksies wat kompressie gebruik;
    • Die Linux-omgewing-emulasie-infrastruktuur (Linuxulator) is opgedateer. Verhoogde ondersteuning vir Linux-ontfoutingsnutsgoed soos die strace-hulpmiddel. Die linux-c7-strace-pakket is by die poorte gevoeg, wat gebruik kan word om Linux-uitvoerbare lêers op te spoor in plaas van die standaard truss- en ktrace-nutsprogramme, wat nog nie sommige Linux-spesifieke vlae en strukture kan dekodeer nie. Boonop is die linux-ltp-pakket met Linux-toetsprojek-uitvoerbares bygevoeg en versoenbaarheidskwessies met uitvoerbares gekoppel aan nuwe weergawes van glibc is opgelos;
    • Die implementering van vertraagde ongeldigverklaring-operasies in die pmap-meganisme is oorgedra na die gebruik van 'n tou-verwerkingsalgoritme wat sonder slotte werk, wat dit moontlik gemaak het om skaalbaarheidsprobleme op te los wanneer 'n groot aantal parallelle unmap-bewerkings uitgevoer word;
    • Die meganisme vir die blokkering van vnode tydens die uitvoering van stelseloproepe van die execve()-familie is verander, wat dit moontlik gemaak het om verhoogde doeltreffendheid te bereik wanneer execve() gelyktydig vir dieselfde lêer uitgevoer word (byvoorbeeld wanneer samestellingsoperasies met parallelisering uitgevoer word. van die samesteller bekendstelling);
  • sekuriteit
    • Die bhyve-hypervisor gaan voort om ondersteuning te verbeter vir regstreekse migrasie van gasomgewings van een gasheer na 'n ander en die Stoor/Herstel-funksie, wat jou toelaat om die gasstelsel te vries, die toestand in 'n lêer te stoor en dan die uitvoering te hervat.
    • Deur die gebruik van die libvdsk-biblioteek het bhyve ondersteuning vir skyfbeelde in die QCOW2-formaat bygevoeg. Vereis installasie om te werk
      spesiaal gewysig weergawe van bhyve, wat omgeskakel is om lêerbewerking-hanteerders gebaseer op libvdsk te gebruik. Gedurende die verslagtydperk het libvdsk ook werk gedoen om die integrasie van ondersteuning vir nuwe formate, verbeterde lees- en skryfwerkverrigting te vereenvoudig, en bygevoeg ondersteuning vir Copy-On-Write. Van die oorblywende take word kennis geneem van die integrasie van libvdsk in die hoofstruktuur van bhyve;

    • 'n Stelsel vir die insameling van verkeersinligting is by die hawens gevoeg
      Maltrail, wat jou toelaat om lokvalle vir kwaadwillige netwerkversoeke te skep (IP's en domeine van swartlyste word nagegaan) en inligting oor bespeurde aktiwiteit na 'n gesentraliseerde bediener te stuur vir daaropvolgende blokkering of ontleding van aanvalpogings;

    • Platforms is by die poorte gevoeg vir die opsporing van aanvalle, ontleding van logs en monitering van lêerintegriteit Wazuh (vurk van Ossec met ondersteuning vir integrasie met ELK-stapel);
  • Netwerk substelsel
    • Die ena-bestuurder is opgedateer om die tweede generasie ENAv2 (Elastic Network Adapter) netwerkadapters te ondersteun wat in die Elastic Compute Cloud (EC2) infrastruktuur gebruik word om kommunikasie tussen EC2 nodusse te organiseer teen snelhede van tot 25 Gb/s. NETMAP-ondersteuning is by die ena-bestuurder gevoeg.
    • FreeBSD HEAD neem 'n nuwe MMC/SD-stapel aan, gebaseer op die CAM-raamwerk en laat jou toe om toestelle met 'n SDIO (Secure Digital I/O)-koppelvlak te koppel. SDIO word byvoorbeeld gebruik in WiFi- en Bluetooth-modules vir baie borde, soos die Raspberry Pi 3. Die nuwe stapel laat ook toe dat die CAM-koppelvlak gebruik kan word om SD-opdragte vanaf toepassings in gebruikersruimte te stuur, wat dit moontlik maak om toestel te skep drywers wat op gebruikersvlak werk. Werk het begin om drywers te skep vir Broadcom draadlose skyfies wat in FullMAC-modus werk (aan die skyfiekant het dit 'n skyn van sy eie bedryfstelsel met implementering van sy 802.11 draadlose stapel);
    • Werk is aan die gang om NFSv4.2 (RFC-7862) vir FreeBSD te implementeer. Die nuwe weergawe van NFS voeg ondersteuning by vir die posix_fadvise, posix_fallocate-funksies, SEEKHOLE/SEEKDATA-modusse in lseek, en die werking van plaaslike kopiëring van dele van 'n lêer op die bediener (sonder oordrag na die kliënt).

      FreeBSD bied tans basiese ondersteuning vir die LayoutError, IOAdvise, Allocate en Copy bedrywighede. Al wat oorbly, is om die Seek-operasie te implementeer wat nodig is om lseek (SEEKHOLE/SEEKDATA) met NFS te gebruik. NFSv4.2-ondersteuning word vir FreeBSD 13 beplan;

  • Berging en lêerstelsels
    • Die projek om die drywer vir die FUSE (Lêerstelsel in USErspace) substelsel te herwerk, wat die skep van implementering van lêerstelsels in gebruikersruimte moontlik maak, nader voltooiing. Die oorspronklike drywer is verouderd en bevat baie foute. As deel van die bestuurder-moderniseringsprojek is ondersteuning vir die FUSE 7.23-protokol geïmplementeer (voorheen weergawe 7.8, wat 11 jaar gelede vrygestel is, is ondersteun), kode is bygevoeg om toegangsregte aan die kernkant na te gaan (“-o default_permissions”), oproepe na VOP_MKNOD, VOP_BMAP en VOP_ADVLOCK is bygevoeg, die vermoë om FUSE-operasies te onderbreek, bygevoeg ondersteuning vir naamlose pype en unix-sokke in fusefs, die vermoë om kqueue vir /dev/fuse te gebruik, die opdatering van bergparameters via "mount -u" toegelaat, bygevoeg ondersteuning vir die uitvoer van fusefs via NFS, geïmplementeer RLIMIT_FSIZE-rekeningkunde, bygevoeg FOPEN_KEEP_CACHE-vlae en FUSE_ASYNC_READ, beduidende prestasie-optimalisasies is gemaak en kasorganisasie is verbeter;
    • Ondersteuning vir die BIO_DELETE-bewerking is by die ruil-pagerkode gevoeg, wat jou toelaat om die TRIM-opdrag te gebruik wanneer blokke van SSD-aandrywers verwyder word om hul lewensduur te verleng.
  • Hardeware ondersteuning
    • Werk gaan voort om ondersteuning vir ARM64 SoC Broadcom BCM5871X met ARMv8 Cortex-A57 verwerkers te implementeer, gemik op gebruik in routers, poorte en netwerkberging. Gedurende die verslagtydperk is ondersteuning vir interne en eksterne iProc PCIe-busse verbeter, ondersteuning vir BNXT Ethernet is bygevoeg, en werk is aan die gang om die ingeboude kripto-enjin te gebruik om IPsec te versnel. Integrasie van die kode in die HOOF-tak word in die tweede helfte van die jaar verwag;
    • Werk het begin aan ondersteuning vir die 64-bis SoC NXP LS1046A gebaseer op die ARMv8 Cortex-A72 verwerker met 'n geïntegreerde netwerk pakkie verwerking versnelling enjin, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 en USB 3.0. Ondersteuning vir die basisplatform (multi-gebruiker SMP) en SATA 3.0 is reeds geïmplementeer. Ondersteuning vir USB 3.0, SD/MMC en I2C is in ontwikkeling. Die planne sluit ondersteuning vir Ethernet, GPIO en QSPI in. Voltooiing van werk en insluiting in die HOOF-tak word in die 4de kwartaal van 2019 verwag.
    • Opgedateerde mlx5en- en mlx5ib-bestuurders vir Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] en ConnectX-6 [Dx] Ethernet- en InfiniBand-adapters. Bygevoeg ondersteuning vir Mellanox Socket Direct (ConnectX-6) adapters, wat voorsiening maak vir deurset van tot 200 Gb/s op die PCIe Gen 3.0 bus. Vir meerkern BlueField-skyfies is ondersteuning vir die RShim-bestuurder bygevoeg. Die mstflint-pakket met 'n stel diagnostiese nutsprogramme vir Mellanox-adapters is by die poorte gevoeg;
  • Toepassings en hawens stelsel
    • Grafiese stapelkomponente is opgedateer. Die drm.ko (Direct Rendering Manager) bestuurder is oorgedra vanaf die Linux 5.0 kern. Hierdie drywer word as eksperimenteel beskou en is by die ports-boom gevoeg as graphics/drm-devel-kmod. Aangesien die bestuurder die opgedateerde Linux KPI-raamwerk gebruik om versoenbaar te wees met die Linux-kern DRM API, is FreeBSD CURRENT nodig om te loop. Die vboxvideo.ko drm-bestuurder vir die VirtualBox virtuele GPU is ook vanaf Linux oorgedra. Mesa-pakket is opgedateer na vrystelling 18.3.2 en oorgeskakel om LLVM te gebruik vanaf die devel/llvm80-poort in plaas van devel/llvm60.
    • Die FreeBSD-poortboom het 37000 2146 poorte verbygesteek, die aantal ongeslote PR's bly op 7837. Gedurende die verslagtydperk is 172 veranderinge van 5.7 ontwikkelaars aangebring. Drie nuwe deelnemers het committer-regte ontvang. Onder die beduidende weergawe-opdaterings in die poorte is: MySQL 3.6, Python 2.5, Ruby 4.8, Samba 1.0, Julia 68.0, Firefox 75.0.3770.100, Chromium 3.6. Alle Go-poorte is omgeskakel om die "USES=go"-vlag te gebruik. Het "USES=cabal"-vlag bygevoeg by die Cabal-pakketbestuurder wat vir Haskell-kode gebruik word. Streng stapelbeskermingsmodus is geaktiveer. Die standaard Python-weergawe is 2.7 in plaas van XNUMX.
    • Die nutsvrystelling is voorberei nsysctl 1.0, wat 'n analoog aan /sbin/sysctl bied wat gebruik libxo vir uitset en die verskaffing van 'n uitgebreide stel opsies. Nsysctl kan gebruik word om die toestand van sysctl-waardes visueel te monitor en inligting oor voorwerpe in 'n gestruktureerde vorm aan te bied. Uitvoer in XML-, JSON- en HTML-formate is moontlik;

Bron: opennet.ru

Voeg 'n opmerking