A FreeBSD előrehaladási jelentése 2019 harmadik negyedévére

közzétett jelentés a FreeBSD projekt fejlesztéséről 2019 júliusa és szeptembere között. A változások közül kiemelhetjük:

  • Általános és rendszerszintű kérdések
    • A Core csapat általánosságban jóváhagyta a kód beillesztésének lehetőségét a rendszerbe, amelyet a BSD licence alapján terjesztenek egy további szabadalmi megállapodással (BSD+szabadalom), de az egyes komponensek jelen engedély alapján történő rendszerbe való felvételére vonatkozó döntést külön kell jóváhagyni;
    • Megtörtént a Subversion központi forrásvezérlő rendszerből a Git decentralizált rendszerbe történő forráskódok migrációjának végrehajtására létrehozott munkacsoport első ülése. A migráció megvalósíthatóságáról szóló vita még mindig folyamatban van, és számos kérdésben még döntéseket kell még kidolgozni (például, hogy mi a teendő a contrib/-el, szükséges-e a hash-ek újragenerálása a jelenlegi git-tárolóban, és hogyan lehet a legjobban végrehajtani a elkötelezi magát);
    • NetBSD-ről portolt KCSAN (Kernel Concurrency Sanitizer) eszközkészlet, amely lehetővé teszi a versenyhelyzetek észlelését a különböző CPU-kon futó kernelszálak között;
    • Dolgoznak a Clang beépített összeszerelőjének (IAS) használatán a GNU binutils assembler helyett;
    • A Linux környezet emulációs infrastruktúrája (Linuxulator) az ARM64 architektúrán való használatra lett igazítva. Megvalósította a „renameat2” rendszerhívást. A strace segédprogramot továbbfejlesztették a Linuxulatorban futó Linux futtatható fájlok problémáinak diagnosztizálására. A végrehajtható fájlok friss glibc-vel való összekapcsolása során felmerülő összeomlásokkal kapcsolatos probléma megoldódott. A Linux-összetevőket tartalmazó portok a Linuxulatorhoz frissültek CentOS 7.7-re;
    • A Google Summer of Code program részeként hat projektet fejeztek be sikeresen a hallgatók: elkészült az egységes (IPv4/IPv6) ping segédprogram megvalósítása, a tűzfalak tesztelésére és a kernel hibáinak azonosítására szolgáló eszközöket fejlesztettek ki (Kernel sanitizer), a mac_ipacl modult javasoltak, kódot írtak a virtuális memória tömörítésére, és megtörtént a munka a portépítési folyamat és a helyi telepítés elkülönítésére;
    • A rendszert használó FreeBSD kernel fuzzing tesztelésének projektje tovább fejlődik syzkaller. A jelentési időszakban több mint tíz hibát azonosítottak és szüntették meg a syzkaller segítségével. A syzkaller bhyve alapú virtuális gépeken való futtatásához külön szerver van dedikálva és használ
      A syzbot különféle FreeBSD-alrendszereket tesztelt a Google infrastruktúrájában. Megszervezte az összes összeomlás információinak továbbítását a backtrace.io szolgáltatásba, hogy egyszerűsítse a csoportosítást és elemzést;

    • Folyamatban van a zlib megvalósítás kernelszintű frissítése.
      A tömörítéssel kapcsolatos kód a több mint 1.0.4 éve kiadott zlib 20-ről a jelenlegi zlib 1.2.11 kódbázisba került. A zlib-hez való hozzáférés egységesítése érdekében a compress, compress2 és uncompress funkciókat hozzáadtuk a kernelhez. A PPP protokoll működését biztosító kód a netgraph alrendszerből átkerült a zlib rendszermegvalósítására, a könyvtár saját kiadása helyett. A kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor, alrendszerek is átkerültek az új zlib-be.
      if_mxge, bxe frissítve és ng_deflate;

    • Új kernel interfész fejlesztés alatt áll sysctlinfo, amely lehetővé teszi a sysctl paraméteradatbázisban a MIB (Management Information Base) formájában feldolgozott elemek megtalálását és az objektumokkal kapcsolatos információk átvitelét a felhasználói térbe.
  • biztonság
    • Kernel modult fejlesztettek ki mac_ipacl, amely a TrustedBSD MAC-keretrendszeren alapul, és hozzáférés-vezérlő rendszert valósít meg a börtönkörnyezetek hálózati verem-beállításaihoz. Például a mac_ipacl használatával a gazdagép rendszergazdája megakadályozhatja, hogy a jail környezetben a root felhasználó IP-címeket vagy alhálózati beállításokat módosítson vagy állítson be bizonyos hálózati interfészekhez. Javasolt kötelező beléptető rendszer lehetővé teszi beállíthatja a Jail számára engedélyezett IP-címek és alhálózatok listáját, megtilthatja bizonyos IP-címek és alhálózatok telepítését a Jailben, vagy csak bizonyos hálózati interfészekre korlátozhatja a paraméterek módosítását;
    • Az Intel egy szoftververem portot adományozott a projektnek TPM 2.0 (Trusted Platform Module) a biztonságos számítási chiphez való interfészhez, amelyet általában a firmware és az operációs rendszer rendszerbetöltőjének ellenőrzött betöltésére használnak. A veremkomponensek ports security/tpm2-tss, security/tpm2-tools és security/tpm2-abrmd formában jelennek meg. A tpm2-tss port könyvtárakat tartalmaz a TPM2 API használatához, a tpm2-tools parancssori segédprogramokat biztosít a TPM műveletek végrehajtásához, a tpm2-abrmd pedig a TPM Access Broker és Resource Manager komponensek háttérfolyamat-megvalósítását tartalmazza, amely multiplexeli a különböző TPM felhasználóktól érkező kéréseket. egyetlen eszközre. A FreeBSD-n történő ellenőrzött indítás mellett a TPM felhasználható a Strongswan IPsec, SSH és TLS biztonságának fokozására, külön chipen végrehajtott kriptográfiai műveletek végrehajtásával;
    • Az amd64 architektúra rendszermagja a W^X (write XOR execute) védelmi technikával való rendszerindításhoz van igazítva, ami azt jelenti, hogy a memórialapokhoz nem lehet egyszerre hozzáférni íráshoz és végrehajtáshoz (a kernel most már betölthető olyan futtatható memórialapok használatával, amelyeknél írható tilos). Az új kernelvédelmi módszert a HEAD ág tartalmazza, és a FreeBSD 13.0 és 12.2 kiadásai is tartalmazni fogják;
    • Az mmap és mprotect rendszerhívásokhoz megvalósítani makró PROT_MAX(), amely lehetővé teszi a további változtatásokhoz (PROT_READ, PROT_WRITE, PROT_EXEC) engedélyezett hozzáférés-korlátozási jelzők készletének meghatározását. A PROT_MAX() használatával a fejlesztő megtilthatja egy memóriaterület átvitelét a végrehajtható kategóriába, vagy olyan memóriát kérhet, amely nem teszi lehetővé a végrehajtást, de később végrehajthatóvá alakítható. Például előfordulhat, hogy egy memóriarégió csak a dinamikus linkelés vagy a JIT kódgenerálás idejére nyitva áll írásra, de az írás befejeztével csak olvasásra és végrehajtásra korlátozódik, a jövőben pedig, ha feltörik, a támadó nem tudja engedélyezni az írást az adott memóriablokkhoz. A PROT_MAX() mellett a sysctl vm.imply_prot_max is megvalósul, amely aktiválva az mmap első hívás kezdeti paraméterei alapján határozza meg az érvényes jelzők készletét;
    • A sebezhetőségek kiaknázása elleni védelem fokozása érdekében a címtér véletlenszerűsítési technikán (ASLR) túlmenően egy olyan mechanizmust, amely véletlenszerűvé teszi azon mutatók eltolásait, amelyek a kezdeti veremkeretet és a veremben elhelyezett struktúrákat a környezetre vonatkozó információkkal, programindítási paraméterekkel és adatokkal együtt megcímzik. a végrehajtható képekhez ELF formátumban javasolt;
    • Dolgoztunk az unsafe gets funkció eltávolításán a libc-ből (a C11 szabványtól kezdve ez a funkció kimaradt a specifikációból), és kijavították azokat a portokat, amelyek még használják ezt a funkciót. A változtatást a tervek szerint a FreeBSD 13.0-ban kínálják;
    • Kísérleti projekt indult, amelynek célja a börtönkörnyezetek keretrendszeren alapuló megszervezéséhez szükséges eszközök létrehozása képes képek létrehozásához és exportálásához, a Dockerhez hasonlóan megvalósítva, és egy illesztőprogramot nomád, amely interfészt biztosít az alkalmazások dinamikus indításához börtönkörnyezetben. A javasolt modell lehetővé teszi, hogy elkülönítsük a börtönkörnyezetek létrehozásának és az alkalmazások telepítésének folyamatait. A projekt egyik célja, hogy lehetőséget biztosítson a börtönök Docker-stílusú konténerekként való manipulálására;
  • Tároló- és fájlrendszerek
    • A NetBSD-től a "makefs" segédprogramig megmozdult FAT fájlrendszer támogatás (msdosfs). Az előkészített változtatások lehetővé teszik FS lemezképek létrehozását FAT-tal az md illesztőprogram használata és root jogosultság nélkül;
    • Befejeződött a FUSE (File system in USErspace) alrendszer-illesztőprogram átdolgozása, amely lehetővé teszi a fájlrendszer-megvalósítások létrehozását a felhasználói térben. Az eredetileg szállított illesztőprogram sok hibát tartalmazott, és a 7.8 éve megjelent FUSE 11-ra épült. Az illesztőprogram-korszerűsítési projekt részeként megvalósult a FUSE 7.23 protokoll támogatása, hozzáadásra került a kerneloldali hozzáférési jogok ellenőrzésére szolgáló kód („-o default_permissions”), hozzáadásra kerültek a VOP_MKNOD, VOP_BMAP és VOP_ADVLOCK hívásai, a biztosították a FUSE műveletek megszakításának lehetőségét, a névtelen csövek és a unix foglalatok támogatása a fusefekben, lehetővé vált a kqueue használata a /dev/fuse fájlhoz, lehetőség volt a csatolási paraméterek frissítésére a „mount -u” segítségével, hozzáadott támogatás a biztosítékok NFS-en keresztüli exportálásához bevezette az RLIMIT_FSIZE elszámolást, hozzáadta a FOPEN_KEEP_CACHE és FUSE_ASYNC_READ jelzőket, jelentős teljesítményoptimalizálást és javított gyorsítótár-szervezést hajtott végre. Az új meghajtót a head and stable/12 ág tartalmazza (a FreeBSD 12.1-ben);
    • Az NFSv4.2 (RFC-7862) FreeBSD-hez való megvalósítása majdnem befejeződött. A beszámolási időszakban a fő hangsúly a tesztelésen volt. A tesztek befejeződtek a Linux implementációval való kompatibilitás ellenőrzésére, de a pNFS-kiszolgáló tesztelése az NFSv4.2-vel még mindig folyamatban van. Általában a kód már készen áll a FreeBSD fej/aktuális ágaiba való integrálásra. Az NFS új verziója 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 (a kliensnek való átvitel nélkül);
  • Hardver támogatás
    • Elindult egy projekt a FreeBSD laptopokon való teljesítményének javítására. Az első olyan eszköz, amelyet a FreeBSD hardveres támogatása szempontjából auditáltak, a hetedik generációs Lenovo X1 Carbon laptop volt;
    • CheriBSD, a FreeBSD elágazása a processzor-architektúra kutatásához CHERI (Capability Hardware Enhanced RISC Instructions), frissítve, hogy támogassa a közelgő ARM Morello processzort, amely támogatja a Capsicum tervezés biztonsági modelljén alapuló CHERI memória hozzáférés-vezérlő rendszert. Morello chip terveznek megjelenés 2021-ben. A CheriBSD fejlesztői továbbra is figyelemmel kísérik a MIPS architektúrán alapuló CHERI referencia prototípus fejlesztését;
    • Kibővített támogatás a RockPro3399 és NanoPC-T64 kártyákban használt RockChip RK4 chipekhez. A legjelentősebb fejlesztés az eMMC támogatása és az alaplapon használt eMMC vezérlő új meghajtójának fejlesztése volt;
    • 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 jelentési időszak alatt
      Az iProc PCIe támogatása kibővült, és az IPsec felgyorsítása érdekében hardveres kriptográfiai műveletek is használhatók.
      A HEAD ágba történő kódintegráció a negyedik negyedévben várható;

    • Jelentős előrelépés történt a Powerpc64 platformhoz való FreeBSD port fejlesztésében. A hangsúly az IBM POWER8 és POWER9 processzorokkal rendelkező rendszerek minőségi teljesítményén van, de opcionálisan támogatja a régebbi Apple Power Mac, x500 és Amiga A1222 operációs rendszereket is. A powerpc*/12 ág továbbra is a gcc 4.2.1 verziójával kerül szállításra, a powerpc*/13 ág pedig hamarosan áttelepül az llvm90-re. A 33306 portból 30514-et sikerült összeszerelni;
    • A FreeBSD portolás folytatódik a 64 bites SoC NXP LS1046A esetében, amely az ARMv8 Cortex-A72 processzoron alapul, 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. A beszámolási időszakban az USB 3.0, SD/MMC, I2C, DPAA és GPIO hálózati interfész támogatása valósult meg. Tervben van a QSPI támogatása és a hálózati interfész teljesítményének optimalizálása. A munka befejezése és a HEAD ágba való felvétele 4 IV. negyedévében várható;
    • 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 hozzá és teszteltük az ena illesztőprogramot, és a memória elrendezését úgy alakították át, hogy lehetővé tegye az LLQ módot az Amazon EC2 A1 környezetekben;
  • Alkalmazások és portrendszer
    • Frissített grafikus verem-összetevők és xorg-hoz kapcsolódó portok. A USE_XORG-t és XORG_CAT-ot használó portok átkerültek a USES keretrendszerbe a bsd.xorg.mk bsd.port.mk-n keresztüli hívása helyett. Az ilyen portok ma már tartalmazzák a "USES=xorg" jelzőt a makefile-ikben. Az XORG_CAT funkciót elválasztották a bsd.xorg.mk fájltól, és mostantól a "USES=xorg-cat" jelző engedélyezi. Hozzáadott eszközök az xorg portok közvetlen generálásához egy git tárolóból
      freedesktop.org, amely például lehetővé teszi portok létrehozását a még ki nem adott verziókhoz. Terveink szerint a jövőben eszközöket készítünk a mezon összeállítási rendszer használatához az autotools helyett az xorg portok építéséhez.

      Dolgoztak a már nem támogatott összetevőkhöz kötött régi xorg portok megtisztításán, például az x11/libXp portot eltávolították, az x11/Xxf86misc, x11-fonts/libXfontcache és graphics/libGLw portokat pedig elavulttá váltak. ;

    • Dolgoztunk a Java 11 és újabb kiadások támogatásának javításán a FreeBSD-ben, valamint néhány változtatás áthelyezése a Java 8 ágba. Az olyan új Java 11 funkciók támogatása után, mint a Java Flight Recorder, a HotSpot Serviceability Agent, a HotSpot Debugger bevezetésre került A FreeBSD , a DTrace, a Javac Server, a Java Sound és az SCTP esetében a munka annak biztosítására terelődött, hogy minden kompatibilitási teszt sikeres legyen. A tesztek sikeres teljesítése során előforduló hibák száma 50-ről 2-re csökkent;
    • A KDE Plasma desktop, a KDE-keretrendszerek, a KDE-alkalmazások és a Qt naprakészen és a legfrissebb verziókra frissítve vannak;
    • Az Xfce desktop portok kiadásra frissítve 4.14;
    • A FreeBSD portfája átlépte a 38000 2000 portot, a lezáratlan PR-ok száma valamivel több mint 400, ebből 7340 PR-t még nem sikerült megoldani. A beszámolási időszakban 169 módosítást hajtott végre 1.12 fejlesztő. Két új résztvevő (Santhosh Raju és Dmitri Goutnik) kötelezettségvállalási jogot kapott. Megjelent a pkg 2.0.4 csomagkezelő új kiadása, amely támogatja a portfák átfedését és a bsd.sites.mk tisztítását. A portokban található jelentős verziófrissítések közé tartoznak a következők: Lazarus 9.0, LLVM 5.30, Perl11, PostgreSQL 2.6, Ruby 69.0.1, Firefox 68.1.0, Firefox-esr 76.0, Chromium XNUMX;
    • A projektfejlesztés folytatódik ClonOS, fejlesztés egy speciális disztribúció a virtuális szerver infrastruktúra telepítésére. Az általa megoldott feladatokat tekintve a ClonOS olyan rendszerekhez hasonlít, mint a Proxmox, Triton (Joyent), OpenStack, OpenNebula és Amazon AWS, amelyekhez képest a fő különbség a FreeBSD használata, valamint a FreeBSD Jail konténerek, ill. Bhyve és Xen hipervizorokon alapuló virtuális környezetek. A legutóbbi változások a támogatást is tartalmazzák
      cloud-init Linux/BSD VM-hez és cloudbase-init Windows VM-hez, a natív lemezképek használatára való átállás megkezdése, Jenkins CI használatával a buildek teszteléséhez és egy új pkg-tárral a telepítéshez
      ClonOS csomagokból.

Forrás: opennet.ru

Hozzászólás