Raportul de dezvoltare FreeBSD pentru al doilea trimestru din 2019

Publicat raport despre evoluția proiectului FreeBSD din aprilie până în iunie 2019. Printre modificări se numără:

  • Întrebări generale și sistemice
    • Echipa de bază a decis să înființeze un grup de lucru pentru a studia posibilitatea tranșării textelor sursă din sistemul centralizat de gestionare a textelor sursă Subversion într-un sistem descentralizat Git.
    • A fost efectuată o testare de fuzzing a nucleului FreeBSD utilizând sistemul syzkaller și au fost corectate o serie de erori descoperite în acest proces. A fost adăugată o interfață pentru testarea fuzzing a bibliotecilor pentru compatibilitatea cu mediul pe 32 de biți pe sisteme cu nucleu pe 64 de biți. A fost implementată posibilitatea de a rula syzkaller în mașini virtuale bazate pe bhyve. În etapa următoare, se preconizează extinderea acoperirii testării apelurilor de sistem, implicarea LLVM sanitizer pentru verificarea nucleului, utilizarea netdump pentru salvarea dump-urilor nucleului în timpul prăbușirii la testarea fuzzing și altele.
    • Au început lucrările de actualizare a implementării zlib la nivel de nucleu. Pentru accesul nucleului la codul zlib, directorul contrib/zlib a fost redenumit în sys/contrib/zlib, de asemenea, fișierul de antet crc.h a fost redenumit pentru a evita conflictele cu zlib/crc.h. A fost curățat codul învechit, dependent de zlib și inflate. În continuare, se preconizează asigurarea posibilității de compilare a nucleului simultan cu zlib-ul vechi și cel nou pentru tranziția graduală la noua versiune a funcțiilor care folosesc compresia;
    • Infrastructura de emulare a mediului Linux (Linuxulator) a fost actualizată. Suportul pentru instrumentele de depanare Linux, cum ar fi utilitarul strace, a fost extins. A fost adăugat pachetul linux-c7-strace în porturi, care poate fi utilizat pentru a urmări fișiere executabile Linux în locul utilitarelor standard truss și ktrace, care, momentan, nu pot decoda anumite steaguri și structuri specifice Linux. În plus, a fost adăugat pachetul linux-ltp cu fișiere executabile din Linux Test Project și au fost rezolvate problemele de compatibilitate cu fișierele executabile compilate cu versiunile noi de glibc;
    • Implementarea operațiunilor de curățare întârziată a legăturilor la paginile fizice de memorie (delayed invalidation) în mecanismul pmap a fost convertită pentru a utiliza un algoritm de procesare a cozii, care funcționează fără blocări, ceea ce a permis rezolvarea problemelor de scalabilitate în timpul efectuării unui număr mare de operațiuni unmap paralele;
    • Mecanismul de blocare a vnode-urilor a fost modificat în timpul execuției apelurilor de sistem din familia execve(), ceea ce a permis o creștere a eficienței atunci când se execută simultan execve() pentru același fișier (de exemplu, în timpul operațiunilor de construire cu compilerele rulate în paralel);
  • Securitate
    • În hipervizorul bhyve a continuat îmbunătățirea suportului pentru migrarea Live a mediilor gazdă de pe un host pe altul și a funcționalității Save/Restore, care permite înghețarea sistemului gazdă cu salvarea stării într-un fișier, urmând ca execuția să fie reluată.
    • Prin utilizarea bibliotecii libvdsk, bhyve a adăugat suport pentru imagini de disc în format QCOW2. Instalarea este necesară
      a unei versiuni modificate a bhyve, care a fost adaptată pentru a folosi manipulatoare de operații de fișier bazate pe libvdsk. În perioada raportată, s-au realizat și în libvdsk lucrări pentru simplificarea integrării suportului pentru noi formate, îmbunătățind performanța citirii și scrierii, și a fost adăugat suport pentru Copy-On-Write. Printre sarcinile rămase se numără integrarea libvdsk în componenta principală a bhyve;
    • În porturi a fost adăugată un sistem de colectare a informațiilor despre trafic
      Maltrail, care permite crearea de capcane pentru cererile de rețea malițioase (se verifică IP-urile și domeniile din listele negre) și trimiterea informațiilor despre activitatea identificată către un server centralizat pentru blocarea sau analiza ulterioară a încercărilor de atac;
    • În porturi a fost adăugată o platformă pentru detectarea atacurilor, analiza jurnalelor și monitorizarea integrității fișierelor Wazuh (fork Ossec cu suport pentru integrarea cu ELK-Stack);
  • Subsystema de rețea
    • Driverul ena a fost actualizat cu suport pentru adaptoare de rețea de a doua generație ENAv2 (Elastic Network Adapter), utilizate în infrastructura Elastic Compute Cloud (EC2) pentru organizarea comunicării între nodurile EC2 la viteze de până la 25 Gb/s. Driverul ena a fost dotat cu suport NETMAP.
    • În FreeBSD HEAD a fost integrat un nou stack MMC/SD, bazat pe framework-ul CAM, ce permite conectarea dispozitivelor cu interfața SDIO (Secure Digital I/O). De exemplu, SDIO este utilizat în modulele WiFi și Bluetooth pentru multe plăci, precum Raspberry Pi 3. Noua arhitectură permite, de asemenea, utilizarea interfeței CAM pentru a trimite comenzi SD din aplicațiile utilizatorului, oferind posibilitatea de a crea drivere care funcționează la nivel de utilizator. A început lucrul la dezvoltarea driverelor pentru cipurile wireless Broadcom care funcționează în modul FullMAC (un fel de sistem de operare executat pe cip cu implementarea propriului stack wireless 802.11);
    • Se lucrează la implementarea NFSv4.2 (RFC-7862) pentru FreeBSD. Noua versiune NFS a adăugat suport pentru funcțiile posix_fadvise, posix_fallocate, modurile SEEKHOLE/SEEKDATA în lseek, precum și operația de copiere locală a unor părți de fișier pe server (fără a le trimite clientului).

      În prezent, pentru FreeBSD există implementat suport de bază pentru operațiile LayoutError, IOAdvise, Allocate și Copy. Rămâne de implementat operația Seek, necesară pentru utilizarea lseek(SEEKHOLE/SEEKDATA) cu NFS. Suportul NFSv4.2 este planificat să fie inclus în FreeBSD 13;

  • Sisteme de stocare și sisteme de fișiere
    • Proiectul de reproiectare a driverului subsistemului FUSE (File system in USErspace), care permite crearea implementărilor sistemelor de fișiere în spațiul utilizatorului, se apropie de final. Driverul furnizat inițial este învechit și conține multe erori. În cadrul proiectului de modernizare a driverului, a fost implementat suportul pentru protocolul FUSE 7.23 (anterior era suportată versiunea 7.8, lansată cu 11 ani în urmă), s-a adăugat cod pentru verificarea drepturilor de acces pe partea nucleului („-o default_permissions”), s-au adăugat apeluri VOP_MKNOD, VOP_BMAP și VOP_ADVLOCK, a fost asigurată posibilitatea de întrerupere a operațiunilor FUSE, s-a adăugat suport pentru canale fără nume și unix-sockets în fusefs, a devenit posibilă utilizarea kqueue pentru /dev/fuse, a fost permisă actualizarea parametrilor de montare prin „mount -u”, s-a adăugat suport pentru exportul fusefs prin NFS, a fost implementat contabilizarea RLIMIT_FSIZE, s-au adăugat flag-uri FOPEN_KEEP_CACHE și FUSE_ASYNC_READ, s-au realizat optimizări semnificative ale performanței și s-a îmbunătățit organizarea caching-ului;
    • În codul de înlocuire a paginilor de memorie în spațiul swap (swap pager) a fost adăugat suport pentru operația BIO_DELETE, care permite utilizarea comenzii TRIM în procesul de ștergere a blocurilor de pe SSD-uri pentru a crește durata de viață a acestora.
  • Suport hardware
    • Continuarea lucrărilor pentru implementarea suportului pentru SoC ARM64 Broadcom BCM5871X cu procesoare ARMv8 Cortex-A57, concepute pentru a fi utilizate în routere, gateway-uri și soluții de stocare în rețea. În perioada raportată, s-a îmbunătățit suportul pentru magistralele interne și externe iProc PCIe, s-a adăugat suport pentru Ethernet BNXT, iar lucrările sunt în curs de desfășurare pentru activarea motorului criptografic încorporat pentru accelerarea IPsec. Integrarea codului în ramura HEAD este așteptată în a doua jumătate a anului;
    • Au început lucrările pentru suportul SoC NXP LS1046A pe 64 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ă (multi-user SMP) și SATA 3.0 a fost deja implementat. În dezvoltare se află suportul pentru USB 3.0, SD/MMC și I2C. Se plănuiește suportul pentru Ethernet, GPIO și QSPI. Finalizarea lucrărilor și integrarea în ramura HEAD este așteptată în al patrulea trimestru al anului 2019.
    • Drv-urile mlx5en și mlx5ib pentru adaptoarele Ethernet și InfiniBand Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] și ConnectX-6 [Dx] au fost actualizate. A fost adăugat suport pentru adaptoarele Mellanox Socket Direct (ConnectX-6), care permit obținerea unei lățimi de bandă de până la 200Gb/s pe magistrala PCIe Gen 3.0. Suportul pentru chipurile multi-core "BlueField" a fost adăugat prin driverul RShim. Pachetul mstflint, care include un set de utilitare de diagnostic pentru adaptoarele Mellanox, a fost adăugat în porturi;
  • Aplicații și sistem de porturi
    • Componentele stivei grafice au fost actualizate. Driverul drm.ko (Direct Rendering Manager) a fost portat din kernelul Linux 5.0. Acest driver este considerat experimental și a fost adăugat în arborele porturilor ca graphics/drm-devel-kmod. Deoarece driverul utilizează framework-ul actualizat Linux KPI pentru compatibilitate cu DRM API al kernelului Linux, este necesară utilizarea FreeBSD CURRENT. De asemenea, driverul drm vboxvideo.ko pentru GPU-ul virtual VirtualBox a fost portat din Linux. Pachetul Mesa a fost actualizat la versiunea 18.3.2 și a fost convertit pentru a utiliza LLVM din portul devel/llvm80 în loc de devel/llvm60.
    • Arborele porturilor FreeBSD a depășit pragul de 37000 de porturi, iar numărul PR-urilor neînchise se menține la 2146. În perioada raportată, au fost efectuate 7837 de modificări de către 172 de dezvoltatori. Trei noi participanți au obținut drepturi de comitere. Printre actualizările semnificative ale versiunilor în 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 în limbajul Go au fost convertite pentru a utiliza flagul „USES=go”. A fost adăugat flagul „USES=cabal” pentru managerul de pachete Cabal, utilizat pentru codul în Haskell. A fost activat modul strict de protecție a stivei. În mod implicit, se propune versiunea Python 3.6 în loc de 2.7.
    • A fost pregătit un release pentru utilitar nsysctl 1.0, oferind un echivalent pentru /sbin/sysctl, care utilizează libxo pentru a genera output și oferind un 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-un mod structurat. Este posibilă generarea de output în formate XML, JSON și HTML;

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster