A FreeBSD Q2019 XNUMX előrehaladási jelentése

közzétett jelentés a FreeBSD projekt fejlesztéséről 2019 áprilisától júniusig. A változások közül kiemelhetjük:

  • Általános és rendszerszintű kérdések
    • A Core csapat úgy döntött, hogy létrehoz egy munkacsoportot, hogy megvizsgálja a forráskód áthelyezésének lehetőségét a központi Subversion forrásvezérlő rendszerről a decentralizált Git rendszerre.
    • Elvégezte a FreeBSD kernel fuzz tesztelését a rendszer segítségével syzkaller és számos azonosított hibát kijavítottak. Hozzáadott egy réteget a könyvtárak összemosható teszteléséhez a 32 bites környezettel való kompatibilitás érdekében 64 bites kernellel rendelkező rendszereken. Megvalósult a syzkaller futtatásának képessége bhyve-alapú virtuális gépeken. A következő szakaszban a tervek szerint bővítik a rendszerhívástesztelés lefedettségét, LLVM fertőtlenítőt használnak a kernel ellenőrzésére, netdump segítségével mentik a kernel dumpokat a fuzzing tesztelés során bekövetkező összeomlások során stb.
    • Megkezdődött a munka a zlib megvalósítás kernelszintű frissítésén. A zlib kódhoz való kernel eléréséhez a contrib/zlib könyvtárat átnevezték sys/contrib/zlib-re, és a crc.h fejlécfájlt is átnevezték, hogy elkerüljék a zlib/crc.h-val való ütközést. Megtisztítottuk a régi kódot, amely a zlib-től és a felfújástól függött. Ezt követően a tervek szerint a rendszermagot a régi és az új zlib-el egyidejűleg fel lehet építeni a tömörítést használó függvények új verziójára való fokozatos átvitel érdekében;
    • A Linux környezet emulációs infrastruktúrája (Linuxulator) frissült. Megnövelt támogatás a Linux hibakereső eszközökhöz, például a strace segédprogramhoz. A portokhoz bekerült a linux-c7-strace csomag, amellyel a Linux futtatható fájlok nyomon követhetők a szokásos truss és ktrace segédprogramok helyett, amelyek még nem tudnak dekódolni néhány Linux-specifikus jelzőt és struktúrát. Ezenkívül a Linux Test Project végrehajtható fájljait tartalmazó linux-ltp csomag is hozzáadásra került, és a glibc új verzióihoz kapcsolódó futtatható fájlokkal kapcsolatos kompatibilitási problémák megoldódtak;
    • A pmap mechanizmusban a késleltetett érvénytelenítési műveletek megvalósítása átkerült egy zárolás nélkül működő sorfeldolgozó algoritmus használatára, amely lehetővé tette a skálázhatósági problémák megoldását nagyszámú párhuzamos unmap művelet végrehajtása során;
    • Megváltozott a vnode blokkolásának mechanizmusa az execve() család rendszerhívásainak végrehajtása során, ami lehetővé tette a nagyobb hatékonyság elérését az execve() egyidejű futtatásakor ugyanarra a fájlra (például párhuzamosítással végzett összeállítási műveletek végrehajtásakor a fordító elindítása);
  • biztonság
    • A bhyve hypervisor továbbra is fejleszti a vendégkörnyezetek élő migrációjának támogatását egyik gazdagépről a másikra, valamint a Mentés/Visszaállítás funkciót, amely lehetővé teszi a vendégrendszer lefagyasztását, az állapot fájlba mentését, majd a végrehajtás folytatását.
    • A libvdsk könyvtár használatával a bhyve hozzáadta a QCOW2 formátumú lemezképek támogatását. A működéshez telepítés szükséges
      speciálisan módosított A bhyve verziója, amelyet a libvdsk alapú fájlművelet-kezelők használatára alakítottak át. A jelentési időszakban a libvdsk emellett munkát végzett az új formátumok támogatásának integrációjának egyszerűsítésére, az olvasási és írási teljesítmény javítására, valamint a Copy-On-Write támogatására. A fennmaradó feladatok közül említésre méltó a libvdsk integrációja a bhyve fő szerkezetébe;

    • A portokhoz forgalmi információk gyűjtésére szolgáló rendszer került
      Maltrail, amely lehetővé teszi a rosszindulatú hálózati kérések csapdáinak létrehozását (ellenőrzik a feketelisták IP-címeit és tartományait), és információkat küldenek az észlelt tevékenységről egy központi szerverre a támadási kísérletek későbbi blokkolása vagy elemzése céljából;

    • Platformok kerültek a portokhoz a támadások észlelésére, a naplók elemzésére és a fájlok integritásának figyelésére Wazuh (Ossec fork integráció támogatásával ELK-Stack);
  • Hálózati alrendszer
    • Az ena illesztőprogram frissítésre került, hogy támogassa az ENAv2 (Elastic Network Adapter) hálózati adapterek második generációját, amelyeket az Elastic Compute Cloud (EC2) infrastruktúrában használnak az EC2 csomópontok közötti kommunikáció megszervezésére akár 25 Gb/s sebességgel. NETMAP támogatást adtunk az ena illesztőprogramhoz.
    • A FreeBSD HEAD egy új MMC/SD-vermet alkalmaz, amely a CAM keretrendszeren alapul, és lehetővé teszi az SDIO (Secure Digital I/O) interfésszel rendelkező eszközök csatlakoztatását. Például az SDIO-t számos kártya WiFi és Bluetooth moduljaiban használják, mint például a Raspberry Pi 3. Az új verem lehetővé teszi a CAM interfész használatával SD-parancsok küldését a felhasználói térben lévő alkalmazásokból, ami lehetővé teszi az eszközök létrehozását. felhasználói szinten működő illesztőprogramok. Megkezdődött a munka a FullMAC módban működő Broadcom vezeték nélküli chipek illesztőprogramjainak létrehozásán (a lapka oldalán a saját operációs rendszere a 802.11-es vezeték nélküli verem implementációival fut);
    • Folyamatban van az NFSv4.2 (RFC-7862) FreeBSD-hez való implementálása. Az NFS új verziója támogatja a posix_fadvise, a posix_fallocate függvényeket, a SEEKHOLE/SEEKDATA módokat az lseek-ben, valamint a fájl részeinek helyi másolását a szerveren (a kliensnek való átvitel nélkül).

      A FreeBSD jelenleg alapvető támogatást nyújt a LayoutError, IOAdvise, Allocate és Copy műveletekhez. Már csak az lseek(SEEKHOLE/SEEKDATA) NFS-sel való használatához szükséges Seek művelet végrehajtása van hátra. NFSv4.2 támogatást terveznek a FreeBSD 13-hoz;

  • Tároló- és fájlrendszerek
    • Befejezéséhez közeledik a FUSE (Fájlrendszer a USERspace-ben) alrendszer illesztőprogramjának átdolgozására irányuló projekt, amely lehetővé teszi a fájlrendszerek felhasználói térben történő megvalósítását. Az eredetileg szállított illesztőprogram elavult, és sok hibát tartalmaz. Az illesztőprogram-korszerűsítési projekt részeként megvalósult a FUSE 7.23 protokoll támogatása (korábban a 7.8-as, 11 éve megjelent verzió támogatott), a kerneloldali hozzáférési jogok ellenőrzésére kód került hozzáadásra („-o default_permissions”), hívások VOP_MKNOD, VOP_BMAP és VOP_ADVLOCK került hozzáadásra, a FUSE műveletek megszakításának képessége, hozzáadott a névtelen csövek és a biztosítékokban lévő unix aljzatok támogatása, a kqueue használatának képessége a /dev/fuse fájlhoz, lehetővé tette a csatolási paraméterek frissítését a „mount -u” segítségével, hozzáadott támogatás a biztosítékok NFS-en keresztüli exportálásához, megvalósított RLIMIT_FSIZE elszámoláshoz, hozzáadott FOPEN_KEEP_CACHE jelzőkhöz és FUSE_ASYNC_READ-hez, jelentős teljesítményoptimalizálásra került sor, és a gyorsítótárazási szervezést javították;
    • A BIO_DELETE művelet támogatása hozzáadásra került a swap pager kódhoz, amely lehetővé teszi a TRIM parancs használatát, amikor blokkokat távolít el az SSD meghajtókról, hogy megnövelje azok élettartamát.
  • Hardver támogatás
    • Folytatódik a munka az ARM64 SoC Broadcom BCM5871X támogatásán az ARMv8 Cortex-A57 processzorokkal, amelyek útválasztókban, átjárókban és hálózati tárolókban használhatók. A beszámolási időszakban a belső és külső iProc PCIe buszok támogatása továbbfejlesztésre került, a BNXT Ethernet támogatása hozzáadásra került, és folyamatban van a munka a beépített kriptomotor használatán az IPsec felgyorsítására. A kód integrálása a HEAD ágba az év második felében várható;
    • Megkezdődött a munka a 64 bites SoC NXP LS1046A támogatásán, amely az ARMv8 Cortex-A72 processzorra épül, integrált hálózati csomagfeldolgozási gyorsítómotorral, 10 Gb Ethernettel, PCIe 3.0-val, SATA 3.0-val és USB 3.0-val. Az alapplatform (többfelhasználós SMP) és a SATA 3.0 támogatása már megvalósult. Az USB 3.0, SD/MMC és I2C támogatása fejlesztés alatt áll. A tervek között szerepel az Ethernet, a GPIO és a QSPI támogatása. A munka befejezése és a HEAD ágba való felvétele 4 IV. negyedévében várható.
    • Frissített mlx5en és mlx5ib illesztőprogramok a Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] és ConnectX-6 [Dx] Ethernet és InfiniBand adapterekhez. Hozzáadott támogatás a Mellanox Socket Direct (ConnectX-6) adapterekhez, amely akár 200 Gb/s átviteli sebességet tesz lehetővé a PCIe Gen 3.0 buszon. A többmagos BlueField chipekhez hozzáadták az RShim illesztőprogram támogatását. A portokhoz hozzáadtuk az mstflint csomagot a Mellanox adapterek diagnosztikai segédprogramjaival;
  • Alkalmazások és portrendszer
    • A grafikai verem összetevői frissítve lettek. A drm.ko (Direct Rendering Manager) illesztőprogram a Linux 5.0 rendszermagból lett portolva. Ezt az illesztőprogramot kísérleti jellegűnek tekintik, és a portfába grafikus/drm-devel-kmod néven került be. Mivel az illesztőprogram a frissített Linux KPI keretrendszert használja, hogy kompatibilis legyen a Linux kernel DRM API-jával, a FreeBSD CURRENT futtatásához szükséges. A VirtualBox virtuális GPU-hoz tartozó vboxvideo.ko drm-illesztőprogram szintén Linuxról lett portolva. A Mesa csomagot a 18.3.2-es kiadásra frissítették, és a devel/llvm80 helyett a devel/llvm60 portról származó LLVM használatára váltottak.
    • A FreeBSD portfája meghaladta a 37000 2146 portot, a lezáratlan PR-ok száma továbbra is 7837. A jelentési időszakban 172 fejlesztőtől 5.7 változtatás történt. Három új résztvevő kapott kötelezettségvállalási jogot. A portokban található jelentős verziófrissítések közé tartozik: MySQL 3.6, Python 2.5, Ruby 4.8, Samba 1.0, Julia 68.0, Firefox 75.0.3770.100, Chromium 3.6. Az összes Go portot a "USES=go" jelző használatára alakították át. A "USES=cabal" jelző hozzáadva a Haskell kódhoz használt Cabal csomagkezelőhöz. A szigorú veremvédelmi mód engedélyezve van. A Python alapértelmezett verziója a 2.7 a XNUMX helyett.
    • A segédprogram kiadása elkészült nsysctl 1.0, amely analógot kínál a /sbin/sysctl fájlhoz, amely azt használja libxo a kimenethez és a lehetőségek bővített készletének biztosításához. Az Nsysctl segítségével vizuálisan nyomon követhető a sysctl értékek állapota, és strukturált formában jeleníthető meg az objektumokkal kapcsolatos információ. Kimenet XML, JSON és HTML formátumban lehetséges;

Forrás: opennet.ru

Hozzászólás