Rapport om udviklingen af FreeBSD for første kvartal af 2020

Publiceret rapport om udviklingen af FreeBSD-projektet fra januar til marts 2020. Blandt ændringerne kan nævnes:

  • Generelle og systemmæssige spørgsmål
    • Sættet af GCC-compilerne og de ubrugte værktøjer gperf, gcov og gtc (devicetree-compiler) er fjernet fra kilden til FreeBSD-CURRENT. Alle platforme, der ikke understøtter Clang, er blevet konverteret til at bruge eksterne byggemedier, der installeres fra ports. I det grundlæggende system blev en forældet version af GCC 4.2.1 leveret, og integrationen af nyere versioner var umulig på grund af overgangen fra 4.2.2 til GPLv3-licensen, som blev anset for uacceptabel for FreeBSDs grundlæggende komponenter. Aktuelle versioner af GCC, herunder GCC 9, kan som tidligere installeres fra pakker og ports.
    • I infrastrukturen for Linux-emulering (Linuxulator) er der tilføjet support for systemopkaldet sendfile, TCP_CORK-tilstanden (krævet for nginx), og MAP_32BIT-flaget (løser problemet med at køre pakker med Mono fra Ubuntu Bionic). Problemer med DNS-opløsning ved brug af glibc nyere end 2.30 (f.eks. fra CentOS 8) er blevet løst.
      I infrastrukturen for kontinuerlig integration er der sikret kørsel af opgaver til at køre LTP (Linux Testing Project) under Linuxulator for at teste de forbedringer, der er foretaget i koden for at understøtte Linux. Cirka 400 tests afsluttes med en fejl og kræver rettelse (nogle fejl skyldes falske positiver, nogle kræver trivielle rettelser, men der er også nogle, hvor support for nye systemopkald skal tilføjes for at løse dem). Der er blevet arbejdet på at rydde op i Linuxulator-koden og forenkle fejlfinding. Patchene med støtte til udvidede attributter og systemopkaldet fexecve er blevet forberedt, men er endnu ikke blevet gennemgået.
    • Møderne i arbejdsgruppen, der er nedsat for at gennemføre migrationen af kildekoden fra det centraliserede versioneringssystem Subversion til det decentrale system Git, fortsættes. Rapporten med forslag til migrering er under forberedelse.
    • I rtld (runtime linker) er forbedret med hensyn til direkte eksekvering ('/libexec/ld-elf.so.1 {sti} {argumenter}').
    • Projektet om fuzzing-testning af FreeBSD-kernen fortsætter med at bruge syzkaller-systemet. I den rapporterede periode er der løst problemer i netværksstakken og koden til håndtering af filbeskrivertabeller, som blev opdaget ved hjælp af syzkaller. I kølvandet på fejldiagnostikken er der tilføjet ændringer til SCTP-stakken, der forenkler fejlretning. Der er tilføjet regler til stress2-sættet for at identificere mulige regressioner. Der er tilføjet support til fuzzing-testning af nye systemopkald, herunder copy_file_range(), __realpathat() og opkald fra Capsicum-subsystemet. Arbejdet med at dække Linux-emulationslaget med fuzzing-testning fortsætter. Der er blevet analyseret og rettet fejl, der blev bemærket i de nyeste Coverity Scan-rapporter.
    • I systemet for kontinuerlig integration er der overgået til at udføre alle tests i head-grenen kun ved brug af clang/lld. Under testningen for RISC-V er der blevet sikret dannelse af et komplet diskbillede til kørsel af tests i QEMU ved hjælp af OpenSBI. Nye opgaver til test af billeder og virtuelle maskiner powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm) er blevet tilføjet.
    • Der arbejdes på at flytte testnettet Kyua fra ports (devel/kyua) til den grundlæggende systemstruktur for at løse problemerne (pakker installeres meget langsomt), der opstår ved brug af Kyua på nye arkitekturer, der udvikles med brug af emulatorer eller FPGA. Integration i det grundlæggende system vil væsentligt forenkle testningen af indlejrede platforme og integrationen med systemer til kontinuerlig integration.
    • Projektet til optimering af ydeevnen af netværksbrodrivere er startet. if_bridge, som bruger én mutex til at låse interne data, hvilket ikke muliggør den ønskede ydeevne på systemer med et stort antal jail-miljøer eller virtuelle maskiner, der er sammenkoblet i et netværk. På dette tidspunkt er der tilføjet tests til koden for at forhindre regressioner under moderniseringen af arbejdet med låse. Muligheden for at anvende ConcurrencyKit til parallelisering af datatransporthåndterere (bridge_input(), bridge_output(), bridge_forward(), …) overvejes.
    • Der er tilføjet et nyt systemopkald sigfastblock, som gør det muligt for en tråd at bestemme et hukommelseskort til hurtige signalbehandlere med det formål at forbedre ydeevnen af undtagelsesbehandlere.
    • Kernen har fået tilføjet støtte til atomiske instruktioner LSE (Large System Extension), som understøttes af ARMv8.1-systemer. Disse instruktioner er nødvendige for at forbedre ydeevnen på Cavium ThunderX2 og AWS Graviton 2-platforme. De tilføjede ændringer bestemmer tilstedeværelsen af LSE-støtte og aktiverer dynamisk implementeringen af atomisk på baggrund heraf. Ved testning har brugen af LSE gjort det muligt at reducere den CPU-tid, der bruges til at samle kernen, med 15%.
    • Ydeevnen er blevet optimeret, og funktionaliteten i værktøjerne til ELF-format er blevet udvidet.
      Støtte til caching af debug-information DWARF er blevet tilføjet, problemer i værktøjerne elfcopy/objcopy er løst, og behandling af DW_AT_ranges er blevet tilføjet.
      I readelf er der implementeret muligheden for at dekode flagene PROTMAX_DISABLE, STKGAP_DISABLE og WXNEEDED, samt Xen og GNU Build-ID.
  • Sikkerhed
    • For at forbedre FreeBSD's funktion i Azure-cloudmiljøer er der arbejdet på at sikre støtte til HyperV Socket-mekanismen, der gør det muligt at bruge socket-interface til interaktion mellem gæstesystemet og værtmiljøet uden netværkskonfiguration.
    • Der arbejdes på at sikre, at FreeBSD kan bygge gentagne bygninger, som gør det muligt at verificere, at de eksekverbare filer af systemkomponenter er bygget præcist fra de angivne kildetekster og ikke indeholder uautoriserede ændringer.
    • I værktøjet elfctl er muligheden for at styre aktiveringen af ekstra beskyttelsesmekanismer (ASLR, PROT_MAX, stack gap, W+X mapping) på niveau af individuelle processer tilføjet.
  • Lagringssystemer og filsystemer
    • Der arbejdes på at implementere muligheden for at køre NFS over en krypteret kommunikationskanal baseret på TLS 1.3, i stedet for at bruge Kerberos (mode sec=krb5p), som kun begrænser kryptering til RPC-beskeder og kun implementeres softwaremæssigt. Den nye implementering bruger den TLS-stak, der leveres af kernen, hvilket muliggør udnyttelse af hardwareaccelerationsmidler. Koden til NFS over TLS er næsten klar til test, men kræver stadig arbejde med support til signerede klientcertifikater og tilpasning af kernen TLS-stak til at sende NFS-data (patcher til modtagelse er allerede klar).
  • Hardwareunderstøttelse
    • Der arbejdes på at tilføje støtte til kinesiske x86 CPU Hygon baseret på AMD-teknologier;
    • Inden for CheriBSD, en fork af FreeBSD til forskningsprocessorkerner CHERI (Capability Hardware Enhanced RISC Instructions), implementeringen af support til ARM Morello-processoren fortsætter, som vil understøtte en hukommelsessikring med CHERI, baseret på Capsicum-projektets beskyttelsesmodel. Morello-chippen planlægger udgives i 2021. Arbejdet er i øjeblikket fokuseret på at tilføje support til Arm Neoverse N1-platformen, som ligger til grund for Morello. En initial port af CheriBSD til RISC-V-arkitekturen er blevet præsenteret. Udviklingen af CheriBSD til CHERI-referencen prototypen baseret på MIPS64-arkitektur fortsætter.
    • Porteringen af FreeBSD til 64-bit SoC NXP LS1046A baseret på ARMv8 Cortex-A72-processoren med integreret netværkspakkeaccelerator, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 og USB 3.0 er blevet videreført. Drivere til QorIQ og LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI forberedes i øjeblikket til at blive indsendt til hovedprojekte FreeBSD.
    • Frem til version 2.1.1 er ena-driveren blevet opdateret med støtte til anden generations ENAv2 (Elastic Network Adapter) netværksadaptere, der anvendes i Elastic Compute Cloud (EC2) infrastrukturen for at muliggøre kommunikation mellem EC2-noder med hastigheder op til 25 Gb/s. En opdatering til ENA 2.2.0 forberedes.
    • Forbedringerne af FreeBSD-porten til powerpc64-platformen fortsætter. Der lægges særlig vægt på at sikre en optimal funktion på systemer med IBM POWER8 og POWER9-processorer. I rapporteringsperioden er FreeBSD-CURRENT blevet overført til at bruge LLVM/Clang 10.0 som kompilator og lld som linker i stedet for GCC. ELFv2 ABI er som standard aktiveret for powerpc64-systemer, og support til ELFv1 ABI er blevet stoppet. På FreeBSD-STABLE forbliver gcc 4.2.1 indtil videre. Problemer med virtio-, aacraid- og ixl-drivere er løst. På powerpc64-systemer er det nu muligt at køre QEMU uden støtte for Huge Pages.
    • Arbejdet med at implementere støtte til RISC-V-arkitekturen er blevet fortsat. I sin nuværende form kan FreeBSD allerede starte succesfuldt på SiFive Hifive Unleashed-kortet, for hvilket drivere er forberedt
      UART, SPI og PRCI, understøtter OpenSBI-firmware og SBI 0.2. I rapporteringsperioden har arbejdet været fokuseret på at migrere fra GCC til clang og lld.
  • Applikationer og portsystem
    • FreeBSD port-samlingen har oversteget 39.000 porte, antallet af åbne PR'er er lidt over 2.400, hvoraf 640 PR'er endnu ikke er behandlet. I rapporteringsperioden er der indgivet 8.146 ændringer fra 173 udviklere. Fire nye deltagere (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore) har opnået commit-rettigheder. Flaget USES=qca er blevet tilføjet, og flaget USES=zope er blevet fjernet (på grund af inkompatibilitet med Python 3). Der arbejdes på at fjerne Python 2.7 fra porttræet – alle porte afhængige af Python 2 skal porteres til Python 3, ellers fjernes de. Paketmanageren pkg er opdateret til version 1.13.2.
    • Grafikstackens komponenter og porte relateret til xorg er blevet opdateret.
      X.org-serveren er opdateret til version 1.20.8 (tidligere leveret med gren 1.18), hvilket gør at FreeBSD som standard bruger udev/evdev backend til håndtering af input-enheder. Mesa-pakken er som standard blevet overført til at bruge DRI3-udvidelsen i stedet for DRI2. Der arbejdes på at holde grafikdrivere, inputenhedsstacken og komponenter fra drm-kmod (port der giver drift af DRM-modulerne amdgpu, i915 og radeon ved hjælp af linuxkpi-rammeværket for kompatibilitet med Direct Rendering Manager i Linux-kernen) opdateret.
    • KDE Plasma, KDE Frameworks, KDE Applications og Qt holdes opdaterede og er blevet opdateret til de nyeste versioner. Der er tilføjet en ny applikation til portene: kstars (stjernekort).
    • Der er arbejdet på at afhjælpe regressionsfejl i vindueschef xfwm4, som dukkede op efter opdateringen af Xfce til version 4.14 (for eksempel opstod der artefakter ved dekoration af vinduer).
    • Porten til Wine er opdateret til version Wine 5.0 (tidligere var version 4.0.3 tilgængelig).
    • Fra version 1.14 er der tilføjet officiel support for ARM64-arkitekturen til Go-kompileringsværktøjet for FreeBSD 12.0.
    • OpenSSH i det grundlæggende system er opdateret til version 7.9p1.
    • Biblioteket sysctlmibinfo2 er blevet implementeret og placeret i portene (devel/libsysctlmibinfo2), hvilket giver en API til adgang til sysctl MIB og udfører oversættelse af sysctl-navne til objektidentifikatorer (OID).
    • Der er blevet udformet en opdatering af distributionen. NomadBSD 1.3.1., der er en variant af FreeBSD, tilpasset til brug som en bærbar arbejdsstation, der kan starte fra et USB-drev. Det grafiske miljø er baseret på vinduesmanageren Openbox. For montering af drev anvendes DSBMD (understøtter montering af CD9660, FAT, HFS+, NTFS, Ext2/3/4), til opsætning af trådløst netværk — wifimgr, og til lydstyring — DSBMixer.
    • Der er begyndt arbejde på udarbejdelsen af fuld dokumentation til jail-miljømanageren. pot. Pot 0.11.0 er klar til udgivelse, med værktøjer til håndtering af netværksstakken.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster