FreeBSD Udviklingsrapport for første kvartal af 2020

offentliggjort rapport om udviklingen af ​​FreeBSD-projektet fra januar til marts 2020. Blandt ændringerne kan vi bemærke:

  • Generelle og systemiske problemstillinger
    • Fjernede GCC-kompilatorsættet fra FreeBSD-CURRENT-kildetræet, såvel som de ubrugte gperf-, gcov- og gtc- (devicetree compiler)-værktøjer. Alle platforme, der ikke understøtter Clang, er blevet skiftet til at bruge eksterne byggeværktøjer installeret fra porte. Basissystemet sendte en forældet udgivelse af GCC 4.2.1, og integration af nyere versioner var ikke mulig på grund af overgangen af ​​4.2.2 til GPLv3-licensen, som blev anset for upassende for FreeBSD-basekomponenterne. Aktuelle udgivelser af GCC, inklusive GCC 9, kan stadig installeres fra pakker og porte.
    • Linux-miljøemuleringsinfrastrukturen (Linuxulator) har tilføjet understøttelse af sendfile-systemkaldet, TCP_CORK-tilstand (påkrævet for nginx) og MAP_32BIT-flaget (løser problemet med at starte pakker med Mono fra Ubuntu Bionic). Problemer med DNS-opløsning ved brug af glibc nyere end 2.30 (for eksempel fra CentOS 8) er blevet løst.
      Den kontinuerlige integrationsinfrastruktur giver mulighed for at køre LTP (Linux Testing Project)-job, der kører Linuxulator for at teste forbedringer af koden for at understøtte Linux. Omkring 400 tests mislykkes og kræver rettelse (nogle fejl er forårsaget af falske positiver, nogle kræver trivielle rettelser, men der er andre, der kræver tilføjelse af understøttelse af nye systemkald for at rette). Der er blevet arbejdet på at rydde op i Linuxulator-koden og forenkle debugging. Patches med understøttelse af udvidede attributter og fexecve-systemkaldet er blevet forberedt, men endnu ikke gennemgået.

    • Møder i den arbejdsgruppe, der er oprettet for at udføre migreringen af ​​kildekoder fra det centraliserede kildekontrolsystem Subversion til det decentrale system Git, fortsætter. En rapport med forslag til migration er under udarbejdelse.
    • В rtld (runtime linker) forbedret direkte eksekveringstilstand ("/libexec/ld-elf.so.1 {sti} {argumenter}").
    • Projektet for fuzzing-test af FreeBSD-kernen ved hjælp af syzkaller-systemet fortsætter med at udvikle sig. I løbet af rapporteringsperioden blev problemer i netværksstakken og koden til at arbejde med filbeskrivelsestabeller identificeret ved hjælp af syzkaller elimineret. Efter fejldiagnosen er ændringer blevet tilføjet til SCTP-stakken for at gøre fejlfinding lettere. Regler er blevet tilføjet til stress2-sættet for at identificere mulige regressioner. Tilføjet understøttelse af fuzz-test af nye systemkald, herunder copy_file_range(), __realpathat() og Capsicum undersystemkald. Arbejdet fortsætter med at dække Linux-emuleringslaget med fuzz-test. Vi har analyseret og elimineret fejl noteret i de seneste Coverity Scan-rapporter.
    • Det kontinuerlige integrationssystem er skiftet til at udføre alle hovedgrentests kun ved brug af clang/lld. Ved test for RISC-V sikres dannelsen af ​​et komplet diskbillede til at køre test i QEMU ved brug af OpenSBI. Tilføjet nye opgaver til test af billeder og powerpc64 virtuelle maskiner (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Der arbejdes på at overføre Kyua-testpakken fra portene (devel/kyua) til basissystemet for at løse problemer (pakker installeres meget langsomt), der opstår ved brug af Kyua på nye arkitekturer, hvortil udviklingen udføres ved hjælp af en emulator eller FPGA. Integration i basissystemet vil væsentligt forenkle test af indlejrede platforme og interface med kontinuerlige integrationssystemer.
    • Et projekt er blevet lanceret for at optimere ydeevnen af ​​netværksbrodriveren hvis_bro, som bruger en enkelt mutex til at låse interne data, hvilket ikke gør det muligt at opnå den ønskede ydeevne på systemer med et stort antal fængselsmiljøer eller virtuelle maskiner samlet i ét netværk. På dette stadium er der tilføjet test til koden for at forhindre, at der opstår regression under moderniseringen af ​​arbejdet med låse. Muligheden for at bruge ConcurrencyKit til at parallelisere dataoverførselsbehandlere (bridge_input(), bridge_output(), bridge_forward(), ...) overvejes.
    • Tilføjet et nyt sigfastblock-systemkald for at tillade en tråd at specificere en hukommelsesblok til en hurtig signalbehandler for at forbedre ydeevnen af ​​undtagelsesbehandlere.
    • Kernen tilføjer understøttelse af LSE (Large System Extension) atominstruktioner understøttet af ARMv8.1-systemer. Disse instruktioner er nødvendige for at forbedre ydeevnen, når de kører på Cavium ThunderX2- og AWS Graviton 2-kort. De tilføjede ændringer registrerer LSE-understøttelse og aktiverer dynamisk den atomære implementering baseret på dem. Under testning gjorde brugen af ​​LSE det muligt at reducere processortiden brugt ved samling af kernen med 15%.
    • Ydeevneoptimering er blevet udført, og funktionaliteten af ​​værktøjskassen er blevet udvidet til eksekverbare filer i ELF-formatet.
      Tilføjet understøttelse til cachelagring af DWARF-debugging-information, løst problemer i elfcopy/objcopy-værktøjerne, tilføjet DW_AT_ranges-behandling,
      readelf implementerer evnen til at afkode PROTMAX_DISABLE, STKGAP_DISABLE og WXNEEDED flagene samt Xen og GNU Build-ID.

  • Безопасность
    • For at forbedre ydeevnen af ​​FreeBSD i Azure cloud-miljøer, arbejdes der på at yde support til HyperV Socket-mekanismen, som tillader brugen af ​​en socket-interface til interaktion mellem gæstesystemet og værtsmiljøet uden at oprette et netværk.
    • Der arbejdes på at levere gentagelige builds af FreeBSD, hvilket gør det muligt at sikre, at systemkomponenternes eksekverbare filer kompileres nøjagtigt fra de erklærede kildekoder og ikke indeholder uvedkommende ændringer.
    • Evnen til at kontrollere inkluderingen af ​​yderligere beskyttelsesmekanismer (ASLR, PROT_MAX, stack gap, W+X mapping) på niveauet af individuelle processer er blevet tilføjet til elfctl-værktøjet
  • Opbevaring og filsystemer
    • Der arbejdes på at implementere muligheden for NFS til at fungere over en krypteret kommunikationskanal baseret på TLS 1.3, i stedet for at bruge Kerberos (sec=krb5p-tilstand), som er begrænset til kun at kryptere RPC-meddelelser og kun implementeres i software. Den nye implementering bruger den kerneleverede TLS-stak til at aktivere hardwareacceleration. NFS over TLS-koden er næsten klar til test, men kræver stadig arbejde for at understøtte signerede klientcertifikater og tilpasse kerne-TLS-stakken til at sende NFS-data (patches til modtagelse er allerede klar).
  • Hardware support
    • Der arbejdes på at tilføje understøttelse af kinesisk x86 CPU Hygon baseret på AMD-teknologier;
    • Som en del af CheriBSD, en forgrening af FreeBSD til forskningsprocessorarkitektur CHERI (Capability Hardware Enhanced RISC Instructions), understøttelse af ARM Morello-processoren fortsætter med at blive implementeret, som vil understøtte CHERI-hukommelsesadgangskontrolsystemet baseret på Capsicum-projektets sikkerhedsmodel. Morello chip planlægger udgivelse i 2021. Arbejdet er i øjeblikket fokuseret på at tilføje support til Arm Neoverse N1-platformen, der driver Morello. En indledende port af CheriBSD til RISC-V-arkitekturen er blevet præsenteret. CheriBSD-udviklingen fortsætter for CHERI-referenceprototypen baseret på MIPS64-arkitekturen.
    • FreeBSD-porting fortsætter for 64-bit SoC NXP LS1046A baseret på ARMv8 Cortex-A72-processoren med en integreret netværkspakkebehandlingsaccelerationsmotor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 og USB 3.0. I øjeblikket forberedes driverne QorIQ og LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI til overførsel til den primære FreeBSD-sammensætning.
    • Ena-driveren er blevet opdateret til version 2.1.1 med understøttelse af anden generation af ENAv2 (Elastic Network Adapter) netværksadaptere, der bruges i Elastic Compute Cloud (EC2) infrastrukturen til at organisere kommunikation mellem EC2 noder med hastigheder på op til 25 Gb/ s. En opdatering til ENA 2.2.0 er under udarbejdelse.
    • Forbedringer af FreeBSD-porten til powerpc64-platformen fortsætter. Fokus er på at levere kvalitetsydelse på systemer med IBM POWER8- og POWER9-processorer. I løbet af rapporteringsperioden blev FreeBSD-CURRENT overført til at bruge LLVM/Clang 10.0-kompileren og lld-linkeren i stedet for GCC. Som standard bruger powerpc64-systemer ELFv2 ABI, og support til ELFv1 ABI er afbrudt. FreeBSD-STABLE har stadig gcc 4.2.1. Problemer med virtio, aacraid og ixl drivere er blevet løst. På powerpc64-systemer er det muligt at køre QEMU uden Huge Pages-understøttelse.
    • Arbejdet fortsætter med at implementere understøttelse af RISC-V-arkitekturen. I sin nuværende form starter FreeBSD allerede med succes på SiFive Hifive Unleashed-brættet, som drivere er forberedt til
      UART, SPI og PRCI, understøtter OpenSBI og SBI 0.2 firmware. I rapporteringsperioden var arbejdet fokuseret på migration fra GCC til clang og lld.

  • Applikationer og havnesystem
    • FreeBSD-portsamlingen har krydset tærsklen på 39 tusinde porte, antallet af ulukkede PR'er overstiger lidt 2400, hvoraf 640 PR'er endnu ikke er blevet sorteret. I løbet af rapporteringsperioden blev der foretaget 8146 ændringer fra 173 udviklere. Fire nye deltagere modtog committer-rettigheder (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Tilføjet USES=qca flag og fjernet USES=zope flag (på grund af inkompatibilitet med Python 3). Der arbejdes på at fjerne Python 2.7 fra ports-træet - alle Python 2-baserede porte skal porteres til Python 3 eller vil blive fjernet. Pkg-pakkehåndteringen er blevet opdateret til udgivelse 1.13.2.
    • Opdaterede grafikstakkomponenter og xorg-relaterede porte.
      X.org-serveren er blevet opdateret til version 1.20.8 (tidligere sendt på 1.18-grenen), hvilket gjorde det muligt for FreeBSD som standard at bruge udev/evdev-backend til håndtering af input-enheder. Mesa-pakken er blevet skiftet til at bruge DRI3-udvidelsen i stedet for DRI2 som standard. Der arbejdes på at beholde grafikdriverne, inputenhedsstakken og drm-kmod-komponenterne (en port, der muliggør driften af ​​amdgpu, i915 og radeon DRM-moduler, ved at bruge linuxkpi-rammeværket til kompatibilitet med Linux-kernens Direct Rendering Manager) opdateret.

    • KDE Plasma desktop, KDE Frameworks, KDE Applications og Qt holdes opdateret og opdateret til de seneste udgivelser. En ny applikation kstars (stjerneatlas) er blevet tilføjet til portene.
    • Der er blevet arbejdet på at eliminere regressive ændringer i xfwm4-vinduestyringen, der dukkede op efter opdatering af Xfce til version 4.14 (for eksempel dukkede artefakter op ved udsmykning af vinduer).
    • Vinporten er blevet opdateret til at frigive Wine 5.0 (tidligere blev 4.0.3 tilbudt).
    • Startende med version 1.14 tilføjede Go-sprogkompileren officiel understøttelse af ARM64-arkitekturen til FreeBSD 12.0.
    • OpenSSH på basissystemet er blevet opdateret til at udgive 7.9p1.
    • Sysctlmibinfo2-biblioteket er blevet implementeret og placeret i porte (devel/libsysctlmibinfo2), hvilket giver en API til at få adgang til sysctl MIB og oversætte sysctl-navne til objektidentifikatorer (OID'er).
    • En distributionsopdatering er blevet genereret NomadBSD 1.3.1, som er en udgave af FreeBSD tilpasset til brug som en bærbar desktop, der kan bootes fra et USB-drev. Det grafiske miljø er baseret på en vindueshåndtering Åben boks. Anvendes til montering af drev DSBMD (montering af CD9660, FAT, HFS+, NTFS, Ext2/3/4 er understøttet), for at konfigurere et trådløst netværk - wifimgr, og for at styre lydstyrken - DSBMixer.
    • Startet arbejde om at skrive komplet dokumentation til fængselsmiljølederen pot. Pot 0.11.0 er ved at blive klargjort til udgivelse, som vil omfatte værktøjer til styring af netværksstakken.

Kilde: opennet.ru

Tilføj en kommentar