FreeBSD fejlesztési jelentés 2020 első negyedévéről

közzétett jelentés a FreeBSD projekt fejlesztéséről 2020 januárja és márciusa között. A változások közül kiemelhetjük:

  • Általános és rendszerszintű kérdések
    • Eltávolította a GCC fordítókészletet a FreeBSD-CURRENT forrásfából, valamint a nem használt gperf, gcov és gtc (devicetree fordító) segédprogramokat. Minden olyan platformon, amely nem támogatja a Clang-ot, a portokról telepített külső összeállítási eszközökre váltottak. Az alaprendszer a GCC 4.2.1 elavult kiadását szállította, és az újabb verziók integrációja nem volt lehetséges a 4.2.2-nek a GPLv3 licencre való átállása miatt, amelyet a FreeBSD alapkomponensei számára nem tartottak megfelelőnek. A GCC jelenlegi kiadásai, beleértve a GCC 9-et is, továbbra is telepíthetők csomagokból és portokról.
    • A Linux környezet emulációs infrastruktúrája (Linuxulator) támogatja a sendfile rendszerhívást, a TCP_CORK módot (szükséges az nginx-hez) és a MAP_32BIT jelzőt (megoldja a problémát az Ubuntu Bionic Mono-val történő csomagok indításával). A DNS-feloldással kapcsolatos problémák 2.30-nál újabb glibc használatakor (például CentOS 8-ból) megoldódtak.
      A folyamatos integrációs infrastruktúra lehetővé teszi a Linuxulatort futtató LTP (Linux Testing Project) jobok futtatását a Linux támogatása érdekében a kódon végzett fejlesztések tesztelésére. Körülbelül 400 teszt sikertelen, és javításra szorul (egyes hibákat hamis pozitív eredmények okozzák, némelyik triviális javítást igényel, de vannak olyanok is, amelyekhez új rendszerhívások támogatása szükséges a javításhoz). Dolgoztunk a Linuxulator kód megtisztításán és a hibakeresés egyszerűsítésén. A kiterjesztett attribútumokat és a fexecve rendszerhívást támogató javítások elkészültek, de még nem kerültek áttekintésre.

    • Folytatódnak a forráskódok központi forrásvezérlő rendszerből a Subversionból a Git decentralizált rendszerbe történő áttelepítésével foglalkozó munkacsoport ülései. A migrációra vonatkozó javaslatokat tartalmazó jelentés készül.
    • В rtld (futásidejű linker) továbbfejlesztett közvetlen végrehajtási mód (“/libexec/ld-elf.so.1 {elérési út} {argumentumok}”).
    • A FreeBSD kernel fuzzing tesztelésének projektje a syzkaller rendszerrel tovább fejlődik. A jelentési időszak során a hálózati veremben és a syzkaller segítségével azonosított fájlleíró táblákkal való munkavégzéshez szükséges kóddal kapcsolatos problémák megszűntek. A hibadiagnózist követően a hibakeresés egyszerűsítése érdekében módosításokat adtunk az SCTP-veremhez. A stressz2 készlethez szabályokat adtunk a lehetséges regressziók azonosítására. Támogatás hozzáadva az új rendszerhívások fuzz teszteléséhez, beleértve a copy_file_range(), __realpathat() és Capsicum alrendszerhívásokat. Folytatódik a munka a Linux emulációs réteg fuzz-teszttel való lefedésére. Elemeztük és kiküszöböltük a legutóbbi Coverity Scan jelentésekben feljegyzett hibákat.
    • A folyamatos integrációs rendszer átállt arra, hogy az összes fejági tesztet csak a clang/lld használatával hajtsa végre. A RISC-V tesztelésekor a teljes lemezkép kialakítása biztosított a QEMU OpenSBI használatával végzett tesztek futtatásához. Új feladatok hozzáadva a képek és a powerpc64 virtuális gépek teszteléséhez (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Folyamatban van a Kyua tesztcsomag átvitele a portokról (devel/kyua) az alaprendszerre, hogy megoldja azokat a problémákat (a csomagok nagyon lassan telepítődnek), amelyek a Kyua új architektúrákon történő használatakor merülnek fel, amelyek fejlesztése emulátor vagy emulátor segítségével történik. FPGA. Az alaprendszerbe történő integráció jelentősen leegyszerűsíti a beágyazott platformok tesztelését és a folyamatos integrációs rendszerekkel való interfészeket.
    • Elindult egy projekt a hálózati híd-illesztőprogram teljesítményének optimalizálására ha_híd, amely egyetlen mutexet használ a belső adatok zárolására, ami nem teszi lehetővé a kívánt teljesítmény elérését nagyszámú börtönkörnyezetet vagy virtuális gépet egy hálózatban egyesített rendszereken. Ebben a szakaszban teszteket adtunk a kódhoz, hogy megakadályozzák a regressziókat a zárakkal végzett munka korszerűsítése során. A ConcurrencyKit használatának lehetőségét az adatátviteli kezelők (bridge_input(), bridge_output(), bridge_forward(), ...) párhuzamosítására fontolgatják.
    • Új sigfastblock rendszerhívás került hozzáadásra, amely lehetővé teszi egy szál számára, hogy megadjon egy memóriablokkot egy gyors jelkezelő számára a kivételkezelők teljesítményének javítása érdekében.
    • A kernel támogatja az ARMv8.1 rendszerek által támogatott LSE (Large System Extension) atomi utasításokat. Ezek az utasítások a teljesítmény javításához szükségesek, ha Cavium ThunderX2 és AWS Graviton 2 kártyákon fut. A hozzáadott változtatások észlelik az LSE támogatást, és dinamikusan teszik lehetővé az atomi implementációt ezek alapján. A tesztelés során az LSE használata lehetővé tette a kernel összeszereléséhez szükséges processzoridő 15%-os csökkentését.
    • Teljesítményoptimalizálásra került sor, és az eszköztár funkcionalitását kibővítettük az ELF formátumú futtatható fájlok számára.
      Támogatás hozzáadva a DWARF hibakeresési információk gyorsítótárazásához, megoldódott az elfcopy/objcopy segédprogramok problémái, hozzáadva a DW_AT_ranges feldolgozást,
      A readelf megvalósítja a PROTMAX_DISABLE, STKGAP_DISABLE és WXNEEDED jelzők, valamint a Xen és GNU Build-ID dekódolását.

  • biztonság
    • A FreeBSD teljesítményének javítása érdekében az Azure felhőkörnyezetekben folyamatban van a HyperV Socket mechanizmus támogatásának biztosítása, amely lehetővé teszi a socket interfész használatát a vendégrendszer és a gazdagép környezet közötti interakcióhoz hálózat beállítása nélkül.
    • Folyamatban van a munka a FreeBSD megismételhető buildjein, amelyek lehetővé teszik, hogy a rendszerkomponensek végrehajtható fájljai pontosan a deklarált forráskódokból álljanak össze, és ne tartalmazzanak felesleges változtatásokat.
    • Az elfctl segédprogramba bekerült a további védelmi mechanizmusok (ASLR, PROT_MAX, stack gap, W+X leképezés) vezérlésének képessége az egyes folyamatok szintjén.
  • Tároló- és fájlrendszerek
    • Dolgoznak azon, hogy az NFS TLS 1.3-on alapuló titkosított kommunikációs csatornán működjön a Kerberos (sec=krb5p mód) helyett, amely csak az RPC-üzenetek titkosítására korlátozódik, és csak szoftverben valósul meg. Az új megvalósítás a kernel által biztosított TLS verem segítségével teszi lehetővé a hardveres gyorsítást. Az NFS over TLS kód már majdnem készen áll a tesztelésre, de még munkára van szükség az aláírt ügyféltanúsítványok támogatásához és a kernel TLS-verme NFS-adatok küldésére való adaptálásához (a fogadáshoz szükséges javítások már készen állnak).
  • Hardver támogatás
    • Folyamatban van az AMD technológián alapuló kínai x86 CPU Hygon támogatásának bővítése;
    • A CheriBSD részeként, a FreeBSD egyik ága a kutatási processzorarchitektúrához CHERI (Capability Hardware Enhanced RISC Instructions), továbbra is megvalósul az ARM Morello processzor támogatása, amely a Capsicum projekt biztonsági modelljén alapuló CHERI memória hozzáférés-vezérlő rendszert fogja támogatni. Morello chip terveznek megjelenés 2021-ben. A munka jelenleg a Morellót hajtó Arm Neoverse N1 platform támogatására összpontosít. Bemutatták a CheriBSD kezdeti portját a RISC-V architektúrához. A CheriBSD fejlesztése folytatódik a MIPS64 architektúrán alapuló CHERI referencia prototípushoz.
    • 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. Jelenleg a QorIQ és LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI illesztőprogramok előkészítése zajlik a FreeBSD fő összetételére való átvitelre.
    • Az ena illesztőprogramot a 2.1.1-es verzióra frissítették az ENAv2 (Elastic Network Adapter) hálózati adapterek második generációjának támogatásával, 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/sebességgel. s. Az ENA 2.2.0 frissítése készül.
    • Folytatódik a Powerpc64 platform FreeBSD portjának fejlesztése. A hangsúly az IBM POWER8 és POWER9 processzorokkal rendelkező rendszerek minőségi teljesítményén van. A jelentési időszakban a FreeBSD-CURRENT átkerült az LLVM/Clang 10.0 fordító és lld linker használatára a GCC helyett. Alapértelmezés szerint a powerpc64 rendszerek az ELFv2 ABI-t használják, és az ELFv1 ABI támogatása megszűnt. A FreeBSD-STABLE-ben még mindig megtalálható a gcc 4.2.1. A virtio, aacraid és ixl illesztőprogramokkal kapcsolatos problémák megoldódtak. Powerpc64 rendszereken lehetőség van a QEMU futtatására Huge Pages támogatás nélkül.
    • Folytatódik a munka a RISC-V architektúra támogatásának megvalósításán. Jelenlegi formájában a FreeBSD már sikeresen elindul a SiFive Hifive Unleashed táblán, amelyhez a meghajtókat előkészítették
      Az UART, SPI és PRCI támogatja az OpenSBI és SBI 0.2 firmware-t. A jelentéstételi időszakban a munka a GCC-ről a clang and lld-re való migrációra összpontosult.

  • Alkalmazások és portrendszer
    • A FreeBSD portgyűjteménye átlépte a 39 ezres portos küszöböt, a le nem zárt PR-ok száma valamivel meghaladja a 2400-at, ebből 640 PR-t még nem rendeztek. A beszámolási időszakban 8146 változtatás történt 173 fejlesztőtől. Négy új résztvevő kapott kötelezettségvállalási jogot (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). A USES=qca jelző hozzáadva és a USES=zope jelző eltávolítva (a Python 3-mal való összeférhetetlenség miatt). A Python 2.7 portfából való eltávolítása folyamatban van – minden Python 2-alapú portot át kell vinni a Python 3-ra, különben eltávolítják. A pkg csomagkezelő az 1.13.2-es kiadásra frissült.
    • Frissített grafikus verem-összetevők és xorg-hoz kapcsolódó portok.
      Az X.org szervert frissítették az 1.20.8-as verzióra (korábban az 1.18-as ágon szállították), ami lehetővé tette a FreeBSD számára, hogy alapértelmezetten az udev/evdev háttérprogramot használja a beviteli eszközök kezelésére. A Mesa csomag alapértelmezés szerint a DRI3 bővítményt használja a DRI2 helyett. Folyamatban van a munka a grafikus illesztőprogramok, a bemeneti eszközverem és a drm-kmod összetevők (egy port, amely lehetővé teszi az amdgpu, az i915 és a radeon DRM modulok működését, a linuxkpi keretrendszer használatával a Linux kernel Direct Rendering Managerével való kompatibilitás érdekében) megtartását. naprakész.

    • A KDE Plasma desktop, a KDE-keretrendszerek, a KDE-alkalmazások és a Qt naprakészen és a legfrissebb verziókra frissítve vannak. A portokhoz egy új kstars (csillag atlasz) alkalmazás került.
    • Dolgoztak az xfwm4 ablakkezelőben az Xfce 4.14-es verzióra történő frissítése után megjelenő regresszív változások kiküszöbölésén (például az ablakok díszítésekor jelentek meg műtermékek).
    • A Wine port frissítésre került a Wine 5.0 kiadásra (korábban a 4.0.3-at kínálták).
    • Az 1.14-es verziótól kezdődően a Go nyelvi fordító hivatalos támogatást adott az ARM64 architektúrához a FreeBSD 12.0-hoz.
    • Az alaprendszer OpenSSH-ját a 7.9p1 kiadásra frissítették.
    • A sysctlmibinfo2 könyvtárat implementálták és portokban helyezték el (devel/libsysctlmibinfo2), amely API-t biztosít a sysctl MIB eléréséhez és a sysctl nevek objektumazonosítókká (OID-k) való lefordításához.
    • A terjesztési frissítés létrejött NomadBSD 1.3.1, amely a FreeBSD egy USB-meghajtóról indítható, hordozható asztali számítógépként való használatra adaptált kiadása. A grafikus környezet ablakkezelőn alapul Nyitott doboz. Meghajtók felszerelésére szolgál DSBMD (a CD9660, FAT, HFS+, NTFS, Ext2/3/4 csatlakoztatása támogatott), vezeték nélküli hálózat konfigurálásához - wifimgrés a hangerő szabályozásához - DSBMixer.
    • Lépések munka teljes dokumentáció megírásáról a börtönkörnyezet-kezelő számára képes. A Pot 0.11.0 kiadásra készül, amely tartalmazni fogja a hálózati verem kezeléséhez szükséges eszközöket.

Forrás: opennet.ru

Hozzászólás