FreeBSD arenguaruanne 2020. aasta esimeses kvartalis

Avaldatud FreeBSD projekti arenguaruanne jaanuarist märtsini 2020. Muudatused hõlmavad:

  • Üldised ja süsteemiküsimused
    • FreeBSD-CURRENTi lähtekoodipuust on eemaldatud GCC kompilaatorite komplekt ja mittevajalikud utiliidid gperf, gcov ning gtc (device tree kompilaator). Kõik platvormid, mis ei toeta Clang'i, on üleviidud kasutama välist ehitusvahendit, mis paigaldatakse sadamate kaudu. Põh süsteemis tarniti aegunud GCC 4.2.1 versioon, ning uuemate versioonide integreerimine osutus võimatuks 4.2.2 ülemineku tõttu GPLv3 litsentsile, mida peeti FreeBSD põhiliste komponentide jaoks vastuvõetamatuks. Uued GCC versioonid, sealhulgas GCC 9, on endiselt saadaval pakettidena ja sadamatena.
    • Linuxi keskkonna emulatsiooni infrastruktuuri (Linuxulator) on lisatud süsteemikutsungite toetus sendfile, TCP_CORK-režiim (mis on vajalik nginx'i jaoks) ja MAP_32BIT lipp (lahendab probleeme Mono pakettide käivitamisega Ubuntu Bionic'ist). DNS resolutsiooniprobleemid glibc versiooniga 2.30 või uuema kasutamisel (näiteks CentOS 8-st) on lahendatud.
      Jätkuva integratsiooni infrastruktuur tagab LTP (Linux Testing Project) tööde käitamise Linuxulatori all, et testida koodis tehtud täiustusi Linuxi toe nimel. Umbes 400 testimist lõpetatakse veaga ja vajavad parandamist (mõned vead on valehäired, mõned vajavad lihtsaid parandusi, kuid on ka selliseid, mille lahendamiseks on vajalik uute süsteemi kõnede toe lisamine). On tehtud tööd Linuxulatori koodi puhastamiseks ja tõrkeotsingu lihtsustamiseks. On ette valmistatud, kuid veel mitte üle vaadatud, plaastrid laiendatud atribuutide ja süsteemi kõne fexecve toetuseks.
    • Töörühma koosolekud jätkuvad, et teostada lähtekoodide migreerimist kesksetest Subversioni lähtekoodihaldussüsteemidest hajutatud Git süsteemi. Migratsiooni ettepanekute aruande koostamine on käimas.
    • V rtld (runtime linker) on parandatud otse käitamise režiim ("/libexec/ld-elf.so.1 {tee} {argumendid}").
    • FreeBSD tuuma fuzzing-testimise projekt jätkab arengut, kasutades syzkalleri süsteemi. Aruandeperioodi jooksul likvideeriti probleemid võrgualgoritmis ja failide descriptorite tabelite haldamise koodis, mis tuvastati syzkalleriga. SCTP kuhjumise tõrgete diagnostika jälgedes lisati muudatusi, mis lihtsustavad silumist. Stress2 komplekti lisati reeglid võimalike regressioonide tuvastamiseks. Uute süsteemikutsungite, sealhulgas copy_file_range(), __realpathat() ja Capsicum alamliini kutsete fuzzing-testimise tugi on juurde lisatud. Töö Linuxi emulatsioonikihi fuzzing-testimise katmise laiemaks muutmiseks jätkub. Uuriti ja kõrvaldatud vead, mis olid esitatud värsketes Coverity Scan aruannetes.
    • Pideva integreerimise süsteemis viidi läbi üleminek, et käitada kõik testid head haru ainult clang/lld abil. RISC-V testimise käigus tagati täiskettapildi loomine testide käitamiseks QEMU-s OpenSBI kasutades. Lisatud on uued ülesanded powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm) piltide ja virtuaalmasinate testimiseks.
    • Käib Kyua testide komplekti üleviimine portidest (devel/kyua) põhisisendisse, et lahendada probleeme (pakette installitakse väga aeglaselt), mis tekivad Kyua kasutamisel uutel arhitektuuridel, mille arendamine toimub emulaatori või FPGA abil. Integreerimine põhisisendisse lihtsustab oluliselt embedded platvormide testimist ja järjestikust seostamist pideva integreerimise süsteemidega.
    • Alustatud on projekti, mille eesmärk on optimeerida võrgu sillade draiveri jõudlust. if_bridge, mis kasutab üht mutex'it sisemiste andmete lukustamiseks, mis ei võimalda saavutada soovitud jõudlust süsteemides, kus on suur hulk jail-keskkondi või virtuaalmasinaid, mis on koondatud ühte võrku. Sel etapil on koodi lisatud testid, et vältida regressioonide tekkimist lukustamisega tegelemise protsessis. Uurime võimalust kasutada ConcurrencyKit'i andmeedastusprotsessorite (bridge_input(), bridge_output(), bridge_forward(), ...) paraleelset töötlemist.
    • Lisatud on uus süsteemikõne sigfastblock, mis võimaldab lõimil määrata mälu ploki kiire signaalide töötleja jaoks, et parandada erandite töötlejate jõudlust.
    • Kernisse on lisatud tuge LSE (Large System Extension) atomaarsete käskude jaoks, mida toetavad ARMv8.1 süsteemid. Need juhised on vajalikud jõudluse suurendamiseks Cavium ThunderX2 ja AWS Graviton 2 plaatidel. Lisatud muudatused määravad LSE toe olemasolu ja aktiveerivad dünaamiliselt atomaarse rakenduse nende põhjal. Testimisel suutis LSE kasutada 15% vähem protsessoriaega, mis kulus kerni kogumisel.
    • Rohkelt on optimeeritud jõudlust ja laiendatud ELF-failide täitmisviiside tööriistade funktsionaalsust.
      Lisatud on DWARF-debüütinformatsiooni vahemälu toetus, lahendatud probleemid utiliitides elfcopy/objcopy, DW_AT_ranges'i töötlemine.
      readelfis on rakendatud võimalus dekodeerida PROTMAX_DISABLE, STKGAP_DISABLE ja WXNEEDED lippe, samuti Xen ja GNU Build-ID.
  • Ohutus
    • Azure'i pilves keskkondades FreeBSD töö parandamiseks on töös HyperV Socketi toe tagamine, mis võimaldab kasutajaliidese sokettide kaudu suhelda külg-süsteemi ja host-keskkonna vahel ilma võrgustiku seadistamiseta.
    • Töös on FreeBSD korduvate koostamiste tagamine, mis võimaldab veenduda, et süsteemi komponentide käivitatavad failid on kokku pandud ainult deklareeritud lähtekoodidest ja ei sisalda kõrvalisi muudatusi.
    • Tööriista elfctl on lisatud võimalus hallata täiendavate kaitsemehhanismide (ASLR, PROT_MAX, stack gap, W+X mapping) sisse lülitamist eraldi protsesside tasemel.
  • Salvestussüsteemid ja failisüsteemid
    • Töötame NFS-i toetuse rakendamise nimel, mis toimib krüptitud sidekanali kaudu TLS 1.3 baasil, selle asemel et kasutada Kerberost (režiim sec=krb5p), mis piirneb ainult RPC-sõnumite krüptimisega ja rakendatakse ainult tarkvaraliselt. Uus rakendus kasutab tuuma pakutavat TLS-i steki, mis võimaldab kasutada riistvaralist kiirendust. Kood NFS-i TLS-i üle on peaaegu valmis testimiseks, kuid vajab veel tööd allkirjastatud kliend Sertifikaatide toe ja tuuma TLS-i steki kohandamise osas NFS-i andmete edastamiseks (patchid vastuvõtmiseks on juba valmis).
  • Seadmese toetamine
    • Tööd on käimas Hiina x86 CPU Hygon, mis põhineb AMD tehnoloogial, toe lisamise nimel;
    • CheriBSD, FreeBSD haru teadusliku protsessori arhitektuuri jaoks CHERI (Capability Hardware Enhanced RISC Instructions), käibe tööd on käimas ARM Morello protsessori toe rakendamisel, mis toetab CHERI mäluhaldussüsteemi, mis põhineb projekti Capsicum kaitse mudelil. Chip Morello keskenduda teiste operatsioonisüsteemide ja graafikakaartide toetamisele. väljuda 2021. aastal. Praegu keskendutakse Arm Neoverse N1 platvormi toe lisamisele, mis on Morello aluseks. Esitatud on CheriBSD algne port RISC-V arhitektuurile. CheriBSD arendamine jätkub MIPS64 arhitektuuril põhineva CHERI prototüübi jaoks.
    • Jätkub FreeBSD portimine 64-bitisele SoC NXP LS1046A, mis põhineb ARMv8 Cortex-A72 protsessoril, integreeritud võrgu paketitöötluse kiirenduse, 10 Gb Etherneti, PCIe 3.0, SATA 3.0 ja USB 3.0 mootoriga. Hetkel valmistatakse FreeBSD põhikoosseisu jaoks QorIQ ja LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI draivereid.
    • ENA draiverit on värskendatud versioonini 2.1.1, et toetada teise põlvkonna ENAv2 (Elastic Network Adapter) võrguadaptereid, mida kasutatakse Elastic Compute Cloud (EC2) infrastruktuuris EC2 sõlmede vahelisi ühendusi loomiseks kiirusel kuni 25 Gb/s. Valmistatakse ette uuendus ENA 2.2.0.
    • Jätkub FreeBSD sadama täiustamine powerpc64 platvormile. Peamine tähelepanu on suunatud kõrge kvaliteedi tagamisele IBM POWER8 ja POWER9 protsessoritega süsteemides. Aruandeperioodi jooksul viidi FreeBSD-CURRENT üle LLVM/Clang 10.0 kompilatsioonile ja lld linkijatena, asendades GCC. Powerpc64 süsteemides on vaikimisi kasutusel ELFv2 ABI ning ELFv1 ABI tugi on lõppenud. FreeBSD-STABLE'is jääb kasutusse gcc 4.2.1. Lahendatud on virtio, aacraid ja ixl draiveritega seotud probleemid. Powerpc64 süsteemides on tagatud QEMU käivitamise võimalus ilma Huge Pages toeta.
    • Tööd RISC-V arhitektuuri toe saavutamiseks jätkuvad. Praegusel kujul laaditakse FreeBSD juba edukalt SiFive Hifive Unleashed emaplaadi peale, mille jaoks on valmistatud draiverid.
      UART, SPI ja PRCI, toetab OpenSBI ja SBI 0.2 püsivara. Aruandeperioodi jooksul keskenduti üleminekule GCC-lt clangile ja lld-le.
  • Rakendused ja portsüsteem
    • FreeBSD sadama portide kogu on ületanud 39 000 porti, avatud PR-e on veidi üle 2400, millest 640 PR-i pole veel lahendatud. Aruandeperioodil tehti 8146 muudatust 173 arendajalt. Neljale uuele liikmele (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore) anti komiteerimisõigus. Lisatud on USES=qca lipp ja eemaldatud USES=zope lipp (Python 3-ga ühilduvuse puudumise tõttu). Tööd käivad Python 2.7 eemaldamiseks portide puust — kõik Python 2-ga seotud pordid peavad olema kantud Python 3-le või need eemaldatakse. Pakettide haldaja pkg on uuendatud versioonini 1.13.2.
    • Uuendatud on graafilise kihi komponente ja xorg'iga seotud porte.
      X.org server on uuendatud versioonini 1.20.8 (varem oli 1.18 haru), mis võimaldas FreeBSD-l vaikesätteks kasutada seadmemeetodit udev/evdev sisendseadmete käsitlemiseks. Pakett Mesa on vaikesätteks seadistatud kasutama DRI3 laiendust DRI2 asemel. Tööd käivad graafikadraiverite, sisendseadmestiku ja drm-kmod komponentide ajakohastamise nimel (port, mis toetab DRM mooduleid amdgpu, i915 ja radeon, kasutades linuxkpi raamistikku Linuxi Direct Rendering Manager’iga ühilduvuse tagamiseks).
    • KDE Plasma, KDE Frameworks, KDE Applications ja Qt on hoitud ajakohasena ning uuendatud uusimate väljaanneteni. Portidesse on lisatud uus rakendus kstars (tähtede atlas).
    • Tööd on tehtud regresiivsete muudatuste kõrvaldamiseks aknahalduris xfwm4, mis ilmnesid pärast Xfce värskendamist versioonile 4.14 (näiteks akende dekoreerimisel ilmnevad artefaktid).
    • Port Wine on uuendatud versioonini 5.0 (varem pakuti 4.0.3).
    • Alates versioonist 1.14 on Go keele kompilaatoris lisatud ametlik tugi architektuurile ARM64 FreeBSD 12.0 jaoks.
    • OpenSSH põhiskeemis on uuendatud versioonile 7.9p1.
    • Portides on rakendatud ja saadaval raamatukogu sysctlmibinfo2 (devel/libsysctlmibinfo2), mis pakub API-d sysctl MIB-ile juurdepääsuks ja tõlgib sysctl-nimed objektide identifikaatoriteks (OID).
    • Jaotuse värskendus on koostatud NomadBSD 1.3.1, mis on FreeBSD redaktsioon, kohandatud kasutamiseks kaasaskantava töölauana, mis laaditakse USB-mäluseadmest. Graafiline keskkond põhineb aknahalduril Openbox. Kettaseadmete mountimiseks kasutatakse DSBMD (toetatakse CD9660, FAT, HFS+, NTFS, Ext2/3/4 mountimist), juhtmevaba võrgu seadistamiseks — wifimgr, helitaseme juhtimiseks — DSBMixer.
    • Alustati töö täieliku dokumentatsiooni koostamiseks jail-keskkondade haldurile pot. Varsti ilmub pot 0.11.0, milles on võrgu steki haldamise tööriistad.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster