Raport de progres FreeBSD Q2019 XNUMX

publicat raport privind dezvoltarea proiectului FreeBSD din aprilie până în iunie 2019. Dintre modificări putem remarca:

  • Probleme generale și sistemice
    • Echipa Core a decis să înființeze un grup de lucru pentru a explora posibilitatea de a muta codul sursă din sistemul centralizat de control al sursei Subversion în sistemul descentralizat Git.
    • A efectuat testarea fuzz a nucleului FreeBSD folosind sistemul syzkaller și au fost corectate o serie de erori identificate. S-a adăugat un strat pentru testarea fuzzing a bibliotecilor pentru compatibilitatea cu un mediu pe 32 de biți pe sisteme cu un nucleu pe 64 de biți. A fost implementată capacitatea de a rula syzkaller în mașinile virtuale bazate pe bhyve. În următoarea etapă, este planificată extinderea acoperirii testării apelurilor de sistem, utilizarea dezinfectantului LLVM pentru a verifica nucleul, utilizarea netdump pentru a salva depozitele kernelului în timpul blocărilor în timpul testării fuzzing etc.
    • Au început lucrările de actualizare a implementării zlib la nivel de kernel. Pentru accesul nucleului la codul zlib, directorul contrib/zlib a fost redenumit în sys/contrib/zlib, iar fișierul antet crc.h a fost de asemenea redenumit pentru a evita conflictul cu zlib/crc.h. S-a curățat codul vechi care depindea de zlib și inflate. În continuare, este planificat să ofere capacitatea de a construi nucleul simultan cu vechiul și noul zlib pentru transferul treptat la noua versiune a funcțiilor care utilizează compresia;
    • Infrastructura de emulare a mediului Linux (Linuxulator) a fost actualizată. Suport sporit pentru instrumentele de depanare Linux, cum ar fi utilitarul strace. Pachetul linux-c7-strace a fost adăugat la porturi, care pot fi folosite pentru a urmări fișierele executabile Linux în loc de utilitarele standard truss și ktrace, care încă nu pot decoda unele steaguri și structuri specifice Linux. În plus, a fost adăugat pachetul linux-ltp cu executabile Linux Test Project și au fost rezolvate problemele de compatibilitate cu executabilele legate de noile versiuni de glibc;
    • Implementarea operațiunilor de invalidare întârziată în mecanismul pmap a fost transferată la utilizarea unui algoritm de procesare a cozilor care funcționează fără blocări, ceea ce a făcut posibilă rezolvarea problemelor de scalabilitate la efectuarea unui număr mare de operațiuni paralele de dezarmare;
    • Mecanismul de blocare a vnode-ului în timpul executării apelurilor de sistem ale familiei execve() a fost modificat, ceea ce a făcut posibilă obținerea unei eficiențe sporite la executarea simultană a execve() pentru același fișier (de exemplu, la efectuarea operațiunilor de asamblare cu paralelizare). a lansării compilatorului);
  • Безопасность
    • Hypervisorul bhyve continuă să îmbunătățească suportul pentru migrarea în direct a mediilor invitate de la o gazdă la alta și funcționalitatea Salvare/Restaurare, care vă permite să înghețați sistemul oaspete, salvând starea într-un fișier și apoi să reluați execuția.
    • Prin utilizarea bibliotecii libvdsk, bhyve a adăugat suport pentru imagini de disc în format QCOW2. Necesită instalare pentru a funcționa
      special modificate versiunea de bhyve, care a fost convertită pentru a utiliza handlere de operațiuni de fișiere bazate pe libvdsk. În perioada de raportare, libvdsk a desfășurat, de asemenea, lucrări pentru a simplifica integrarea suportului pentru noile formate, a îmbunătățit performanța de citire și scriere și a adăugat suport pentru Copy-On-Write. Dintre sarcinile rămase, se remarcă integrarea libvdsk în structura principală a bhyve;

    • La porturi a fost adăugat un sistem de colectare a informațiilor de trafic
      Maltrail, care vă permite să creați capcane pentru solicitările de rețea rău intenționate (sunt verificate IP-uri și domeniile din listele negre) și să trimiteți informații despre activitatea detectată către un server centralizat pentru blocarea sau analiza ulterioară a încercărilor de atac;

    • La porturi au fost adăugate platforme pentru detectarea atacurilor, analiza jurnalelor și monitorizarea integrității fișierelor Wazuh (furca Ossec cu suport pentru integrare cu ELK-Stiva);
  • Subsistemul de rețea
    • Driverul ena a fost actualizat pentru a suporta cea de-a doua generație de adaptoare de rețea ENAv2 (Elastic Network Adapter) utilizate în infrastructura Elastic Compute Cloud (EC2) pentru a organiza comunicația între nodurile EC2 la viteze de până la 25 Gb/s. Suportul NETMAP a fost adăugat la driverul ena.
    • FreeBSD HEAD adoptă o nouă stivă MMC/SD, bazată pe cadrul CAM și care vă permite să conectați dispozitive cu o interfață SDIO (Secure Digital I/O). De exemplu, SDIO este utilizat în modulele WiFi și Bluetooth pentru multe plăci, cum ar fi Raspberry Pi 3. Noua stivă permite, de asemenea, ca interfața CAM să fie utilizată pentru a trimite comenzi SD de la aplicații din spațiul utilizatorului, ceea ce face posibilă crearea dispozitivului drivere care operează la nivel de utilizator. Au început lucrările la crearea de drivere pentru cipurile fără fir Broadcom care funcționează în modul FullMAC (din partea cipurilor rulează un aspect al propriului sistem de operare cu implementări ale stivei sale wireless 802.11);
    • Se lucrează la implementarea NFSv4.2 (RFC-7862) pentru FreeBSD. Noua versiune de NFS adaugă suport pentru funcțiile posix_fadvise, posix_fallocate, modurile SEEKHOLE/SEEKDATA în lseek și operația de copiere locală a părților unui fișier pe server (fără transfer la client).

      FreeBSD oferă în prezent suport de bază pentru operațiunile LayoutError, IOAdvise, Allocate și Copy. Tot ce rămâne este să implementați operația Seek necesară pentru a utiliza lseek(SEEKHOLE/SEEKDATA) cu NFS. Suportul NFSv4.2 este planificat pentru FreeBSD 13;

  • Sisteme de stocare și fișiere
    • Proiectul de reelaborare a driverului pentru subsistemul FUSE (File system in USErspace), care permite crearea de implementări ale sistemelor de fișiere în spațiul utilizatorului, este aproape de finalizare. Driverul furnizat inițial este învechit și conține multe erori. Ca parte a proiectului de modernizare a driverului, a fost implementat suportul pentru protocolul FUSE 7.23 (anterior versiunea 7.8, lansată cu 11 ani în urmă a fost acceptată), a fost adăugat cod pentru a verifica drepturile de acces pe partea kernel (“-o default_permissions”), apeluri la Au fost adăugate VOP_MKNOD, VOP_BMAP și VOP_ADVLOCK, abilitatea de a întrerupe operațiunile FUSE, a adăugat suport pentru țevi fără nume și prize Unix în fusefs, abilitatea de a utiliza kqueue pentru /dev/fuse, a permis actualizarea parametrilor de montare prin „mount -u”, a adăugat suport pentru exportul de fusef-uri prin NFS, s-a implementat contabilitatea RLIMIT_FSIZE, s-au adăugat steaguri FOPEN_KEEP_CACHE și FUSE_ASYNC_READ, s-au făcut optimizări semnificative de performanță și s-a îmbunătățit organizarea caching-ului;
    • Suport pentru operațiunea BIO_DELETE a fost adăugat la codul de paginare de schimb, care vă permite să utilizați comanda TRIM atunci când eliminați blocurile de pe unitățile SSD pentru a crește durata de viață a acestora.
  • Suport hardware
    • Lucrările continuă pentru implementarea suportului pentru ARM64 SoC Broadcom BCM5871X cu procesoare ARMv8 Cortex-A57, destinat utilizării în routere, gateway-uri și stocare în rețea. În perioada de raportare, a fost îmbunătățit suportul pentru magistralele interne și externe iProc PCIe, a fost adăugat suportul pentru BNXT Ethernet și se lucrează la utilizarea motorului criptografic încorporat pentru a accelera IPsec. Integrarea codului în filiala HEAD este așteptată în a doua jumătate a anului;
    • Au început lucrările privind suportul pentru SoC NXP LS64A pe 1046 de biți bazat pe procesorul ARMv8 Cortex-A72 cu un motor integrat de accelerare a procesării pachetelor de rețea, Ethernet de 10 Gb, PCIe 3.0, SATA 3.0 și USB 3.0. Suportul pentru platforma de bază (SMP multi-utilizator) și SATA 3.0 a fost deja implementat. Suportul pentru USB 3.0, SD/MMC și I2C este în curs de dezvoltare. Planurile includ suport pentru Ethernet, GPIO și QSPI. Finalizarea lucrărilor și includerea în filiala HEAD este așteptată în trimestrul IV 4.
    • Drivere mlx5en și mlx5ib actualizate pentru adaptoarele Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] și ConnectX-6 [Dx] Ethernet și InfiniBand. S-a adăugat suport pentru adaptoarele Mellanox Socket Direct (ConnectX-6), permițând un debit de până la 200 Gb/s pe magistrala PCIe Gen 3.0. Pentru cipurile BlueField multi-core, a fost adăugat suport pentru driverul RShim. Pachetul mstflint cu un set de utilitare de diagnosticare pentru adaptoare Mellanox a fost adăugat la porturi;
  • Aplicații și sistem portuar
    • Componentele stivei grafice au fost actualizate. Driverul drm.ko (Direct Rendering Manager) a fost portat din nucleul Linux 5.0. Acest driver este considerat experimental și a fost adăugat la arborele de porturi ca graphics/drm-devel-kmod. Deoarece driverul folosește cadrul Linux KPI actualizat pentru a fi compatibil cu API-ul DRM al nucleului Linux, este necesar să ruleze FreeBSD CURRENT. Driverul vboxvideo.ko drm pentru GPU virtual VirtualBox a fost, de asemenea, portat din Linux. Pachetul Mesa a fost actualizat pentru lansarea 18.3.2 și a fost schimbat pentru a utiliza LLVM din portul devel/llvm80 în loc de devel/llvm60.
    • Arborele de porturi FreeBSD a depășit 37000 de porturi, numărul de PR-uri neînchise rămâne la 2146. În perioada de raportare, au fost făcute 7837 modificări de la 172 de dezvoltatori. Trei noi participanți au primit drepturi de committer. Printre actualizările semnificative ale versiunilor din porturi se numără: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Toate porturile Go au fost convertite pentru a utiliza indicatorul „USES=go”. S-a adăugat flag „USES=cabal” la managerul de pachete Cabal utilizat pentru codul Haskell. Modul strict de protecție a stivei este activat. Versiunea implicită de Python este 3.6 în loc de 2.7.
    • Versiunea de utilitate a fost pregătită nsysctl 1.0, care oferă un analog cu /sbin/sysctl care utilizează libxo pentru ieșire și oferirea unui set extins de opțiuni. Nsysctl poate fi utilizat pentru a monitoriza vizual starea valorilor sysctl și pentru a prezenta informații despre obiecte într-o formă structurată. Ieșirea în formatele XML, JSON și HTML este posibilă;

Sursa: opennet.ru

Adauga un comentariu