Rapport over de ontwikkelingen van FreeBSD voor het eerste kwartaal van 2020

Gepubliceerd Project FreeBSD development report from January to March 2020. Notable changes include:

  • Algemene en systeemkwesties
    • The set of GCC compilers has been removed from the FreeBSD-CURRENT source tree, as well as the unused utilities gperf, gcov, and gtc (the devicetree compiler). All platforms that do not support Clang have switched to using external build toolchains installed from ports. The base system shipped an outdated release of GCC 4.2.1, and integration of newer versions was not possible due to the transition of 4.2.2 to the GPLv3 license, which was deemed unacceptable for FreeBSD's base components. Current releases of GCC, including GCC 9, can still be installed from packages and ports as before.
    • Support for the system call sendfile, TCP_CORK mode (required for nginx), and the MAP_32BIT flag (which resolves issues with running Mono packages from Ubuntu Bionic) has been added to the Linux environment emulation infrastructure (Linuxulator). DNS resolution issues with glibc newer than 2.30 (such as from CentOS 8) have been resolved.
      In the continuous integration infrastructure, jobs have been set up to run LTP (Linux Testing Project) under Linuxulator to test improvements made in the code for Linux support. About 400 tests fail and require fixes (some errors are caused by false positives, some need trivial fixes, but there are others that require adding support for new system calls). Work has been done to clean up the Linuxulator code and simplify debugging. Patches supporting extended attributes and the fexecve system call have been prepared but not yet reviewed.
    • Meetings continue for the working group created to carry out the migration of source texts from the centralized version control system Subversion to the decentralized system Git. A report with migration proposals is in the process of being prepared.
    • In rtld (runtime linker) improved the direct execution mode ("/libexec/ld-elf.so.1 {path} {arguments}").
    • Het project voor fuzzing-testen van de FreeBSD-kernel met behulp van het syzkaller-systeem blijft zich ontwikkelen. In de verslagperiode zijn problemen in de netstack en de code voor het werken met tabellen van bestandsdescriptoren opgelost, geïdentificeerd met syzkaller. Na de diagnose van fouten zijn er wijzigingen in de SCTP-stack aangebracht om het debuggen te vergemakkelijken. Nieuwe regels zijn toegevoegd aan de stress2-set om mogelijke regressies te identificeren. Ondersteuning voor fuzzing-testen van nieuwe systeemaanroepen, waaronder copy_file_range(), __realpathat() en aanroepen van de Capsicum-subsystemen, is toegevoegd. Het werk aan de dekking van fuzzing-testen voor de Linux-emulatie laag is aan de gang. Er is een analyse en oplossing van fouten uitgevoerd, gemeld in recente Coverity Scan-rapporten.
    • In het continu-integratiesysteem is de overgang naar het uitvoeren van alle tests op de head-tak alleen met clang/lld voltooid. Bij het testen voor RISC-V is gezorgd voor de creatie van een volledige schijfafbeelding om tests uit te voeren in QEMU met behulp van OpenSBI. Nieuwe taken voor testen van afbeeldingen en virtuele machines powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm) zijn toegevoegd.
    • Er wordt gewerkt aan de migratie van de Kyua-testset uit de ports (devel/kyua) naar het basissysteem om problemen op te lossen (pakketten worden erg langzaam geïnstalleerd) die zich voordoen bij het gebruik van Kyua op nieuwe architecturen waarvoor ontwikkeling plaatsvindt met behulp van een emulator of FPGA. De integratie in het basissysteem zal het testen van ingebedde platforms aanzienlijk vereenvoudigen en de aansluiting op continue integratiesystemen vergemakkelijken.
    • Het project voor de optimalisatie van de prestaties van de netwerkbruggen-driver is gestart. if_bridge, die één mutex gebruikt om interne gegevens te vergrendelen, wat geen gewenste prestaties mogelijk maakt op systemen met een groot aantal jail-omgevingen of virtuele machines die in één netwerk zijn samengevoegd. In deze fase zijn er tests aan de code toegevoegd om regressies tijdens de modernisering van het vergrendelingswerk te voorkomen. De mogelijkheid om ConcurrencyKit te gebruiken voor het paralleliseren van gegevensoverdrachtbehandelaars (bridge_input(), bridge_output(), bridge_forward(), …) wordt overwogen.
    • Een nieuwe systeemaanroep sigfastblock is toegevoegd, waarmee een thread een geheugenblok kan definiëren voor een snelle signaalhandler om de prestaties van uitzondering handlers te verhogen.
    • Ondersteuning voor atomische instructies LSE (Large System Extension), ondersteund door ARMv8.1-systemen, is aan de kernel toegevoegd. Deze instructies zijn noodzakelijk voor het verbeteren van de prestaties op Cavium ThunderX2 en AWS Graviton 2 borden. De toegevoegde wijzigingen bepalen de aanwezigheid van LSE-ondersteuning en schakel dynamisch de implementatie van atomic in op basis daarvan in. Tijdens tests heeft het gebruik van LSE geleid tot een vermindering van 15% van de CPU-tijd die nodig is voor het compileren van de kernel.
    • De prestaties zijn geoptimaliseerd en de functionaliteit van de tools voor uitvoerbare bestanden in ELF-indeling is uitgebreid.
      Ondersteuning voor het cachen van DWARF-debuginformatie is toegevoegd, problemen met de elfcopy/objcopy-hulpprogramma's zijn opgelost, en de verwerking van DW_AT_ranges is toegevoegd.
      In readelf is de mogelijkheid toegevoegd om PROTMAX_DISABLE-, STKGAP_DISABLE- en WXNEEDED-vlags te decoderen, evenals Xen en GNU Build-ID.
  • Beveiliging
    • Om de prestaties van FreeBSD in cloudomgevingen zoals Azure te verbeteren, wordt gewerkt aan de ondersteuning van het HyperV Socket-mechanisme, waarmee de gastomgeving kan communiceren met de hostomgeving zonder netwerkconfiguratie.
    • Er wordt gewerkt aan het waarborgen van reproduceerbare builds van FreeBSD, waarmee kan worden bevestigd dat de uitvoerbare bestanden van systeemcomponenten exact zijn samengesteld uit de aangegeven bronbestanden en geen ongewenste wijzigingen bevatten.
    • In het elfctl-hulpprogramma is de mogelijkheid toegevoegd om extra beveiligingsmechanismen (ASLR, PROT_MAX, stack gap, W+X mapping) op het niveau van afzonderlijke processen te beheren.
  • Opslag- en bestandssystemen
    • Er wordt gewerkt aan de implementatie van NFS over een versleuteld communicatiekanaal op basis van TLS 1.3, in plaats van het gebruik van Kerberos (modus sec=krb5p), dat alleen de versleuteling van RPC-berichten beheert en volledig softwarematig wordt geïmplementeerd. De nieuwe implementatie maakt gebruik van de door de kernel geleverde TLS-stack, die hardwareversnelling mogelijk maakt. De NFS-code over TLS is al bijna klaar voor testen, maar er is nog werk te verzetten om ondersteuning voor ondertekende clientcertificaten toe te voegen en de TLS-stack van de kernel aan te passen voor het verzenden van NFS-gegevens (patches voor ontvangst zijn al gereed).
  • Ondersteuning voor hardware
    • Er wordt gewerkt aan de toevoeging van ondersteuning voor Chinese x86 CPU Hygon op basis van AMD-technologieën.
    • In het kader van CheriBSD, een afsplitsing van FreeBSD voor onderzoeksprocessorarchitectuur. CHERI (Capability Hardware Enhanced RISC Instructions), de implementatie van ondersteuning voor de ARM Morello-processor gaat door, die het CHERI-geheugenbeheersysteem ondersteunt, gebaseerd op het Capsicum-projectbeschermingsmodel. De Morello-chip wordt gepland om wordt in 2021 uitgebracht. Momenteel ligt de focus op het toevoegen van ondersteuning voor het Arm Neoverse N1-platform, dat de basis vormt voor Morello. Een initiële port van CheriBSD is gepresenteerd voor de RISC-V-architectuur. De ontwikkeling van CheriBSD voor het referentieprototype van CHERI op basis van de MIPS64-architectuur gaat door.
    • Het porteren van FreeBSD voor de 64-bits SoC NXP LS1046A op basis van de ARMv8 Cortex-A72-processor met een geïntegreerde engine voor versnelde verwerking van netwerkpakketten, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 en USB 3.0 is voortgezet. Momenteel worden drivers voor QorIQ en LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC en QorIQ LS10xx SDHCI voorbereid voor integratie in de hoofdversie van FreeBSD.
    • Tot versie 2.1.1 is de ena-driver bijgewerkt met ondersteuning voor de tweede generatie ENAv2 (Elastic Network Adapter) netwerkadapters, die worden gebruikt in de Elastic Compute Cloud (EC2)-infrastructuur voor communicatie tussen EC2-knooppunten met snelheden tot 25 Gb/s. Een update naar ENA 2.2.0 staat in de pijplijn.
    • De verbetering van de FreeBSD-port voor het powerpc64-platform gaat door. De nadruk ligt op het garanderen van een goede werking op systemen met IBM POWER8 en POWER9-processoren. Gedurende de rapportageperiode is FreeBSD-CURRENT overgeschakeld naar het gebruik van de LLVM/Clang 10.0-compiler en lld-linker in plaats van GCC. Standaard wordt de ELFv2 ABI gebruikt voor powerpc64-systemen, terwijl de ondersteuning voor ELFv1 ABI is stopgezet. In FreeBSD-STABLE blijft gcc 4.2.1 voorlopig beschikbaar. Problemen met virtio-, aacraid- en ixl-drivers zijn opgelost. Op powerpc64-systemen is het mogelijk om QEMU zonder ondersteuning voor Huge Pages uit te voeren.
    • De voortgang van de implementatie van ondersteuning voor de RISC-V-architectuur wordt voortgezet. Op dit moment kan FreeBSD al succesvol worden opgestart op het SiFive Hifive Unleashed-bord, waarvoor drivers zijn voorbereid
      voor UART, SPI en PRCI, met ondersteuning voor OpenSBI-firmware en SBI 0.2. Gedurende de rapportageperiode was de focus gericht op de migratie van GCC naar clang en lld.
  • Toepassingen en het poortsysteem
    • De collectie van FreeBSD-poorten heeft de grens van 39.000 poorten overschreden, het aantal openstaande PR's ligt iets boven de 2400, waarvan 640 PR's nog niet zijn behandeld. In de verslagperiode zijn er 8146 wijzigingen aangebracht door 173 ontwikkelaars. Vier nieuwe leden (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore) hebben commit-rechten gekregen. De flag USES=qca is toegevoegd en de flag USES=zope is verwijderd (vanwege incompatibiliteit met Python 3). Er wordt gewerkt aan het verwijderen van Python 2.7 uit de poortenboom - alle poorten die afhankelijk zijn van Python 2 moeten worden gemigreerd naar Python 3 of worden verwijderd. De pakketbeheerder pkg is bijgewerkt naar versie 1.13.2.
    • De componenten van de grafische stack en de poorten die verband houden met xorg zijn bijgewerkt.
      De X.org-server is bijgewerkt naar versie 1.20.8 (voorheen werd versie 1.18 geleverd), wat FreeBSD standaard in staat stelt om de udev/evdev-backend te gebruiken voor inputapparaten. Het pakket Mesa is standaard overgeschakeld naar het gebruik van de DRI3-extensie in plaats van DRI2. Er wordt gewerkt aan het up-to-date houden van grafische stuurprogramma's, de input-stacks en de drm-kmod-componenten (een poort die de werking van de DRM-modules amdgpu, i915 en radeon ondersteunt, met behulp van het linuxkpi-kader voor compatibiliteit met de Direct Rendering Manager van de Linux-kernel).
    • De desktop KDE Plasma, KDE Frameworks, KDE Applications en Qt worden up-to-date gehouden en zijn bijgewerkt naar de nieuwste versies. Er is een nieuwe applicatie kstars (sterrenatlas) aan de poorten toegevoegd.
    • Er is gewerkt aan het oplossen van regressieve wijzigingen in de windowmanager xfwm4, die zijn opgedoken na de update van Xfce naar versie 4.14 (bijvoorbeeld, er verschenen artefacten bij het decoreren van vensters).
    • De poort met Wine is bijgewerkt naar Wine 5.0 (voorheen werd 4.0.3 aangeboden).
    • Met versie 1.14 is in de Go-taalcompiler officiële ondersteuning voor de ARM64-architectuur aan FreeBSD 12.0 toegevoegd.
    • OpenSSH in het basissysteem is bijgewerkt naar versie 7.9p1.
    • De bibliotheek sysctlmibinfo2 is geïmplementeerd en beschikbaar in de poorten (devel/libsysctlmibinfo2), die API-toegang biedt tot de sysctl MIB en sysctl-namen omzet naar objectidentificatoren (OID).
    • Een update van de distributie is gevormd NomadBSD 1.3.1, dat een editie van FreeBSD vertegenwoordigt, aangepast voor gebruik als een draagbaar desktop, op te starten vanaf een USB-stick. De grafische omgeving is gebaseerd op de window manager Openbox. Voor het mounten van opslagmedia wordt gebruikgemaakt van DSBMD (ondersteunt het mounten van CD9660, FAT, HFS+, NTFS, Ext2/3/4), voor de configuratie van draadloze netwerken — wifimgr, en voor het beheren van het volume — DSBMixer.
    • Is gestart werk bij het schrijven van uitgebreide documentatie voor de jail-omgevingbeheerder pot. Er wordt gewerkt aan de release van pot 0.11.0, waarin beheertools voor de netwerkstack zullen verschijnen.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster