FreeBSD 13.0-uitgave

Twee en een half jaar na de vorming van de 12.x branch werd de release van FreeBSD 13.0 gepresenteerd, die is voorbereid voor de amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 en riscv64 architecturen. Daarnaast zijn er afbeeldingen gegenereerd voor virtualisatiesystemen (QCOW2, VHD, VMDK, raw) en cloudomgevingen Amazon EC2, Google Compute Engine en Vagrant.

Belangrijkste innovaties:

  • De overgang naar een uniforme Linux-implementatie van het ZFS-bestandssysteem van het OpenZFS-project is gemaakt. Onder de functies die beschikbaar kwamen in FreeBSD na de overgang naar OpenZFS: een uitgebreid quotasysteem, encryptie van datasets, afzonderlijke selectie van bloktoewijzingsklassen (allocatieklassen), het gebruik van vectorprocessorinstructies om de implementatie van RAIDZ en checksum te versnellen berekeningen, ondersteuning voor het ZSTD-compressie-algoritme, modus multihost (MMP, Multi Modifier Protection), verbeterde opdrachtregelinstrumentatie, lost veel bugs op die verband houden met raceomstandigheden en blokkering.
  • De poort voor de ARM64-architectuur (AArch64) is verplaatst naar het eerste ondersteuningsniveau (Tier 1), dat wordt ondersteund door teams die verantwoordelijk zijn voor het elimineren van kwetsbaarheden, het voorbereiden van releases en het onderhouden van poorten. Het eerste ondersteuningsniveau omvat het maken van installatieassemblages, binaire updates en kant-en-klare pakketten, evenals het bieden van garanties voor het oplossen van specifieke problemen en het handhaven van de ongewijzigde ABI voor de gebruikersomgeving en kernel (met uitzondering van enkele subsystemen).
  • De i386-architectuur is overgebracht naar het tweede niveau van platformondersteuning (Tier 2), waarop de vorming van installatieassemblages, binaire updates en kant-en-klare pakketten zal doorgaan, maar geen oplossing voor specifieke problemen garandeert. Het standaard CPU-type (CPUTYPE) voor de i386-architectuur is gewijzigd van 486 in 686 (indien gewenst kunnen samenstellingen voor i486 en i586 onafhankelijk worden gemaakt).
  • Componenten clang, lld, lldb, compiler-rt, llvm, libunwind en libc++ zijn bijgewerkt naar versie 11.
  • De ontwikkeling is overgebracht van het gecentraliseerde broncontrolesysteem Subversion naar het decentrale systeem Git.
  • Het basissysteem is ontdaan van applicaties die onder de GPL-licentie zijn gedistribueerd. Binutils 2.17 en gcc 4.2.1 zijn uit de bronboom verwijderd en alle ondersteunde architecturen zijn verplaatst naar de LLVM/clang-toolkit. Inbegrepen zijn BSD-gelicentieerde versies van de grep- en dtc-hulpprogramma's (Device Tree Compiler), die de GPL-gelicentieerde versies vervangen. Het amd automatische mount-proces is verwijderd, waarvan de functionaliteit nu via autofs wordt geïmplementeerd. Het ctm-hulpprogramma is verwijderd en het wordt aanbevolen om in plaats daarvan de misc/ctm-poort te gebruiken.
  • De routeringsstapel is herschreven om ondersteuning te bieden voor nexthop-objecten die statusgegevens opslaan die worden gebruikt om een ​​pakket naar de gewenste bestemming door te sturen. De mogelijkheid toegevoegd om uw eigen routezoekalgoritmen te verbinden. Routezoekalgoritmen van DPDK (Data Plane Development Kit) librte toegevoegd, waardoor u het werk met zeer grote routeringstabellen kunt optimaliseren. Voor proxyarp-verzoeken wordt de fib-interface gebruikt. De mogelijkheid toegevoegd om het fib-nummer direct te wijzigen via sysctl net.fibs. Ondersteuning geïmplementeerd voor tijdelijke routes voor IPv4 en IPv6 (met ingestelde levensduur).
  • Ondersteuning voor multipath-routering is herschreven en schaalbaarder gemaakt, waarbij de zoektijd niet afhankelijk is van de lijstgrootte (O(1)). De nieuwe Multipath-implementatie is nu gekoppeld aan de kernelparameter ROUTE_MPATH, die RADIX_MPATH heeft vervangen en standaard is ingeschakeld. Om Multipath te beheren wordt sysctl net.route.multipath voorgesteld.
  • Het cryptografische raamwerk dat op kernelniveau is geïmplementeerd, is opnieuw ontworpen, waarbij ondersteuning is toegevoegd voor moderne cryptografische algoritmen en de interface voor het gebruik van encryptie in stuurprogramma's en andere kernelcomponenten is vereenvoudigd. Verouderde algoritmen ARC4, Blowfish, CAST128, DES, DES, MD5-HMAC en Skipjack verwijderd. IPsec en Kerberos ondersteunen niet langer algoritmen die zijn verouderd door RFC 8221 en RFC 6649/8429, inclusief 3DES. Eerder aangekondigde, verouderde algoritmen in het schijfversleutelingssubsysteem geli en cryptodev zijn verwijderd.
  • De GENERIC-kernel bevat ondersteuning voor de aesni- en armv8crypto-stuurprogramma's om op geli gebaseerde schijfversleuteling te versnellen met behulp van AES-NI-instructies voor amd64/i386-architecturen en AES-XTS voor ARM64.
  • Qat-stuurprogramma toegevoegd voor Intel QuickAssist (QAT) cryptoversnellers en ossl-stuurprogramma met implementatie van versnelde software-encryptieprocedures van OpenSSL, geoptimaliseerd met behulp van assembleertaalcode. Het armv8crypto-stuurprogramma voegt ondersteuning toe voor AES-XTS en AES-GCM met behulp van de overeenkomstige instructies voor ARMv8-processors.
  • TLS (kTLS)-implementatie toegevoegd die draait op FreeBSD-kernelniveau, wat een aanzienlijke toename van de encryptieprestaties voor TCP-sockets mogelijk maakt. Ondersteunde TLS-versies 1.0 tot 1.3. Voor de versleuteling worden kernelcrypto-stuurprogramma's gebruikt die AES-CBC of AES-GCM ondersteunen. Als u kTLS in de gebruikersruimte gebruikt, moet OpenSSL opnieuw worden opgebouwd met de optie WITH_OPENSSL_KTLS.
  • Een nieuw type netwerkbuffers toegevoegd, mbuf (netwerkgegevensbuffer), die meerdere niet-toegewezen fysieke geheugenpagina's in één buffer kunnen vertegenwoordigen, wat de prestaties van de sendfile(2)-aanroep verbetert door de grootte van mbuf-lijsten in socketbuffers te verkleinen.
  • De TCP-stack integreert ondersteuning voor het algoritme voor proportionele reductie van de intensiteit van het verzenden van pakketten (Proportional Rate Reduction, RFC 6937), waardoor u snel optimale flowparameters kunt herstellen na tijdelijke problemen met de gegevensoverdracht. Om PRR uit te schakelen, is sysctl net.inet.tcp.do_prr beschikbaar.
  • De mogelijkheden van de Bhyve hypervisor zijn uitgebreid: Ondersteuning toegevoegd voor het delen van bestanden met behulp van VirtIO-9p (VirtFS). De mogelijkheid om met snapshots van virtuele machines te werken is geïmplementeerd. Ondersteuning toegevoegd voor PCI HDAudio-apparaten en extra seriële poorten COM3 en COM4. Verouderde bvmconsole- en bvmdebug-apparaatmodellen verwijderd. Verbeterde stabiliteit voor VNC-clients, inclusief de macOS Screen Sharing-applicatie.
  • VirtIO-stuurprogramma's hebben ondersteuning toegevoegd voor de VirtIO V1-specificatie, waardoor de compatibiliteit van FreeBSD-gasten met verschillende emulators en hypervisors is verbeterd.
  • Voor processen die aan gevangenisomgevingen zijn gekoppeld, is conversie van CPU-bindingen voorzien (de cpuset die oorspronkelijk aan het proces was gebonden, zal worden vervangen, rekening houdend met de cpuset van de gevangenis en de ingestelde beperkingen).
  • De mogelijkheid toegevoegd om het FreeBSD-basissysteem te bouwen in omgevingen die op andere besturingssystemen zijn gebaseerd. De noodzaak om op andere besturingssystemen voort te bouwen komt voort uit de wens om tools voor continue integratie te gebruiken, gebaseerd op Linux of macOS, voor het testen van FreeBSD.
  • Er wordt een nieuwe MMC/SD-stack voorgesteld, gebaseerd op het CAM-framework, waarmee u apparaten met een SDIO-interface (Secure Digital I/O) kunt aansluiten. SDIO wordt bijvoorbeeld gebruikt in WiFi- en Bluetooth-modules voor veel borden, zoals de Raspberry Pi 3. De nieuwe stack maakt het ook mogelijk om de CAM-interface te gebruiken om SD-opdrachten te verzenden vanuit applicaties in de gebruikersruimte, waardoor het mogelijk wordt om apparaat stuurprogramma's die op gebruikersniveau werken.
  • Verbeterde prestaties van de laag voor compatibiliteit met Linux. DTS-bestanden (Device Tree Sources) worden gesynchroniseerd met de Linux 5.8-kernel.
  • Ondersteuning toegevoegd voor NFSv4.2 (RFC-7862) en de mogelijkheid geïmplementeerd 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 was tot het coderen van alleen RPC-berichten en werd geïmplementeerd alleen softwarematig.
  • De verouderde versie van de GDB-foutopsporing, die eerder in de directory /usr/libexec was geïnstalleerd en in het crashinfo-hulpprogramma werd gebruikt, is verwijderd. Om gedetailleerde informatie over de oorzaken van de crash te verkrijgen, wordt nu voorgesteld om in plaats van het vooraf geïnstalleerde GDB de nieuwste versie van GDB te installeren vanuit ports of pakketten. Ondersteuning voor procesfoutopsporing via procfs is stopgezet. Het netgdb-stuurprogramma is toegevoegd, waardoor toegang tot de kernel-debugger via het netwerk mogelijk is.
  • De unsafe get-functie is verwijderd uit libc (vanaf de C11-standaard is deze functie uitgesloten van de specificatie) en de poorten die deze functie nog steeds gebruiken, zijn aangepast. Functies cap_random verwijderd (getrandom moet worden gebruikt).
  • Een nieuwe systeemaanroep copy_file_range toegevoegd, compatibel met de implementatie van de Linux-kernel en waarmee je het kopiëren van gegevens van het ene bestand naar het andere kunt versnellen door de bewerking alleen aan de kernelzijde uit te voeren zonder eerst de gegevens in het procesgeheugen te lezen. De systeemaanroep wordt ook gebruikt in de NFSv4.2-server om kopieerbewerkingen lokaal op de server uit te voeren (zonder overdracht naar de client).
  • De POSIX AIO asynchrone I/O-engine introduceert ondersteuning voor gevectoriseerde functies. In het bijzonder zijn de systeemaanroepen aio_writev en aio_readv toegevoegd, waardoor de implementatie van gevectoriseerde equivalenten van de functies aio_read en aio_write mogelijk wordt.
  • Componenten van de gebruikersruimte zijn stopgezet om het uitvoerbare bestandsformaat a.out op i386-architectuursystemen te ondersteunen. Het elf2aout-hulpprogramma is verwijderd.
  • De ping- en ping6-hulpprogramma's zijn gecombineerd. De mogelijkheid om Quality of Service (QoS)-parameters in te stellen via IP DSCP en Ethernet PCP is toegevoegd aan ping.
  • Het freebsd-update hulpprogramma toont nu de voortgang van het downloaden van bestanden en voegt de opdrachten updatesready en showconfig toe om te controleren op updates en de configuratie te tonen.
  • Er is veel werk verricht om de ondersteuning voor NUMA-systemen (Non-Uniform Memory Access) te verbeteren.
  • Bijgewerkte grafische stuurprogramma's en componenten van de grafische stapel. Problemen met de werking van omgevingen op basis van het Wayland-protocol zijn opgelost.
  • Backlight-subsysteem toegevoegd voor het maken van backlight-stuurprogramma's. Pwm-backlight-stuurprogramma toegevoegd om de achtergrondverlichting van Pinebook en Pinebook Pro te regelen.
  • Ondersteuning voor het SCTP-protocol is opgenomen in een aparte module sctp.ko, die standaard is uitgeschakeld in de GENERIC-kernel.
  • Voor invoerapparaten is een nieuw usbhid-stuurprogramma voorgesteld dat het hid-framework gebruikt om met USB HID-apparaten te werken, in plaats van de ukbd-, ums- en uhid-stuurprogramma's.
  • Het cpufreq-stuurprogramma ondersteunt Intel SpeedShift-technologie.
  • Ondersteuning toegevoegd voor nieuwe borden op basis van 64-bit ARMv8 CPU's, waaronder Broadcom BCM5871X en NXP LS1046A SoC's.
  • Voor de AMD64-architectuur is ondersteuning voor 57-bit virtuele adressen (LA57) geïmplementeerd. Ondersteuning toegevoegd voor Chinese x86 CPU Hygon Dhyana op basis van AMD-technologieën.
  • De poort voor de powerpc64-architectuur is gewijzigd om LLVM en de ELFv2 ABI te gebruiken (binaire bestanden uit eerdere versies van FreeBSD kunnen niet worden gebruikt in FreeBSD 13). Stuurprogramma's virtio, ixl, mrsas, aacraid, cpld zijn geporteerd voor powerpc64.
  • Stuurprogramma's voor oudere Ethernet-adapters zijn verwijderd:
    • bm(4) BMAC
    • cs(4) Crystal Semiconductor CS8900/CS8920
    • de(4) DEC DC21x4x
    • ed(4) NE-2000 en WD-80×3
    • ep(4) 3Com Etherlink III (3c5x9) ISA
    • ex(4) Intel EtherExpress Pro/10 en Pro/10+
    • fe(4) Fujitsu MB86960A/MB86965A
    • hme(4) Sun Microelectronics STP2002-STQ
    • pcn(4) AMD PCnet
    • sf(4) Sterrenvuur
    • sn(4) SMC 91Cxx
    • tl(4) Texas Instruments ThunderLAN
    • tx(4) SMC 83c17x
    • txp(4) 3Com 3XP Typhoon/Sidewinder (3CR990)
    • vx(4) 3Com EtherLink III / Snelle EtherLink III (3c59x) PCI
    • wb(4) Winbond W89C840F
    • xe(4) Xircom PCMCIA
  • Drivers ubsec (Broadcom BCM58xx cryptoversnellers), ufm (FM-tuners met USB-interface), ctau (Cronix Tau), cx (Cronix Sigma) en vpo (parallel port SCSI) verwijderd.

Bron: opennet.ru

Voeg een reactie