Zpráva o vývoji FreeBSD Q2020 XNUMX

zveřejněno zprávu o vývoji projektu FreeBSD od ledna do března 2020. Mezi změny můžeme zaznamenat:

  • Obecné a systémové problémy
    • Odstraněna sada kompilátorů GCC ze zdrojového stromu FreeBSD-CURRENT a také nepoužívané nástroje gperf, gcov a gtc (překladač zařízení). Všechny platformy, které nepodporují Clang, byly převedeny na používání externích nástrojů pro sestavení nainstalovaných z portů. Základní systém dodal zastaralé vydání GCC 4.2.1 a integrace novějších verzí nebyla možná kvůli přechodu 4.2.2 na licenci GPLv3, což bylo považováno za nevhodné pro základní komponenty FreeBSD. Aktuální vydání GCC, včetně GCC 9, lze stále instalovat z balíčků a portů.
    • Infrastruktura emulace prostředí Linux (Linuxulator) přidala podporu pro systémové volání sendfile, režim TCP_CORK (vyžadovaný pro nginx) a příznak MAP_32BIT (řeší problém se spouštěním balíčků s Mono z Ubuntu Bionic). Problémy s překladem DNS při použití glibc novější než 2.30 (například z CentOS 8) byly vyřešeny.
      Infrastruktura kontinuální integrace poskytuje možnost spouštět úlohy LTP (Linux Testing Project) na Linuxulatoru pro testování vylepšení kódu pro podporu Linuxu. Přibližně 400 testů selže a vyžaduje opravu (některé chyby jsou způsobeny falešně pozitivními výsledky, některé vyžadují triviální opravy, ale existují i ​​jiné, které vyžadují přidání podpory pro nová systémová volání k opravě). Byla odvedena práce na vyčištění kódu Linuxulatoru a zjednodušení ladění. Patche s podporou rozšířených atributů a systémového volání fexecve byly připraveny, ale ještě nebyly zkontrolovány.

    • Pokračují jednání pracovní skupiny vytvořené k provedení migrace zdrojových kódů z centralizovaného systému pro řízení zdrojů Subversion do decentralizovaného systému Git. Zpráva s návrhy na migraci je v procesu přípravy.
    • В rtld (runtime linker) vylepšený režim přímého provádění („/libexec/ld-elf.so.1 {cesta} {argumenty}“).
    • Projekt pro fuzzing testování jádra FreeBSD pomocí systému syzkaller se nadále rozvíjí. Během sledovaného období byly odstraněny problémy se síťovým zásobníkem a kódem pro práci s tabulkami deskriptorů souborů identifikovanými pomocí syzkaller. Po diagnostice chyb byly do zásobníku SCTP přidány změny, které usnadňují ladění. Do sady stress2 byla přidána pravidla pro identifikaci možných regresí. Přidána podpora pro fuzz testování nových systémových volání, včetně copy_file_range(), __realpathat() a volání subsystému Capsicum. Pokračuje práce na pokrytí emulační vrstvy Linuxu pomocí fuzz testování. Analyzovali jsme a odstranili chyby zaznamenané v nejnovějších zprávách Coverity Scan.
    • Systém kontinuální integrace přešel na provádění všech testů hlavových větví pouze pomocí clang/lld. Při testování pro RISC-V je zajištěno vytvoření kompletního obrazu disku pro spuštění testů v QEMU pomocí OpenSBI. Přidány nové úlohy pro testování obrazů a virtuálních strojů powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Pracuje se na přenosu testovací sady Kyua z portů (devel/kyua) do základního systému pro vyřešení problémů (balíčky se instalují velmi pomalu), které vznikají při používání Kyua na nových architekturách, jejichž vývoj probíhá pomocí emulátoru resp. FPGA. Integrace do základního systému výrazně zjednoduší testování embedded platforem a rozhraní se systémy průběžné integrace.
    • Byl zahájen projekt optimalizace výkonu ovladače síťového mostu if_most, který používá jeden mutex k uzamčení interních dat, což neumožňuje dosažení požadovaného výkonu na systémech s velkým počtem vězeňských prostředí nebo virtuálních strojů sdružených v jedné síti. V této fázi byly do kódu přidány testy, aby nedocházelo k regresím při modernizaci práce se zámky. Zvažuje se možnost použití ConcurrencyKit pro paralelizaci obslužných programů přenosu dat (bridge_input(), bridge_output(), bridge_forward(), ...).
    • Přidáno nové systémové volání sigfastblock, které umožňuje vláknu specifikovat blok paměti pro obsluhu rychlého signálu, aby se zlepšil výkon obslužných rutin výjimek.
    • Jádro přidává podporu pro atomické instrukce LSE (Large System Extension) podporované systémy ARMv8.1. Tyto instrukce jsou vyžadovány pro zlepšení výkonu při běhu na deskách Cavium ThunderX2 a AWS Graviton 2. Přidané změny detekují podporu LSE a dynamicky umožňují atomickou implementaci na nich založenou. Během testování umožnilo použití LSE zkrátit čas procesoru při sestavování jádra o 15 %.
    • Byla provedena optimalizace výkonu a funkčnost sady nástrojů byla rozšířena o spustitelné soubory ve formátu ELF.
      Přidána podpora pro ukládání ladicích informací DWARF do mezipaměti, vyřešeny problémy v obslužných programech elfcopy/objcopy, přidáno zpracování DW_AT_ranges,
      readelf implementuje schopnost dekódovat příznaky PROTMAX_DISABLE, STKGAP_DISABLE a WXNEEDED, stejně jako Xen a GNU Build-ID.

  • zabezpečení
    • Pro zlepšení výkonu FreeBSD v cloudových prostředích Azure se pracuje na poskytnutí podpory pro mechanismus HyperV Socket, který umožňuje použití rozhraní soketu pro interakci mezi hostujícím systémem a hostitelským prostředím bez nastavování sítě.
    • Probíhají práce na poskytování opakovatelných sestavení FreeBSD, což umožňuje zajistit, aby spustitelné soubory systémových komponent byly zkompilovány přesně z deklarovaných zdrojových kódů a neobsahovaly cizí změny.
    • Do utility elfctl byla přidána možnost řídit zahrnutí dalších ochranných mechanismů (ASLR, PROT_MAX, stack gap, W+X mapping) na úrovni jednotlivých procesů.
  • Úložné a souborové systémy
    • Pracuje se na implementaci schopnosti NFS fungovat přes šifrovaný komunikační kanál založený na TLS 1.3, namísto použití Kerberos (sec=krb5p režim), který je omezen na šifrování pouze zpráv RPC a je implementován pouze v softwaru. Nová implementace využívá zásobník TLS poskytovaný jádrem k umožnění hardwarové akcelerace. Kód NFS přes TLS je téměř připraven k testování, ale stále vyžaduje práci na podpoře podepsaných klientských certifikátů a přizpůsobení zásobníku TLS jádra pro odesílání dat NFS (záplaty pro příjem jsou již připraveny).
  • Hardwarová podpora
    • Pracuje se na přidání podpory pro čínský x86 CPU Hygon založený na technologiích AMD;
    • Jako součást CheriBSD, vidlice FreeBSD pro architekturu výzkumných procesorů CHERI (Capability Hardware Enhanced RISC Instructions), nadále se implementuje podpora pro procesor ARM Morello, který bude podporovat systém řízení přístupu do paměti CHERI založený na bezpečnostním modelu projektu Capsicum. Morello čip plánují vydání v roce 2021. Práce se v současné době soustředí na přidání podpory pro platformu Arm Neoverse N1, která pohání Morello. Byl představen počáteční port CheriBSD pro architekturu RISC-V. Vývoj CheriBSD pokračuje pro referenční prototyp CHERI založený na architektuře MIPS64.
    • Portování FreeBSD pokračuje pro 64bitový SoC NXP LS1046A založený na procesoru ARMv8 Cortex-A72 s integrovaným akceleračním jádrem pro zpracování síťových paketů, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 a USB 3.0. V současné době se připravují ovladače QorIQ a LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI k převodu do hlavní kompozice FreeBSD.
    • Ovladač ena byl aktualizován na verzi 2.1.1 s podporou druhé generace síťových adaptérů ENAv2 (Elastic Network Adapter) používaných v infrastruktuře Elastic Compute Cloud (EC2) pro organizaci komunikace mezi uzly EC2 rychlostí až 25 Gb/ s. Aktualizace ENA 2.2.0 se připravuje.
    • Vylepšení portu FreeBSD pro platformu powerpc64 pokračuje. Důraz je kladen na poskytování kvalitního výkonu na systémech s procesory IBM POWER8 a POWER9. Během sledovaného období byl FreeBSD-CURRENT převeden, aby místo GCC používal kompilátor LLVM/Clang 10.0 a linker lld. Systémy powerpc64 standardně používají ELFv2 ABI a podpora ELFv1 ABI byla ukončena. FreeBSD-STABLE má stále gcc 4.2.1. Problémy s ovladači virtio, aacraid a ixl byly vyřešeny. Na systémech powerpc64 je možné spustit QEMU bez podpory Huge Pages.
    • Pokračují práce na implementaci podpory pro architekturu RISC-V. Ve své současné podobě již FreeBSD úspěšně bootuje na desce SiFive Hifive Unleashed, pro kterou byly připraveny ovladače
      UART, SPI a PRCI, podporuje firmware OpenSBI a SBI 0.2. Během sledovaného období byla práce zaměřena na migraci z GCC do clang a lld.

  • Aplikace a portový systém
    • Kolekce portů FreeBSD překročila hranici 39 tisíc portů, počet neuzavřených PR mírně přesahuje 2400, z toho 640 PR ještě nebylo vytříděno. Během sledovaného období bylo provedeno 8146 změn od 173 vývojářů. Čtyři noví účastníci získali práva komisaře (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Přidán příznak USES=qca a odstraněn příznak USES=zope (kvůli nekompatibilitě s Pythonem 3). Pracuje se na odstranění Pythonu 2.7 ze stromu portů – všechny porty založené na Pythonu 2 musí být portovány na Python 3 nebo budou odstraněny. Správce balíčků pkg byl aktualizován na verzi 1.13.2.
    • Aktualizované komponenty grafického zásobníku a související porty xorg.
      Server X.org byl aktualizován na verzi 1.20.8 (dříve dodávanou na větvi 1.18), což FreeBSD umožnilo použít backend udev/evdev pro práci se vstupními zařízeními. Balíček Mesa byl přepnut tak, aby ve výchozím nastavení používal rozšíření DRI3 namísto DRI2. Pracuje se na zachování grafických ovladačů, zásobníku vstupních zařízení a komponent drm-kmod (port, který umožňuje provoz modulů amdgpu, i915 a radeon DRM s využitím frameworku linuxkpi pro kompatibilitu s Direct Rendering Manager linuxového jádra) aktuální.

    • Plazmová plocha KDE, rámce KDE, aplikace KDE a Qt jsou aktualizovány a aktualizovány na nejnovější verze. Mezi porty byla přidána nová aplikace kstars (hvězdný atlas).
    • Byla odvedena práce na odstranění regresivních změn ve správci oken xfwm4, které se objevily po aktualizaci Xfce na verzi 4.14 (například se objevily artefakty při zdobení oken).
    • Port Wine byl aktualizován, aby vydal Wine 5.0 (dříve byla nabízena verze 4.0.3).
    • Počínaje verzí 1.14 přidal kompilátor jazyka Go oficiální podporu pro architekturu ARM64 pro FreeBSD 12.0.
    • OpenSSH na základním systému byl aktualizován na verzi 7.9p1.
    • Knihovna sysctlmibinfo2 byla implementována a umístěna do portů (devel/libsysctlmibinfo2), poskytuje API pro přístup k sysctl MIB a překlad sysctl jmen na identifikátory objektů (OID).
    • Byla vygenerována aktualizace distribuce NomadBSD 1.3.1, což je edice FreeBSD upravená pro použití jako přenosný desktop bootovatelný z USB disku. Grafické prostředí je založeno na správci oken Otevřít krabici. Používá se pro montáž pohonů DSBMD (je podporována montáž CD9660, FAT, HFS+, NTFS, Ext2/3/4), pro konfiguraci bezdrátové sítě - wifimgra pro ovládání hlasitosti - DSBMixer.
    • Začínáme práce o sepsání kompletní dokumentace pro manažera prostředí věznice hrnec. Připravuje se vydání Pot 0.11.0, které bude obsahovat nástroje pro správu síťového zásobníku.

Zdroj: opennet.ru

Přidat komentář