Poročilo o razvoju FreeBSD Q2020 XNUMX

Objavljeno poročilo o razvoju projekta FreeBSD od januarja do marca 2020. Med spremembami lahko opazimo:

  • Splošna in sistemska vprašanja
    • Odstranjen nabor prevajalnika GCC iz izvornega drevesa FreeBSD-CURRENT, kot tudi neuporabljeni pripomočki gperf, gcov in gtc (prevajalnik drevesa naprav). Vse platforme, ki ne podpirajo Clang, so bile preklopljene na uporabo zunanjih orodij za gradnjo, nameščenih iz vrat. Osnovni sistem je poslal zastarelo izdajo GCC 4.2.1, integracija novejših različic pa ni bila mogoča zaradi prehoda 4.2.2 na licenco GPLv3, ki je veljala za neprimerno za osnovne komponente FreeBSD. Trenutne izdaje GCC, vključno z GCC 9, je še vedno mogoče namestiti iz paketov in vrat.
    • Infrastruktura emulacije okolja Linux (Linuxulator) je dodala podporo za sistemski klic sendfile, način TCP_CORK (zahtevan za nginx) in zastavo MAP_32BIT (rešuje težavo z zagonom paketov z Mono iz Ubuntu Bionic). Težave z razreševanjem DNS pri uporabi glibc, novejšega od 2.30 (na primer iz CentOS 8), so bile odpravljene.
      Infrastruktura za stalno integracijo omogoča izvajanje opravil LTP (Linux Testing Project), ki izvajajo Linuxulator za testiranje izboljšav kode za podporo Linuxu. Približno 400 testov je neuspešnih in jih je treba popraviti (nekatere napake so posledica lažno pozitivnih rezultatov, nekateri zahtevajo trivialne popravke, obstajajo pa tudi drugi, ki zahtevajo dodajanje podpore za nove sistemske klice za popravljanje). Opravljeno je bilo delo za čiščenje kode Linuxulatorja in poenostavitev odpravljanja napak. Popravki s podporo za razširjene atribute in sistemski klic fexecve so bili pripravljeni, vendar še niso pregledani.

    • Sestanki delovne skupine, ustanovljene za izvedbo selitve izvornih kod iz centraliziranega sistema za nadzor vira Subversion v decentraliziran sistem Git, se nadaljujejo. Poročilo s predlogi za selitev je v pripravi.
    • В rtld (povezovalnik izvajalnega časa) izboljšan način neposrednega izvajanja (“/libexec/ld-elf.so.1 {pot} {argumenti}”).
    • Projekt za fuzzing testiranje jedra FreeBSD z uporabo sistema syzkaller se še naprej razvija. V obdobju poročanja so bile odpravljene težave v omrežnem skladu in kodi za delo z deskriptorskimi tabelami datotek, identificiranimi s pomočjo syzkallerja. Po diagnozi napake so bile v sklad SCTP dodane spremembe za lažje odpravljanje napak. Naboru stress2 so bila dodana pravila za prepoznavanje možnih regresij. Dodana podpora za fuzz testiranje novih sistemskih klicev, vključno s podsistemskimi klici copy_file_range(), __realpathat() in Capsicum. Nadaljuje se delo na pokrivanju sloja emulacije Linuxa s testiranjem fuzzov. Analizirali in odpravili smo napake, opažene v zadnjih poročilih Coverity Scan.
    • Sistem neprekinjene integracije je prešel na izvajanje vseh testov glavne veje samo z uporabo clang/lld. Pri testiranju za RISC-V je zagotovljeno oblikovanje celotne slike diska za izvajanje testov v QEMU z uporabo OpenSBI. Dodana nova opravila za testiranje slik in virtualnih strojev powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Potekajo dela za prenos testne zbirke Kyua iz vrat (devel/kyua) v osnovni sistem za reševanje težav (paketi se nameščajo zelo počasi), ki nastanejo pri uporabi Kyua na novih arhitekturah, za katere razvoj poteka s pomočjo emulatorja oz. FPGA. Integracija v osnovni sistem bo bistveno poenostavila testiranje vgrajenih platform in vmesnika s sistemi za kontinuirano integracijo.
    • Začel se je projekt za optimizacijo delovanja gonilnika omrežnega mostu if_bridge, ki uporablja en sam mutex za zaklepanje notranjih podatkov, kar ne omogoča doseganja želene zmogljivosti na sistemih z velikim številom zaprtih okolij ali virtualnih strojev, združenih v eno omrežje. Na tej stopnji so v kodo dodani testi, ki preprečujejo regresije med posodobitvijo dela s ključavnicami. Razmišlja se o možnosti uporabe ConcurrencyKit za paralelizacijo obdelovalcev prenosa podatkov (bridge_input(), bridge_output(), bridge_forward(), ...).
    • Dodan je nov sistemski klic sigfastblock, ki omogoča niti, da določi blok pomnilnika za hitrega obdelovalnika signalov za izboljšanje delovanja obdelovalcev izjem.
    • Jedro dodaja podporo za atomska navodila LSE (Large System Extension), ki jih podpirajo sistemi ARMv8.1. Ta navodila so potrebna za izboljšanje zmogljivosti pri izvajanju na ploščah Cavium ThunderX2 in AWS Graviton 2. Dodane spremembe zaznajo podporo LSE in dinamično omogočijo atomsko izvedbo na njihovi podlagi. Med testiranjem je uporaba LSE omogočila zmanjšanje časa procesorja pri sestavljanju jedra za 15%.
    • Izvedena je bila optimizacija zmogljivosti in funkcionalnost kompleta orodij je bila razširjena za izvršljive datoteke v formatu ELF.
      Dodana podpora za predpomnjenje informacij o odpravljanju napak DWARF, rešene težave v pripomočkih elfcopy/objcopy, dodana obdelava DW_AT_ranges,
      readelf izvaja zmožnost dekodiranja zastavic PROTMAX_DISABLE, STKGAP_DISABLE in WXNEEDED ter Xen in GNU Build-ID.

  • varnost
    • Za izboljšanje zmogljivosti FreeBSD v oblačnih okoljih Azure poteka delo za zagotavljanje podpore za mehanizem HyperV Socket, ki omogoča uporabo vmesnika vtičnice za interakcijo med gostujočim sistemom in gostiteljskim okoljem brez nastavitve omrežja.
    • Potekajo dela za zagotavljanje ponovljivih gradenj FreeBSD, s čimer je mogoče zagotoviti, da so izvršljive datoteke sistemskih komponent sestavljene natančno iz deklariranih izvornih kod in ne vsebujejo tujih sprememb.
    • Pripomočku elfctl je dodana možnost nadzora vključitve dodatnih zaščitnih mehanizmov (ASLR, PROT_MAX, stack gap, W+X mapping) na ravni posameznih procesov.
  • Shranjevanje in datotečni sistemi
    • Potekajo dela za implementacijo zmožnosti delovanja NFS prek šifriranega komunikacijskega kanala, ki temelji na TLS 1.3, namesto uporabe Kerberos (način sec=krb5p), ki je omejen na šifriranje samo sporočil RPC in je implementiran samo v programski opremi. Nova izvedba uporablja sklad TLS, ki ga zagotavlja jedro, da omogoči pospeševanje strojne opreme. Koda NFS prek TLS je skoraj pripravljena za testiranje, vendar še vedno zahteva delo za podporo podpisanih potrdil odjemalcev in prilagoditev sklada TLS jedra za pošiljanje podatkov NFS (popravki za prejemanje so že pripravljeni).
  • Strojna podpora
    • Poteka delo za dodajanje podpore za kitajski x86 CPU Hygon, ki temelji na tehnologijah AMD;
    • Kot del CheriBSD, razcepa FreeBSD za raziskovalno arhitekturo procesorjev CHERI (Capability Hardware Enhanced RISC Instructions), se nadaljuje implementacija podpore za procesor ARM Morello, ki bo podpiral sistem za nadzor dostopa do pomnilnika CHERI na podlagi varnostnega modela projekta Capsicum. Čip Morello načrtujejo izid leta 2021. Delo je trenutno osredotočeno na dodajanje podpore za platformo Arm Neoverse N1, ki poganja Morello. Predstavljena so bila začetna vrata CheriBSD za arhitekturo RISC-V. Razvoj CheriBSD se nadaljuje za referenčni prototip CHERI, ki temelji na arhitekturi MIPS64.
    • Prenos FreeBSD se nadaljuje 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. Trenutno se gonilniki QorIQ in LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI pripravljajo za prenos v glavno sestavo FreeBSD.
    • Gonilnik ena je bil posodobljen na različico 2.1.1 s podporo za drugo generacijo 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. V pripravi je posodobitev na ENA 2.2.0.
    • Izboljšave vrat FreeBSD za platformo powerpc64 se nadaljujejo. Poudarek je na zagotavljanju kakovostne zmogljivosti na sistemih s procesorji IBM POWER8 in POWER9. V obdobju poročanja je bil FreeBSD-CURRENT prenesen na uporabo prevajalnika LLVM/Clang 10.0 in povezovalnika lld namesto GCC. Sistemi powerpc64 privzeto uporabljajo ELFv2 ABI, podpora za ELFv1 ABI pa je bila ukinjena. FreeBSD-STABLE ima še vedno gcc 4.2.1. Težave z gonilniki virtio, aacraid in ixl so bile odpravljene. Na sistemih powerpc64 je mogoče zagnati QEMU brez podpore za Huge Pages.
    • Nadaljuje se delo za implementacijo podpore za arhitekturo RISC-V. V trenutni obliki se FreeBSD že uspešno zaganja na plošči SiFive Hifive Unleashed, za katero so pripravljeni gonilniki
      UART, SPI in PRCI, podpira vdelano programsko opremo OpenSBI in SBI 0.2. V obdobju poročanja je bilo delo osredotočeno na migracijo iz GCC v clang in lld.

  • Aplikacije in sistem vrat
    • Zbirka vrat FreeBSD je prestopila mejo 39 tisoč vrat, število nezaprtih PR-jev nekoliko presega 2400, od tega 640 PR-jev še ni razvrščenih. V obdobju poročanja je bilo opravljenih 8146 sprememb od 173 razvijalcev. Štirje novi udeleženci so prejeli pravice pošiljatelja (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Dodana zastavica USES=qca in odstranjena zastavica USES=zope (zaradi nezdružljivosti s Python 3). Potekajo dela za odstranitev Pythona 2.7 iz drevesa vrat – vsa vrata, ki temeljijo na Python 2, je treba prenesti v Python 3 ali pa bodo odstranjena. Upravitelj paketov pkg je bil posodobljen na izdajo 1.13.2.
    • Posodobljene komponente grafičnih skladov in vrata, povezana z xorg.
      Strežnik X.org je bil posodobljen na različico 1.20.8 (prej dobavljeno v veji 1.18), ki je FreeBSD omogočila privzeto uporabo zaledja udev/evdev za upravljanje vhodnih naprav. Paket Mesa je bil preklopljen tako, da privzeto uporablja razširitev DRI3 namesto DRI2. Potekajo dela za ohranitev grafičnih gonilnikov, sklada vhodnih naprav in komponent drm-kmod (vrata, ki omogočajo delovanje modulov amdgpu, i915 in radeon DRM z uporabo ogrodja linuxkpi za združljivost z upraviteljem neposrednega upodabljanja jedra Linux) do datuma.

    • Namizje KDE Plasma, ogrodja KDE, aplikacije KDE in Qt so posodobljeni in posodobljeni na najnovejše izdaje. Pristaniščem je dodana nova aplikacija kstars (zvezdni atlas).
    • Opravljeno je bilo delo za odpravo regresivnih sprememb v upravitelju oken xfwm4, ki so se pojavile po posodobitvi Xfce na različico 4.14 (na primer, artefakti so se pojavili pri dekoriranju oken).
    • Port Wine je bil posodobljen za izdajo Wine 5.0 (prej je bil na voljo 4.0.3).
    • Od različice 1.14 je jezikovni prevajalnik Go dodal uradno podporo za arhitekturo ARM64 za FreeBSD 12.0.
    • OpenSSH v osnovnem sistemu je bil posodobljen na izdajo 7.9p1.
    • Knjižnica sysctlmibinfo2 je bila implementirana in postavljena v vrata (devel/libsysctlmibinfo2), ki zagotavlja API za dostop do sysctl MIB in prevajanje imen sysctl v identifikatorje objektov (OID).
    • Posodobitev distribucije je bila ustvarjena NomadBSD 1.3.1, ki je izdaja FreeBSD, prilagojena za uporabo kot prenosni namizni računalnik, ki ga je mogoče zagnati s pogona USB. Grafično okolje temelji na upravljalniku oken Openbox. Uporablja se za montažo pogonov DSBMD (podprta je namestitev CD9660, FAT, HFS+, NTFS, Ext2/3/4), za konfiguracijo brezžičnega omrežja - wifimgrin za nadzor glasnosti - DSBMixer.
    • Začetek delo o pisanju celotne dokumentacije za upravitelja okolja zapora lahko. Za izdajo je v pripravi pot 0.11.0, ki bo vključeval orodja za upravljanje omrežnega sklada.

Vir: opennet.ru

Dodaj komentar