FreeBSD 13.0 release

Två och ett halvt år efter bildandet av 12.x-grenen presenterades releasen av FreeBSD 13.0, som är förberedd för arkitekturerna amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 och riscv64. Dessutom genererades bilder för virtualiseringssystem (QCOW2, VHD, VMDK, raw) och molnmiljöerna Amazon EC2, Google Compute Engine och Vagrant.

Huvudsakliga innovationer:

  • Övergången till en enhetlig Linux-implementering av ZFS-filsystemet från OpenZFS-projektet har gjorts. Bland funktionerna som blev tillgängliga i FreeBSD efter övergången till OpenZFS: ett utökat kvotsystem, kryptering av datamängder, separat urval av blockallokeringsklasser (allokeringsklasser), användning av vektorprocessorinstruktioner för att påskynda implementeringen av RAIDZ och checksumma beräkningar, stöd för ZSTD-komprimeringsalgoritmen, mode multihost (MMP, Multi Modifier Protection), förbättrad kommandoradsinstrumentering, fixar många buggar relaterade till tävlingsförhållanden och blockering.
  • Porten för ARM64-arkitekturen (AArch64) har flyttats till den första supportnivån (Tier 1), som stöds av team som ansvarar för att eliminera sårbarheter, förbereda utgåvor och underhålla portar. Den första nivån av support involverar skapandet av installationssammansättningar, binära uppdateringar och färdiga paket, samt tillhandahåller garantier för att lösa specifika problem och bibehålla oförändrad ABI för användarmiljön och kärnan (med undantag för vissa delsystem).
  • i386-arkitekturen har överförts till den andra nivån av plattformsstöd (Tier 2), där bildandet av installationssammansättningar, binära uppdateringar och färdiga paket kommer att fortsätta, men garanterar inte en lösning på specifika problem. Standard CPU-typen (CPUTYPE) för i386-arkitekturen har ändrats från 486 till 686 (om så önskas kan sammansättningar för i486 och i586 skapas oberoende).
  • Komponenterna clang, lld, lldb, compiler-rt, llvm, libunwind och libc++ har uppdaterats till version 11.
  • Utvecklingen har överförts från det centraliserade källkontrollsystemet Subversion till det decentraliserade systemet Git.
  • Bassystemet renades från applikationer distribuerade under GPL-licensen. Binutils 2.17 och gcc 4.2.1 har tagits bort från källträdet, och alla stödda arkitekturer har flyttats till LLVM/clang-verktygslådan. Inkluderat är BSD-licensierade versioner av verktygen grep och dtc (Device Tree Compiler), som ersätter de GPL-licensierade versionerna. Amds automatiska monteringsprocessen har tagits bort, vars funktionalitet nu implementeras genom autofs. Ctm-verktyget har tagits bort, och det rekommenderas att använda misc/ctm-porten istället.
  • Routingstacken har skrivits om för att inkludera stöd för nexthop-objekt som lagrar tillståndsdata som används för att vidarebefordra ett paket till önskad destination. Lade till möjligheten att ansluta dina egna ruttsökningsalgoritmer. Lade till ruttsökningsalgoritmer från DPDK (Data Plane Development Kit) librte, så att du kan optimera arbetet med mycket stora routingtabeller. För proxyarp-förfrågningar används fib-gränssnittet. Lade till möjligheten att ändra fib-numret i farten via sysctl net.fibs. Implementerat stöd för temporära rutter för IPv4 och IPv6 (med inställd livslängd).
  • Stödet för flervägsdirigering har skrivits om och gjorts mer skalbart, där söktiden inte beror på liststorleken (O(1)). Den nya Multipath-implementeringen är nu associerad med kärnparametern ROUTE_MPATH, som har ersatt RADIX_MPATH och är aktiverad som standard. För att hantera Multipath föreslås sysctl net.route.multipath.
  • Det kryptografiska ramverket som implementerats på kärnnivå har gjorts om, vilket ger stöd för moderna kryptografiska algoritmer och förenklar gränssnittet för att använda kryptering i drivrutiner och andra kärnkomponenter. Tog bort föråldrade algoritmer ARC4, Blowfish, CAST128, DES, DES, MD5-HMAC och Skipjack. IPsec och Kerberos stöder inte längre algoritmer som föråldrats av RFC 8221 och RFC 6649/8429, inklusive 3DES. Tog bort tidigare tillkännagivna föråldrade algoritmer i geli- och cryptodev-diskkrypteringsundersystemet.
  • Den GENERISKA kärnan inkluderar stöd för aesni- och armv8crypto-drivrutinerna för att accelerera geli-baserad diskkryptering med hjälp av AES-NI-instruktioner för amd64/i386-arkitekturer och AES-XTS för ARM64.
  • Lade till qat-drivrutin för Intel QuickAssist (QAT) kryptoacceleratorer och ossl-drivrutin med implementering av accelererade programvarukrypteringsprocedurer från OpenSSL, optimerade med hjälp av assembly-språkkod. Armv8crypto-drivrutinen lägger till stöd för AES-XTS och AES-GCM med hjälp av motsvarande instruktioner för ARMv8-processorer.
  • Tillagd TLS (kTLS)-implementering som körs på FreeBSD-kärnnivå, vilket möjliggör en betydande ökning av krypteringsprestanda för TCP-sockets. TLS-versioner 1.0 till 1.3 som stöds. För kryptering används kärnkryptodrivrutiner som stöder AES-CBC eller AES-GCM. Att använda kTLS i användarutrymme kräver ombyggnad av OpenSSL med alternativet WITH_OPENSSL_KTLS.
  • Lade till en ny typ av nätverksbuffertar, mbuf (nätverksdatabuffert), som kan representera flera omappade fysiska minnessidor i en buffert, vilket förbättrar prestandan för sendfile(2)-anropet genom att minska storleken på mbuf-listor i socketbuffertar.
  • TCP-stacken integrerar stöd för algoritmen för proportionell minskning av intensiteten för att skicka paket (Proportional Rate Reduction, RFC 6937), vilket gör att du snabbt kan återställa optimala flödesparametrar efter tillfälliga problem med dataöverföring. För att inaktivera PRR, tillhandahålls sysctl net.inet.tcp.do_prr.
  • Möjligheterna hos Bhyve hypervisor har utökats: Stöd för att dela filer med VirtIO-9p (VirtFS) har lagts till. Möjligheten att arbeta med ögonblicksbilder av virtuella maskiner har implementerats. Tillagt stöd för PCI HDAudio-enheter och ytterligare seriella portar COM3 och COM4. Tog bort föråldrade bvmconsole- och bvmdebug-enhetsmodeller. Förbättrad stabilitet för VNC-klienter, inklusive applikationen macOS Screen Sharing.
  • VirtIO-drivrutiner har lagt till stöd för VirtIO V1-specifikationen, vilket har förbättrat kompatibiliteten för FreeBSD-gäster med olika emulatorer och hypervisorer.
  • För processer kopplade till fängelsemiljöer tillhandahålls konvertering av CPU-bindningar (den cpuset som ursprungligen var bunden till processen kommer att ersättas med hänsyn till fängelsets cpuset och restriktionerna).
  • Lade till möjligheten att bygga FreeBSD-bassystemet i miljöer baserade på andra operativsystem. Behovet av att bygga på andra operativsystem beror på önskan att använda kontinuerliga integrationsverktyg baserade på Linux eller macOS för att testa FreeBSD.
  • En ny MMC/SD-stack föreslås, baserad på CAM-ramverket och låter dig ansluta enheter med ett SDIO-gränssnitt (Secure Digital I/O). SDIO används till exempel i WiFi- och Bluetooth-moduler för många kort, som Raspberry Pi 3. Den nya stacken gör det också möjligt att använda CAM-gränssnittet för att skicka SD-kommandon från applikationer i användarutrymmet, vilket gör det möjligt att skapa enhet drivrutiner som fungerar på användarnivå.
  • Förbättrad prestanda för lagret för kompatibilitet med Linux. DTS-filer (Device Tree Sources) synkroniseras med Linux 5.8-kärnan.
  • Lade till stöd för NFSv4.2 (RFC-7862) och implementerade möjligheten att använda NFS över en krypterad kommunikationskanal baserad på TLS 1.3, istället för att använda Kerberos (sec=krb5p-läge), vilket var begränsat till att endast kryptera RPC-meddelanden och implementerades endast i mjukvara.
  • Den föråldrade versionen av GDB-felsökaren, som tidigare installerades i katalogen /usr/libexec och användes i verktyget crashinfo, har tagits bort. Istället för förinstallerad GDB, för att få detaljerad information om orsakerna till kraschen, föreslås det nu att installera den senaste versionen av GDB från portar eller paket. Stöd för processfelsökning via procfs har upphört. Netgdb-drivrutinen har lagts till, vilket ger åtkomst till kärnfelsökningen över nätverket.
  • Funktionen unsafe gets har tagits bort från libc (med början från C11-standarden, denna funktion har exkluderats från specifikationen) och portarna som fortfarande använder denna funktion har justerats. Borttagna cap_random-funktioner (getrandom ska användas).
  • Lade till ett nytt systemanrop copy_file_range, kompatibelt med implementeringen från Linux-kärnan och gör att du kan påskynda kopieringen av data från en fil till en annan genom att endast utföra operationen på kärnan utan att först läsa in data i processminnet. Systemanropet används också i NFSv4.2-servern för att utföra kopieringsoperationer lokalt på servern (utan överföring till klienten).
  • POSIX AIO asynkron I/O-motor introducerar stöd för vektoriserade funktioner. I synnerhet har systemanropen aio_writev och aio_readv lagts till, vilket möjliggör implementering av vektoriserade ekvivalenter av funktionerna aio_read och aio_write.
  • Användarutrymmeskomponenter har upphört för att stödja det körbara filformatet a.out på i386-arkitektursystem. Verktyget elf2aout har tagits bort.
  • Verktygen ping och ping6 har kombinerats. Möjligheten att ställa in tjänstekvalitetsparametrar (QoS) via IP DSCP och Ethernet PCP har lagts till i ping.
  • Verktyget freebsd-update visar nu filnedladdningsförloppet och lägger till kommandona updatesready och showconfig för att söka efter uppdateringar och visa konfigurationen.
  • Mycket arbete har gjorts för att förbättra stödet för NUMA-system (Non-Uniform Memory Access).
  • Uppdaterade grafikdrivrutiner och grafikstackkomponenter. Problem med driften av miljöer baserade på Wayland-protokollet har lösts.
  • Tillagt bakgrundsbelysningsundersystem för att skapa drivrutiner för bakgrundsbelysningskontroll. Tillagd drivrutin för pwm-bakgrundsbelysning för att styra Pinebook och Pinebook Pro bakgrundsbelysning.
  • Stöd för SCTP-protokollet ingår i en separat modul sctp.ko, som är inaktiverad som standard i GENERIC-kärnan.
  • För indataenheter har en ny usbhid-drivrutin föreslagits som använder hid-ramverket för att arbeta med USB HID-enheter, istället för drivrutinerna ukbd, ums och uhid.
  • cpufreq-drivrutinen stöder Intel Speed ​​​​Shift-teknik.
  • Lade till stöd för nya kort baserade på 64-bitars ARMv8-processorer, inklusive Broadcom BCM5871X och NXP LS1046A SoC.
  • För AMD64-arkitekturen är stöd för 57-bitars virtuella adresser (LA57) implementerat. Lade till stöd för kinesisk x86 CPU Hygon Dhyana baserad på AMD-teknik.
  • Porten för powerpc64-arkitekturen har bytts till att använda LLVM och ELFv2 ABI (binärfiler från tidigare versioner av FreeBSD kommer inte att kunna användas i FreeBSD 13). Drivrutiner virtio, ixl, mrsas, aacraid, cpld har porterats för powerpc64.
  • Drivrutiner för äldre Ethernet-adaptrar har tagits bort:
    • bm(4) BMAC
    • cs(4) Crystal Semiconductor CS8900/CS8920
    • de(4) DEC DC21x4x
    • ed(4) NE-2000 och WD-80×3
    • ep(4) 3Com Etherlink III (3c5x9) ISA
    • ex(4) Intel EtherExpress Pro/10 och Pro/10+
    • fe(4) Fujitsu MB86960A/MB86965A
    • hme(4) Sun Microelectronics STP2002-STQ
    • pcn(4) AMD PCnet
    • sf(4) Starfire
    • 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 / Fast EtherLink III (3c59x) PCI
    • wb(4) Winbond W89C840F
    • xe(4) Xircom PCMCIA
  • Borttagna drivrutiner ubsec (Broadcom BCM58xx kryptoacceleratorer), ufm (FM-tuners med USB-gränssnitt), ctau (Cronix Tau), cx (Cronix Sigma) och vpo (parallellport SCSI).

Källa: opennet.ru

Lägg en kommentar