Správa o vývoji projektu FreeBSD od apríla do júna 2019. Medzi zmenami môžeme spomenúť:
- Všeobecné a systémové otázky
- Jadro tímu sa rozhodlo zriadiť pracovnú skupinu na preskúmanie možnosti prevodu zdrojových textov zo centralizovaného systému správy zdrojových textov Subversion do decentralizovaného systému Git.
- Realizované fuzzingové testovanie jadra FreeBSD za použitia systému a opravený rad chýb, ktoré boli pri tom zistené. Pridaná vrstva pre fuzzingové testovanie knižníc pre kompatibilitu s 32-bitovým prostredím na systémoch s 64-bitovým jadrom. Implementovaná možnosť spustenia syzkaller na virtuálnych strojoch na báze bhyve. V nasledujúcej etape sa plánuje rozšíriť testovanie systémových volaní, zapojiť LLVM sanitizer pre kontrolu jadra, využiť netdump na uchovávanie dumpov jadra počas pádov pri fuzzingovom testovaní atď.
- Začala sa práca na aktualizácii implementácie zlib na úrovni jadra. Pre prístup jadra k kódu zlib bol adresár contrib/zlib premenný na sys/contrib/zlib, taktiež bol premenný hlavičkový súbor crc.h, aby sa predišlo konfliktom so zlib/crc.h. Bol vykonaný prieskum zastaraného kódu závislého od zlib a inflate. Ďalej plánujeme zabezpečiť možnosť kompilácie jadra súčasne so starým a novým zlib pre postupný prechod na novú verziu funkcií, ktoré využívajú kompresiu;
- Infrastruktúra emulácie Linuxového prostredia (Linuxulator) bola aktualizovaná. Rozšírená podpora debugovacích nástrojov Linux, ako je utilita strace. Do portov bol pridaný balík linux-c7-strace, ktorý môže byť použitý na trasovanie vykonateľných súborov Linux namiesto štandardných utilít truss a ktrace, ktoré zatiaľ nedokážu dekódovať niektoré špecifické pre Linux značky a štruktúry. Okrem toho bol pridaný balík linux-ltp s vykonateľnými súbormi Linux Test Project a vyriešené problémy s kompatibilitou s vykonateľnými súbormi skompilovanými s novými verziami glibc;
- Implementácia operácií oneskorenej čistenia väzieb na fyzické stránky pamäte (delayed invalidation) v mechanizme pmap bola prevedená na použitie algoritmu spracovania fronty, 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 bol zmenený počas vykonávania systémových volaní rodiny execve(), čo viedlo k zvýšeniu efektivity práce pri súčasnom vykonávaní execve() pre rovnaký súbor (napríklad pri vykonávaní operácií zostavovania s paralelizmom spúšťania kompilátora);
- Bezpečnosť
- V hypervízore bhyve bolo pokračované v zlepšovaní podpory Live migrácie hosťovaných prostredí z jedného hostiteľa na druhého a funkčnosti Save/Restore, ktorá umožňuje zmraziť hosťujúci systém so zachovaním stavu do súboru a následne obnoviť vykonávanie.
- Prostredníctvom použitia knižnice libvdsk bola do bhyve pridaná podpora diskových obrazov vo formáte QCOW2. Pre fungovanie je potrebná inštalácia
verzie bhyve, ktorá bola prevedená na používanie obsluhy súborových operácií založenej na libvdsk. V správy sa v libvdsk taktiež uskutočnila práca na zjednodušení integrácie podpory nových formátov, zlepšila sa výkonnosť čítania a zápisu, bola pridaná podpora Copy-On-Write. Medzi zostávajúce úlohy patrí integrácia libvdsk do hlavného zloženia bhyve; - Do portov bola pridaná sústava na zber informácií o prevádzke
, ktorá umožňuje vytvárať pasce na škodlivé sieťové požiadavky (kontrolujú sa IP a domény z čiernych zoznamov) a posielať údaje o zistených aktivitách na centralizovaný server na následnú blokáciu alebo analýzu pokusov o útoky; - Do portov bola pridaná platforma na identifikáciu útokov, analýzu logov a sledovanie integrity súborov (fork Ossec s podporou integrácie s );
- Sieťový subsystém
- Driver ena bol aktualizovaný so podporou druhej generácie 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 pri rýchlostiach až do 25 Gb/s. Do ovládača ena bola pridaná podpora NETMAP.
- V systéme FreeBSD HEAD bol prijatý nový MMC/SD stack, založený na frameworku CAM, ktorý umožňuje pripojenie zariadení s rozhraním SDIO (Secure Digital I/O). Napríklad, SDIO sa používa v WiFi a Bluetooth moduloch pre mnohé dosky, ako je Raspberry Pi 3. Nový stack tiež umožňuje používať rozhranie CAM na posielanie SD príkazov z aplikácií v užívateľskom priestore, čo umožňuje vytvárať ovládače zariadení pracujúce na úrovni používateľa. Začala sa práca na vytvorení ovládačov pre bezdrôtové čipy Broadcom, ktoré pracujú v režime FullMAC (na strane čipu je realizovaný podobný systém s realizáciou svojho bezdrôtového stacku 802.11);
- Prebieha práca na implementácii NFSv4.2 (RFC-7862) pre FreeBSD. V novej verzii NFS bola pridaná podpora funkcií posix_fadvise, posix_fallocate, režimov SEEKHOLE/SEEKDATA v lseek, operácie lokálneho kopírovania častí súboru na serveri (bez odosielania klientovi).
V súčasnosti má FreeBSD už implementovanú základnú podporu operácií LayoutError, IOAdvise, Allocate a Copy. Ostaáva implementovať operáciu Seek, potrebnú na použitie lseek(SEEKHOLE/SEEKDATA) s NFS. Podpora NFSv4.2 je plánovaná na zaradenie do FreeBSD 13;
- Úložné systémy a súborové systémy
- Projekt na prestavbu ovládača subsystému FUSE (File System in USErspace) sa blíži k dokončeniu, umožňujúci vytvárať implementácie súborových systémov v užívateľskom priestore. Pôvodne dodávaný ovládač je zastaraný a obsahuje množstvo chýb. V rámci projektu na modernizáciu ovládača bola implementovaná podpora protokolu FUSE 7.23 (predtým sa podporovala verzia 7.8, vydaná pred 11 rokmi), bol pridaný kód na kontrolu prístupových práv na strane jadra („-o default_permissions“), pridané výzvy VOP_MKNOD, VOP_BMAP a VOP_ADVLOCK, zabezpečená možnosť prerušenia operácií FUSE, pridaná podpora nemenovaných kanálov a unixových socketov v fusefs, bola pridaná možnosť používania kqueue pre /dev/fuse, povolené aktualizovanie parametrov pripojenia cez „mount -u“, pridaná podpora exportu fusefs cez NFS, realizovaný účet RLIMIT_FSIZE, pridané príznaky FOPEN_KEEP_CACHE a FUSE_ASYNC_READ, vykonané významné optimalizácie výkonu a vylepšená organizácia cachovania;
- Do kódu na výmenu stránok pamäte v stránke swap pager bola pridaná podpora operácie BIO_DELETE, ktorá umožňuje použiť príkaz TRIM pri odstraňovaní blokov z SSD úložných zariadení s cieľom predĺžiť ich životnosť.
- Podpora hardvéru
- Pokračuje sa v práci na implementácii podpory ARM64 SoC Broadcom BCM5871X s procesormi ARMv8 Cortex-A57, určenými na použitie v routeroch, bránach a sieťových úložiskách. V správa o období sa zlepšila podpora vnútorných a vonkajších zberníc iProc PCIe, bola pridaná podpora BNXT Ethernet, je v prácach potrebné využitie integrovaného kryptomotoru na urýchlenie IPsec. Integrácia kódu do vetvy HEAD sa očakáva v druhom polroku.
- Začala sa práca na podpore 64-bitového SoC NXP LS1046A založeného na procesore ARMv8 Cortex-A72 s integrovaným motorom na urýchlenie spracovania sieťových paketov, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 a USB 3.0. Už bola implementovaná podpora základnej platformy (multi-user SMP) a SATA 3.0. V vývoji je podpora USB 3.0, SD/MMC a I2C. V pláne je podpora Ethernet, GPIO a QSPI. Ukončenie práce a zaradenie do vetvy HEAD sa očakáva v 4. kvartáli 2019.
- Aktualizované ovládače mlx5en a mlx5ib pre Ethernet a InfiniBand adaptéry Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] a ConnectX-6 [Dx]. Bola pridaná podpora adaptérov Mellanox Socket Direct (ConnectX-6), ktoré umožňujú dosiahnuť priepustnosť až 200Gb/s na zbernici PCIe Gen 3.0. Pre mnohoprocesorové čipy „BlueField“ bola pridaná podpora ovládača RShim. Do portov bol pridaný balík mstflint s množinou diagnostických nástrojov pre adaptéry Mellanox;
- Aplikácie a systém portov
- Aktualizované komponenty grafického stacku. Bola vykonaná portácia ovládača drm.ko (Direct Rendering Manager) z jadra Linux 5.0. Tento ovládač je považovaný za experimentálny a bol pridaný do stromu portov ako graphics/drm-devel-kmod. Pretože ovládač používa aktualizovaný rámec Linux KPI na kompatibilitu s DRM API jadra Linux, je potrebná verzia FreeBSD CURRENT. Z Linuxu bol tiež portovaný drm-ovládač vboxvideo.ko pre virtuálne GPU VirtualBox. Balík Mesa bol aktualizovaný na verziu 18.3.2 a bol prevedený na použitie LLVM z portu devel/llvm80 namiesto devel/llvm60.
- Strom portov FreeBSD prekonal hranicu 37000 portov a počet nezatvorených PR zostáva na úrovni 2146. Počas správa bolo vykonaných 7837 zmien od 172 vývojárov. Práva komitéra získali traja noví účastníci. Medzi významnými aktualizáciami verzií v portoch sú: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Všetky porty v jazyku Go boli prevedené na používanie flagu „USES=go“. Pridaný flag „USES=cabal“ pre balíkový manažér Cabal, používaný pre kód v Haskelli. Zahrnutý prísny režim ochrany zásobníka. Predvolená verzia Python je 3.6 namiesto 2.7.
- Pripravená verzia utilitky , ponúkajúcej analóg \/sbin\/sysctl, používajúci na výstup a poskytujúci rozšírený súbor možností. Nsysctl môže byť použitý na vizuálny dohľad nad stavom hodnôt sysctl a prezentáciu informácií o objektoch v štruktúrovanej forme. Možný je výstup vo formátoch XML, JSON a HTML;
Zdroj: opennet.ru
