Správa o vývoji FreeBSD Q2020 XNUMX

publikovaný správu o vývoji projektu FreeBSD od januára do marca 2020. Medzi zmeny môžeme poznamenať:

  • Všeobecné a systémové problémy
    • Odstránená sada kompilátorov GCC zo zdrojového stromu FreeBSD-CURRENT, ako aj nepoužívané nástroje gperf, gcov a gtc (prekladač stromu zariadení). Všetky platformy, ktoré nepodporujú Clang, prešli na používanie externých nástrojov na zostavovanie nainštalovaných z portov. Základný systém dodal zastarané vydanie GCC 4.2.1 a integrácia novších verzií nebola možná z dôvodu prechodu 4.2.2 na licenciu GPLv3, čo sa považovalo za nevhodné pre základné komponenty FreeBSD. Aktuálne vydania GCC, vrátane GCC 9, je stále možné nainštalovať z balíkov a portov.
    • Infraštruktúra emulácie prostredia Linux (Linuxulator) pridala podporu pre systémové volanie sendfile, režim TCP_CORK (vyžaduje sa pre nginx) a príznak MAP_32BIT (rieši problém so spúšťaním balíkov s Mono z Ubuntu Bionic). Problémy s rozlíšením DNS pri použití glibc novšieho ako 2.30 (napríklad z CentOS 8) boli vyriešené.
      Infraštruktúra nepretržitej integrácie poskytuje možnosť spúšťať úlohy LTP (Linux Testing Project) so systémom Linuxulator na testovanie vylepšení kódu na podporu Linuxu. Asi 400 testov zlyhá a vyžadujú opravu (niektoré chyby sú spôsobené falošnými pozitívami, niektoré vyžadujú triviálne opravy, no sú tu aj iné, ktoré vyžadujú pridanie podpory pre nové systémové volania na opravu). Bola vykonaná práca na vyčistení kódu Linuxulatora a zjednodušení ladenia. Opravy s podporou rozšírených atribútov a systémového volania fexecve boli pripravené, ale ešte neboli zrevidované.

    • Pokračujú stretnutia pracovnej skupiny vytvorenej na realizáciu migrácie zdrojových kódov z centralizovaného systému riadenia zdrojov Subversion do decentralizovaného systému Git. Správa s návrhmi na migráciu je v procese prípravy.
    • В rtld (runtime linker) vylepšený režim priameho vykonávania („/libexec/ld-elf.so.1 {cesta} {argumenty}“).
    • Projekt fuzzing testovania jadra FreeBSD pomocou systému syzkaller pokračuje vo vývoji. Počas sledovaného obdobia boli odstránené problémy so sieťovým zásobníkom a kódom pre prácu s tabuľkami deskriptorov súborov identifikovaných pomocou syzkallera. Po diagnostike chýb boli do zásobníka SCTP pridané zmeny, aby bolo ladenie jednoduchšie. Do súboru stres2 boli pridané pravidlá na identifikáciu možných regresií. Pridaná podpora pre fuzz testovanie nových systémových volaní, vrátane copy_file_range(), __realpathat() a volania subsystému Capsicum. Pokračuje práca na pokrytí vrstvy emulácie Linuxu pomocou fuzz testovania. Analyzovali sme a odstránili chyby zaznamenané v najnovších správach Coverity Scan.
    • Systém kontinuálnej integrácie prešiel na vykonávanie všetkých testov hlavnej vetvy iba pomocou clang/lld. Pri testovaní pre RISC-V je zabezpečené vytvorenie kompletného obrazu disku pre spustenie testov v QEMU pomocou OpenSBI. Pridané nové úlohy na testovanie obrazov a virtuálnych strojov powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Pracuje sa na prenose testovacej sady Kyua z portov (devel/kyua) do základného systému, aby sa vyriešili problémy (balíky sa inštalujú veľmi pomaly), ktoré vznikajú pri používaní Kyua na nových architektúrach, ktorých vývoj prebieha pomocou emulátora resp. FPGA. Integrácia do základného systému výrazne zjednoduší testovanie vstavaných platforiem a rozhrania so systémami kontinuálnej integrácie.
    • Bol spustený projekt na optimalizáciu výkonu ovládača sieťového mosta if_bridge, ktorý používa jeden mutex na uzamknutie interných údajov, čo neumožňuje dosiahnuť požadovaný výkon na systémoch s veľkým počtom väzenských prostredí alebo virtuálnych strojov združených v jednej sieti. V tejto fáze boli do kódu pridané testy, aby sa zabránilo regresii pri modernizácii práce so zámkami. Uvažuje sa o možnosti použitia ConcurrencyKit na paralelizáciu manipulátorov prenosu dát (bridge_input(), bridge_output(), bridge_forward(), ...).
    • Pridané nové systémové volanie sigfastblock, ktoré umožňuje vláknu špecifikovať blok pamäte pre obsluhu rýchlych signálov, aby sa zlepšil výkon obsluhy výnimiek.
    • Jadro pridáva podporu pre atómové inštrukcie LSE (Large System Extension) podporované systémami ARMv8.1. Tieto pokyny sú potrebné na zlepšenie výkonu pri behu na doskách Cavium ThunderX2 a AWS Graviton 2. Pridané zmeny zisťujú podporu LSE a dynamicky umožňujú atómovú implementáciu založenú na nich. Počas testovania umožnilo použitie LSE skrátiť čas procesora pri zostavovaní jadra o 15%.
    • Bola vykonaná optimalizácia výkonu a bola rozšírená funkčnosť sady nástrojov pre spustiteľné súbory vo formáte ELF.
      Pridaná podpora pre ukladanie informácií o ladení DWARF do vyrovnávacej pamäte, vyriešené problémy v obslužných programoch elfcopy/objcopy, pridané spracovanie DW_AT_ranges,
      readelf implementuje schopnosť dekódovať príznaky PROTMAX_DISABLE, STKGAP_DISABLE a WXNEEDED, ako aj Xen a GNU Build-ID.

  • zabezpečenia
    • Na zlepšenie výkonu FreeBSD v cloudových prostrediach Azure sa pracuje na poskytovaní podpory pre mechanizmus HyperV Socket, ktorý umožňuje použitie soketového rozhrania na interakciu medzi hosťujúcim systémom a hostiteľským prostredím bez nastavovania siete.
    • Pracuje sa na poskytovaní opakovateľných verzií FreeBSD, čo umožňuje zabezpečiť, aby spustiteľné súbory systémových komponentov boli kompilované presne z deklarovaných zdrojových kódov a neobsahovali cudzie zmeny.
    • Do utility elfctl pribudla možnosť ovládať zahrnutie dodatočných ochranných mechanizmov (ASLR, PROT_MAX, stack gap, W+X mapping) na úrovni jednotlivých procesov.
  • Úložné a súborové systémy
    • Pracuje sa na implementácii schopnosti NFS fungovať cez šifrovaný komunikačný kanál založený na TLS 1.3 namiesto použitia Kerberos (režim sec=krb5p), ktorý je obmedzený na šifrovanie iba správ RPC a je implementovaný iba v softvéri. Nová implementácia využíva zásobník TLS poskytovaný jadrom na umožnenie hardvérovej akcelerácie. Kód NFS cez TLS je takmer pripravený na testovanie, ale stále vyžaduje prácu na podpore podpísaných klientskych certifikátov a prispôsobenie zásobníka TLS jadra na odosielanie údajov NFS (záplaty na príjem sú už pripravené).
  • Hardvérová podpora
    • Pracuje sa na pridaní podpory pre čínsky x86 CPU Hygon založený na technológiách AMD;
    • Ako súčasť CheriBSD, vidlice FreeBSD pre architektúru výskumných procesorov CHERI (Capability Hardware Enhanced RISC Instructions), pokračuje sa v implementácii podpory pre procesor ARM Morello, ktorý bude podporovať systém riadenia prístupu do pamäte CHERI založený na bezpečnostnom modeli projektu Capsicum. Morello čip plánujú vydanie v roku 2021. V súčasnosti sa práca sústreďuje na pridanie podpory pre platformu Arm Neoverse N1, ktorá poháňa Morello. Bol predstavený počiatočný port CheriBSD pre architektúru RISC-V. Vývoj CheriBSD pokračuje pre referenčný prototyp CHERI založený na architektúre MIPS64.
    • Portovanie FreeBSD pokračuje pre 64-bitový SoC NXP LS1046A založený na procesore ARMv8 Cortex-A72 s integrovaným motorom na zrýchlenie spracovania sieťových paketov, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 a USB 3.0. V súčasnosti sa pripravujú ovládače QorIQ a LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI na prenos do hlavnej kompozície FreeBSD.
    • Ovládač ena bol aktualizovaný na verziu 2.1.1 s podporou druhej generácie sieťových adaptérov ENAv2 (Elastic Network Adapter) používaných v infraštruktúre Elastic Compute Cloud (EC2) na organizovanie komunikácie medzi uzlami EC2 rýchlosťou až 25 Gb/ s. Aktualizácia ENA 2.2.0 sa pripravuje.
    • Vylepšovania portu FreeBSD pre platformu powerpc64 pokračujú. Dôraz je kladený na poskytovanie kvalitného výkonu na systémoch s procesormi IBM POWER8 a POWER9. Počas vykazovaného obdobia bol FreeBSD-CURRENT prevedený na používanie kompilátora LLVM/Clang 10.0 a linkeru lld namiesto GCC. Systémy powerpc64 štandardne používajú ELFv2 ABI a podpora ELFv1 ABI bola ukončená. FreeBSD-STABLE má stále gcc 4.2.1. Problémy s ovládačmi virtio, aacraid a ixl sú vyriešené. Na systémoch powerpc64 je možné spustiť QEMU bez podpory Huge Pages.
    • Pokračujú práce na implementácii podpory pre architektúru RISC-V. Vo svojej súčasnej podobe už FreeBSD úspešne bootuje na doske SiFive Hifive Unleashed, pre ktorú boli pripravené ovládače
      UART, SPI a PRCI, podporuje firmvér OpenSBI a SBI 0.2. Počas sledovaného obdobia sa práca sústredila na migráciu z GCC do clang a lld.

  • Aplikácie a systém portov
    • Kolekcia portov FreeBSD prekročila hranicu 39 tisíc portov, počet neuzavretých PR mierne presahuje 2400, z toho 640 PR ešte nebolo vytriedených. Počas sledovaného obdobia bolo vykonaných 8146 173 zmien od 3 vývojárov. Štyria noví účastníci získali práva komisára (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Pridaný príznak USES=qca a odstránený príznak USES=zope (kvôli nekompatibilite s Pythonom 2.7). Pracuje sa na odstránení Pythonu 2 zo stromu portov – všetky porty založené na Pythone 3 musia byť prenesené na Python 1.13.2 alebo budú odstránené. Správca balíkov pkg bol aktualizovaný na vydanie XNUMX.
    • Aktualizované komponenty grafického zásobníka a súvisiace porty xorg.
      Server X.org bol aktualizovaný na verziu 1.20.8 (predtým dodávanú na vetve 1.18), čo umožnilo FreeBSD predvolene používať backend udev/evdev na obsluhu vstupných zariadení. Balík Mesa bol zmenený tak, aby štandardne používal rozšírenie DRI3 namiesto DRI2. Pracuje sa na zachovaní grafických ovládačov, zásobníka vstupných zariadení a komponentov drm-kmod (port, ktorý umožňuje prevádzku modulov amdgpu, i915 a radeon DRM s použitím rámca linuxkpi pre kompatibilitu s Direct Rendering Manager linuxového jadra) aktuálny.

    • Plazmová plocha KDE, rámce KDE, aplikácie KDE a Qt sú aktualizované a aktualizované na najnovšie vydania. Do portov pribudla nová aplikácia kstars (hviezdny atlas).
    • Pracovalo sa na odstránení regresívnych zmien v správcovi okien xfwm4, ktoré sa objavili po aktualizácii Xfce na verziu 4.14 (napríklad pri zdobení okien sa objavili artefakty).
    • Port Wine bol aktualizovaný na vydanie Wine 5.0 (predtým bola ponúkaná verzia 4.0.3).
    • Počnúc verziou 1.14 pridal kompilátor jazyka Go oficiálnu podporu pre architektúru ARM64 pre FreeBSD 12.0.
    • OpenSSH na základnom systéme bol aktualizovaný na vydanie 7.9p1.
    • Knižnica sysctlmibinfo2 bola implementovaná a umiestnená v portoch (devel/libsysctlmibinfo2), poskytuje API na prístup k sysctl MIB a preklad názvov sysctl na identifikátory objektov (OID).
    • Bola vygenerovaná aktualizácia distribúcie NomadBSD 1.3.1, čo je edícia FreeBSD prispôsobená na použitie ako prenosný desktop bootovateľný z USB disku. Grafické prostredie je založené na správcovi okien Otvorená krabica. Používa sa na montáž pohonov DSBMD (podporuje sa montáž CD9660, FAT, HFS+, NTFS, Ext2/3/4), na konfiguráciu bezdrôtovej siete - wifimgra na ovládanie hlasitosti - DSBMixer.
    • zahájená práce o písaní kompletnej dokumentácie pre manažéra väzenského prostredia plechovka. Na vydanie sa pripravuje Pot 0.11.0, ktorý bude obsahovať nástroje na správu sieťového zásobníka.

Zdroj: opennet.ru

Pridať komentár