Poročilo o napredku FreeBSD Q2019 XNUMX

Objavljeno poročilo o razvoju projekta FreeBSD od aprila do junija 2019. Med spremembami lahko opazimo:

  • Splošna in sistemska vprašanja
    • Osnovna ekipa se je odločila ustanoviti delovno skupino za raziskovanje možnosti premika izvorne kode iz centraliziranega sistema za nadzor vira Subversion v decentraliziran sistem Git.
    • Izvedel fuzz testiranje jedra FreeBSD z uporabo sistema syzkaller in številne ugotovljene napake so bile popravljene. Dodana plast za fuzzing testiranje knjižnic za združljivost z 32-bitnim okoljem v sistemih s 64-bitnim jedrom. Implementirana je bila možnost izvajanja syzkallerja v virtualnih strojih, ki temeljijo na bhyve. V naslednji fazi je načrtovana razširitev pokritosti testiranja sistemskih klicev, uporaba LLVM sanitizerja za preverjanje jedra, uporaba netdumpa za shranjevanje odlagališč jedra med zrušitvami med testiranjem fuzzinga itd.
    • Začelo se je posodabljanje izvedbe zlib na ravni jedra. Za dostop jedra do kode zlib je bil imenik contrib/zlib preimenovan v sys/contrib/zlib, prav tako je bila preimenovana datoteka glave crc.h, da bi se izognili konfliktu z zlib/crc.h. Očiščena podedovana koda, ki je bila odvisna od zlib in inflate. Nato je načrtovano zagotoviti možnost gradnje jedra hkrati s starim in novim zlibom za postopen prenos na novo različico funkcij, ki uporabljajo stiskanje;
    • Infrastruktura emulacije okolja Linux (Linuxulator) je bila posodobljena. Povečana podpora za orodja za odpravljanje napak Linuxa, kot je pripomoček strace. Vratom je bil dodan paket linux-c7-strace, ki ga je mogoče uporabiti za sledenje izvedljivim datotekam Linuxa namesto standardnih pripomočkov truss in ktrace, ki še ne moreta dekodirati nekaterih zastavic in struktur, specifičnih za Linux. Poleg tega je bil dodan paket linux-ltp z izvršljivimi datotekami projekta Linux Test in odpravljene so bile težave z združljivostjo z izvedljivimi datotekami, povezanimi z novimi različicami glibc;
    • Implementacija operacij zakasnjene razveljavitve v mehanizmu pmap je bila prenesena na uporabo algoritma za obdelavo čakalnih vrst, ki deluje brez zaklepanja, kar je omogočilo reševanje težav s skalabilnostjo pri izvajanju velikega števila operacij vzporednega razslikavanja;
    • Mehanizem za blokiranje vnode med izvajanjem sistemskih klicev družine execve() je bil spremenjen, kar je omogočilo večjo učinkovitost pri hkratnem izvajanju execve() za isto datoteko (na primer pri izvajanju operacij sestavljanja s paralelizacijo zagona prevajalnika);
  • varnost
    • Hipervizor bhyve še naprej izboljšuje podporo za selitev gostujočih okolij v živo z enega gostitelja na drugega in funkcijo Shrani/obnovi, ki vam omogoča, da zamrznete sistem za goste, shranite stanje v datoteko in nato nadaljujete z izvajanjem.
    • Z uporabo knjižnice libvdsk je bhyve dodal podporo za slike diskov v formatu QCOW2. Za delovanje je potrebna namestitev
      posebej spremenjeno različico bhyve, ki je bila pretvorjena za uporabo upravljavcev operacij datotek, ki temeljijo na libvdsk. V obdobju poročanja je libvdsk opravil tudi delo za poenostavitev integracije podpore za nove formate, izboljšano zmogljivost branja in pisanja ter dodano podporo za Copy-On-Write. Od preostalih nalog je omenjena integracija libvdsk v glavno strukturo bhyve;

    • V pristaniščih je dodan sistem za zbiranje prometnih informacij
      Maltrail, ki vam omogoča ustvarjanje pasti za zlonamerne omrežne zahteve (preverjajo se IP-ji in domene s črnih seznamov) in pošiljanje informacij o zaznani dejavnosti centraliziranemu strežniku za naknadno blokiranje ali analizo poskusov napada;

    • Vratom so bile dodane platforme za odkrivanje napadov, analiziranje dnevnikov in spremljanje celovitosti datotek Wazuh (razcep Ossec s podporo za integracijo z ELK-Stack);
  • Omrežni podsistem
    • Gonilnik ena je bil posodobljen za podporo druge generacije omrežnih adapterjev ENAv2 (Elastic Network Adapter), ki se uporabljajo v infrastrukturi Elastic Compute Cloud (EC2) za organizacijo komunikacije med vozlišči EC2 pri hitrostih do 25 Gb/s. Gonilniku ena je dodana podpora za NETMAP.
    • FreeBSD HEAD sprejme nov sklad MMC/SD, ki temelji na ogrodju CAM in vam omogoča povezovanje naprav z vmesnikom SDIO (Secure Digital I/O). Na primer, SDIO se uporablja v modulih WiFi in Bluetooth za številne plošče, kot je Raspberry Pi 3. Novi sklad omogoča tudi uporabo vmesnika CAM za pošiljanje ukazov SD iz aplikacij v uporabniškem prostoru, kar omogoča ustvarjanje naprave gonilnike, ki delujejo na ravni uporabnika. Začelo se je ustvarjanje gonilnikov za brezžične čipe Broadcom, ki delujejo v načinu FullMAC (na strani čipa poganja podobnost lastnega operacijskega sistema z implementacijami svojega brezžičnega sklada 802.11);
    • V teku je delo za implementacijo NFSv4.2 (RFC-7862) za FreeBSD. Nova različica NFS dodaja podporo za funkcije posix_fadvise, posix_fallocate, načine SEEKHOLE/SEEKDATA v lseek in operacijo lokalnega kopiranja delov datoteke na strežnik (brez prenosa na odjemalca).

      FreeBSD trenutno zagotavlja osnovno podporo za operacije LayoutError, IOAdvise, Allocate in Copy. Vse, kar ostane, je implementacija operacije Iskanja, potrebne za uporabo lseek(SEEKHOLE/SEEKDATA) z NFS. Podpora za NFSv4.2 je načrtovana za FreeBSD 13;

  • Shranjevanje in datotečni sistemi
    • Projekt predelave gonilnika za podsistem FUSE (File system in USErspace), ki omogoča ustvarjanje implementacij datotečnih sistemov v uporabniškem prostoru, se bliža koncu. Prvotno priložen gonilnik je zastarel in vsebuje veliko napak. V okviru projekta posodobitve gonilnikov je bila implementirana podpora za protokol FUSE 7.23 (prej je bila podprta različica 7.8, izdana pred 11 leti), dodana je bila koda za preverjanje pravic dostopa na strani jedra (»-o default_permissions«), klici do Dodani so bili VOP_MKNOD, VOP_BMAP in VOP_ADVLOCK, zmožnost prekinitve operacij FUSE, dodana podpora za neimenovane cevi in ​​vtičnice unix v varovalkah, zmožnost uporabe kqueue za /dev/fuse, omogočeno posodabljanje parametrov priklopa prek »mount -u«, dodana podpora za izvoz varovalk prek NFS, implementirano obračunavanje RLIMIT_FSIZE, dodane zastavice FOPEN_KEEP_CACHE in FUSE_ASYNC_READ, izvedene so bile pomembne optimizacije delovanja in izboljšana je bila organizacija predpomnjenja;
    • Podpora za operacijo BIO_DELETE je bila dodana kodi swap pagerja, ki vam omogoča uporabo ukaza TRIM pri odstranjevanju blokov iz pogonov SSD za podaljšanje njihove življenjske dobe.
  • Strojna podpora
    • Nadaljuje se delo za implementacijo podpore za ARM64 SoC Broadcom BCM5871X s procesorji ARMv8 Cortex-A57, namenjeno uporabi v usmerjevalnikih, prehodih in omrežnem shranjevanju. V obdobju poročanja je bila izboljšana podpora za notranja in zunanja vodila iProc PCIe, dodana je bila podpora za BNXT Ethernet in poteka delo za uporabo vgrajenega kripto mehanizma za pospešitev IPsec. Integracija kode v vejo HEAD je predvidena v drugi polovici leta;
    • Začelo se je delo na podpori za 64-bitni SoC NXP LS1046A, ki temelji na procesorju ARMv8 Cortex-A72 z integriranim motorjem za pospeševanje obdelave omrežnih paketov, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 in USB 3.0. Podpora za osnovno platformo (večuporabniški SMP) in SATA 3.0 je že implementirana. Podpora za USB 3.0, SD/MMC in I2C je v razvoju. Načrti vključujejo podporo za Ethernet, GPIO in QSPI. Zaključek del in vključitev v podružnico HEAD je predviden v 4. kvartalu 2019.
    • Posodobljeni gonilniki mlx5en in mlx5ib za adapterje Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] in ConnectX-6 [Dx] Ethernet in InfiniBand. Dodana podpora za adapterje Mellanox Socket Direct (ConnectX-6), ki omogoča prepustnost do 200 Gb/s na vodilu PCIe Gen 3.0. Za večjedrne čipe BlueField je bila dodana podpora za gonilnik RShim. Vratom je bil dodan paket mstflint z naborom diagnostičnih pripomočkov za adapterje Mellanox;
  • Aplikacije in sistem vrat
    • Komponente grafičnih skladov so bile posodobljene. Gonilnik drm.ko (Direct Rendering Manager) je bil prenesen iz jedra Linux 5.0. Ta gonilnik velja za poskusnega in je bil dodan v drevo vrat kot graphics/drm-devel-kmod. Ker gonilnik uporablja posodobljeno ogrodje KPI za Linux, da je združljiv z API-jem za DRM jedra Linuxa, je za delovanje potreben FreeBSD CURRENT. Gonilnik vboxvideo.ko drm za virtualno grafično enoto VirtualBox je prav tako prenesen iz Linuxa. Paket Mesa je bil posodobljen na izdajo 18.3.2 in preklopljen na uporabo LLVM iz vrat devel/llvm80 namesto devel/llvm60.
    • Drevo vrat FreeBSD je preseglo 37000 vrat, število nezaprtih PR ostaja 2146. V obdobju poročanja je bilo 7837 razvijalcev narejenih 172 sprememb. Trije novi udeleženci so prejeli pravice izvajalca. Med pomembnimi posodobitvami različic v vratih so: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Vsa vrata Go so bila pretvorjena za uporabo zastavice "USES=go". Upravitelju paketov Cabal, ki se uporablja za kodo Haskell, je dodana zastavica "USES=cabal". Omogočen je način stroge zaščite sklada. Privzeta različica Pythona je 3.6 namesto 2.7.
    • Izdaja pripomočka je bila pripravljena nsysctl 1.0, ki ponuja analog /sbin/sysctl, ki uporablja libxo za izpis in zagotavljanje razširjenega nabora možnosti. Nsysctl se lahko uporablja za vizualno spremljanje stanja vrednosti sysctl in predstavitev informacij o objektih v strukturirani obliki. Možen je izpis v formatih XML, JSON in HTML;

Vir: opennet.ru

Dodaj komentar