A FreeBSD projekt fejlesztési jelentése 2019 áprilisa és júniusa között. A változások közül kiemelendő:
- Általános és rendszerbeli kérdések
- A Core team döntést hozott, hogy munkacsoportot alapít a központosított Subversion forráskezelő rendszerből a decentralizált Git rendszerbe való forráskód-átállás lehetőségének tanulmányozására.
- Fuzzing-tesztelést végeztek a FreeBSD kerneljén a következő rendszer használatával: és kijavították az eközben felmerült hibák egy részét. Kijelölték a libek fuzzing-tesztelésére szolgáló réteget, amely a 64-bites kernel környezetek 32-bites környezetével való kompatibilitásra épül. Megvalósították a syzkaller virtuális gépeken történő futtatásának lehetőségét a bhyve alapjain. A következő lépésben a rendszerhívások tesztelésének kiterjesztését tervezik, LLVM sanitizer használatával a kernel ellenőrzésére, valamint netdump használatát a kernelhibák során keletkezett dumpok mentésére fuzzing-tesztelés közben stb.
- Megkezdődött a zlib kernel szintű implementációjának frissítése. A kernel zlib kódjához való hozzáférés érdekében a contrib/zlib könyvtár sys/contrib/zlib-ra lett átnevezve, a crc.h fejlécfájlt is átnevezték az zlib/crc.h-val való ütközés elkerülése érdekében. Tisztították az elavult kódot, amely a zlib-re és inflate-re támaszkodott. A következő lépés a kernelnek a régi és új zlib egyidejű összeszerelésének lehetővé tétele az új verzióra való fokozatos átállás érdekében, amely tömörítést használ;
- Frissítették a Linux környezet emulációs infrastruktúráját (Linuxulator). Kiterjesztették a Linux hibakeresési eszközök, például a strace segédprogram támogatását. A portokhoz hozzáadták a linux-c7-strace csomagot, amely használható Linux végrehajtható fájlok nyomozására a szokásos truss és ktrace segédprogramok helyett, amelyek jelenleg nem tudják dekódolni a Linuxra jellemző bizonyos zászlókat és struktúrákat. Továbbá bevezették a linux-ltp csomagot, amely Linux Test Project végrehajtható fájlokat tartalmaz, és megoldották az újabb glibc-verziókkal összekapcsolt végrehajtható fájlokkal kapcsolatos kompatibilitási problémákat;
- A fizikai memóriaoldalakra való késleltetett invalidálás (delayed invalidation) operációk megvalósítása a pmap mechanizmusban átváltott egy zárak nélküli sorfeldolgozó algoritmus használatára, ami lehetővé tette a párhuzamos unmap műveletek nagy számának végrehajtásával kapcsolatos skálázhatósági problémák megoldását;
- Megváltozott a vnode blokkolási mechanizmusa az execve() rendszervhívások végrehajtása során, ami lehetővé tette a hatékonyság javítását az execve() egyidejű végrehajtásánál ugyanazon fájl esetén (például a párhuzamosított fordítók indításával végzett építési műveleteknél);
- Biztonság
- A bhyve hipervizorban folytatódott a Live-migrációs támogatás fejlesztése egy vendégkörnyezet egyik gazdagépről a másikra való átköltöztetéséhez és a Save/Restore funkcióhoz, amely lehetővé teszi a vendég rendszer állapotának fájlba való mentését, majd a végrehajtás folytatását.
- A bhyve-ben a libvdsk könyvtár használatával QCOW2 formátumú lemezképek támogatása került bevezetésre. A működéshez
bhyve verzió telepítése szükséges, amely átállt a libvdsk alapú fájlműveleti kezelők használatára. A jelentett időszakban a libvdsk-ben a támogatás új formátumok integrációjának egyszerűsítésén dolgoztak, javították a olvasás és írás teljesítményét, és bevezették a Copy-On-Write támogatását. A hátralévő feladatok között szerepel a libvdsk integrálása a bhyve fő összetételébe; - A portokba információgyűjtő rendszer került bevezetésre a forgalomról
, amely lehetővé teszi rosszindulatú hálózati kérések csapdák létrehozását (IP-ket és domain neveket ellenőriznek feketelistákból) és az észlelt aktivitás központosított szerverre való elküldését a támadásblokkolás vagy elemzés céljából; - A portokba támadásészlelés, naplóelemzés és fájlok integritásának nyomon követésére szolgáló platform került bevezetésre (az Ossec forkja, integrációs támogatással a );
- Hálózati alrendszer
- frissített ena drivert, amely támogatja a második generációs ENAv2 hálózati adaptereket (Elastic Network Adapter), amelyeket az Elastic Compute Cloud (EC2) infrastruktúrájában használnak az EC2 csomópontok közötti kapcsolat létrehozására akár 25 Gb/s sebességgel. Az ena drivert NETMAP támogatással bővítették.
- A FreeBSD HEAD-ben egy új MMC/SD stack került bevezetésre, amely a CAM keretrendszerre épül, és lehetővé teszi az SDIO (Secure Digital I/O) interfészes eszközök csatlakoztatását. Például az SDIO-t WiFi és Bluetooth modulok használják számos alaplapon, mint például a Raspberry Pi 3. Az új stack lehetővé teszi, hogy a felhasználói térből SD parancsokat küldjünk a CAM interfészen keresztül, ami lehetőséget ad a felhasználói szinten működő eszközmeghajtók létrehozására. Megkezdődött a Broadcom vezeték nélküli chipekhez szükséges meghajtók készítése, amelyek FullMAC módban működnek (a chip oldalán hasonló operációs rendszer valósul meg a saját 802.11-es vezeték nélküli stackjének megvalósításával);
- A FreeBSD számára jelenleg zajlik az NFSv4.2 (RFC-7862) implementálása. Az új NFS verzió támogatja a posix_fadvise, posix_fallocate funkciókat, a SEEKHOLE/SEEKDATA módokat az lseek-ben, valamint a fájl részeinek helyi másolását a szerveren (anélkül, hogy az ügyfélhez továbbítani kellene).
Jelenleg a FreeBSD számára már megvalósult az LayoutError, IOAdvise, Allocate és Copy műveletek alapvető támogatása. Kivételt képez a Seek művelet, amely szükséges az lseek(SEEKHOLE/SEEKDATA) használatához az NFS-sel. Az NFSv4.2 támogatását a FreeBSD 13-ban tervezik bevezetni;
- Tárolórendszerek és fájlrendszerek
- A projekt a FUSE (File system in USErspace) alrendszer meghajtójának újraírásán közel a végéhez érkezett, amely lehetővé teszi fájlrendszerek megvalósítását a felhasználói térben. Az eredetileg biztosított meghajtó elavult és sok hibát tartalmazott. A meghajtó modernizálásának keretében megvalósult a FUSE 7.23 protokoll támogatása (korábban a 7.8-as verziót támogatták, amely 11 éve jelent meg), hozzáadták a hozzáférési jogok ellenőrzési kódját a kernel oldalán („-o default_permissions”), belefoglalták a VOP_MKNOD, VOP_BMAP és VOP_ADVLOCK hívásokat, biztosították a FUSE műveletek megszakításának lehetőségét, támogatták a névtelen csatornákat és a unix-socketeket a fusefs-ben, lehetővé tették a kqueue használatát a /dev/fuse-hoz, lehetővé tették a csatolási paraméterek frissítését a „mount -u” parancson keresztül, támogatták a fusefs NFS-en keresztüli exportálását, létrehozták az RLIMIT_FSIZE figyelembevételét, hozzáadták az FOPEN_KEEP_CACHE és FUSE_ASYNC_READ zászlókat, jelentős teljesítményoptimalizálásokat végeztek, és javították a gyorsítótárazási szervezést;
- A swap pager memory replacement code has been added to support the BIO_DELETE operation, allowing the use of the TRIM command when deleting blocks from SSDs to extend their lifespan.
- Hardver támogatás
- Folytatódik az ARM64 SoC Broadcom BCM5871X támogatásának megvalósítása, amely ARMv8 Cortex-A57 processzorokat használ, és routerekben, átjárókban és hálózati tárolókban célzott. A beszámolási időszakban javult a belső és külső iProc PCIe buszok támogatása, valamint hozzá lett adva a BNXT Ethernet támogatása, és folyamatban van egy beépített titkosító motor aktiválása az IPsec gyorsítására. A kód integrációja a HEAD ágban a második félévre várható.
- Megkezdődött a 64 bites SoC NXP LS1046A ARMv8 Cortex-A72 processzorral való támogatásának kidolgozása, amely integrált hálózati csomagfeldolgozási gyorsító motort, 10 Gb Ethernetet, PCIe 3.0-t, SATA 3.0-t és USB 3.0-t tartalmaz. A multi-user SMP alapplatform támogatása már megvalósult, és a SATA 3.0 támogatása is várományos. Fejlesztés alatt áll a USB 3.0, SD/MMC és I2C támogatása. Tervezett Ethernet, GPIO és QSPI támogatása. A munka befejezése és a HEAD ágba való felvétel a 2019. negyedik negyedévére várható.
- Frissítették a mlx5en és mlx5ib meghajtókat a Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] és ConnectX-6 [Dx] Ethernet és InfiniBand adapterekhez. Hozzá lett adva a Mellanox Socket Direct (ConnectX-6) adapterek támogatása, amelyek akár 200 Gb/s átvitel teljesítményt is lehetővé tesznek a PCIe Gen 3.0 buszon. A multi-core „BlueField” chipekhez hozzá lett adva az RShim meghajtó támogatás. A portokhoz hozzá lett adva a mstflint csomag diagnosztikai segédprogramokkal a Mellanox adapterekhez.
- Alkalmazások és port rendszer
- Frissítették a grafikus stack komponenseit. A drm.ko (Direct Rendering Manager) meghajtót a Linux 5.0 kerneltől portolták. Ez a meghajtó kísérleti jellegűnek tekinthető, és a ports fába graphics/drm-devel-kmod néven került. Mivel ez a meghajtó az újonnan frissített Linux KPI keretrendszert használja a Linux kernel DRM API-ának kompatibilitására, a FreeBSD CURRENT verzió szükséges a működéshez. A Linuxból portolták a vboxvideo.ko drm-meghajtót is a VirtualBox virtuális GPU számára. A Mesa csomagfrissítése 18.3.2-re megtörtént, és átállt az LLVM használatára a devel/llvm80 portból, a devel/llvm60 helyett.
- A FreeBSD port tree has surpassed the milestone of 37,000 ports, with the number of open PRs remaining at 2,146. During the reporting period, 7,837 changes were made by 172 developers. Three new participants have received committer rights. Notable version updates in the ports include: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, and Chromium 75.0.3770.100. All ports in Go have been transitioned to use the 'USES=go' flag. The 'USES=cabal' flag has been added for the Cabal package manager, which is used for Haskell code. A strict stack protection mode has been included. Python 3.6 is proposed as the default version instead of 2.7.
- Készen áll a felhasználási segédprogram kiadása , amely hasonló a /sbin/sysctl-hoz, és használja a kimenetet a kibővített opciók készletével. Az Nsysctl alkalmazható a sysctl értékek állapotának vizuális megfigyelésére és az objektumokról szóló információk strukturált megjelenítésére. Kimenet lehetséges XML, JSON és HTML formátumokban;
Forrás: opennet.ru
