FreeBSD Q2019 XNUMX fremdriftsrapport

publisert rapport om utviklingen av FreeBSD-prosjektet fra april til juni 2019. Blant endringene kan vi merke oss:

  • Generelle og systemiske problemer
    • Kjerneteamet bestemte seg for å etablere en arbeidsgruppe for å utforske muligheten for å flytte kildekoden fra det sentraliserte Subversion-kildekontrollsystemet til det desentraliserte Git-systemet.
    • Gjennomførte fuzz-testing av FreeBSD-kjernen ved å bruke systemet syzkaller og en rekke identifiserte feil ble rettet. Lagt til et lag for uklar testing av biblioteker for kompatibilitet med et 32-bits miljø på systemer med en 64-bit kjerne. Muligheten til å kjøre syzkaller i bhyve-baserte virtuelle maskiner er implementert. På neste trinn planlegges det å utvide dekningen av systemanropstesting, bruke LLVM-renser for å sjekke kjernen, bruke netdump for å lagre kjernedumper under krasj under fuzzing-testing, etc.
    • Arbeidet har begynt med å oppdatere zlib-implementeringen på kjernenivå. For kjernetilgang til zlib-kode ble contrib/zlib-katalogen omdøpt til sys/contrib/zlib, og crc.h-headerfilen ble også omdøpt for å unngå konflikt med zlib/crc.h. Ryddet opp i eldre kode som var avhengig av zlib og inflate. Deretter er det planlagt å gi muligheten til å bygge kjernen samtidig med den gamle og nye zlib for gradvis overføring til den nye versjonen av funksjoner som bruker komprimering;
    • Linux-miljøemuleringsinfrastrukturen (Linuxulator) har blitt oppdatert. Økt støtte for Linux-feilsøkingsverktøy som strace-verktøyet. Linux-c7-strace-pakken er lagt til portene, som kan brukes til å spore Linux-kjørbare filer i stedet for standard truss- og ktrace-verktøy, som ennå ikke kan dekode noen Linux-spesifikke flagg og strukturer. I tillegg er linux-ltp-pakken med Linux Test Project kjørbare filer lagt til og kompatibilitetsproblemer med kjørbare filer knyttet til nye versjoner av glibc er løst;
    • Implementeringen av forsinkede invalideringsoperasjoner i pmap-mekanismen har blitt overført til bruk av en købehandlingsalgoritme som fungerer uten låser, noe som har gjort det mulig å løse skalerbarhetsproblemer når man utfører et stort antall parallelle unmap-operasjoner;
    • Mekanismen for blokkering av vnode under kjøring av systemanrop av execve()-familien er endret, noe som har gjort det mulig å oppnå økt effektivitet ved samtidig kjøring av execve() for samme fil (for eksempel når man utfører monteringsoperasjoner med parallellisering) av kompilatorlanseringen);
  • Безопасность
    • Bhyve-hypervisoren fortsetter å forbedre støtten for Live-migrering av gjestemiljøer fra en vert til en annen og Lagre/Gjenopprett-funksjonaliteten, som lar deg fryse gjestesystemet, lagre tilstanden til en fil og deretter gjenoppta kjøringen.
    • Gjennom bruk av libvdsk-biblioteket har bhyve lagt til støtte for diskbilder i QCOW2-formatet. Krever installasjon for å fungere
      spesielt modifisert versjon av bhyve, som har blitt konvertert til å bruke filoperasjonsbehandlere basert på libvdsk. I løpet av rapporteringsperioden har libvdsk også utført arbeid for å forenkle integrasjonen av støtte for nye formater, forbedret lese- og skriveytelse, og lagt til støtte for Copy-On-Write. Av de resterende oppgavene er integreringen av libvdsk i hovedstrukturen til bhyve notert;

    • Et system for innsamling av trafikkinformasjon er lagt til havnene
      Maltrail, som lar deg lage feller for ondsinnede nettverksforespørsler (IP-er og domener fra svartelister sjekkes) og sende informasjon om oppdaget aktivitet til en sentralisert server for påfølgende blokkering eller analyse av angrepsforsøk;

    • Plattformer er lagt til portene for å oppdage angrep, analysere logger og overvåke filintegritet Wazuh (fork of Ossec med støtte for integrasjon med ELK-Stack);
  • Nettverksundersystem
    • Ena-driveren er oppdatert for å støtte andre generasjon ENAv2 (Elastic Network Adapter) nettverkskort som brukes i Elastic Compute Cloud (EC2)-infrastrukturen for å organisere kommunikasjon mellom EC2-noder med hastigheter på opptil 25 Gb/s. NETMAP-støtte er lagt til ena-driveren.
    • FreeBSD HEAD tar i bruk en ny MMC/SD-stakk, basert på CAM-rammeverket og lar deg koble til enheter med et SDIO-grensesnitt (Secure Digital I/O). For eksempel brukes SDIO i WiFi- og Bluetooth-moduler for mange kort, som Raspberry Pi 3. Den nye stabelen gjør det også mulig å bruke CAM-grensesnittet til å sende SD-kommandoer fra applikasjoner i brukerrommet, noe som gjør det mulig å lage enhet drivere som opererer på brukernivå. Arbeidet har begynt med å lage drivere for Broadcom trådløse brikker som opererer i FullMAC-modus (på brikkesiden kjører den et utseende av sitt eget operativsystem med implementeringer av sin 802.11 trådløse stack);
    • Det pågår arbeid med å implementere NFSv4.2 (RFC-7862) for FreeBSD. Den nye versjonen av NFS legger til støtte for funksjonene posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA-moduser i lseek, og driften av lokal kopiering av deler av en fil på serveren (uten overføring til klienten).

      FreeBSD gir for øyeblikket grunnleggende støtte for LayoutError, IOAdvise, Allocate og Copy operasjoner. Alt som gjenstår er å implementere Seek-operasjonen som kreves for å bruke lseek(SEEKHOLE/SEEKDATA) med NFS. NFSv4.2-støtte er planlagt for FreeBSD 13;

  • Lagring og filsystemer
    • Prosjektet med å omarbeide driveren for FUSE (Filsystem i USErspace) delsystemet, som gjør det mulig å lage implementeringer av filsystemer i brukerområdet, nærmer seg fullføring. Den opprinnelige medfølgende driveren er utdatert og inneholder mange feil. Som en del av drivermoderniseringsprosjektet ble støtte for FUSE 7.23-protokollen implementert (tidligere versjon 7.8, utgitt for 11 år siden ble støttet), kode ble lagt til for å sjekke tilgangsrettigheter på kjernesiden ("-o default_permissions"), kaller til VOP_MKNOD, VOP_BMAP og VOP_ADVLOCK ble lagt til, muligheten til å avbryte FUSE-operasjoner, lagt til støtte for navngitte rør og unix-sokler i fusefs, muligheten til å bruke kqueue for /dev/fuse, tillot oppdatering av monteringsparametere via "mount -u", lagt til støtte for eksport av fusefs via NFS, implementert RLIMIT_FSIZE-regnskap, lagt til FOPEN_KEEP_CACHE-flagg og FUSE_ASYNC_READ, betydelige ytelsesoptimaliseringer er gjort og caching-organisasjonen er forbedret;
    • Støtte for BIO_DELETE-operasjonen er lagt til swap-personsøkerkoden, som lar deg bruke TRIM-kommandoen når du fjerner blokker fra SSD-stasjoner for å øke levetiden.
  • Maskinvarestøtte
    • Arbeidet fortsetter med å implementere støtte for ARM64 SoC Broadcom BCM5871X med ARMv8 Cortex-A57-prosessorer, rettet mot bruk i rutere, gatewayer og nettverkslagring. I løpet av rapporteringsperioden ble støtte for interne og eksterne iProc PCIe-busser forbedret, støtte for BNXT Ethernet ble lagt til, og det arbeides med å bruke den innebygde kryptomotoren for å akselerere IPsec. Integrasjon av koden i HEAD-grenen forventes i andre halvdel av året;
    • Arbeidet har begynt med støtte for 64-bits SoC NXP LS1046A basert på ARMv8 Cortex-A72-prosessoren med en integrert nettverkspakkebehandlingsakselerasjonsmotor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 og USB 3.0. Støtte for basisplattformen (multi-user SMP) og SATA 3.0 er allerede implementert. Støtte for USB 3.0, SD/MMC og I2C er under utvikling. Planene inkluderer støtte for Ethernet, GPIO og QSPI. Gjennomføring av arbeid og inkludering i HEAD-grenen forventes i 4. kvartal 2019.
    • Oppdaterte mlx5en- og mlx5ib-drivere for Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] og ConnectX-6 [Dx] Ethernet- og InfiniBand-adaptere. Lagt til støtte for Mellanox Socket Direct (ConnectX-6)-adaptere, noe som gir mulighet for gjennomstrømning på opptil 200 Gb/s på PCIe Gen 3.0-bussen. For flerkjernede BlueField-brikker er støtte for RShim-driveren lagt til. mstflint-pakken med et sett med diagnoseverktøy for Mellanox-adaptere er lagt til portene;
  • Applikasjoner og havnesystem
    • Grafikkstabelkomponenter er oppdatert. Drm.ko-driveren (Direct Rendering Manager) har blitt portert fra Linux 5.0-kjernen. Denne driveren anses som eksperimentell og har blitt lagt til porttreet som grafikk/drm-devel-kmod. Siden driveren bruker det oppdaterte Linux KPI-rammeverket for å være kompatibelt med Linux-kjernens DRM API, kreves FreeBSD CURRENT for å kjøre. Drm-driveren vboxvideo.ko for VirtualBox virtuelle GPU har også blitt portert fra Linux. Mesa-pakken har blitt oppdatert til utgivelse 18.3.2 og byttet til å bruke LLVM fra devel/llvm80-porten i stedet for devel/llvm60.
    • FreeBSD-porttreet har passert 37000 2146 porter, antallet ulukkede PR-er forblir på 7837. I løpet av rapporteringsperioden ble det gjort 172 endringer fra 5.7 utviklere. Tre nye deltakere fikk forpliktende rettigheter. Blant de betydelige versjonsoppdateringene i portene er: 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-porter er konvertert til å bruke "USES=go"-flagget. Lagt til "USES=cabal"-flagget til Cabal-pakkebehandleren brukt for Haskell-kode. Strengt stabelbeskyttelsesmodus er aktivert. Standard Python-versjon er 2.7 i stedet for XNUMX.
    • Verktøyutgivelsen er utarbeidet nsysctl 1.0, som tilbyr en analog til /sbin/sysctl som bruker libxo for utgang og gir et utvidet sett med alternativer. Nsysctl kan brukes til å visuelt overvåke tilstanden til sysctl-verdier og presentere informasjon om objekter i en strukturert form. Utdata i XML-, JSON- og HTML-formater er mulig;

Kilde: opennet.ru

Legg til en kommentar