FreeBSD Q2019 XNUMX Statusrapport

offentliggjort rapport om udviklingen af ​​FreeBSD-projektet fra april til juni 2019. Blandt ændringerne kan vi bemærke:

  • Generelle og systemiske problemstillinger
    • Kerneteamet besluttede at etablere en arbejdsgruppe for at undersøge muligheden for at flytte kildekode fra det centraliserede Subversion-kildekontrolsystem til det decentraliserede Git-system.
    • Udførte fuzz-test af FreeBSD-kernen ved hjælp af systemet syzkaller og en række identificerede fejl blev rettet. Tilføjet et lag til fuzzing test af biblioteker for kompatibilitet med et 32-bit miljø på systemer med en 64-bit kerne. Muligheden for at køre syzkaller i bhyve-baserede virtuelle maskiner er blevet implementeret. På næste trin er det planlagt at udvide dækningen af ​​systemopkaldstestning, bruge LLVM-saneringsmiddel til at tjekke kernen, bruge netdump til at gemme kernedumps under nedbrud under fuzzing-test osv.
    • Arbejdet er begyndt på at opdatere zlib-implementeringen på kerneniveau. For kerneadgang til zlib-kode blev contrib/zlib-mappen omdøbt til sys/contrib/zlib, og crc.h-headerfilen blev også omdøbt for at undgå konflikt med zlib/crc.h. Ryddede op i ældre kode, der var afhængig af zlib og inflate. Dernæst er det planlagt at give mulighed for at bygge kernen samtidigt med den gamle og nye zlib for gradvis overførsel til den nye version af funktioner, der bruger komprimering;
    • Linux-miljøemuleringsinfrastrukturen (Linuxulator) er blevet opdateret. Øget understøttelse af Linux-fejlfindingsværktøjer såsom strace-værktøjet. Linux-c7-strace-pakken er blevet tilføjet til portene, som kan bruges til at spore Linux-eksekverbare filer i stedet for standard truss- og ktrace-værktøjer, som endnu ikke kan afkode nogle Linux-specifikke flag og strukturer. Derudover er linux-ltp-pakken med Linux Test Project-eksekverbare filer blevet tilføjet, og kompatibilitetsproblemer med eksekverbare filer forbundet med nye versioner af glibc er blevet løst;
    • Implementeringen af ​​forsinkede invalideringsoperationer i pmap-mekanismen er blevet overført til brugen af ​​en købehandlingsalgoritme, der fungerer uden låse, hvilket har gjort det muligt at løse skalerbarhedsproblemer ved udførelse af et stort antal parallelle unmap-operationer;
    • Mekanismen til blokering af vnode under udførelsen af ​​systemkald af execve()-familien er blevet ændret, hvilket har gjort det muligt at opnå øget effektivitet ved samtidig afvikling af execve() for den samme fil (for eksempel ved udførelse af assembleroperationer med parallelisering af compiler-lanceringen);
  • Безопасность
    • Bhyve-hypervisoren fortsætter med at forbedre understøttelsen af ​​Live-migrering af gæstemiljøer fra én vært til en anden og Gem/Gendan-funktionaliteten, som giver dig mulighed for at fryse gæstesystemet, gemme tilstanden til en fil og derefter genoptage eksekveringen.
    • Gennem brugen af ​​libvdsk-biblioteket har bhyve tilføjet understøttelse af diskbilleder i QCOW2-formatet. Kræver installation for at virke
      specielt modificeret version af bhyve, som er blevet konverteret til at bruge filoperationshandlere baseret på libvdsk. I rapporteringsperioden har libvdsk også udført arbejde med at forenkle integrationen af ​​understøttelse af nye formater, forbedret læse- og skriveydelse samt tilføjet understøttelse af Copy-On-Write. Af de resterende opgaver bemærkes integrationen af ​​libvdsk i hovedstrukturen af ​​bhyve;

    • Der er tilføjet et system til indsamling af trafikinformation til havnene
      Maltrail, som giver dig mulighed for at oprette fælder for ondsindede netværksanmodninger (IP'er og domæner fra sortlister kontrolleres) og sende information om registreret aktivitet til en centraliseret server for efterfølgende blokering eller analyse af angrebsforsøg;

    • Platforme er blevet tilføjet til portene til at detektere angreb, analysere logfiler og overvåge filintegritet Wazuh (fork of Ossec med understøttelse af integration med ELK-Stack);
  • Netværks undersystem
    • Ena-driveren er blevet opdateret til at understøtte anden generation af ENAv2 (Elastic Network Adapter) netværksadaptere, der bruges i Elastic Compute Cloud (EC2) infrastrukturen til at organisere kommunikation mellem EC2 noder med hastigheder på op til 25 Gb/s. NETMAP-understøttelse er blevet tilføjet til ena-driveren.
    • FreeBSD HEAD vedtager en ny MMC/SD-stak, baseret på CAM-rammeværket og giver dig mulighed for at forbinde enheder med et SDIO (Secure Digital I/O)-interface. For eksempel bruges SDIO i WiFi- og Bluetooth-moduler til mange boards, såsom Raspberry Pi 3. Den nye stack gør det også muligt at bruge CAM-grænsefladen til at sende SD-kommandoer fra applikationer i brugerrummet, hvilket gør det muligt at oprette enhed drivere, der opererer på brugerniveau. Arbejdet er begyndt på at skabe drivere til Broadcom trådløse chips, der opererer i FullMAC-tilstand (på chipsiden kører den et udseende af sit eget operativsystem med implementeringer af sin 802.11 trådløse stack);
    • Der arbejdes på at implementere NFSv4.2 (RFC-7862) til FreeBSD. Den nye version af NFS tilføjer understøttelse af funktionerne posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA-tilstande i lseek og driften af ​​lokal kopiering af dele af en fil på serveren (uden overførsel til klienten).

      FreeBSD giver i øjeblikket grundlæggende support til LayoutError, IOAdvise, Allocate og Copy operationer. Det eneste, der er tilbage, er at implementere den Seek-operation, der kræves for at bruge lseek(SEEKHOLE/SEEKDATA) med NFS. NFSv4.2-understøttelse er planlagt til FreeBSD 13;

  • Opbevaring og filsystemer
    • Projektet med at omarbejde driveren til FUSE-undersystemet (Filsystem i USErspace), som gør det muligt at skabe implementeringer af filsystemer i brugerrummet, er ved at være afsluttet. Den oprindeligt leverede driver er forældet og indeholder mange fejl. Som en del af drivermoderniseringsprojektet blev understøttelse af FUSE 7.23-protokollen implementeret (tidligere version 7.8, udgivet for 11 år siden blev understøttet), kode blev tilføjet for at kontrollere adgangsrettigheder på kernesiden ("-o default_permissions"), opkald til VOP_MKNOD, VOP_BMAP og VOP_ADVLOCK blev tilføjet, muligheden for at afbryde FUSE-operationer, tilføjet understøttelse af unavngivne rør og unix-sokler i fusefs, muligheden for at bruge kqueue til /dev/fuse, tillod opdatering af monteringsparametre via "mount -u", tilføjet support til eksport af fusefs via NFS, implementeret RLIMIT_FSIZE-regnskab, tilføjet FOPEN_KEEP_CACHE-flag og FUSE_ASYNC_READ, er der foretaget betydelige ydeevneoptimeringer, og caching-organisationen er blevet forbedret;
    • Understøttelse af BIO_DELETE-operationen er blevet tilføjet til swap-personsøgerkoden, som giver dig mulighed for at bruge TRIM-kommandoen, når du fjerner blokke fra SSD-drev for at øge deres levetid.
  • Hardware support
    • Arbejdet fortsætter med at implementere understøttelse af ARM64 SoC Broadcom BCM5871X med ARMv8 Cortex-A57-processorer, rettet mod brug i routere, gateways og netværkslagring. I løbet af rapporteringsperioden blev understøttelse af interne og eksterne iProc PCIe-busser forbedret, understøttelse af BNXT Ethernet blev tilføjet, og der arbejdes på at bruge den indbyggede kryptomotor til at accelerere IPsec. Integration af koden i HEAD-grenen forventes i andet halvår af året;
    • Arbejdet er begyndt på understøttelse af 64-bit SoC NXP LS1046A baseret på ARMv8 Cortex-A72-processoren med en integreret netværkspakkebehandlingsaccelerationsmotor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 og USB 3.0. Understøttelse af basisplatformen (multi-user SMP) og SATA 3.0 er allerede blevet implementeret. Understøttelse af USB 3.0, SD/MMC og I2C er under udvikling. Planerne omfatter understøttelse af Ethernet, GPIO og QSPI. Afslutning af arbejde og inklusion i HEAD-grenen forventes i 4. kvartal 2019.
    • Opdaterede mlx5en- og mlx5ib-drivere til Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] og ConnectX-6 [Dx] Ethernet- og InfiniBand-adaptere. Tilføjet understøttelse af Mellanox Socket Direct (ConnectX-6) adaptere, der muliggør en gennemstrømning på op til 200 Gb/s på PCIe Gen 3.0-bussen. For multi-core BlueField-chips er understøttelse af RShim-driveren tilføjet. mstflint-pakken med et sæt diagnostiske hjælpeprogrammer til Mellanox-adaptere er blevet tilføjet til portene;
  • Applikationer og havnesystem
    • Grafikstakens komponenter er blevet opdateret. Drm.ko-driveren (Direct Rendering Manager) er blevet porteret fra Linux 5.0-kernen. Denne driver betragtes som eksperimentel og er blevet tilføjet til ports-træet som grafik/drm-devel-kmod. Da driveren bruger den opdaterede Linux KPI-ramme for at være kompatibel med Linux-kernens DRM API, kræves FreeBSD CURRENT for at køre. Vboxvideo.ko drm-driveren til VirtualBox virtuelle GPU er også blevet porteret fra Linux. Mesa-pakken er blevet opdateret til udgivelse 18.3.2 og skiftet til at bruge LLVM fra devel/llvm80-porten i stedet for devel/llvm60.
    • FreeBSD-ports-træet har passeret 37000 porte, antallet af ulukkede PR'er forbliver på 2146. I løbet af rapporteringsperioden blev der foretaget 7837 ændringer fra 172 udviklere. Tre nye deltagere fik forpligtelsesrettigheder. Blandt de væsentlige versionsopdateringer i portene er: 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-porte er blevet konverteret til at bruge flaget "USES=go". Føjet "USES=cabal" flag til Cabal-pakkemanageren brugt til Haskell-kode. Strenge stakbeskyttelsestilstand er aktiveret. Standardversionen af ​​Python er 3.6 i stedet for 2.7.
    • Hjælpeversionen er udarbejdet nsysctl 1.0, som tilbyder en analog til /sbin/sysctl, der bruger libxo til output og giver et udvidet sæt af muligheder. Nsysctl kan bruges til visuelt at overvåge tilstanden af ​​sysctl-værdier og præsentere information om objekter i en struktureret form. Output i XML-, JSON- og HTML-formater er muligt;

Kilde: opennet.ru

Tilføj en kommentar