FreeBSD Q2019 XNUMX lägesrapport

publiceras rapport om utvecklingen av FreeBSD-projektet från april till juni 2019. Bland förändringarna kan vi notera:

  • Allmänna och systemiska frågor
    • Core-teamet beslutade att inrätta en arbetsgrupp för att undersöka möjligheten att flytta källkod från det centraliserade Subversion-källkontrollsystemet till det decentraliserade Git-systemet.
    • Utförde fuzz-testning av FreeBSD-kärnan med hjälp av systemet syzkaller och ett antal identifierade fel korrigerades. Lade till ett lager för otydlig testning av bibliotek för kompatibilitet med en 32-bitars miljö på system med en 64-bitars kärna. Möjligheten att köra syzkaller i bhyve-baserade virtuella maskiner har implementerats. I nästa steg är det planerat att utöka täckningen av systemanropstestning, använda LLVM sanitizer för att kontrollera kärnan, använda netdump för att spara kärndumpar under krascher under fuzzing testning, etc.
    • Arbetet med att uppdatera zlib-implementeringen på kärnnivå har påbörjats. För kärnåtkomst till zlib-kod döptes katalogen contrib/zlib om till sys/contrib/zlib, och huvudfilen crc.h bytte namn för att undvika konflikt med zlib/crc.h. Rensade upp äldre kod som berodde på zlib och inflate. Därefter är det planerat att ge möjligheten att bygga kärnan samtidigt med den gamla och nya zlib för gradvis överföring till den nya versionen av funktioner som använder komprimering;
    • Linux-miljöemuleringsinfrastrukturen (Linuxulator) har uppdaterats. Ökat stöd för Linux-felsökningsverktyg som strace-verktyget. Paketet linux-c7-strace har lagts till i portarna, som kan användas för att spåra körbara Linux-filer istället för standardverktygen truss och ktrace, som ännu inte kan avkoda vissa Linux-specifika flaggor och strukturer. Dessutom har linux-ltp-paketet med Linux Test Project körbara filer lagts till och kompatibilitetsproblem med körbara filer kopplade till nya versioner av glibc har lösts;
    • Implementeringen av fördröjda invalideringsoperationer i pmap-mekanismen har överförts till användningen av en köbehandlingsalgoritm som fungerar utan lås, vilket har gjort det möjligt att lösa skalbarhetsproblem när man utför ett stort antal parallella unmap-operationer;
    • Mekanismen för att blockera vnode under exekvering av systemanrop i execve()-familjen har ändrats, vilket har gjort det möjligt att uppnå ökad effektivitet när execve() samtidigt körs för samma fil (till exempel när man utför monteringsoperationer med parallellisering av kompilatorns lansering);
  • Безопасность
    • Bhyve-hypervisorn fortsätter att förbättra stödet för Live-migrering av gästmiljöer från en värd till en annan och funktionen Spara/Återställ, som låter dig frysa gästsystemet, spara tillståndet i en fil och sedan återuppta körningen.
    • Genom användningen av libvdsk-biblioteket har bhyve lagt till stöd för diskavbildningar i QCOW2-formatet. Installation krävs för att fungera
      speciellt modifierad version av bhyve, som har konverterats för att använda filhanteringshanterare baserade på libvdsk. Under rapportperioden har libvdsk även genomfört ett arbete med att förenkla integrationen av stöd för nya format, förbättrad läs- och skrivprestanda samt lagt till stöd för Copy-On-Write. Av de återstående uppgifterna noteras integrationen av libvdsk i huvudstrukturen för bhyve;

    • Ett system för insamling av trafikinformation har lagts till i hamnarna
      Maltrail, som låter dig skapa fällor för skadliga nätverksbegäranden (IP:er och domäner från svarta listor kontrolleras) och skicka information om upptäckt aktivitet till en centraliserad server för efterföljande blockering eller analys av attackförsök;

    • Plattformar har lagts till i portarna för att upptäcka attacker, analysera loggar och övervaka filintegritet Wazuh (fork of Ossec med stöd för integration med ELK-Stack);
  • Nätverksdelsystem
    • Ena-drivrutinen har uppdaterats för att stödja den andra generationen av ENAv2 (Elastic Network Adapter) nätverkskort som används i Elastic Compute Cloud (EC2)-infrastrukturen för att organisera kommunikation mellan EC2-noder med hastigheter upp till 25 Gb/s. NETMAP-stöd har lagts till i ena-drivrutinen.
    • FreeBSD HEAD antar en ny MMC/SD-stack, baserad på CAM-ramverket och låter dig ansluta enheter med ett SDIO-gränssnitt (Secure Digital I/O). SDIO används till exempel i WiFi- och Bluetooth-moduler för många kort, som Raspberry Pi 3. Den nya stacken gör det också möjligt att använda CAM-gränssnittet för att skicka SD-kommandon från applikationer i användarutrymmet, vilket gör det möjligt att skapa enhet drivrutiner som fungerar på användarnivå. Arbetet har påbörjats med att skapa drivrutiner för Broadcom trådlösa chips som fungerar i FullMAC-läge (på chipsidan kör den ett sken av sitt eget operativsystem med implementeringar av sin 802.11 trådlösa stack);
    • Arbete pågår för att implementera NFSv4.2 (RFC-7862) för FreeBSD. Den nya versionen av NFS lägger till stöd för funktionerna posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA-lägen i lseek och driften av lokal kopiering av delar av en fil på servern (utan överföring till klienten).

      FreeBSD tillhandahåller för närvarande grundläggande stöd för LayoutError, IOAdvise, Allocate och Copy operationer. Allt som återstår är att implementera Seek-operationen som krävs för att använda lseek(SEEKHOLE/SEEKDATA) med NFS. NFSv4.2-stöd är planerat för FreeBSD 13;

  • Lagring och filsystem
    • Projektet att omarbeta drivrutinen för FUSE (File system in USErspace) subsystem, som gör det möjligt att skapa implementeringar av filsystem i användarutrymmet, närmar sig slutförandet. Den ursprungligen medföljande drivrutinen är föråldrad och innehåller många buggar. Som en del av drivrutinsmoderniseringsprojektet implementerades stöd för FUSE 7.23-protokollet (tidigare version 7.8, som släpptes för 11 år sedan stöddes), kod lades till för att kontrollera åtkomsträttigheter på kärnan (“-o default_permissions”), anrop till VOP_MKNOD, VOP_BMAP och VOP_ADVLOCK lades till, möjligheten att avbryta FUSE-operationer, lagt till stöd för namnlösa rör och unix-sockets i fusefs, möjligheten att använda kqueue för /dev/fuse, tillåtit uppdatering av monteringsparametrar via "mount -u", lagt till stöd för export av fusefs via NFS, implementerat RLIMIT_FSIZE-redovisning, lagt till FOPEN_KEEP_CACHE-flaggor och FUSE_ASYNC_READ, betydande prestandaoptimeringar har gjorts och cachningsorganisationen har förbättrats;
    • Stöd för BIO_DELETE-operationen har lagts till i swap-personsökarkoden, vilket gör att du kan använda TRIM-kommandot när du tar bort block från SSD-enheter för att öka deras livslängd.
  • Hårdvarustöd
    • Arbetet fortsätter med att implementera stöd för ARM64 SoC Broadcom BCM5871X med ARMv8 Cortex-A57-processorer, inriktade på användning i routrar, gateways och nätverkslagring. Under rapportperioden har stödet för interna och externa iProc PCIe-bussar förbättrats, stöd för BNXT Ethernet har lagts till och arbete pågår med att använda den inbyggda kryptomotorn för att accelerera IPsec. Integrering av koden i HEAD-grenen förväntas under andra halvan av året;
    • Arbetet har påbörjats med stöd för 64-bitars SoC NXP LS1046A baserad på ARMv8 Cortex-A72-processorn med en integrerad nätverkspaketbearbetningsaccelerationsmotor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 och USB 3.0. Stöd för basplattformen (multi-user SMP) och SATA 3.0 har redan implementerats. Stöd för USB 3.0, SD/MMC och I2C är under utveckling. Planerna inkluderar stöd för Ethernet, GPIO och QSPI. Slutförande av arbete och inkludering i HEAD-grenen förväntas under 4:e kvartalet 2019.
    • Uppdaterade drivrutiner för mlx5en och mlx5ib för Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] och ConnectX-6 [Dx] Ethernet- och InfiniBand-adaptrar. Tillagt stöd för Mellanox Socket Direct (ConnectX-6)-adaptrar, vilket möjliggör en genomströmning på upp till 200 Gb/s på PCIe Gen 3.0-bussen. För flerkärniga BlueField-chips har stöd för RShim-drivrutinen lagts till. Paketet mstflint med en uppsättning diagnostiska verktyg för Mellanox-adaptrar har lagts till i portarna;
  • Applikationer och hamnsystem
    • Grafikstackkomponenter har uppdaterats. Drm.ko-drivrutinen (Direct Rendering Manager) har porterats från Linux 5.0-kärnan. Denna drivrutin anses vara experimentell och har lagts till i portträdet som graphics/drm-devel-kmod. Eftersom drivrutinen använder det uppdaterade Linux KPI-ramverket för att vara kompatibelt med Linux-kärnan DRM API, krävs FreeBSD CURRENT för att köras. Drm-drivrutinen vboxvideo.ko för VirtualBox virtuella GPU har också porterats från Linux. Mesa-paketet har uppdaterats till release 18.3.2 och bytte till att använda LLVM från devel/llvm80-porten istället för devel/llvm60.
    • FreeBSD-portsträdet har passerat 37000 2146 portar, antalet ostängda PR:er kvarstår på 7837. Under rapporteringsperioden gjordes 172 ändringar från 5.7 utvecklare. Tre nya deltagare fick committingrättigheter. Bland de betydande versionsuppdateringarna i portarna finns: MySQL 3.6, Python 2.5, Ruby 4.8, Samba 1.0, Julia 68.0, Firefox 75.0.3770.100, Chromium 3.6. Alla Go-portar har konverterats för att använda flaggan "USES=go". Lade till "USES=cabal"-flaggan till Cabal-pakethanteraren som används för Haskell-kod. Strikt stackskyddsläge är aktiverat. Standardversionen av Python är 2.7 istället för XNUMX.
    • Verktygsversionen har förberetts nsysctl 1.0, som erbjuder en analog till /sbin/sysctl som använder libxo för utdata och tillhandahålla en utökad uppsättning alternativ. Nsysctl kan användas för att visuellt övervaka tillståndet för sysctl-värden och presentera information om objekt i en strukturerad form. Utdata i XML-, JSON- och HTML-format är möjligt;

Källa: opennet.ru

Lägg en kommentar