FreeBSD plėtros ataskaita už pirmąjį 2020 m. ketvirtį

paskelbta ataskaita apie FreeBSD projekto vystymąsi nuo 2020 m. sausio iki kovo mėn. Tarp pakeitimų galime pastebėti:

  • Bendrieji ir sisteminiai klausimai
    • Pašalintas GCC kompiliatorių rinkinys iš FreeBSD-CURRENT šaltinio medžio, taip pat nenaudojamos gperf, gcov ir gtc (devicetree kompiliatoriaus) priemonės. Visos platformos, kurios nepalaiko Clang, buvo perjungtos į išorinius kūrimo įrankius, įdiegtus iš prievadų. Bazinė sistema pristatė pasenusią GCC 4.2.1 versiją, o naujesnių versijų integravimas nebuvo įmanomas dėl 4.2.2 perėjimo prie GPLv3 licencijos, kuri buvo laikoma netinkama pagrindiniams FreeBSD komponentams. Dabartinius GCC leidimus, įskaitant GCC 9, vis tiek galima įdiegti iš paketų ir prievadų.
    • „Linux“ aplinkos emuliacijos infrastruktūra („Linuxulator“) papildė „sendfile“ sistemos iškvietimą, TCP_CORK režimą (reikalingą „nginx“) ir MAP_32BIT vėliavėlę (išsprendžia problemą paleidžiant paketus su „Mono“ iš Ubuntu Bionic). Problemos, susijusios su DNS skyra naudojant naujesnę nei 2.30 glibc versiją (pavyzdžiui, iš CentOS 8), buvo išspręstos.
      Nuolatinio integravimo infrastruktūra suteikia galimybę paleisti LTP (Linux Testing Project) užduotis, kuriose veikia Linuxulator, kad būtų galima išbandyti kodo patobulinimus, skirtus palaikyti Linux. Maždaug 400 testų nepavyksta ir juos reikia pataisyti (kai kurias klaidas sukelia klaidingi teigiami rezultatai, kai kurias reikia pataisyti nereikšmingais, tačiau yra kitų, kuriems reikia pridėti naujų sistemos iškvietimų palaikymą). Buvo atliktas darbas siekiant išvalyti „Linuxulator“ kodą ir supaprastinti derinimą. Pataisymai su išplėstinių atributų palaikymu ir fexecve sistemos iškvietimu buvo paruošti, bet dar neperžiūrėti.

    • Tęsiasi darbo grupės, sukurtos pirminių kodų migracijai iš centralizuoto šaltinio valdymo sistemos Subversion į decentralizuotą sistemą Git vykdyti, posėdžiai. Šiuo metu rengiama ataskaita su pasiūlymais dėl migracijos.
    • В rtld (runtime linker) patobulintas tiesioginio vykdymo režimas („/libexec/ld-elf.so.1 {path} {arguments}“).
    • „FreeBSD“ branduolio „fuzzing“ testavimo, naudojant syzkaller sistemą, projektas toliau vystomas. Per ataskaitinį laikotarpį buvo pašalintos tinklo dėklo ir kodo problemos darbui su failų deskriptorių lentelėmis, nustatytomis naudojant syzkaller. Nustačius klaidą, SCTP krūva buvo pakeista, kad būtų lengviau derinti. Prie streso2 rinkinio buvo pridėtos taisyklės, leidžiančios nustatyti galimas regresijas. Pridėtas naujų sistemos iškvietimų fuzz testavimo palaikymas, įskaitant copy_file_range(), __realpathat() ir Capsicum posistemių iškvietimus. Tęsiamas darbas siekiant padengti Linux emuliacijos sluoksnį su pūkelių testavimu. Išanalizavome ir pašalinome naujausiose Coverity Scan ataskaitose nurodytas klaidas.
    • Nuolatinio integravimo sistema perjungta į visų galvos šakų testų vykdymą tik naudojant clang/lld. Testuojant RISC-V, užtikrinamas viso disko atvaizdo formavimas, kad būtų galima atlikti testus QEMU naudojant OpenSBI. Pridėtos naujos vaizdų ir powerpc64 virtualiųjų mašinų testavimo užduotys (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Vykdomas Kyua testavimo rinkinio perkėlimas iš prievadų (devel/kyua) į bazinę sistemą, kad būtų išspręstos problemos (paketai diegiami labai lėtai), kylančios naudojant Kyua naujose architektūrose, kurių kūrimas atliekamas naudojant emuliatorių arba FPGA. Integracija į bazinę sistemą žymiai supaprastins įterptųjų platformų testavimą ir sąsają su nuolatinio integravimo sistemomis.
    • Pradėtas tinklo tilto tvarkyklės našumo optimizavimo projektas jei_tiltas, kuris naudoja vieną mutex vidiniams duomenims užrakinti, o tai neleidžia pasiekti norimo našumo sistemose, kuriose yra daug kalėjimo aplinkų ar virtualių mašinų, sujungtų į vieną tinklą. Šiame etape į kodą buvo įtraukti testai, kad modernizuojant darbą su spynomis neatsirastų regresijos. Svarstoma galimybė naudoti „ConcurrencyKit“ duomenų perdavimo tvarkytuvams lygiagretinti (bridge_input(), bridge_output(), bridge_forward(), ...).
    • Pridėtas naujas sigfastblock sistemos iškvietimas, leidžiantis gijai nurodyti atminties bloką greitam signalų tvarkytuvui, kad būtų pagerintas išimčių tvarkyklių veikimas.
    • Branduolys prideda palaikymą LSE (Large System Extension) atominėms instrukcijoms, kurias palaiko ARMv8.1 sistemos. Šios instrukcijos reikalingos norint pagerinti našumą naudojant „Cavium ThunderX2“ ir „AWS Graviton 2“ plokštes. Papildyti pakeitimai aptinka LSE palaikymą ir dinamiškai įgalina jomis pagrįstą atominį įgyvendinimą. Testavimo metu LSE naudojimas leido 15% sumažinti procesoriaus laiką, praleistą surenkant branduolį.
    • Atliktas našumo optimizavimas ir išplėstas įrankių rinkinio funkcionalumas vykdomiesiems failams ELF formatu.
      Pridėtas DWARF derinimo informacijos saugojimo talpykloje palaikymas, išspręstos elfcopy/objcopy paslaugų problemos, pridėtas DW_AT_ranges apdorojimas,
      readelf įgyvendina galimybę iššifruoti PROTMAX_DISABLE, STKGAP_DISABLE ir WXNEEDED vėliavėles, taip pat Xen ir GNU Build-ID.

  • saugumas
    • Siekiant pagerinti „FreeBSD“ našumą „Azure“ debesies aplinkose, vyksta palaikymas „HyperV Socket“ mechanizmui, kuris leidžia naudoti lizdo sąsają sąveikai tarp svečių sistemos ir pagrindinio kompiuterio aplinkos nenustatant tinklo.
    • Vykdomas darbas siekiant pateikti pakartojamus FreeBSD statymus, leidžiančius užtikrinti, kad vykdomieji sistemos komponentų failai būtų sudaryti tiksliai iš deklaruotų šaltinio kodų ir juose nebūtų pašalinių pakeitimų.
    • Galimybė kontroliuoti papildomų apsaugos mechanizmų (ASLR, PROT_MAX, stack gap, W+X atvaizdavimo) įtraukimą atskirų procesų lygiu buvo pridėta prie elfctl programos.
  • Saugojimo ir failų sistemos
    • Vykdomi darbai, siekiant įdiegti galimybę NFS veikti šifruotu ryšio kanalu, pagrįstu TLS 1.3, o ne naudoti Kerberos (sec=krb5p režimas), kuris apsiriboja tik RPC pranešimų šifravimu ir yra įdiegtas tik programinėje įrangoje. Naujasis diegimas naudoja branduolio pateiktą TLS krūvą, kad įgalintų aparatinės įrangos pagreitį. NFS per TLS kodas yra beveik paruoštas testavimui, tačiau vis dar reikia padirbėti, kad būtų palaikomi pasirašyti kliento sertifikatai ir pritaikytas branduolio TLS dėklas siųsti NFS duomenis (pataisos gavimui jau paruoštos).
  • Techninės įrangos palaikymas
    • Vykdomas darbas siekiant pridėti kinų x86 CPU Hygon palaikymą, pagrįstą AMD technologijomis;
    • Kaip „CheriBSD“ dalis, „FreeBSD“ šakutė, skirta tyrimų procesoriaus architektūrai CHERI (Capability Hardware Enhanced RISC Instructions), toliau diegiamas palaikymas ARM Morello procesoriui, kuris palaikys CHERI atminties prieigos kontrolės sistemą, pagrįstą Capsicum projekto saugumo modeliu. Morello lustas planuoja išleidimas 2021 m. Šiuo metu daugiausia dėmesio skiriama Arm Neoverse N1 platformos, kuri maitina Morello, palaikymas. Buvo pristatytas pradinis CheriBSD prievadas, skirtas RISC-V architektūrai. CheriBSD plėtra tęsiama CHERI etaloniniam prototipui, pagrįstam MIPS64 architektūra.
    • FreeBSD perkėlimas tęsiamas 64 bitų SoC NXP LS1046A, pagrįsto ARMv8 Cortex-A72 procesoriumi su integruotu tinklo paketų apdorojimo spartinimo varikliu, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 ir USB 3.0. Šiuo metu tvarkyklės QorIQ ir LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI ruošiamos perkelti į pagrindinę FreeBSD kompoziciją.
    • ena tvarkyklė buvo atnaujinta iki 2.1.1 versijos, palaikant antros kartos ENAv2 (Elastic Network Adapter) tinklo adapterius, naudojamus Elastic Compute Cloud (EC2) infrastruktūroje, siekiant organizuoti ryšį tarp EC2 mazgų iki 25 Gb/ greičiu. s. Rengiamas ENA 2.2.0 atnaujinimas.
    • Powerpc64 platformos FreeBSD prievado tobulinimas tęsiasi. Pagrindinis dėmesys skiriamas kokybiškų sistemų su IBM POWER8 ir POWER9 procesoriais užtikrinimui. Per ataskaitinį laikotarpį FreeBSD-CURRENT buvo perkelta į LLVM/Clang 10.0 kompiliatorių ir lld linkerį vietoj GCC. Pagal numatytuosius nustatymus powerpc64 sistemos naudoja ELFv2 ABI, o ELFv1 ABI palaikymas buvo nutrauktas. FreeBSD-STABLE vis dar turi gcc 4.2.1. Išspręstos problemos su virtio, aacraid ir ixl vairuotojais. Powerpc64 sistemose galima paleisti QEMU be didžiulių puslapių palaikymo.
    • Tęsiamas RISC-V architektūros palaikymo diegimas. Dabartiniu pavidalu FreeBSD jau sėkmingai paleidžiamas SiFive Hifive Unleashed plokštėje, kuriai buvo paruoštos tvarkyklės
      UART, SPI ir PRCI palaiko OpenSBI ir SBI 0.2 programinę įrangą. Per ataskaitinį laikotarpį daugiausia dėmesio buvo skiriama perėjimui iš GCC į clang ir lld.

  • Programos ir prievadų sistema
    • FreeBSD prievadų kolekcija peržengė 39 tūkstančių prievadų slenkstį, neuždarytų PR skaičius šiek tiek viršija 2400, iš kurių 640 PR dar nesurūšiuoti. Per ataskaitinį laikotarpį buvo atlikti 8146 pakeitimai iš 173 kūrėjų. Keturi nauji dalyviai gavo įsipareigojimo teises (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Pridėta USES=qca vėliavėlė ir pašalinta USES=zope vėliavėlė (dėl nesuderinamumo su Python 3). Vykdomi darbai, siekiant pašalinti Python 2.7 iš prievadų medžio – visi Python 2 pagrindu veikiantys prievadai turi būti perkelti į Python 3 arba bus pašalinti. Pkg paketų tvarkyklė buvo atnaujinta į 1.13.2 versiją.
    • Atnaujinti grafikos kamino komponentai ir su xorg susiję prievadai.
      X.org serveris buvo atnaujintas į 1.20.8 versiją (anksčiau buvo pristatyta 1.18 šakoje), kuri leido FreeBSD pagal numatytuosius nustatymus naudoti udev/evdev backend įvesties įrenginiams tvarkyti. Pagal numatytuosius nustatymus „Mesa“ paketas buvo pakeistas, kad būtų naudojamas DRI3 plėtinys, o ne DRI2. Vykdomas darbas siekiant išlaikyti grafikos tvarkykles, įvesties įrenginių krūvą ir drm-kmod komponentus (prievadą, leidžiantį valdyti amdgpu, i915 ir radeon DRM modulius, naudojant linuxkpi sistemą suderinamumui su Linux branduolio tiesioginio atvaizdavimo tvarkykle) iki šiol.

    • KDE Plasma darbalaukis, KDE Frameworks, KDE Applications ir Qt yra nuolat atnaujinami ir atnaujinami iki naujausių leidimų. Prie prievadų buvo pridėta nauja programa kstars (žvaigždžių atlasas).
    • Buvo atliktas darbas siekiant pašalinti regresinius xfwm4 langų tvarkyklės pakeitimus, kurie atsirado atnaujinus Xfce į 4.14 versiją (pavyzdžiui, dekoruojant langus atsirado artefaktų).
    • „Wine“ prievadas buvo atnaujintas, kad būtų išleista „Wine 5.0“ (anksčiau buvo siūloma 4.0.3).
    • Pradedant nuo 1.14 versijos, Go kalbos kompiliatorius pridėjo oficialų FreeBSD 64 ARM12.0 architektūros palaikymą.
    • „OpenSSH“ bazinėje sistemoje buvo atnaujintas iki 7.9p1.
    • Sysctlmibinfo2 biblioteka buvo įdiegta ir patalpinta į prievadus (devel/libsysctlmibinfo2), suteikdama API, leidžiančią pasiekti sysctl MIB ir išversti sysctl pavadinimus į objektų identifikatorius (OID).
    • Sukurtas platinimo naujinimas NomadBSD 1.3.1, kuris yra „FreeBSD“ leidimas, pritaikytas naudoti kaip nešiojamas darbalaukis, paleidžiamas iš USB atmintinės. Grafinė aplinka yra pagrįsta langų tvarkykle Atidaryta dėžė. Naudojamas diskams montuoti DSBMD (palaikomas montavimas CD9660, FAT, HFS+, NTFS, Ext2/3/4), belaidžio tinklo konfigūravimui - wifimgrir valdyti garsumą - DSBMixer.
    • Pradėtas dirbti apie pilnos dokumentacijos rašymą kalėjimo aplinkos valdytojui galima. Išleidimui ruošiamas „Pot 0.11.0“, kuris apims tinklo dėklo valdymo įrankius.

Šaltinis: opennet.ru

Добавить комментарий