Správa o pokroku FreeBSD Q2019 XNUMX

publikovaný správu o vývoji projektu FreeBSD od apríla do júna 2019. Medzi zmeny môžeme poznamenať:

  • Všeobecné a systémové problémy
    • Tím Core sa rozhodol založiť pracovnú skupinu na preskúmanie možnosti presunu zdrojového kódu z centralizovaného systému kontroly zdrojov Subversion do decentralizovaného systému Git.
    • Uskutočnil fuzz testovanie jadra FreeBSD pomocou systému syzkaller a niekoľko zistených chýb bolo opravených. Pridaná vrstva pre fuzzing testovanie knižníc z hľadiska kompatibility s 32-bitovým prostredím na systémoch so 64-bitovým jadrom. Implementovaná schopnosť spúšťať syzkaller vo virtuálnych strojoch založených na bhyve. V ďalšej fáze sa plánuje rozšíriť pokrytie testovania systémových volaní, použiť LLVM sanitizer na kontrolu jadra, použiť netdump na uloženie výpisov jadra počas pádov počas fuzzing testovania atď.
    • Začali sa práce na aktualizácii implementácie zlib na úrovni jadra. Pre prístup jadra ku kódu zlib bol adresár contrib/zlib premenovaný na sys/contrib/zlib a hlavičkový súbor crc.h bol tiež premenovaný, aby sa predišlo konfliktu so zlib/crc.h. Vyčistený starý kód, ktorý závisel od zlib a nafukovania. Ďalej sa plánuje poskytnúť možnosť zostaviť jadro súčasne so starým a novým zlib pre postupný prechod na novú verziu funkcií, ktoré využívajú kompresiu;
    • Infraštruktúra emulácie prostredia Linux (Linuxulator) bola aktualizovaná. Zvýšená podpora pre nástroje na ladenie Linuxu, ako je napríklad nástroj strace. K portom bol pridaný balík linux-c7-strace, ktorý možno použiť na sledovanie spustiteľných súborov Linuxu namiesto štandardných nástrojov truss a ktrace, ktoré zatiaľ nedokážu dekódovať niektoré príznaky a štruktúry špecifické pre Linux. Okrem toho bol pridaný balík linux-ltp so spustiteľnými súbormi Linux Test Project a boli vyriešené problémy s kompatibilitou so spustiteľnými súbormi spojenými s novými verziami glibc;
    • Implementácia operácií oneskoreného zneplatnenia v mechanizme pmap bola prevedená na použitie algoritmu spracovania frontu, ktorý pracuje bez zámkov, čo umožnilo vyriešiť problémy so škálovateľnosťou pri vykonávaní veľkého počtu paralelných operácií unmap;
    • Mechanizmus blokovania vnode počas vykonávania systémových volaní rodiny execve() bol zmenený, čo umožnilo dosiahnuť zvýšenú efektivitu pri súčasnom vykonávaní execve() pre ten istý súbor (napríklad pri vykonávaní montážnych operácií s paralelizáciou spustenia kompilátora);
  • zabezpečenia
    • Hypervízor bhyve pokračuje vo vylepšovaní podpory živej migrácie hosťovských prostredí z jedného hostiteľa na druhého a vo funkcii Save/Restore, ktorá vám umožňuje zmraziť hosťovský systém, uložiť stav do súboru a potom obnoviť vykonávanie.
    • Pomocou knižnice libvdsk pridal bhyve podporu pre obrazy diskov vo formáte QCOW2. Na fungovanie vyžaduje inštaláciu
      špeciálne upravené verzia bhyve, ktorá bola konvertovaná na používanie obslužných programov pre operácie so súbormi založených na libvdsk. Počas vykazovaného obdobia libvdsk tiež vykonal prácu na zjednodušení integrácie podpory nových formátov, zlepšil výkon čítania a zápisu a pridal podporu pre Copy-On-Write. Zo zostávajúcich úloh je zaznamenaná integrácia libvdsk do hlavnej štruktúry bhyve;

    • V prístavoch pribudol systém zberu dopravných informácií
      Maltrail, ktorý vám umožňuje vytvárať pasce na škodlivé sieťové požiadavky (kontrolujú sa IP a domény z čiernych zoznamov) a odosielať informácie o zistenej aktivite na centralizovaný server na následné blokovanie alebo analýzu pokusov o útok;

    • K portom boli pridané platformy na detekciu útokov, analýzu protokolov a monitorovanie integrity súborov Wazuh (fork Ossec s podporou integrácie s ELK-Stack);
  • Sieťový subsystém
    • Ovládač ena bol aktualizovaný, aby podporoval druhú generáciu sieťových adaptérov ENAv2 (Elastic Network Adapter) používaných v infraštruktúre Elastic Compute Cloud (EC2) na organizovanie komunikácie medzi uzlami EC2 rýchlosťou až 25 Gb/s. Do ovládača ena bola pridaná podpora NETMAP.
    • FreeBSD HEAD využíva nový zásobník MMC/SD založený na ráme CAM a umožňuje vám pripojiť zariadenia s rozhraním SDIO (Secure Digital I/O). Napríklad SDIO sa používa v moduloch WiFi a Bluetooth pre mnoho dosiek, ako je napríklad Raspberry Pi 3. Nový zásobník tiež umožňuje použiť rozhranie CAM na odosielanie príkazov SD z aplikácií v užívateľskom priestore, čo umožňuje vytvárať zariadenia ovládače, ktoré fungujú na užívateľskej úrovni. Začali sa práce na vytváraní ovládačov pre bezdrôtové čipy Broadcom pracujúce v režime FullMAC (na strane čipu beží podoba vlastného operačného systému s implementáciami svojho bezdrôtového stacku 802.11);
    • Pracuje sa na implementácii NFSv4.2 (RFC-7862) pre FreeBSD. Nová verzia NFS pridáva podporu pre funkcie posix_fadvise, posix_fallocate, režimy SEEKHOLE/SEEKDATA v lseek a prevádzku lokálneho kopírovania častí súboru na server (bez prenosu na klienta).

      FreeBSD v súčasnosti poskytuje základnú podporu pre operácie LayoutError, IOAdvise, Allocate a Copy. Zostáva len implementovať operáciu Seek potrebnú na použitie lseek(SEEKHOLE/SEEKDATA) s NFS. Podpora NFSv4.2 je plánovaná pre FreeBSD 13;

  • Úložné a súborové systémy
    • Projekt prepracovania ovládača pre subsystém FUSE (File system in USErspace), ktorý umožňuje vytvárať implementácie súborových systémov v užívateľskom priestore, sa blíži ku koncu. Pôvodne dodávaný ovládač je zastaraný a obsahuje veľa chýb. V rámci projektu modernizácie ovládačov bola implementovaná podpora protokolu FUSE 7.23 (podporovaná bola predtým verzia 7.8, vydaná pred 11 rokmi), bol pridaný kód na kontrolu prístupových práv na strane jadra („-o default_permissions“), volania na Boli pridané VOP_MKNOD, VOP_BMAP a VOP_ADVLOCK, možnosť prerušenia operácií FUSE, pridaná podpora pre nepomenované potrubia a unixové sockety vo fusef, možnosť použiť kqueue pre /dev/fuse, povolená aktualizácia parametrov pripojenia cez „mount -u“, pridaná podpora pri exporte fusefov cez NFS implementované účtovníctvo RLIMIT_FSIZE, pridané príznaky FOPEN_KEEP_CACHE a FUSE_ASYNC_READ, vykonali sa významné optimalizácie výkonu a zlepšila sa organizácia ukladania do vyrovnávacej pamäte;
    • Do kódu swap pagera bola pridaná podpora operácie BIO_DELETE, ktorá umožňuje použiť príkaz TRIM pri odstraňovaní blokov z SSD diskov na zvýšenie ich životnosti.
  • Hardvérová podpora
    • Pokračujú práce na implementácii podpory pre ARM64 SoC Broadcom BCM5871X s procesormi ARMv8 Cortex-A57, zameranú na použitie v smerovačoch, bránach a sieťových úložiskách. Počas sledovaného obdobia bola vylepšená podpora pre interné a externé zbernice iProc PCIe, bola pridaná podpora pre BNXT Ethernet a pracuje sa na použití vstavaného kryptomotora na zrýchlenie IPsec. Integrácia kódu do pobočky HEAD sa očakáva v druhej polovici roka;
    • Začali sa práce na podpore 64-bitového SoC NXP LS1046A založeného na procesore ARMv8 Cortex-A72 s integrovaným motorom na zrýchlenie spracovania sieťových paketov, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 a USB 3.0. Podpora základnej platformy (multi-user SMP) a SATA 3.0 už bola implementovaná. Podpora pre USB 3.0, SD/MMC a I2C je vo vývoji. Plány zahŕňajú podporu pre Ethernet, GPIO a QSPI. Ukončenie prác a zaradenie do pobočky HEAD sa očakáva v 4. štvrťroku 2019.
    • Aktualizované ovládače mlx5en a mlx5ib pre adaptéry Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] a ConnectX-6 [Dx] Ethernet a InfiniBand. Pridaná podpora pre adaptéry Mellanox Socket Direct (ConnectX-6), ktoré umožňujú priepustnosť až 200 Gb/s na zbernici PCIe Gen 3.0. Pre viacjadrové čipy BlueField pribudla podpora ovládača RShim. K portom bol pridaný balík mstflint so sadou diagnostických utilít pre adaptéry Mellanox;
  • Aplikácie a systém portov
    • Komponenty grafického zásobníka boli aktualizované. Ovládač drm.ko (Direct Rendering Manager) bol prenesený z jadra Linuxu 5.0. Tento ovládač sa považuje za experimentálny a bol pridaný do stromu portov ako graphics/drm-devel-kmod. Keďže ovládač používa aktualizovaný rámec Linux KPI, aby bol kompatibilný s rozhraním DRM API jadra Linuxu, na spustenie sa vyžaduje AKTUÁLNY FreeBSD. Z Linuxu bol prenesený aj drm ovládač vboxvideo.ko pre virtuálny GPU VirtualBox. Balík Mesa bol aktualizovaný na vydanie 18.3.2 a prešiel na používanie LLVM z portu devel/llvm80 namiesto devel/llvm60.
    • Strom portov FreeBSD prekročil 37000 2146 portov, počet neuzavretých PR zostáva na 7837. Počas sledovaného obdobia bolo vykonaných 172 zmien od 5.7 vývojárov. Traja noví účastníci získali práva komisára. Medzi významné aktualizácie verzií v portoch patria: MySQL 3.6, Python 2.5, Ruby 4.8, Samba 1.0, Julia 68.0, Firefox 75.0.3770.100, Chromium 3.6. Všetky porty Go boli skonvertované tak, aby používali príznak „USES=go“. Pridaný príznak "USES=cabal" do správcu balíkov Cabal používaného pre kód Haskell. Prísny režim ochrany zásobníka je povolený. Predvolená verzia Pythonu je 2.7 namiesto XNUMX.
    • Vydanie nástroja bolo pripravené nsysctl 1.0, ktorý ponúka analóg k /sbin/sysctl, ktorý používa libxo pre výstup a poskytovanie rozšírenej sady možností. Nsysctl možno použiť na vizuálne sledovanie stavu hodnôt sysctl a prezentovanie informácií o objektoch v štruktúrovanej forme. Výstup je možný vo formátoch XML, JSON a HTML;

Zdroj: opennet.ru

Pridať komentár