FreeBSD projekti arenguaruanne 2020. aasta jaanuarist märtsini. Muudatusena võib välja tuua:
- Üldised ja süsteemsed küsimused
- FreeBSD-CURRENTi lähtekoodide puust on eemaldatud GGC kompilaatorite komplekt ning kasutamata utiliidid gperf, gcov ja gtc (seadmestiku puu kompilaator). Kõik platvormid, mis ei toeta Clang'i, on üle viidud välise kogumisinstrumendi kasutamisele, mis installitakse portide kaudu. Põhisüsteemis tarniti aegunud GCC versioon 4.2.1, ja uuemate versioonide integreerimine oli võimatu, kuna versioon 4.2.2 läks üle GPLv3 litsentsile, mida peeti FreeBSD põhikomponentide jaoks vastuvõetamatuks. Praeguseid GCC versioone, sealhulgas GCC 9, saab nagu ikka installida pakettide ja portide kaudu.
- Linuxi keskkonnaemulatsiooni (Linuxulator) infrastruktuuri on lisatud süsteemikõne sendfile tugi, TCP_CORK režiim (nginx'i jaoks vajalik), MAP_32BIT lipp (lahendab Ubuntu Bionic'i Mono pakettide käivitamise probleemi). DNS-i lahendamise probleemid glibc versiooniga 2.30 või uuema kasutamisel (nt CentOS 8) on lahendatud.
Töötluse pideva integratsiooni infrastruktuuris on tagatud LTP (Linux Testing Project) testide käitamine Linuxulatori all Linuxi toe testimiseks. Ligikaudu 400 testi lõppevad vea korral ja vajavad parandamist (mõned vead on valehäired, mõned vajavad triviaalset parandamist, kuid on ka selliseid, mille korral tuleb lisada uute süsteemikõnede tugi). On tehtud töö Linuxulatori koodi puhastamise ja silumise lihtsustamise nimel. On ette valmistatud, kuid veel mitte üle vaadatud, patšid laienenud atribuutide ja fexecve süsteemikõne toe toetamiseks. - Töö jätkub töörühma koosolekutega, mille eesmärk on migratsioonil lähtetekstide üleminek tsentraliseeritud lähtekoodihaldussüsteemist Subversion detsentraliseeritud süsteemi Git. Migratsiooni ettepaneku aruanne on valmimise staadiumis.
- Uues (runtime linker) on parandatud otsekäivitamise režiimi («/libexec/ld-elf.so.1 {teed} {argumendid}»).
- Jätkub FreeBSD tuuma fuzzimis-testimise projekti arendamine syzkaller süsteemi abil. Aruandeperioodi jooksul on lahendatud probleemid võrgu stack'iga ja failikirjeldajate tabelitega, mis tuvastati syzkaller abil. SCTP stack'i vigade diagnostika jälgedes on lisatud muudatusi, mis lihtsustavad silumist. Stress2 komplekti on lisatud reegleid võimalike regressioonide tuvastamiseks. Uute süsteemikõnede fuzzimis-testimise tugi on lisatud, sealhulgas copy_file_range(), __realpathat() ja Capsicum alamfailide kõned. Tööd jätkub Linuxi emulatsioonikihi fuzzimis-testimise katmise üle. On läbi viidud viimaste Coverity Scan raportite vigade analüüs ja kõrvaldamine.
- Jätkati pideva integreerimise süsteemi üleminekut kõigi head haru teste teostamisele ainult clang/lld kasutamise kaudu. RISC-V testimise käigus on tagatud täieliku kettapildi genereerimine testide käivitamiseks QEMU-s, kasutades OpenSBI-d. Uued ülesanded on lisatud powerpc64 piltide ja virtuaalmasinate testimiseks (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
- Töötame Kyua testikomplekti üleviimise kallal portidest (devel/kyua) põhite süsteemi, et lahendada probleeme (pakettide installimine on väga aeglane), mis tekivad Kyua kasutamisel uutel arhitektuuridel, mille arendamine käib emulaatori või FPGA abil. Integreerimine põhite süsteemi lihtsustab oluliselt integreeritud platvormide testimist ja pideva integreerimise süsteemidega liitumist.
- Alustati võrgu sildade draiveri jõudluse optimeerimise projekti , mis kasutab ühte mutexi sisemise data lukustamiseks, mis ei võimalda saavutada soovitud jõudlust süsteemides, kus on suur arv jail-keskkondi või virtuaalmasinaid, mis on ühendatud ühte võrku. Sellel etapil on koodi lisatud testid, et vältida regressioonide tekkimist lukustuste töötlemise moderniseerimise käigus. Uuritakse ConcurrencyKit’i kasutamise võimalust andmete edastamise töötlejate (bridge_input(), bridge_output(), bridge_forward(), …) paralleliseerimiseks.
- Lisatud on uus süsteemikõne sigfastblock, mis võimaldab lõime määrata mälu bloki kiirete signaalide töötlejate jaoks, et suurendada erandi töötlejate jõudlust.
- Juurtes on lisatud LSE (Large System Extension) aatominstruktsioonide tugi, mida toetavad ARMv8.1 süsteemid. Need instruktsioonid on vajalikud jõudluse parandamiseks Cavium ThunderX2 ja AWS Graviton 2 plaatide kasutamisel. Lisatud muudatused määravad LSE toe olemasolu ja aktiveerivad aatomite rakenduse dünaamiliselt nende alusel. Testimisel võimaldas LSE kasutamine vähendada protsessori aega, mis kulub tuuma kogumiseks, 15%.
- On tehtud jõudluse optimeerimine ja laiendatud ELF-formaadis käivitatavate failide tööriista funktsionaalsust.
Lisatud on DWARF silumise teabe vahemälu tugi, lahendatud on probleemid tööriistade elfcopy/objcopy, DW_AT_ranges töötlemine on lisatud.
Readelfis on rakendatud PROTMAX_DISABLE, STKGAP_DISABLE ja WXNEEDED lipu dekodeerimise võimalus ning Xen ja GNU Build-ID tugi.
- Turvalisus
- Azure'i pilvekeskkonna FreeBSD töötamise parandamiseks käib töö HyperV Socket'i toe tagamiseks, mis võimaldab kasutada soketliidest külalis- ja host-süsteemi vahel ilma võrgu seadistamiseta.
- Käib töö FreeBSD korduvate kogumiste tagamiseks, mis võimaldavad veenduda, et süsteemi komponendi käivitatavad failid on koostatud just nõutud lähtekoodist ja ei sisalda kõrvalisi muudatusi.
- Elfctl tööriistale on lisatud võimalus hallata täiendavate kaitsemehhanismide (ASLR, PROT_MAX, stack gap, W+X mapping) aktiveerimist eraldi protsesside tasemel.
- Salvestussüsteemid ja failisüsteemid
- Käib töö NFS'i rakendamise võimaluse nimel krüptitud sidekanalil TLS 1.3 üle, selle asemel et kasutada Kerberost (režiim sec=krb5p), mis piirab ainult RPC-sõnumite krüptimist ja on rakendatav vaid tarkvara kaudu. Uus rakendus kasutab tuuma pakutavat TLS-i steki, mis võimaldab kasutada riistvarast kiirendust. NFS'i TLS-i peal kood on juba peaaegu testimiseks valmis, kuid vajab veel tööd allkirjastatud kliendisertifikaatide toe lisamiseks ja tuuma TLS-steiri kohandamiseks NFS andmete saatmiseks (vastuvõtu patšid on juba valmis).
- Riistvara tugi
- Käib töö Hiina x86 protsessorite Hygon toe lisamise kallal, mis põhinevad AMD tehnoloogiatel.
- CheriBSD, FreeBSD kõrvalharu uurimisprotsessori arhitektuuri jaoks, raames käib töö. (Capability Hardware Enhanced RISC Instructions), jätkub ARM Morello protsessori toe rakendamine, mis toetab CHERI mäluhaldussüsteemi, põhinedes Capsicum projekti kaitse mudelile. Morello kiip välja lasta 2021. aastal. Praegu keskendutakse Arm Neoverse N1 platvormi toe lisamisele, mis on Morello alus. Esitatud on algne CheriBSD port RISC-V arhitektuurile. CheriBSD arendamine jätkub MIPS64 arhitektuuri põhjalise CHERI prototüübi jaoks.
- Jätkub FreeBSD portimine 64-bitisele SoC NXP LS1046A, mis põhineb ARMv8 Cortex-A72 protsessoril koos integreeritud võrgupakettide töötlemise kiirussooja, 10 Gb Etherneti, PCIe 3.0, SATA 3.0 ja USB 3.0. Praegu valmistatakse QorIQ ja LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI draivereid FreeBSD põhiversiooni edastamiseks.
- Kuni versioonini 2.1.1 on uuendatud ena draiverit, mis toetab teise põlvkonna ELAv2 (Elastic Network Adapter) võrgukaartide, mida kasutatakse Elastic Compute Cloud (EC2) infrastruktuuris EC2 sõlmede vaheline suhtlemine kiirusel kuni 25 Gb/s. Valmistatakse uuendust ENA 2.2.0-le.
- Jätkub FreeBSD porta täiustamine powerpc64 platvormile. Peamine tähelepanu on pööratud kvaliteedi tagamisele süsteemides, kus on IBM POWER8 ja POWER9 protsessorid. Aastaaruande perioodil viidi FreeBSD-CURRENT üle LLVM/Clang 10.0 kompilaatorile ja lld linklejale GCC asemel. Powerpc64 süsteemides kasutatakse vaikimisi ELFv2 ABI-d, samas kui ELFv1 ABI tugi lõpetatakse. FreeBSD-STABLE-s jääb gcc 4.2.1 alles. Lahendatud on virtio, aacraid ja ixl draiveritega seotud probleemid. Powerpc64 süsteemides on tagatud QEMU käitamine ilma Huge Pagesi toeta.
- Tööd jätkatakse RISC-V arhitektuuri toe rakendamisel. Praegusel kujul laadib FreeBSD juba edukalt SiFive Hifive Unleashed plaadile, mille jaoks on ette valmistatud draiverid
UART, SPI ja PRCI, toetatakse OpenSBI ja SBI 0.2 püsivara. Aastaaruande perioodil keskenduti üleminekule gcc-lt clang-ile ja lld-le.
- Rakendused ja portide süsteem
- FreeBSD portide kollektsioon on ületanud 39 000 pordi piiri, avatud PRide arv ületab veidi 2400, millest 640 PRi on veel lahendamata. Aruandeperioodi jooksul tehti 8146 muudatust 173 arendaja poolt. Komiteepädevused said neli uut liiget (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Lisatud flag USES=qca ja eemaldatud flag USES=zope (Python 3 ühilduvuse tõttu). Tööd tehakse Python 2.7 eemaldamiseks portide puust — kõik Python 2-le sõltuvad pordid peavad olema kantud Python 3-le või muidu eemaldatakse need. Pakendihaldur pkg uuendati versioonile 1.13.2.
- Uuendatud graafikustäki komponente ja Xorgiga seotud porte.
X.org server on uuendatud versioonini 1.20.8 (varem pakuti versiooni 1.18), mis lubas FreeBSD-l vaikimisi üle minna udev/evdev tagapinnale sisendseadmete töötlemiseks. Pakett Mesa on nüüd vaikimisi läinud üle DRI3 laienduse kasutamisele DRI2 asemel. Tehakse tööd graafikadraiverite, sisendseadmete ja drm-kmod komponentide ajakohasena hoidmise nimel (port, mis toetab DRM mooduleid amdgpu, i915 ja radeon, kasutades linuxkpi raamistikku ühilduvuse tagamiseks Linuxi kerneliga Direct Rendering Manageris). - KDE Plasma, KDE Frameworks, KDE rakendused ja Qt on ajakohastatud ja uuendatud uusimatele väljalaskeversioonidele. Porte lisatud uus rakendus kstars (tähtede atlas).
- Tööd on tehtud regresiivsete muudatuste kõrvaldamiseks aknahaldur xfwm4-s, mis tekivad pärast Xfce uuendamist versioonile 4.14 (näiteks tekkisid akende dekoreerimise ajal artefaktid).
- Wine port on uuendatud Wine 5.0 väljalaskeni (varem pakuti 4.0.3).
- Alates versioonist 1.14 on Go keele kompilaatoris lisatud ametlik tugi ARM64 arhitektuurile FreeBSD 12.0 jaoks.
- OpenSSH baassüsteemis on uuendatud versioonini 7.9p1.
- Tehtud ja portidesse (devel/libsysctlmibinfo2) paigaldatud sysctlmibinfo2 teek, mis pakub API-d sysctl MIB-i juurde pääsemiseks ja tõlgib sysctl nimetused objektide identifikaatoriteks (OID).
- Töötatakse välja külglaadimise uuendust. , mis esindab FreeBSD väljaannet, kohandatud kasutamiseks kaasaskantava töölauana, laaditava USB-kettalt. Graafiline keskkond põhineb aknahalduril . Massiivi montaažiks kasutatakse (toetatakse CD9660, FAT, HFS+, NTFS, Ext2/3/4 montaaži), traadita võrgu seadistamiseks — , ja helitugevuse haldamiseks — .
- Algas täieliku dokumentatsiooni koostamiseks jail-i keskkonna halduri jaoks. . Valmistatakse ette pot 0.11.0 versioon, milles lisanduvad võrgustiku haldustooted.
Allikas: opennet.ru
