FreeBSD arenguaruanne 2020. aasta esimese kvartali kohta

avaldatud aruanne FreeBSD projekti arengust 2020. aasta jaanuarist märtsini. Muudatuste hulgas võime märkida:

  • Üldised ja süsteemsed probleemid
    • Eemaldas FreeBSD-CURRENT lähtepuust GCC kompilaatorikomplekti, samuti kasutamata utiliidid gperf, gcov ja gtc (seadmepuu kompilaator). Kõik platvormid, mis Clangi ei toeta, on lülitatud portidest installitud väliste ehitustööriistade kasutamisele. Baassüsteem tarnis GCC 4.2.1 aegunud väljalase ja uuemate versioonide integreerimine ei olnud võimalik 4.2.2 ülemineku tõttu GPLv3 litsentsile, mida peeti FreeBSD baaskomponentide jaoks sobimatuks. GCC praeguseid versioone, sealhulgas GCC 9, saab siiski installida pakettidest ja portidest.
    • Linuxi keskkonna emuleerimise infrastruktuur (Linuxulator) on lisanud süsteemi sendfile kõne, TCP_CORK režiimi (vajalik nginxi jaoks) ja lipu MAP_32BIT (lahendab Ubuntu Bionicu Mono pakettide käivitamise probleemi). Probleemid DNS-i eraldusvõimega, kui kasutate glibc-d, mis on uuemad kui 2.30 (näiteks CentOS 8-st), on lahendatud.
      Pideva integreerimise infrastruktuur võimaldab käivitada LTP (Linux Testing Project) töid, milles töötab Linuxulator, et testida Linuxi toetamiseks tehtud koodi täiustusi. Umbes 400 testi ebaõnnestub ja vajavad parandamist (mõned vead on põhjustatud valepositiivsetest tulemustest, mõned nõuavad triviaalseid parandusi, kuid on ka teisi, mis nõuavad parandamiseks uute süsteemikutsete toe lisamist). Linuxulatori koodi puhastamiseks ja silumise lihtsustamiseks on tehtud tööd. Laiendatud atribuutide ja fexecve süsteemikutse toega paigad on ette valmistatud, kuid pole veel üle vaadatud.

    • Jätkuvad lähtekoodide tsentraliseeritud juhtimissüsteemist Subversion detsentraliseeritud süsteemi Git viimiseks loodud töörühma koosolekud. Rändeettepanekutega aruanne on koostamisel.
    • В rtld (käitusaja linker) täiustatud otsekäivitusrežiim (“/libexec/ld-elf.so.1 {path} {arguments}”).
    • FreeBSD kerneli fuzzing-testimise projekt, kasutades süsteemi syzkaller, areneb edasi. Aruandeperioodil kõrvaldati syzkalleri abil tuvastatud failikirjeldustabelitega töötamise võrgupinu ja koodi probleemid. Pärast veadiagnoosi on SCTP virna lisatud muudatusi, et silumine oleks lihtsam. Võimalike regressioonide tuvastamiseks on stressi2 komplekti lisatud reeglid. Lisatud on uute süsteemikutsete fuzz-testimise tugi, sealhulgas copy_file_range(), __realpathat() ja Capsicumi alamsüsteemikutsed. Töö Linuxi emulatsioonikihi katmiseks fuzz-testimisega jätkub. Analüüsisime ja kõrvaldasime viimastes Coverity Scani aruannetes märgitud vead.
    • Pideva integreerimise süsteem on lülitunud kõigi peaharude testide täitmisele ainult clang/lld abil. RISC-V testimisel tagatakse OpenSBI abil QEMU-s testide läbiviimiseks täieliku kettapildi moodustamine. Lisatud uued ülesanded piltide ja powerpc64 virtuaalmasinate testimiseks (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Käimas on töö Kyua testkomplekti ülekandmiseks portidest (arendaja/kyua) baassüsteemi, et lahendada probleeme (paketid paigaldatakse väga aeglaselt), mis tekivad Kyua kasutamisel uutel arhitektuuridel, mille arendus toimub emulaatori või emulaatori abil. FPGA. Integreerimine baassüsteemi lihtsustab oluliselt manustatud platvormide testimist ja liidestumist pideva integratsioonisüsteemidega.
    • Käivitatud on projekt võrgusilla draiveri jõudluse optimeerimiseks kui_sild, mis kasutab sisemiste andmete lukustamiseks ühte mutexit, mis ei võimalda soovitud jõudlust saavutada süsteemides, kus on suur hulk vanglakeskkondi või virtuaalseid masinaid, mis on ühendatud ühte võrku. Selles etapis on koodi lisatud testid, mis takistavad lukkudega töötamise moderniseerimisel regressioonide tekkimist. Kaalutakse võimalust kasutada ConcurrencyKiti andmeedastuskäitlejaid (bridge_input(), bridge_output(), bridge_forward(), ...) paralleelseks.
    • Lisati uus sigfastblocki süsteemikutse, mis võimaldab lõimel määrata kiire signaalitöötleja jaoks mäluploki, et parandada erandikäsitlejate jõudlust.
    • Tuum lisab tuge LSE (Large System Extension) aatomikäskudele, mida toetavad ARMv8.1 süsteemid. Need juhised on vajalikud jõudluse parandamiseks, kui töötate plaatidel Cavium ThunderX2 ja AWS Graviton 2. Lisatud muudatused tuvastavad LSE toe ja võimaldavad dünaamiliselt nendel põhinevat aatomirakendust. Testimise käigus võimaldas LSE kasutamine vähendada tuuma kokkupanemisele kuluvat protsessori aega 15%.
    • Teostatud on jõudluse optimeerimine ja laiendatud tööriistakomplekti funktsionaalsust ELF-vormingus täitmisfailide jaoks.
      Lisati tugi DWARF-i silumise teabe vahemällu salvestamiseks, lahendati probleemid elfcopy/objcopy utiliitides, lisati DW_AT_ranges töötlemine,
      readelf rakendab võimalust dekodeerida lippe PROTMAX_DISABLE, STKGAP_DISABLE ja WXNEEDED, samuti Xen ja GNU Build-ID.

  • turvalisus
    • FreeBSD jõudluse parandamiseks Azure'i pilvekeskkondades on käimas töö HyperV Socketi mehhanismi toe pakkumiseks, mis võimaldab kasutada pesa liidest külalissüsteemi ja hostikeskkonna vaheliseks suhtluseks ilma võrku seadistamata.
    • Käimas on FreeBSD korduvate ehituste pakkumine, mis võimaldab tagada, et süsteemikomponentide käivitatavad failid on koostatud täpselt deklareeritud lähtekoodidest ega sisalda kõrvalisi muudatusi.
    • Elfctl utiliidile on lisatud võimalus juhtida täiendavate kaitsemehhanismide (ASLR, PROT_MAX, stack gap, W+X mapping) kaasamist üksikute protsesside tasemel
  • Salvestus- ja failisüsteemid
    • Käimas on töö selle nimel, et rakendada NFS-i võimet töötada TLS 1.3-l põhineva krüpteeritud sidekanali kaudu, mitte kasutada Kerberost (sec=krb5p režiim), mis piirdub ainult RPC-sõnumite krüpteerimisega ja on realiseeritud ainult tarkvaras. Uus rakendus kasutab riistvarakiirenduse võimaldamiseks kerneli pakutavat TLS-i pinu. NFS-i üle TLS-i kood on peaaegu testimiseks valmis, kuid vajab veel tööd, et toetada allkirjastatud kliendisertifikaate ja kohandada tuuma TLS-i pinu NFS-i andmete saatmiseks (vastuvõtmispaigad on juba valmis).
  • Riistvara tugi
    • Käimas on töö AMD tehnoloogiatel põhineva Hiina x86 CPU Hygon toe lisamiseks;
    • CheriBSD osana, FreeBSD hark uurimisprotsessorite arhitektuuri jaoks CHERI (Capability Hardware Enhanced RISC Instructions), jätkatakse ARM Morello protsessori toe juurutamist, mis hakkab toetama Capsicumi projekti turvamudelil põhinevat CHERI mälupääsu juhtimissüsteemi. Morello kiip plaanivad ilmub 2021. aastal. Töö keskendub praegu Morellot toitava Arm Neoverse N1 platvormi toe lisamisele. Esitatud on CheriBSD esialgne port RISC-V arhitektuuri jaoks. CheriBSD arendus jätkub MIPS64 arhitektuuril põhineva CHERI võrdlusprototüübi jaoks.
    • FreeBSD portimine jätkub 64-bitise SoC NXP LS1046A puhul, mis põhineb ARMv8 Cortex-A72 protsessoril, millel on integreeritud võrgupakettide töötlemise kiirendusmootor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 ja USB 3.0. Praegu valmistatakse ette draivereid QorIQ ja LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI ülekandmiseks FreeBSD põhikompositsioonile.
    • ena draiverit on värskendatud versioonile 2.1.1, mis toetab teise põlvkonna ENAv2 (Elastne võrguadapter) võrguadapterit, mida kasutatakse Elastic Compute Cloud (EC2) infrastruktuuris, et korraldada EC2 sõlmede vahelist sidet kiirusel kuni 25 Gb/ s. Ettevalmistamisel on ENA 2.2.0 värskendus.
    • Powerpc64 platvormi FreeBSD pordi täiustamine jätkub. Keskendutakse kvaliteetse jõudluse pakkumisele IBM POWER8 ja POWER9 protsessoritega süsteemides. Aruandeperioodil viidi FreeBSD-CURRENT GCC asemel üle LLVM/Clang 10.0 kompilaatorile ja lld linkerile. Vaikimisi kasutavad powerpc64 süsteemid ELFv2 ABI-d ja ELFv1 ABI tugi on lõpetatud. FreeBSD-STABLE'is on endiselt gcc 4.2.1. Probleemid virtio, aacraid ja ixl draiveritega on lahendatud. Powerpc64 süsteemides on QEMU-d võimalik käivitada ilma tohutute lehtede toeta.
    • Jätkub töö RISC-V arhitektuuri toe rakendamiseks. Praegusel kujul käivitub FreeBSD edukalt juba SiFive Hifive Unleashed plaadil, mille jaoks on draiverid ette valmistatud
      UART, SPI ja PRCI toetab OpenSBI ja SBI 0.2 püsivara. Aruandeperioodil oli töö keskendunud migratsioonile GCC-st clangi ja lld-le.

  • Rakendused ja pordisüsteem
    • FreeBSD portide kogu on ületanud 39 tuhande pordi künnise, sulgemata PR-de arv ületab veidi 2400, millest 640 PR-i on veel sorteerimata. Aruandeperioodil tehti 8146 muudatust 173 arendajalt. Neli uut osalejat said volinikuõigused (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Lisati lipp USES=qca ja eemaldati lipp USES=zope (ühildamatuse tõttu Python 3-ga). Käimas on Python 2.7 eemaldamine portide puust – kõik Python 2-põhised pordid peavad olema porditud Python 3-le või need eemaldatakse. Pkg paketihaldurit on värskendatud versiooniks 1.13.2.
    • Värskendatud graafikapinu komponendid ja xorgiga seotud pordid.
      X.org serverit on värskendatud versioonile 1.20.8 (varem tarniti 1.18 harus), mis võimaldas FreeBSD-l sisendseadmete haldamiseks vaikimisi kasutada taustaprogrammi udev/evdev. Mesa pakett on vaikimisi ümber lülitatud DRI3 laienduse kasutamiseks DRI2. Graafikadraiverite, sisendseadmete virna ja drm-kmod komponentide (port, mis võimaldab amdgpu, i915 ja radeoni DRM-moodulite tööd, kasutades Linuxi kerneli otserenderdushalduriga ühilduvuse tagamiseks linuxkpi raamistikku) säilitamiseks käivad tööd. ajakohane.

    • KDE Plasma töölauda, ​​KDE raamistikke, KDE rakendusi ja Qt hoitakse ajakohasena ja värskendatakse uusimate väljaannetega. Portidele on lisatud uus rakendus kstars (täheatlas).
    • Tööd on tehtud, et kõrvaldada xfwm4 aknahalduris regressiivsed muudatused, mis ilmnesid pärast Xfce värskendamist versioonile 4.14 (näiteks akende kaunistamisel ilmnesid artefaktid).
    • Wine'i porti on värskendatud, et vabastada versioon Wine 5.0 (varem pakuti versiooni 4.0.3).
    • Alates versioonist 1.14 lisas Go keelekompilaator FreeBSD 64 jaoks ametliku toe ARM12.0 arhitektuurile.
    • Põhisüsteemi OpenSSH-d on värskendatud versiooniks 7.9p1.
    • Sysctlmibinfo2 teek on juurutatud ja paigutatud portidesse (devel/libsysctlmibinfo2), pakkudes API-t sysctl MIB-ile juurdepääsuks ja sysctl nimede tõlkimiseks objektiidentifikaatoriteks (OID).
    • Levitamise värskendus on loodud NomadBSD 1.3.1, mis on FreeBSD väljaanne, mis on kohandatud kasutamiseks USB-draivilt käivitatava kaasaskantava töölauana. Graafiline keskkond põhineb aknahalduril Avatud karp. Kasutatakse ajamite paigaldamiseks DSBMD (toetatud on paigaldus CD9660, FAT, HFS+, NTFS, Ext2/3/4), traadita võrgu konfigureerimiseks - wifimgrja helitugevuse reguleerimiseks - DSBMixer.
    • Alustatud töö vangla keskkonnahaldurile täieliku dokumentatsiooni kirjutamise kohta saab. Väljalaskmiseks valmistatakse ette Pot 0.11.0, mis sisaldab tööriistu võrgupinu haldamiseks.

Allikas: opennet.ru

Lisa kommentaar