FreeBSD 13.0 udgivelse

To et halvt år efter dannelsen af ​​12.x-grenen blev udgivelsen af ​​FreeBSD 13.0 præsenteret, som er forberedt til amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 og riscv64 arkitekturerne. Derudover blev der genereret billeder til virtualiseringssystemer (QCOW2, VHD, VMDK, raw) og cloud-miljøer Amazon EC2, Google Compute Engine og Vagrant.

Vigtigste innovationer:

  • Overgangen til en samlet Linux-implementering af ZFS-filsystemet fra OpenZFS-projektet er blevet foretaget. Blandt de funktioner, der blev tilgængelige i FreeBSD efter overgangen til OpenZFS: et udvidet kvotesystem, kryptering af datasæt, separat valg af blokallokeringsklasser (allokeringsklasser), brug af vektorprocessorinstruktioner til at fremskynde implementeringen af ​​RAIDZ og checksum beregninger, understøttelse af ZSTD-komprimeringsalgoritmen, mode multihost (MMP, Multi Modifier Protection), forbedret kommandolinjeinstrumentering, retter mange fejl relateret til løbsforhold og blokering.
  • Porten til ARM64-arkitekturen (AArch64) er blevet flyttet til det første niveau af support (Tier 1), som understøttes af teams, der er ansvarlige for at eliminere sårbarheder, forberede udgivelser og vedligeholde porte. Det første niveau af support involverer oprettelse af installationssamlinger, binære opdateringer og færdige pakker, samt at give garantier for løsning af specifikke problemer og opretholdelse af den uændrede ABI for brugermiljøet og kernen (med undtagelse af nogle undersystemer).
  • i386-arkitekturen er blevet overført til det andet niveau af platformunderstøttelse (Tier 2), hvor dannelsen af ​​installationssamlinger, binære opdateringer og færdige pakker vil fortsætte, men garanterer ikke en løsning på specifikke problemer. Standard CPU-typen (CPUTYPE) for i386-arkitekturen er blevet ændret fra 486 til 686 (hvis det ønskes, kan samlinger til i486 og i586 oprettes uafhængigt).
  • Komponenter clang, lld, lldb, compiler-rt, llvm, libunwind og libc++ er blevet opdateret til version 11.
  • Udviklingen er blevet overført fra det centraliserede kildekontrolsystem Subversion til det decentrale system Git.
  • Basissystemet blev renset for applikationer distribueret under GPL-licensen. Binutils 2.17 og gcc 4.2.1 er blevet fjernet fra kildetræet, og alle understøttede arkitekturer er blevet flyttet til LLVM/clang-værktøjssættet. Inkluderet er BSD-licenserede versioner af grep og dtc (Device Tree Compiler), som erstatter de GPL-licenserede versioner. Amds automatiske monteringsproces er blevet fjernet, hvis funktionalitet nu er implementeret via autofs. ctm-værktøjet er blevet fjernet, og det anbefales at bruge misc/ctm-porten i stedet.
  • Routingstakken er blevet omskrevet til at inkludere understøttelse af nexthop-objekter, der lagrer tilstandsdata, der bruges til at videresende en pakke til den ønskede destination. Tilføjet muligheden for at forbinde dine egne rutesøgningsalgoritmer. Tilføjet rutesøgealgoritmer fra DPDK (Data Plane Development Kit) librte, så du kan optimere arbejdet med meget store routingtabeller. Til proxyarp-anmodninger bruges fib-grænsefladen. Tilføjet muligheden for at ændre fib-nummeret på farten via sysctl net.fibs. Implementeret understøttelse af midlertidige ruter for IPv4 og IPv6 (med indstillet levetid).
  • Multipath routing support er blevet omskrevet og gjort mere skalerbar, hvor søgetiden ikke afhænger af listestørrelsen (O(1)). Den nye Multipath-implementering er nu forbundet med ROUTE_MPATH-kerneparameteren, som har erstattet RADIX_MPATH og er aktiveret som standard. For at administrere Multipath foreslås sysctl net.route.multipath.
  • Den kryptografiske ramme implementeret på kerneniveau er blevet redesignet, tilføjer understøttelse af moderne kryptografiske algoritmer og forenkler grænsefladen til brug af kryptering i drivere og andre kernekomponenter. Fjernede forældede algoritmer ARC4, Blowfish, CAST128, DES, DES, MD5-HMAC og Skipjack. IPsec og Kerberos understøtter ikke længere algoritmer, der er forældet af RFC 8221 og RFC 6649/8429, inklusive 3DES. Fjernede tidligere annoncerede forældede algoritmer i geli- og cryptodev-diskkrypteringsundersystemet.
  • Den GENERISKE kerne inkluderer understøttelse af aesni- og armv8crypto-driverne for at accelerere geli-baseret diskkryptering ved hjælp af AES-NI-instruktioner til amd64/i386-arkitekturer og AES-XTS til ARM64.
  • Tilføjet qat-driver til Intel QuickAssist (QAT) kryptoacceleratorer og ossl-driver med implementering af accelererede softwarekrypteringsprocedurer fra OpenSSL, optimeret ved hjælp af assemblersprogkode. Armv8crypto-driveren tilføjer understøttelse af AES-XTS og AES-GCM ved hjælp af de tilsvarende instruktioner til ARMv8-processorer.
  • Tilføjet TLS (kTLS) implementering, der kører på FreeBSD-kerneniveau, hvilket giver mulighed for en betydelig stigning i krypteringsydeevnen for TCP-sockets. Understøttede TLS-versioner 1.0 til 1.3. Til kryptering bruges kernekryptodrivere, der understøtter AES-CBC eller AES-GCM. Brug af kTLS i brugerrummet kræver genopbygning af OpenSSL med muligheden WITH_OPENSSL_KTLS.
  • Tilføjet en ny type netværksbuffere, mbuf (netværksdatabuffer), som kan repræsentere flere ikke-mappede fysiske hukommelsessider i én buffer, hvilket forbedrer ydeevnen af ​​sendfile(2)-kaldet ved at reducere størrelsen af ​​mbuf-lister i socket-buffere.
  • TCP-stakken integrerer understøttelse af algoritmen til proportional reduktion af intensiteten af ​​at sende pakker (Proportional Rate Reduction, RFC 6937), som giver dig mulighed for hurtigt at gendanne optimale flowparametre efter midlertidige problemer med datatransmission. For at deaktivere PRR leveres sysctl net.inet.tcp.do_prr.
  • Bhyve-hypervisorens muligheder er blevet udvidet: Tilføjet understøttelse af deling af filer ved hjælp af VirtIO-9p (VirtFS). Muligheden for at arbejde med snapshots af virtuelle maskiner er blevet implementeret. Tilføjet understøttelse af PCI HDAudio-enheder og yderligere serielle porte COM3 og COM4. Fjernede forældede bvmconsole og bvmdebug enhedsmodeller. Forbedret stabilitet for VNC-klienter, inklusive macOS Screen Sharing-applikationen.
  • VirtIO-drivere har tilføjet understøttelse af VirtIO V1-specifikationen, som har forbedret kompatibiliteten af ​​FreeBSD-gæster med forskellige emulatorer og hypervisorer.
  • For processer knyttet til jail-miljøer leveres konvertering af CPU-bindinger (det cpusæt, der oprindeligt er bundet til processen, vil blive erstattet under hensyntagen til fængslets cpuset og de fastsatte begrænsninger).
  • Tilføjet muligheden for at bygge FreeBSD-basesystemet i miljøer baseret på andre operativsystemer. Behovet for at bygge videre på andre operativsystemer skyldes ønsket om at bruge kontinuerlige integrationsværktøjer baseret på Linux eller macOS til test af FreeBSD.
  • En ny MMC/SD-stack er foreslået baseret på CAM-rammerne og giver dig mulighed for at forbinde enheder med et SDIO (Secure Digital I/O)-interface. For eksempel bruges SDIO i WiFi- og Bluetooth-moduler til mange boards, såsom Raspberry Pi 3. Den nye stack gør det også muligt at bruge CAM-grænsefladen til at sende SD-kommandoer fra applikationer i brugerrummet, hvilket gør det muligt at oprette enhed drivere, der opererer på brugerniveau.
  • Forbedret ydeevne af laget for kompatibilitet med Linux. DTS-filer (Device Tree Sources) synkroniseres med Linux 5.8-kernen.
  • Tilføjet understøttelse af NFSv4.2 (RFC-7862) og implementeret muligheden for at betjene NFS over en krypteret kommunikationskanal baseret på TLS 1.3, i stedet for at bruge Kerberos (sec=krb5p-tilstand), som var begrænset til kun at kryptere RPC-meddelelser og blev implementeret kun i software.
  • Den forældede version af GDB-debuggeren, som tidligere var installeret i mappen /usr/libexec og brugt i crashinfo-værktøjet, er blevet fjernet. I stedet for forudinstalleret GDB, for at få detaljerede oplysninger om årsagerne til nedbruddet, foreslås det nu at installere den seneste version af GDB fra porte eller pakker. Support til procesfejlfinding via procfs er afbrudt. Netgdb-driveren er blevet tilføjet, hvilket giver adgang til kerne-debuggeren over netværket.
  • Funktionen unsafe gets er blevet fjernet fra libc (startende fra C11-standarden, denne funktion er blevet udelukket fra specifikationen), og de porte, der stadig bruger denne funktion, er blevet justeret. Fjernede cap_random-funktioner (getrandom skal bruges).
  • Tilføjet et nyt systemkald copy_file_range, der er kompatibelt med implementeringen fra Linux-kernen og giver dig mulighed for at fremskynde kopiering af data fra en fil til en anden ved kun at udføre handlingen på kernesiden uden først at læse dataene ind i proceshukommelsen. Systemkaldet bruges også i NFSv4.2-serveren til at udføre kopioperationer lokalt på serveren (uden overførsel til klienten).
  • POSIX AIO asynkron I/O-motor introducerer understøttelse af vektoriserede funktioner. Især er aio_writev- og aio_readv-systemkaldene blevet tilføjet, hvilket muliggør implementering af vektoriserede ækvivalenter af funktionerne aio_read og aio_write.
  • Brugerpladskomponenter er blevet afbrudt for at understøtte det eksekverbare a.out-filformat på i386-arkitektursystemer. Hjælpeprogrammet elf2aout er blevet fjernet.
  • Ping- og ping6-værktøjerne er blevet kombineret. Muligheden for at indstille parametre for servicekvalitet (QoS) via IP DSCP og Ethernet PCP er blevet tilføjet til ping.
  • Freebsd-update-værktøjet viser nu filoverførslen og tilføjer kommandoerne updatesready og showconfig for at søge efter opdateringer og vise konfigurationen.
  • Meget arbejde er blevet gjort for at forbedre understøttelsen af ​​NUMA (Non-Uniform Memory Access) systemer.
  • Opdaterede grafikdrivere og grafikstakkomponenter. Problemer med driften af ​​miljøer baseret på Wayland-protokollen er blevet løst.
  • Tilføjet baggrundsbelysningsundersystem til oprettelse af baggrundslysstyringsdrivere. Tilføjet pwm-baggrundslys-driver til at styre Pinebook og Pinebook Pro-baggrundsbelysning.
  • Understøttelse af SCTP-protokollen er inkluderet i et separat modul sctp.ko, som er deaktiveret som standard i den GENERIC-kerne.
  • For inputenheder er der foreslået en ny usbhid-driver, der bruger hid-rammerne til at arbejde med USB HID-enheder i stedet for ukbd, ums og uhid-driverne.
  • cpufreq-driveren understøtter Intel Speed ​​​​Shift-teknologi.
  • Tilføjet understøttelse af nye kort baseret på 64-bit ARMv8 CPU'er, inklusive Broadcom BCM5871X og NXP LS1046A SoC'er.
  • For AMD64-arkitekturen er understøttelse af 57-bit virtuelle adresser (LA57) implementeret. Tilføjet understøttelse af kinesisk x86 CPU Hygon Dhyana baseret på AMD-teknologier.
  • Porten til powerpc64-arkitekturen er blevet skiftet til at bruge LLVM og ELFv2 ABI (binære filer fra tidligere versioner af FreeBSD vil ikke kunne bruges i FreeBSD 13). Drivere virtio, ixl, mrsas, aacraid, cpld er blevet porteret til powerpc64.
  • Drivere til ældre Ethernet-adaptere er blevet fjernet:
    • bm(4) BMAC
    • cs(4) Crystal Semiconductor CS8900/CS8920
    • de(4) DEC DC21x4x
    • ed(4) NE-2000 og WD-80×3
    • ep(4) 3Com Etherlink III (3c5x9) ISA
    • ex(4) Intel EtherExpress Pro/10 og Pro/10+
    • fe(4) Fujitsu MB86960A/MB86965A
    • hme(4) Sun Microelectronics STP2002-STQ
    • pcn(4) AMD PCnet
    • sf(4) Stjerneild
    • 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
  • Fjernede drivere ubsec (Broadcom BCM58xx kryptoacceleratorer), ufm (FM-tunere med USB-interface), ctau (Cronix Tau), cx (Cronix Sigma) og vpo (parallel port SCSI).

Kilde: opennet.ru

Tilføj en kommentar