FreeBSD-ontwikkelingsrapport Q2020 XNUMX

gepubliceerd rapporteer over de ontwikkeling van het FreeBSD-project van januari tot maart 2020. Veranderingen zijn onder meer:

  • Algemene en systeemvragen
    • De GCC-compilersuite verwijderd uit de FreeBSD-CURRENT broncodeboom, evenals de ongebruikte hulpprogramma's gperf, gcov en gtc (devicetree-compiler). Alle platforms die Clang niet ondersteunen, zijn overgeschakeld op het gebruik van externe bouwtools die vanaf ports zijn geïnstalleerd. Het basissysteem leverde een verouderde 4.2.1-uitgave van GCC, en integratie van nieuwere versies was niet mogelijk vanwege de overstap van 4.2.2 naar de GPLv3-licentie, wat onaanvaardbaar werd geacht voor de kerncomponenten van FreeBSD. Huidige releases van GCC, inclusief GCC 9, kunnen nog steeds worden geïnstalleerd vanuit pakketten en ports.
    • Ondersteuning voor de sendfile-systeemaanroep, TCP_CORK-modus (vereist voor nginx), MAP_32BIT-vlag (lost het probleem op met het uitvoeren van pakketten met Mono vanuit Ubuntu Bionic) is toegevoegd aan de emulatie-infrastructuur van de Linux-omgeving (Linuxulator). Problemen opgelost met DNS-resolutie bij gebruik van glibc nieuwer dan 2.30 (bijvoorbeeld vanaf CentOS 8).
      Het Continuous Integration Framework biedt lopende taken voor het uitvoeren van een LTP (Linux Testing Project) onder de Linuxulator om verbeteringen aan de code ter ondersteuning van Linux te testen. Ongeveer 400 tests mislukken en moeten worden opgelost (sommige bugs zijn te wijten aan valse positieven, sommige vereisen triviale oplossingen, maar er zijn andere waarvoor nieuwe systeemoproepondersteuning nodig is). Er is gewerkt aan het opschonen van de Linuxulator-code en het vereenvoudigen van foutopsporing. Voorbereide, maar nog niet beoordeelde, patches met ondersteuning voor uitgebreide attributen en de fexecve-systeemaanroep.

    • De bijeenkomsten van de werkgroep die is opgericht om de migratie van broncodes van het gecentraliseerde broncodebeheersysteem Subversion naar het gedecentraliseerde Git-systeem uit te voeren, gaan door. Een rapport met voorstellen voor migratie is in voorbereiding.
    • В rtld (runtime linker) verbeterde directe uitvoeringsmodus ("/libexec/ld-elf.so.1 {pad} {argumenten}").
    • Een project om de FreeBSD-kernel fuzz te testen met behulp van het syzkaller-systeem blijft zich ontwikkelen. Tijdens de rapportageperiode zijn problemen opgelost in de netwerkstack en code voor het werken met bestandsdescriptortabellen, geïdentificeerd met behulp van syzkaller. Als gevolg van de foutdiagnostiek zijn er wijzigingen toegevoegd aan de SCTP-stack om het debuggen eenvoudiger te maken. Regels toegevoegd aan de stress2-set om mogelijke regressies te detecteren. Ondersteuning toegevoegd voor het testen van nieuwe systeemaanroepen, inclusief copy_file_range(), __realpathat() en oproepen naar het Capsicum-subsysteem. Er wordt verder gewerkt aan het bedekken van de Linux-emulatielaag met fuzzing-tests. Analyseerde en elimineerde de fouten die werden opgemerkt in de laatste Coverity Scan-rapporten.
    • In het continue integratiesysteem is er een overstap gemaakt naar het uitvoeren van alle tests van de hoofdtak alleen met behulp van clang/lld. Bij het testen voor RISC-V wordt de vorming van een volledige schijfkopie geboden voor het uitvoeren van tests in QEMU met behulp van OpenSBI. Nieuwe taken toegevoegd voor het testen van powerpc64 images en virtuele machines (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Er wordt gewerkt aan het porten van de Kyua-testsuite van de poorten (devel/kyua) naar het basissysteem om problemen aan te pakken (pakketten zijn erg traag) die optreden bij het gebruik van Kyua op nieuwe architecturen die worden ontwikkeld met behulp van een emulator of FPGA. Integratie in het basissysteem zal het testen van ingebedde platforms en de koppeling met continue integratiesystemen aanzienlijk vereenvoudigen.
    • Een project gestart om de prestaties van de netwerkbrugdriver te optimaliseren als_brug, die één mutex gebruikt om interne gegevens te blokkeren, waardoor de gewenste prestaties niet kunnen worden bereikt op systemen met een groot aantal gevangenisomgevingen of virtuele machines die op hetzelfde netwerk zijn aangesloten. In dit stadium zijn er tests aan de code toegevoegd om regressies in het moderniseringsproces van het werken met sloten te voorkomen. De mogelijkheid om ConcurrencyKit te gebruiken om handlers voor gegevensoverdracht te parallelliseren (bridge_input(), bridge_output(), bridge_forward(), ...) wordt overwogen.
    • Er is een nieuwe sigfastblock-systeemaanroep toegevoegd waarmee een thread een geheugenblok kan specificeren voor een snelle signaalhandler om de prestaties van uitzonderingshandlers te verbeteren.
    • De kernel voegt ondersteuning toe voor atomaire instructies van LSE (Large System Extension) die worden ondersteund door ARMv8.1-systemen. Deze instructies zijn nodig om de prestaties te verbeteren bij gebruik op Cavium ThunderX2- en AWS Graviton 2-kaarten. De toegevoegde wijzigingen detecteren de aanwezigheid van LSE-ondersteuning en maken op dynamische wijze de atomaire implementatie op basis daarvan mogelijk. Tijdens het testen maakte het gebruik van LSE het mogelijk om de CPU-tijd die werd besteed aan het assembleren van de kernel met 15% te verminderen.
    • De prestaties zijn geoptimaliseerd en de functionaliteit van de toolkit voor uitvoerbare bestanden in het ELF-formaat is uitgebreid.
      Ondersteuning toegevoegd voor het cachen van DWARF-foutopsporingsinformatie, problemen opgelost in elfcopy/objcopy-hulpprogramma's, DW_AT_ranges-verwerking toegevoegd,
      readelf implementeert de mogelijkheid om de vlaggen PROTMAX_DISABLE, STKGAP_DISABLE en WXNEEDED te decoderen, evenals Xen en GNU Build-ID.

  • veiligheid
    • Om de prestaties van FreeBSD in Azure-cloudomgevingen te verbeteren, wordt er gewerkt aan ondersteuning voor het HyperV Socket-mechanisme, waarmee de socketinterface kan worden gebruikt om te communiceren met het gastsysteem en de hostomgeving zonder een netwerk op te zetten.
    • Er wordt gewerkt aan herhaalbare builds van FreeBSD om ervoor te zorgen dat de uitvoerbare bestanden van de systeemcomponenten exact uit de aangegeven bronnen zijn opgebouwd en geen externe wijzigingen bevatten.
    • De mogelijkheid om de opname van aanvullende beveiligingsmechanismen (ASLR, PROT_MAX, stack gap, W + X mapping) op het niveau van individuele processen te controleren is toegevoegd aan het elfctl-hulpprogramma
  • Opslag- en bestandssystemen
    • Er wordt gewerkt aan de implementatie van de mogelijkheid om NFS te laten werken via een gecodeerd communicatiekanaal op basis van TLS 1.3, in plaats van het gebruik van Kerberos (sec=krb5p-modus), die beperkt is tot het coderen van alleen RPC-berichten en alleen in software is geïmplementeerd. De nieuwe implementatie maakt gebruik van de door de kernel geleverde TLS-stack om hardwareversnelling mogelijk te maken. De NFS over TLS-code is bijna klaar om te testen, maar vereist nog werk om ondertekende clientcertificaten te ondersteunen en de kernel-TLS-stack aan te passen om NFS-gegevens te verzenden (patches voor ontvangst zijn al klaar).
  • Hardware-ondersteuning
    • Er wordt gewerkt aan ondersteuning voor de Chinese x86 CPU Hygon op basis van AMD-technologieën;
    • Binnen CheriBSD, een afsplitsing van FreeBSD voor onderzoeksprocessorarchitectuur CHERI (Capability Hardware Enhanced RISC Instructions), gaat de implementatie van ondersteuning voor de ARM Morello-processor door, die het CHERI-geheugentoegangscontrolesysteem zal ondersteunen op basis van het Capsicum-beveiligingsmodel. Morello-chip zijn aan het plannen uitgave in 2021. Het werk is momenteel gericht op het toevoegen van ondersteuning voor het Arm Neoverse N1-platform dat ten grondslag ligt aan Morello. Een eerste port van CheriBSD voor de RISC-V-architectuur is geïntroduceerd. De ontwikkeling van CheriBSD voor het CHERI-referentieprototype gebaseerd op de MIPS64-architectuur gaat door.
    • Het porten van FreeBSD naar NXP LS64A 1046-bit SoC gebaseerd op ARMv8 Cortex-A72-processor met geïntegreerde versnellingsengine voor netwerkpakketverwerking, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 en USB 3.0 wordt voortgezet. QorIQ en LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI stuurprogramma's worden momenteel voorbereid voor overdracht aan het hoofdteam van FreeBSD.
    • Het ena-stuurprogramma is bijgewerkt naar versie 2.1.1 ter ondersteuning van de tweede generatie ENAv2-netwerkadapters (Elastic Network Adapter) die worden gebruikt in de Elastic Compute Cloud (EC2)-infrastructuur om de communicatie tussen EC2-knooppunten te organiseren met snelheden tot 25 Gb/s. Een upgrade naar ENA 2.2.0 is in voorbereiding.
    • De FreeBSD-poort voor het powerpc64-platform wordt voortdurend verbeterd. De nadruk ligt op het garanderen van kwaliteitsprestaties op systemen met IBM POWER8- en POWER9-processors. Tijdens de rapportageperiode werd FreeBSD-CURRENT overgeschakeld naar het gebruik van de LLVM/Clang 10.0-compiler en de lld-linker in plaats van GCC. De ELFv64 ABI is standaard ingeschakeld voor powerpc2-systemen en de ELFv1 ABI is verouderd. FreeBSD-STABLE heeft nog steeds gcc 4.2.1. Problemen met virtio-, aacraid- en ixl-stuurprogramma's opgelost. Op powerpc64-systemen is het mogelijk om QEMU uit te voeren zonder ondersteuning voor Huge Pages.
    • Er werd verder gewerkt aan de implementatie van ondersteuning voor de RISC-V-architectuur. In zijn huidige vorm is FreeBSD al succesvol aan het opstarten op het SiFive Hifive Unleashed-bord, waarvoor stuurprogramma's zijn voorbereid
      UART, SPI en PRCI, ondersteunt OpenSBI- en SBI 0.2-firmware. Gedurende de verslagperiode waren de werkzaamheden gericht op de migratie van GCC naar clang en lld.

  • Applicaties en poortsysteem
    • De FreeBSD Portscollectie heeft de mijlpaal van 39 ports overschreden, het aantal open PR's is iets meer dan 2400, waarvan er nog 640 PR's uitstaan. Tijdens de rapportageperiode zijn er 8146 wijzigingen aangebracht door 173 ontwikkelaars. Vier nieuwe leden (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore) kregen committerrechten. Vlag USES=qca toegevoegd en vlag USES=zope verwijderd (vanwege incompatibiliteit met Python 3). Er wordt gewerkt aan het verwijderen van Python 2.7 uit de ports-boom - alle poorten die aan Python 2 zijn gekoppeld, moeten worden geport naar Python 3, anders worden ze verwijderd. De pkg-pakketbeheerder is bijgewerkt naar release 1.13.2.
    • Bijgewerkte grafische stapelcomponenten en poorten gerelateerd aan xorg.
      De X.org-server is bijgewerkt naar versie 1.20.8 (voorheen werd een 1.18-branch geleverd), waardoor FreeBSD standaard de udev/evdev-backend kan gebruiken voor het verwerken van invoerapparaten. Het Mesa-pakket is standaard vertaald om de DRI3-extensie te gebruiken in plaats van DRI2. Er wordt gewerkt om de grafische stuurprogramma's, de stapel invoerapparaten en drm-kmod-componenten up-to-date te houden (een poort die amdgpu-, i915- en radeon DRM-modules biedt, waarbij het linuxkpi-framework wordt gebruikt voor compatibiliteit met de Direct Rendering Manager van de Linux-kernel ).

    • Het KDE Plasma-bureaublad, KDE Frameworks, KDE Applications en Qt worden up-to-date gehouden en bijgewerkt naar de nieuwste releases. Een nieuwe applicatie kstars (sterrenatlas) is aan de ports toegevoegd.
    • Er is gewerkt aan het elimineren van regressieve veranderingen in de xfwm4-vensterbeheerder die naar voren kwamen na het updaten van Xfce naar versie 4.14 (er verschenen bijvoorbeeld artefacten bij het decoreren van vensters).
    • De port met Wine is bijgewerkt naar de release van Wine 5.0 (voorheen werd 4.0.3 aangeboden).
    • Vanaf versie 1.14 voegde de Go-compiler officiële ondersteuning toe voor de ARM64-architectuur voor FreeBSD 12.0.
    • OpenSSH op het basissysteem is bijgewerkt naar release 7.9p1.
    • Geïmplementeerd en in ports geplaatst (devel/libsysctlmibinfo2) is de sysctlmibinfo2-bibliotheek, die een API biedt voor toegang tot de sysctl MIB en het vertalen van sysctl-namen naar object-ID's (OID's).
    • Distributie-update gegenereerd NomadBSD 1.3.1, een FreeBSD-editie die is aangepast voor gebruik als draagbare desktop die kan worden opgestart vanaf een USB-station. De grafische omgeving is gebaseerd op een windowmanager Open doos. Wordt gebruikt om schijven te monteren DSBMD (montage CD9660, FAT, HFS+, NTFS, Ext2/3/4 wordt ondersteund), om een ​​draadloos netwerk op te zetten — wifimgren om het volume te regelen - DSBMixer.
    • Gestart werken over het schrijven van volwaardige documentatie voor de gevangenisomgevingsmanager kan. Pot 0.11.0 wordt voorbereid voor release, waarin tools voor netwerkstackbeheer zullen worden geïntroduceerd.

Bron: opennet.ru

Voeg een reactie