Efter tvÄ och ett halvt Är efter att grenen 12.x inrÀttades presenteras frigivningen av FreeBSD 13.0, som har förberetts för arkitekturerna amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 och riscv64. Dessutom har bilder skapats för virtualiseringssystem (QCOW2, VHD, VMDK, raw) och molnmiljöer via Amazon EC2, Google Compute Engine och Vagrant.
Huvudsakliga nyheter:
- ĂvergĂ„ngen har genomförts till en förenad Linux-implementering av filsystemet ZFS frĂ„n projektet OpenZFS. Bland de möjligheter som blivit tillgĂ€ngliga i FreeBSD efter övergĂ„ngen till OpenZFS finns: utvidgat kvotsystem, kryptering av datamĂ€ngder, separat val av blockallokeringsklasser, anvĂ€ndning av vektorprocessorinstruktioner för att pĂ„skynda implementeringen av RAIDZ och berĂ€kningen av kontrollsummor, stöd för komprimeringsalgoritmen ZSTD, multihost-lĂ€ge (MMP, Multi Modifier Protection), förbĂ€ttrade kommandoradsverktyg, samt Ă„tgĂ€rdande av mĂ„nga fel relaterade till kapplöpningar och lĂ„sningar.
- Porten för arkitekturen ARM64 (AArch64) har övergÄtt till första stödnivÄn (Tier 1), som omfattas av team som ansvarar för att ÄtgÀrda sÄrbarheter, förbereda frigivningar och underhÄlla portar. Första stödnivÄn innebÀr skapande av installationspaket, binÀra uppdateringar och fÀrdiga paket, samt garanterar lösningar pÄ specifika problem och upprÀtthÄllande av ABI:s oförÀndradhet för anvÀndarmiljö och kÀrna (med undantag för vissa delsystem).
- Arkitekturen i386 har övergÄtt till den andra stödnivÄn för plattformar (Tier 2), dÀr skapandet av installationspaket, binÀra uppdateringar och fÀrdiga paket kommer att fortsÀtta, men inte garanterar lösningar pÄ specifika problem. CPU-typ (CPUTYPE) för arkitekturen i386 har som standard Àndrats frÄn 486 till 686 (om sÄ önskas kan paket för i486 och i586 skapas sjÀlvstÀndigt).
- Komponenterna clang, lld, lldb, compiler-rt, llvm, libunwind och libc++ har uppdaterats till version 11.
- Utvecklingen har överförts frÄn det centraliserade versionshanteringssystemet Subversion till ett decentraliserat Git-system.
- Grunden har rensats frÄn applikationer som distribueras under GPL-licens. Binutils 2.17 och gcc 4.2.1 har tagits bort frÄn kÀllkodstrÀdet, och alla stödda arkitekturer har uppgraderats till LLVM/clang-verktyg. BSD-licensierade alternativ till grep och dtc (Device Tree Compiler) har lagts till och ersÀtter de GPL-versioner. Automatisk montering av amd har tagits bort, och dess funktionalitet Àr nu implementerad genom autofs. Verktyget ctm har tagits bort, och istÀllet rekommenderas att anvÀnda porten misc/ctm.
- Routingstacken har skrivits om, vilket nu har stöd för nexthop-objekt som lagrar information om tillstÄndet som anvÀnds för att skicka paket till önskad destination. Möjlighet att ansluta egna rutningsalgoritmer har lagts till. Rutningsalgoritmer frÄn DPDK (Data Plane Development Kit) librte har lagts till, vilket gör det möjligt att optimera arbetet med mycket stora routingtavlor. FIB-grÀnssnittet anvÀnds för proxyarp-förfrÄgningar. Möjlighet att dynamiskt Àndra antalet fib genom sysctl net.fibs har ocksÄ lagts till. Stöd för temporÀra rutter för IPv4 och IPv6 (med angiven livstid) har implementerats.
- Stödet för multipath-routing har skrivits om och gjorts mer skalbart, dÀr söktiden inte beror pÄ listans storlek (O(1)). Den nya multipath-implementationen Àr kopplad till kÀrnparametern ROUTE_MPATH, som har ersatt RADIX_MPATH och Àr aktiverad som standard. För hantering av multipath föreslÄs sysctl net.route.multipath.
- Det kryptografiska ramverket implementerat pÄ kÀrnnivÄ har omarbetats, med stöd för moderna kryptografiska algoritmer och ett förenklat grÀnssnitt för anvÀndning av kryptering i drivrutiner och andra komponenter i kÀrnan. FörÄldrade algoritmer som ARC4, Blowfish, CAST128, DES, MD5-HMAC och Skipjack har tagits bort. I IPsec och Kerberos har stödet för algoritmer som har förklarats förÄldrade i RFC 8221 och RFC 6649/8429, inklusive 3DES, avslutats. Tidigare förklarade förÄldrade algoritmer i underavdelningen för disk-kryptering geli och cryptodev har tagits bort.
- KÀrnan GENERIC har inkluderat stöd för drivrutiner aesni och armv8crypto för att pÄskynda disk-kryptering baserat pÄ geli med hjÀlp av AES-NI-instruktioner för amd64/i386-arkitekturer och AES-XTS för ARM64.
- Drivrutin för Intel QuickAssist (QAT) kryptotillbehör har lagts till, samt ossl-drivrutinen med implementering avaccelererade programvaruprocesser för kryptering frÄn OpenSSL, optimerade med assemblerkod. I armv8crypto-drivrutinen har stöd för AES-XTS och AES-GCM lagts till med hjÀlp av motsvarande ARMv8-processorinstruktioner.
- Implementation av TLS (kTLS) har lagts till, som arbetar pÄ kÀrnnivÄ i FreeBSD och möjliggör en betydande prestandaökning vid kryptering för TCP-socketar. Stöd för TLS-versioner frÄn 1.0 till 1.3. Krypteringen anvÀnder kÀrndrivrutiner som stöder AES-CBC eller AES-GCM. För att anvÀnda kTLS i anvÀndarutrymmet krÀvs en nykompilering av OpenSSL med alternativet WITH_OPENSSL_KTLS.
- En ny typ av nÀtverksbuffrar (mbuf) har lagts till, som kan representera flera oreflekterade fysiska minnessidor i en enda buffer, vilket gör att prestandan för anropet sendfile(2) kan öka genom att minska storleken pÄ mbuf-listorna i socketbuffrar.
- Stödet för algoritmen Proportional Rate Reduction (RFC 6937) har integrerats i TCP-stacken, vilket gör att optimala parametrar för flödet kan ÄterstÀllas snabbare efter tillfÀlliga överföringsproblem. För att stÀnga av PRR finns sysctl net.inet.tcp.do_prr.
- Möjligheterna i hypervisorn Bhyve har utvidgats: Stöd för delad filÄtkomst med VirtIO-9p (VirtFS) har lagts till. Möjligheten att arbeta med snapshots har implementerats. virtuella maskinerStöd för PCI HDAudio-enheter och ytterligare seriella portar COM3 och COM4 har lagts till. FörÄldrade enhetsmodeller som bvmconsole och bvmdebug har tagits bort. Stabiliteten för VNC-klienter har förbÀttrats, inklusive macOS-appen "SkÀrmdelning".
- I VirtIO-drivrutinerna har stöd för specifikationen VirtIO V1 lagts till, vilket har förbÀttrat kompatibiliteten för gÀstsystem med FreeBSD med olika emulatorer och hypervisorer.
- För processer kopplade till jail-miljöer har bindningar till CPU omvandlats (initialt bindningen till processen cpuset kommer att bytas ut med beaktande av cpuset för jail och uppstÀllda begrÀnsningar).
- En funktion för att bygga grundsystemet FreeBSD i miljöer baserade pÄ andra operativsystem har lagts till. Behovet av att bygga i andra operativsystem beror pÄ önskemÄlet att utnyttja verktyg för kontinuerlig integration kopplade till Linux eller macOS för att testa FreeBSD.
- En ny MMC/SD-stack, baserad pÄ CAM-ramverket, har föreslagits och möjliggör anslutning av enheter med SDIO (Secure Digital I/O) grÀnssnitt. Till exempel anvÀnds SDIO i WiFi och Bluetooth-moduler för mÄnga kort, sÄ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 anvÀndarutrymmet, vilket möjliggör skapandet av enhetsdrivrutiner som fungerar i anvÀndarutrymmet.
- Arbetet med lager för kompatibilitet med Linux har förbÀttrats. DTS-filer (Device Tree Sources) har synkroniserats med Linux-kÀrnan 5.8.
- Stödet för NFSv4.2 (RFC-7862) har lagts till och möjligheten att anvÀnda NFS över krypterad kommunikationskanal baserad pÄ TLS 1.3 har implementerats, istÀllet för att anvÀnda Kerberos (lÀge sec=krb5p), vilket var begrÀnsat till att kryptera RPC-meddelanden och endast var implementerat programmÀssigt.
- Den Àldre versionen av debuggern GDB, som tidigare var installerad i katalogen /usr/libexec och anvÀndes i crashinfo-verktyget, har tagits bort. IstÀllet för den förinstallerade GDB föreslÄs nu att installera en ny version av GDB frÄn portar eller paket för att fÄ detaljerad information om orsaken till krascher. Stödet för att debugga processer via procfs har upphört. En driver för netgdb har lagts till, vilket möjliggör fjÀrrÄtkomst till kÀrnans debugger.
- Den osÀkra funktionen gets har tagits bort frÄn libc (denna funktion har exkluderats frÄn specifikationen sedan C11-standarden) och justeringar har gjorts för portar som fortfarande anvÀnder denna funktion. Funktionerna cap_random har tagits bort (anvÀnd getrandom istÀllet).
- Ett nytt systemanrop, copy_file_range, har lagts till, som Àr kompatibelt med implementationen frÄn Linux-kÀrnan och gör det möjligt att snabba upp kopieringen av data frÄn en fil till en annan, tack vare att operationen endast utförs pÄ kÀrnsidan utan att data först behöver lÀsas in i processminnet. Systemanropet anvÀnds ocksÄ i servern NFSv4.2 för lokal utförande av kopieringsoperationer pÄ servern (utan överföring till klienten).
- I mekanismen för asynkron in-/utdata POSIX AIO ingÄr stöd för vektoriserade funktioner. SÀrskilt har systemanropen aio_writev och aio_readv lagts till, vilket möjliggör att implementera vektoriserade motsvarigheter till funktionerna aio_read och aio_write.
- Stödet för anvÀndarutrymmeskomponenter för a.out-formatet pÄ i386-arkitekturer har upphört. Verktyget elf2aout har tagits bort.
- Verktygen ping och ping6 har slÄs samman. Funktionen ping har fÄtt möjlighet att stÀlla in kvalitetsserviceparametrar (QoS) via IP DSCP och Ethernet PCP.
- I verktyget freebsd-update har visning av nedladdningsprognos lagts till, och kommandona updatesready och showconfig har lagts till för att kontrollera uppdateringar och visa konfiguration.
- Stort arbete har gjorts för att förbÀttra stödet för NUMA-system (Non-Uniform Memory Access).
- Grafikdrivrutiner och komponenter i grafikstacken har uppdaterats. Problem med miljöer baserade pÄ Wayland-protokollet har ÄtgÀrdats.
- En backlight-subsystem har lagts till för att skapa drivrutiner för belysningskontroll. En drivrutin pwm-backlight har lagts till för att styra belysningen pÄ Pinebook och Pinebook Pro.
- Stöd för SCTP-protokollet har flyttats till modulen sctp.ko, som Àr avstÀngd som standard i GENERIC-kÀrnan.
- En ny drivrutin usbhid har föreslagits för inmatningsenheter, som anvÀnder hid-ramverket för att arbeta med USB HID-enheter, istÀllet för drivrutinerna ukbd, ums och uhid.
- I cpufreq-drivrutinen har stöd för Intel Speed Shift-teknologin implementerats.
- Stöd för nya kort baserade pÄ 64-bitars CPU ARMv8 har lagts till, inklusive SoC Broadcom BCM5871X och NXP LS1046A.
- För AMD64-arkitekturen har stöd för 57-bitars virtuella adresser (LA57) implementerats. Stöd för kinesiska x86-CPU Hygon Dhyana baserat pÄ AMD-teknologier har lagts till.
- Porten för powerpc64-arkitekturen har överförts till att anvÀnda LLVM och ABI ELFv2 (binaries frÄn tidigare versioner av FreeBSD kommer inte lÀngre att kunna anvÀndas i FreeBSD 13). För powerpc64 har drivrutinerna virtio, ixl, mrsas, aacraid, cpld portats.
- Drivrutiner för förÄldrade 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
- Drivrutinerna ubsec (kryptoacceleratorer Broadcom BCM58xx), ufm (FM-tuners med USB-grÀnssnitt), ctau (Cronix Tau), cx (Cronix Sigma) och vpo (parallellport SCSI) har tagits bort.
KĂ€lla: opennet.ru
