Izvješće o razvoju FreeBSD-a za prvi kvartal 2020

Objavljeno izvješće o razvoju FreeBSD projekta od siječnja do ožujka 2020. Među promjenama možemo primijetiti:

  • Opća i sustavna pitanja
    • Uklonjen skup GCC prevoditelja iz izvornog stabla FreeBSD-CURRENT, kao i nekorištene uslužne programe gperf, gcov i gtc (prevodilac stabla uređaja). Sve platforme koje ne podržavaju Clang prebačene su na korištenje vanjskih alata za izradu instaliranih iz portova. Osnovni sustav isporučio je zastarjelo izdanje GCC 4.2.1, a integracija novijih verzija nije bila moguća zbog prijelaza 4.2.2 na GPLv3 licencu, koja se smatrala neprikladnom za FreeBSD osnovne komponente. Trenutna izdanja GCC-a, uključujući GCC 9, i dalje se mogu instalirati iz paketa i portova.
    • Infrastruktura emulacije okruženja Linux (Linuxulator) dodala je podršku za sistemski poziv sendfile, TCP_CORK način (potreban za nginx) i zastavu MAP_32BIT (rješava problem s pokretanjem paketa s Mono iz Ubuntu Bionic). Problemi s razrješenjem DNS-a pri korištenju glibc novijeg od 2.30 (na primjer iz CentOS 8) su riješeni.
      Infrastruktura kontinuirane integracije pruža mogućnost pokretanja LTP (Linux Testing Project) poslova koji pokreću Linuxulator za testiranje poboljšanja koda za podršku Linuxu. Otprilike 400 testova ne uspije i zahtijeva popravak (neke pogreške su uzrokovane lažno pozitivnim rezultatima, neki zahtijevaju trivijalne popravke, ali postoje drugi koji zahtijevaju dodavanje podrške za nove sistemske pozive za popravak). Radilo se na čišćenju Linuxulator koda i pojednostavljenju otklanjanja pogrešaka. Zakrpe s podrškom za proširene atribute i fexecve sistemski poziv su pripremljene, ali još nisu pregledane.

    • Nastavljaju se sastanci radne skupine stvorene za provedbu migracije izvornih kodova iz centraliziranog sustava kontrole izvora Subversion na decentralizirani sustav Git. U izradi je izvješće s prijedlozima za migraciju.
    • В rtld (povezivač vremena izvođenja) poboljšan način izravnog izvođenja (“/libexec/ld-elf.so.1 {put} {argumenti}”).
    • Projekt fuzzing testiranja FreeBSD kernela pomoću sustava syzkaller nastavlja se razvijati. Tijekom izvještajnog razdoblja otklonjeni su problemi u mrežnom stogu i kodu za rad s tablicama deskriptora datoteka identificiranih pomoću syzkallera. Nakon dijagnoze pogreške, promjene su dodane u SCTP stog kako bi otklanjanje pogrešaka bilo lakše. Pravila su dodana skupu stress2 za prepoznavanje mogućih regresija. Dodana podrška za fuzz testiranje novih sistemskih poziva, uključujući copy_file_range(), __realpathat() i pozive podsustava Capsicum. Nastavlja se rad na pokrivanju sloja emulacije Linuxa s fuzz testiranjem. Analizirali smo i eliminirali pogreške zabilježene u najnovijim izvješćima Coverity Scan.
    • Sustav kontinuirane integracije prebacio se na izvršavanje svih testova glavne grane samo pomoću clang/lld. Prilikom testiranja za RISC-V, formiranje potpune slike diska je osigurano za pokretanje testova u QEMU koristeći OpenSBI. Dodani novi zadaci za testiranje slika i powerpc64 virtualnih strojeva (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • U tijeku je rad na prijenosu testnog paketa Kyua s portova (devel/kyua) na osnovni sustav kako bi se riješili problemi (paketi se vrlo sporo instaliraju) koji nastaju pri korištenju Kyua na novim arhitekturama, za koje se razvoj provodi pomoću emulatora ili FPGA. Integracija u osnovni sustav značajno će pojednostaviti testiranje ugrađenih platformi i sučelja sa sustavima kontinuirane integracije.
    • Pokrenut je projekt za optimizaciju performansi upravljačkog programa mrežnog mosta ako_most, koji koristi jedan mutex za zaključavanje internih podataka, što ne dopušta postizanje željenih performansi na sustavima s velikim brojem jail okruženja ili virtualnih strojeva ujedinjenih u jednu mrežu. U ovoj fazi kodu su dodani testovi koji sprječavaju regresije tijekom modernizacije rada s bravama. Razmatra se mogućnost korištenja ConcurrencyKita za paraleliziranje rukovatelja prijenosom podataka (bridge_input(), bridge_output(), bridge_forward(), ...).
    • Dodan je novi sistemski poziv sigfastblock kako bi se omogućilo niti da specificira blok memorije za brzi rukovatelj signalima radi poboljšanja performansi rukovatelja iznimkama.
    • Kernel dodaje podršku za LSE (Large System Extension) atomske instrukcije koje podržavaju ARMv8.1 sustavi. Ove su upute potrebne za poboljšanje performansi pri radu na pločama Cavium ThunderX2 i AWS Graviton 2. Dodane promjene otkrivaju LSE podršku i dinamički omogućuju atomsku implementaciju na temelju njih. Tijekom testiranja, korištenje LSE-a omogućilo je smanjenje vremena procesora utrošenog prilikom sastavljanja kernela za 15%.
    • Provedena je optimizacija performansi i proširena je funkcionalnost kompleta alata za izvršne datoteke u ELF formatu.
      Dodana podrška za predmemoriranje DWARF informacija o ispravljanju pogrešaka, riješeni problemi u uslužnim programima elfcopy/objcopy, dodana obrada DW_AT_ranges,
      readelf implementira mogućnost dekodiranja zastavica PROTMAX_DISABLE, STKGAP_DISABLE i WXNEEDED, kao i Xen i GNU Build-ID.

  • sigurnosti
    • Kako bi se poboljšala izvedba FreeBSD-a u Azure oblak okruženjima, u tijeku je rad na pružanju podrške za HyperV Socket mehanizam, koji omogućuje korištenje socket sučelja za interakciju između gostujućeg sustava i glavnog okruženja bez postavljanja mreže.
    • U tijeku je rad na pružanju ponovljivih verzija FreeBSD-a, čime je moguće osigurati da su izvršne datoteke komponenata sustava kompilirane točno iz deklariranih izvornih kodova i da ne sadrže suvišne promjene.
    • Mogućnost kontrole uključivanja dodatnih mehanizama zaštite (ASLR, PROT_MAX, stack gap, W+X mapiranje) na razini pojedinačnih procesa dodana je uslužnom programu elfctl
  • Pohranjivanje i datotečni sustavi
    • U tijeku je rad na implementaciji mogućnosti da NFS radi preko šifriranog komunikacijskog kanala temeljenog na TLS 1.3, umjesto korištenja Kerberosa (sec=krb5p način rada), koji je ograničen na šifriranje samo RPC poruka i implementiran je samo u softveru. Nova implementacija koristi TLS stog koji pruža kernel za omogućavanje hardverskog ubrzanja. NFS preko TLS koda gotovo je spreman za testiranje, ali još uvijek zahtijeva rad na podršci potpisanih klijentskih certifikata i prilagodbu kernel TLS stog za slanje NFS podataka (zakrpe za primanje su već spremne).
  • Hardverska podrška
    • U tijeku je rad na dodavanju podrške za kineski x86 CPU Hygon temeljen na AMD tehnologijama;
    • Kao dio CheriBSD-a, račvanja FreeBSD-a za istraživačku arhitekturu procesora DRAGI (Capability Hardware Enhanced RISC Instructions), nastavlja se implementacija podrške za ARM Morello procesor koji će podržavati CHERI sustav kontrole pristupa memoriji temeljen na sigurnosnom modelu projekta Capsicum. Morello čip planiraju izdanje 2021. Rad je trenutno usmjeren na dodavanje podrške za Arm Neoverse N1 platformu koja pokreće Morello. Predstavljen je početni port CheriBSD-a za RISC-V arhitekturu. Nastavlja se razvoj CheriBSD za referentni prototip CHERI temeljen na MIPS64 arhitekturi.
    • FreeBSD prijenos se nastavlja za 64-bitni SoC NXP LS1046A temeljen na ARMv8 Cortex-A72 procesoru s integriranim motorom za ubrzanje obrade mrežnih paketa, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 i USB 3.0. Trenutno se drajveri QorIQ i LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI pripremaju za prijenos u glavni FreeBSD sastav.
    • Upravljački program ena je ažuriran na verziju 2.1.1 s podrškom za drugu generaciju mrežnih adaptera ENAv2 (Elastic Network Adapter) koji se koriste u infrastrukturi Elastic Compute Cloud (EC2) za organiziranje komunikacije između EC2 čvorova pri brzinama do 25 Gb/ s. U pripremi je ažuriranje na ENA 2.2.0.
    • Nastavljaju se poboljšanja FreeBSD porta za powerpc64 platformu. Fokus je na pružanju kvalitetnih performansi na sustavima s IBM POWER8 i POWER9 procesorima. Tijekom izvještajnog razdoblja, FreeBSD-CURRENT je prebačen na korištenje LLVM/Clang 10.0 prevoditelja i lld povezivača umjesto GCC-a. Prema zadanim postavkama, powerpc64 sustavi koriste ELFv2 ABI, a podrška za ELFv1 ABI je ukinuta. FreeBSD-STABLE još uvijek ima gcc 4.2.1. Problemi s virtio, aacraid i ixl drajverima su riješeni. Na powerpc64 sustavima moguće je 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 diže na ploči SiFive Hifive Unleashed, za koju su pripremljeni upravljački programi
      UART, SPI i PRCI, podržava OpenSBI i SBI 0.2 firmware. Tijekom izvještajnog razdoblja rad je bio usmjeren na migraciju s GCC-a na clang i lld.

  • Aplikacije i port sustav
    • Zbirka portova FreeBSD-a prešla je prag od 39 tisuća portova, broj nezatvorenih PR-ova nešto premašuje 2400, od čega 640 PR-ova još nije razvrstano. Tijekom izvještajnog razdoblja napravljeno je 8146 promjena od 173 programera. Četiri nova sudionika dobila su prava komitatora (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Dodana zastavica USES=qca i uklonjena zastavica USES=zope (zbog nekompatibilnosti s Python 3). U tijeku je rad na uklanjanju Pythona 2.7 iz stabla priključaka - svi priključci temeljeni na Python 2 moraju se prenijeti na Python 3 ili će biti uklonjeni. Upravitelj paketa pkg je ažuriran na izdanje 1.13.2.
    • Ažurirane komponente grafičkog skupa i xorg povezani priključci.
      Poslužitelj X.org je ažuriran na verziju 1.20.8 (prethodno isporučenu na grani 1.18), što je omogućilo FreeBSD-u da prema zadanim postavkama koristi udev/evdev backend za rukovanje ulaznim uređajima. Paket Mesa prebačen je tako da prema zadanim postavkama koristi proširenje DRI3 umjesto DRI2. U tijeku je rad na održavanju grafičkih upravljačkih programa, skupa ulaznih uređaja i drm-kmod komponenti (priključak koji omogućuje rad amdgpu, i915 i radeon DRM modula, koristeći okvir linuxkpi za kompatibilnost s Direct Rendering Managerom Linux kernela) do danas.

    • Radna površina KDE Plasma, KDE Frameworks, KDE aplikacije i Qt ažuriraju se i ažuriraju na najnovija izdanja. U portove je dodana nova aplikacija kstars (zvjezdani atlas).
    • Radilo se na uklanjanju regresivnih promjena u upravitelju prozora xfwm4 koje su se pojavile nakon ažuriranja Xfce na verziju 4.14 (na primjer, artefakti su se pojavili prilikom ukrašavanja prozora).
    • Wine port je ažuriran kako bi izdao Wine 5.0 (prethodno je bio ponuđen 4.0.3).
    • Počevši od verzije 1.14, prevodilac jezika Go dodao je službenu podršku za ARM64 arhitekturu za FreeBSD 12.0.
    • OpenSSH na osnovnom sustavu je ažuriran na izdanje 7.9p1.
    • Biblioteka sysctlmibinfo2 implementirana je i postavljena u portove (devel/libsysctlmibinfo2), pružajući API za pristup sysctl MIB-u i prevođenje sysctl imena u identifikatore objekata (OID).
    • Generirano je ažuriranje distribucije NomadBSD 1.3.1, koji je izdanje FreeBSD-a prilagođeno za korištenje kao prijenosno stolno računalo koje se može pokrenuti s USB pogona. Grafičko okruženje temelji se na upravitelju prozora Otvori kutiju. Koristi se za montažu pogona DSBMD (podržano je postavljanje CD9660, FAT, HFS+, NTFS, Ext2/3/4), za konfiguriranje bežične mreže - wifimgr, a za kontrolu glasnoće - DSBMixer.
    • Autor posao o pisanju kompletne dokumentacije za voditelja zatvorske okoline lonac. Pot 0.11.0 se priprema za izdavanje, koji će uključivati ​​alate za upravljanje mrežnim stogom.

Izvor: opennet.ru

Dodajte komentar