Izvještaj o razvoju FreeBSD-a za prvi kvartal 2020

objavljeno izvještaj o razvoju FreeBSD projekta od januara do marta 2020. Među promjenama možemo primijetiti:

  • Opća i sistemska pitanja
    • Uklonjen je GCC kompajlerski set iz izvornog stabla FreeBSD-CURRENT, kao i neiskorišteni uslužni programi gperf, gcov i gtc (kompajler stabla uređaja). Sve platforme koje ne podržavaju Clang su prebačene na korištenje vanjskih alata za izgradnju instaliranih sa portova. Osnovni sistem je isporučio zastarelo izdanje GCC 4.2.1, a integracija novijih verzija nije bila moguća zbog prelaska 4.2.2 na GPLv3 licencu, što se smatralo neprikladnim za osnovne komponente FreeBSD. Trenutna izdanja GCC-a, uključujući GCC 9, i dalje se mogu instalirati iz paketa i portova.
    • Infrastruktura za emulaciju Linux okruženja (Linuxulator) je dodala podršku za sistemski poziv sendfile, režim TCP_CORK (potreban za nginx) i oznaku MAP_32BIT (rješava problem sa pokretanjem paketa sa Mono iz Ubuntu Bionic-a). Problemi sa DNS rezolucijom kada se koristi glibc noviji od 2.30 (na primjer iz CentOS 8) su riješeni.
      Infrastruktura za kontinuiranu integraciju pruža mogućnost pokretanja LTP (Linux Testing Project) poslova koji rade na Linuxulatoru kako bi se testirala poboljšanja napravljena u kodu za podršku Linuxu. Oko 400 testova nije uspjelo i zahtijevaju popravku (neke greške su uzrokovane lažno pozitivnim rezultatima, neke zahtijevaju trivijalne popravke, ali postoje i drugi koji zahtijevaju dodavanje podrške za nove sistemske pozive da bi se popravili). Posao je obavljen na čišćenju koda Linuxulatora i pojednostavljenju otklanjanja grešaka. Zakrpe sa podrškom za proširene atribute i fexecve sistemski poziv su pripremljene, ali još nisu pregledane.

    • Nastavljaju se sastanci radne grupe stvorene da izvrši migraciju izvornih kodova sa centralizovanog sistema kontrole izvora Subversion na decentralizovani sistem Git. Izvještaj sa prijedlozima za migraciju je u procesu pripreme.
    • В rtld (runtime linker) poboljšan način direktnog izvršavanja (“/libexec/ld-elf.so.1 {path} {arguments}”).
    • Projekat za fuzzing testiranje FreeBSD kernela korišćenjem syzkaller sistema nastavlja da se razvija. Tokom izvještajnog perioda, eliminisani su problemi u mrežnom stogu i kodu za rad sa tabelama deskriptora fajlova identifikovanim korišćenjem syzkaller-a. Nakon dijagnoze greške, promjene su dodane u SCTP stog kako bi se olakšalo otklanjanje grešaka. Pravila su dodana skupu stress2 kako bi se identificirale moguće regresije. Dodata podrška za fuzz testiranje novih sistemskih poziva, uključujući copy_file_range(), __realpathat() i Capsicum podsistemske pozive. Nastavlja se rad na pokrivanju sloja emulacije Linuxa fuzz testiranjem. Analizirali smo i eliminisali greške zabeležene u najnovijim izveštajima Coverity Scan.
    • Sistem kontinuirane integracije se prebacio na izvršavanje svih testova grananja glave samo pomoću clang/lld. Prilikom testiranja za RISC-V, osigurava se formiranje kompletne slike diska za izvođenje testova u QEMU koristeći OpenSBI. Dodati novi zadaci za testiranje slika i powerpc64 virtuelnih mašina (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • U toku je rad na prenošenju Kyua testnog paketa sa portova (devel/kyua) na osnovni sistem radi rešavanja problema (paketi se instaliraju veoma sporo) koji nastaju prilikom korišćenja Kyue na novim arhitekturama, razvoj za koji se vrši pomoću emulatora ili FPGA. Integracija u osnovni sistem značajno će pojednostaviti testiranje ugrađenih platformi i interfejs sa sistemima kontinuirane integracije.
    • Pokrenut je projekat za optimizaciju performansi drajvera mrežnog mosta if_bridge, koji koristi jedan mutex za zaključavanje internih podataka, što ne dozvoljava postizanje željenih performansi na sistemima sa velikim brojem zatvorskih okruženja ili virtuelnih mašina ujedinjenih u jednu mrežu. U ovoj fazi, kodu su dodani testovi kako bi se spriječilo pojavljivanje regresije tokom modernizacije rada sa bravama. Razmatra se mogućnost korištenja ConcurrencyKit-a za paralelizaciju rukovaoca prijenosa podataka (bridge_input(), bridge_output(), bridge_forward(), ...).
    • Dodan je novi sistemski poziv sigfastblock kako bi se dozvolio niti da specificira blok memorije za brzi rukovalac signalom kako bi se poboljšale performanse rukovatelja izuzetkom.
    • Kernel dodaje podršku za LSE (Large System Extension) atomske instrukcije koje podržavaju ARMv8.1 sistemi. Ove upute su potrebne za poboljšanje performansi pri radu na pločama Cavium ThunderX2 i AWS Graviton 2. Dodate promjene otkrivaju LSE podršku i dinamički omogućavaju atomsku implementaciju zasnovanu na njima. Tokom testiranja, korištenje LSE-a omogućilo je smanjenje vremena procesora pri sastavljanju kernela za 15%.
    • Izvršena je optimizacija performansi i proširena je funkcionalnost kompleta alata za izvršne datoteke u ELF formatu.
      Dodata podrška za keširanje DWARF informacija za otklanjanje grešaka, riješeni problemi u uslužnim programima elfcopy/objcopy, dodata obrada DW_AT_ranges,
      readelf implementira mogućnost dekodiranja PROTMAX_DISABLE, STKGAP_DISABLE i WXNEEDED zastavica, kao i Xen i GNU Build-ID.

  • Sigurnost
    • Da bi se poboljšale performanse FreeBSD-a u Azure cloud okruženjima, u toku je rad na pružanju podrške za HyperV Socket mehanizam, koji omogućava upotrebu interfejsa utičnice za interakciju između gostujućeg sistema i okruženja domaćina bez postavljanja mreže.
    • U toku je rad na obezbeđivanju ponovljivih verzija FreeBSD-a, omogućavajući da se osigura da su izvršne datoteke komponenti sistema kompajlirane tačno iz deklarisanih izvornih kodova i da ne sadrže vanjske promene.
    • Mogućnost kontrole uključivanja dodatnih zaštitnih mehanizama (ASLR, PROT_MAX, stack gap, W+X mapiranje) na nivou pojedinačnih procesa dodata je uslužnom programu elfctl
  • Skladištenje i sistemi datoteka
    • U toku je rad na implementaciji mogućnosti NFS-a da radi preko šifrovanog komunikacionog kanala zasnovanog na TLS 1.3, umjesto korištenja Kerberos-a (sec=krb5p mod), koji je ograničen na šifriranje samo RPC poruka i implementiran je samo u softveru. Nova implementacija koristi TLS stog koji obezbeđuje kernel da omogući hardversko ubrzanje. NFS preko TLS koda je skoro spreman za testiranje, ali još uvijek zahtijeva rad na podršci potpisanim klijentskim certifikatima i prilagođavanje TLS stoga kernela za slanje NFS podataka (zakrpe za prijem su već spremne).
  • Hardverska podrška
    • U toku je rad na dodavanju podrške za kineski x86 CPU Hygon baziran na AMD tehnologijama;
    • Kao dio CheriBSD-a, viljuške iz FreeBSD-a za istraživanje arhitekture procesora CHERI (Capability Hardware Enhanced RISC Instructions), nastavlja se implementirati podrška za ARM Morello procesor, koji će podržati CHERI sistem kontrole pristupa memoriji baziran na Capsicum projektu sigurnosti. Morello čip planiraju izdanje 2021. Rad je trenutno fokusiran na dodavanje podrške za Arm Neoverse N1 platformu koja pokreće Morello. Predstavljen je početni port CheriBSD-a za RISC-V arhitekturu. CheriBSD razvoj se nastavlja za CHERI referentni prototip baziran na MIPS64 arhitekturi.
    • FreeBSD portiranje se nastavlja za 64-bitni SoC NXP LS1046A baziran na ARMv8 Cortex-A72 procesoru sa integrisanim motorom za ubrzanje obrade mrežnih paketa, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 i USB 3.0. Trenutno se pripremaju drajveri QorIQ i LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI za prenos na glavnu FreeBSD kompoziciju.
    • Ena drajver je ažuriran na verziju 2.1.1 uz podršku za drugu generaciju ENAv2 (Elastic Network Adapter) mrežnih adaptera koji se koriste u infrastrukturi Elastic Compute Cloud (EC2) za organizaciju komunikacije između EC2 čvorova pri brzinama do 25 Gb/ s. U pripremi je ažuriranje za ENA 2.2.0.
    • Nastavljaju se poboljšanja FreeBSD porta za platformu powerpc64. Fokus je na pružanju kvalitetnih performansi na sistemima sa IBM POWER8 i POWER9 procesorima. Tokom perioda izveštavanja, FreeBSD-CURRENT je prebačen da koristi LLVM/Clang 10.0 kompajler i lld linker umesto GCC. Po defaultu, powerpc64 sistemi koriste ELFv2 ABI i podrška za ELFv1 ABI je ukinuta. FreeBSD-STABLE još uvijek ima gcc 4.2.1. Problemi sa virtio, aacraid i ixl drajverima su riješeni. Na powerpc64 sistemima je moguće pokrenuti QEMU bez podrške za Huge Pages.
    • Nastavlja se rad na implementaciji podrške za RISC-V arhitekturu. U svom trenutnom obliku, FreeBSD se već uspješno pokreće na SiFive Hifive Unleashed ploči, za koju su drajveri pripremljeni
      UART, SPI i PRCI, podržava OpenSBI i SBI 0.2 firmver. Tokom izvještajnog perioda, rad je bio fokusiran na migraciju sa GCC na clang i lld.

  • Aplikacije i sistem portova
    • Zbirka FreeBSD portova prešla je prag od 39 hiljada portova, broj nezatvorenih PR-ova neznatno prelazi 2400, od kojih 640 PR-ova još nije sortirano. Tokom izvještajnog perioda napravljeno je 8146 izmjena od 173 programera. Četiri nova učesnika dobila su prava committer-a (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Dodata USES=qca zastavica i uklonjena USES=zope zastavica (zbog nekompatibilnosti sa Python 3). U toku je rad na uklanjanju Python 2.7 sa stabla portova - svi portovi zasnovani na Python 2 moraju biti portovani na Python 3 ili će biti uklonjeni. Pkg menadžer paketa je ažuriran na izdanje 1.13.2.
    • Ažurirane komponente grafičkog steka i portovi vezani za xorg.
      X.org server je ažuriran na verziju 1.20.8 (prethodno isporučen na grani 1.18), što je omogućilo FreeBSD-u da podrazumevano koristi udev/evdev pozadinu za rukovanje ulaznim uređajima. Mesa paket je prebačen na korištenje ekstenzije DRI3 umjesto DRI2 prema zadanim postavkama. U toku je rad na održavanju grafičkih drajvera, steka ulaznih uređaja i komponenti drm-kmod (port koji omogućava rad amdgpu, i915 i radeon DRM modula, koristeći linuxkpi framework za kompatibilnost sa Direct Rendering Managerom Linux kernela) ažurno.

    • KDE Plasma desktop, KDE Frameworks, KDE aplikacije i Qt se ažuriraju i ažuriraju do najnovijih izdanja. Nova aplikacija kstars (zvezdani atlas) je dodana portovima.
    • Rad je obavljen na eliminaciji regresivnih promjena u xfwm4 upravitelju prozora koje su se pojavile nakon ažuriranja Xfce-a na verziju 4.14 (na primjer, artefakti su se pojavili prilikom ukrašavanja prozora).
    • Wine port je ažuriran za izdavanje Wine 5.0 (prethodno je ponuđena verzija 4.0.3).
    • Počevši od verzije 1.14, kompajler jezika Go je dodao zvaničnu podršku za ARM64 arhitekturu za FreeBSD 12.0.
    • OpenSSH na osnovnom sistemu je ažuriran na izdanje 7.9p1.
    • Biblioteka sysctlmibinfo2 je implementirana i postavljena u portove (devel/libsysctlmibinfo2), pružajući API za pristup sysctl MIB-u i prevođenje sysctl imena u identifikatore objekata (OID-ove).
    • Generirano je ažuriranje distribucije NomadBSD 1.3.1, što je izdanje FreeBSD-a prilagođeno za upotrebu kao prenosivi desktop sa USB diska. Grafičko okruženje je bazirano na menadžeru prozora Openbox. Koristi se za montažu drajvova DSBMD (podržano je montiranje CD9660, FAT, HFS+, NTFS, Ext2/3/4), za konfiguraciju bežične mreže - wifimgr, a za kontrolu jačine zvuka - DSBMixer.
    • Započeo posao o pisanju kompletne dokumentacije za upravnika zatvorske sredine lonac. Pot 0.11.0 se priprema za izdavanje, koji će uključivati ​​alate za upravljanje mrežnim stekom.

izvor: opennet.ru

Dodajte komentar