Zpráva o pokroku FreeBSD za 2019. čtvrtletí XNUMX

zveřejněno zprávu o vývoji projektu FreeBSD od dubna do června 2019. Mezi změny můžeme zaznamenat:

  • Obecné a systémové problémy
    • Tým Core se rozhodl založit pracovní skupinu, která by prozkoumala možnost přesunu zdrojového kódu z centralizovaného systému kontroly zdrojů Subversion do decentralizovaného systému Git.
    • Provedeno fuzz testování jádra FreeBSD pomocí systému syzkaller a řada zjištěných chyb byla opravena. Přidána vrstva pro fuzzing testování knihoven z hlediska kompatibility s 32bitovým prostředím na systémech s 64bitovým jádrem. Byla implementována možnost spouštět syzkaller ve virtuálních strojích založených na bhyve. V další fázi se plánuje rozšíření pokrytí testování systémových volání, použití LLVM sanitizeru ke kontrole jádra, použití netdumpu k uložení výpisů jádra při pádech během fuzzing testování atd.
    • Začaly práce na aktualizaci implementace zlib na úrovni jádra. Kvůli přístupu jádra ke kódu zlib byl adresář contrib/zlib přejmenován na sys/contrib/zlib a hlavičkový soubor crc.h byl také přejmenován, aby se předešlo konfliktu se zlib/crc.h. Vyčištěný starší kód, který závisel na zlib a inflate. Dále se plánuje poskytnout možnost sestavit jádro současně se starým a novým zlib pro postupný přechod na novou verzi funkcí využívajících kompresi;
    • Infrastruktura emulace prostředí Linux (Linuxulator) byla aktualizována. Zvýšená podpora pro linuxové ladicí nástroje, jako je utilita strace. K portům byl přidán balíček linux-c7-strace, který lze použít k trasování spustitelných souborů Linuxu namísto standardních utilit truss a ktrace, které zatím neumí dekódovat některé příznaky a struktury specifické pro Linux. Kromě toho byl přidán balíček linux-ltp se spustitelnými soubory Linux Test Project a byly vyřešeny problémy s kompatibilitou se spustitelnými soubory spojenými s novými verzemi glibc;
    • Implementace operací zpožděného zrušení platnosti v mechanismu pmap byla převedena na použití algoritmu pro zpracování fronty, který pracuje bez zámků, což umožnilo vyřešit problémy se škálovatelností při provádění velkého počtu paralelních operací unmap;
    • Mechanismus blokování vnode během provádění systémových volání rodiny execve() byl změněn, což umožnilo dosáhnout vyšší efektivity při současném provádění execve() pro stejný soubor (například při provádění montážních operací s paralelizací spuštění kompilátoru);
  • zabezpečení
    • Hypervizor bhyve nadále zlepšuje podporu živé migrace hostujících prostředí z jednoho hostitele na druhého a funkci Save/Restore, která vám umožňuje zmrazit hostující systém, uložit stav do souboru a poté obnovit provádění.
    • Díky použití knihovny libvdsk přidal bhyve podporu pro obrazy disků ve formátu QCOW2. K fungování vyžaduje instalaci
      speciálně upravená verze bhyve, která byla převedena tak, aby používala obslužné programy pro operace se soubory založené na libvdsk. Během sledovaného období libvdsk také provedl práci na zjednodušení integrace podpory nových formátů, zlepšil výkon čtení a zápisu a přidal podporu pro kopírování při zápisu. Ze zbývajících úkolů je zaznamenána integrace libvdsk do hlavní struktury bhyve;

    • Do přístavů přibyl systém pro sběr dopravních informací
      Maltrail, která umožňuje vytvářet pasti na škodlivé síťové požadavky (kontrolují se IP a domény z blacklistů) a odesílat informace o detekované aktivitě na centralizovaný server pro následné blokování nebo analýzu pokusů o útok;

    • K portům byly přidány platformy pro detekci útoků, analýzu protokolů a monitorování integrity souborů Wazuh (fork Ossec s podporou integrace s ELK-Stack);
  • Síťový subsystém
    • Ovladač ena byl aktualizován, aby podporoval druhou generaci síťových adaptérů ENAv2 (Elastic Network Adapter) používaných v infrastruktuře Elastic Compute Cloud (EC2) pro organizaci komunikace mezi uzly EC2 rychlostí až 25 Gb/s. Do ovladače ena byla přidána podpora NETMAP.
    • FreeBSD HEAD využívá nový zásobník MMC/SD založený na CAM frameworku a umožňuje vám připojit zařízení s rozhraním SDIO (Secure Digital I/O). SDIO se například používá v modulech WiFi a Bluetooth pro mnoho desek, jako je Raspberry Pi 3. Nový zásobník také umožňuje použití rozhraní CAM pro odesílání příkazů SD z aplikací v uživatelském prostoru, což umožňuje vytvářet zařízení ovladače, které fungují na uživatelské úrovni. Začaly práce na vytváření ovladačů pro bezdrátové čipy Broadcom pracující v režimu FullMAC (na straně čipu běží zdání vlastního operačního systému s implementacemi jeho bezdrátového stacku 802.11);
    • Probíhají práce na implementaci NFSv4.2 (RFC-7862) pro FreeBSD. Nová verze NFS přidává podporu pro funkce posix_fadvise, posix_fallocate, režimy SEEKHOLE/SEEKDATA v lseek a provoz lokálního kopírování částí souboru na serveru (bez přenosu na klienta).

      FreeBSD aktuálně poskytuje základní podporu pro operace LayoutError, IOAdvise, Allocate a Copy. Zbývá pouze implementovat operaci Seek potřebnou k použití lseek(SEEKHOLE/SEEKDATA) s NFS. Podpora NFSv4.2 je plánována pro FreeBSD 13;

  • Úložné a souborové systémy
    • Projekt přepracování ovladače pro subsystém FUSE (File system in USErspace), který umožňuje vytvářet implementace souborových systémů v uživatelském prostoru, se blíží ke konci. Původně dodaný ovladač je zastaralý a obsahuje mnoho chyb. V rámci projektu modernizace ovladačů byla implementována podpora protokolu FUSE 7.23 (podporována byla dříve verze 7.8, vydaná před 11 lety), přidán kód pro kontrolu přístupových práv na straně jádra (“-o default_permissions”), volání na Byly přidány VOP_MKNOD, VOP_BMAP a VOP_ADVLOCK, možnost přerušit operace FUSE, přidána podpora pro nepojmenované roury a unixové sockety v fusefs, možnost použít kqueue pro /dev/fuse, povolena aktualizace parametrů připojení přes „mount -u“, přidána podpora pro export fusef přes NFS implementováno účetnictví RLIMIT_FSIZE, přidány příznaky FOPEN_KEEP_CACHE a FUSE_ASYNC_READ, byly provedeny významné optimalizace výkonu a vylepšena organizace ukládání do mezipaměti;
    • Do kódu swap pageru byla přidána podpora operace BIO_DELETE, která umožňuje použít příkaz TRIM při odstraňování bloků z SSD disků pro zvýšení jejich životnosti.
  • Hardwarová podpora
    • Pokračují práce na implementaci podpory pro ARM64 SoC Broadcom BCM5871X s procesory ARMv8 Cortex-A57, zaměřené na použití ve směrovačích, branách a síťových úložištích. Během sledovaného období byla vylepšena podpora pro interní a externí sběrnice iProc PCIe, byla přidána podpora pro BNXT Ethernet a probíhají práce na použití vestavěného kryptografického enginu ke zrychlení IPsec. Integrace kódu do pobočky HEAD se očekává v druhé polovině roku;
    • Začaly práce na podpoře 64bitového SoC NXP LS1046A založeného na procesoru ARMv8 Cortex-A72 s integrovaným akceleračním jádrem pro zpracování síťových paketů, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 a USB 3.0. Podpora pro základní platformu (multi-user SMP) a SATA 3.0 již byla implementována. Podpora pro USB 3.0, SD/MMC a I2C je ve vývoji. Plány zahrnují podporu pro Ethernet, GPIO a QSPI. Dokončení prací a zařazení do pobočky HEAD se očekává ve 4. čtvrtletí 2019.
    • Aktualizované ovladače mlx5en a mlx5ib pro adaptéry Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] a ConnectX-6 [Dx] Ethernet a InfiniBand. Přidána podpora pro adaptéry Mellanox Socket Direct (ConnectX-6), umožňující propustnost až 200 Gb/s na sběrnici PCIe Gen 3.0. U vícejádrových čipů BlueField byla přidána podpora ovladače RShim. K portům byl přidán balíček mstflint se sadou diagnostických utilit pro adaptéry Mellanox;
  • Aplikace a portový systém
    • Komponenty grafického zásobníku byly aktualizovány. Ovladač drm.ko (Direct Rendering Manager) byl přenesen z jádra Linuxu 5.0. Tento ovladač je považován za experimentální a byl přidán do stromu portů jako graphics/drm-devel-kmod. Protože ovladač používá aktualizovaný rámec Linux KPI, aby byl kompatibilní s rozhraním DRM API jádra Linuxu, je ke spuštění FreeBSD CURRENT vyžadováno. Ovladač vboxvideo.ko drm pro virtuální GPU VirtualBox byl také přenesen z Linuxu. Balíček Mesa byl aktualizován na verzi 18.3.2 a přešel na použití LLVM z portu devel/llvm80 namísto devel/llvm60.
    • Strom portů FreeBSD překročil 37000 2146 portů, počet neuzavřených PR zůstává na 7837. Během sledovaného období bylo provedeno 172 změn od 5.7 vývojářů. Tři noví účastníci získali závazná práva. Mezi významné aktualizace verzí v portech patří: MySQL 3.6, Python 2.5, Ruby 4.8, Samba 1.0, Julia 68.0, Firefox 75.0.3770.100, Chromium 3.6. Všechny porty Go byly převedeny tak, aby používaly příznak "USES=go". Přidán příznak "USES=cabal" do správce balíčků Cabal používaného pro kód Haskell. Je povolen přísný režim ochrany zásobníku. Výchozí verze Pythonu je 2.7 namísto XNUMX.
    • Vydání nástroje bylo připraveno nsysctl 1.0, který nabízí analog k /sbin/sysctl, který používá libxo pro výstup a poskytování rozšířené sady možností. Nsysctl lze použít k vizuálnímu sledování stavu hodnot sysctl a prezentaci informací o objektech ve strukturované podobě. Je možný výstup ve formátech XML, JSON a HTML;

Zdroj: opennet.ru

Přidat komentář