Po dvoch a pol rokoch od vytvorenia vetvy 12.x bol predstavený release FreeBSD 13.0, ktorý bol pripravený pre architektúry amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 a riscv64. Navyše boli vytvorené obrazy pre virtualizačné systémy (QCOW2, VHD, VMDK, raw) a cloudové prostredia Amazon EC2, Google Compute Engine a Vagrant.
Hlavné novinky:
- Prešiel sa na unified Linux implementáciu súborového systému ZFS z projektu OpenZFS. Medzi funkciami, ktoré sa stali dostupné vo FreeBSD po prechode na OpenZFS, patrí: rozšírený systém kvót, šifrovanie súborových systémov, oddelený výber tried alokácie blokov (allocation classes), využívanie vektorových procesorových inštrukcií na zrýchlenie realizácie RAIDZ a výpočtov kontrolných súčtov, podpora kompresného algoritmu ZSTD, mód multihost (MMP, Multi Modifier Protection), vylepšené nástroje príkazového riadku, oprava mnohých chýb súvisiacich so stavom pretekoch a zámkami.
- Port pre architektúru ARM64 (AArch64) bol presunutý na prvú úroveň podpory (Tier 1), ktorá spadá pod dohľad tímov zodpovedných za odstránenie zraniteľností, prípravu release-ov a údržbu portov. Prvá úroveň podpory zahŕňa tvorbu inštalačných balíkov, binárnych aktualizácií a hotových balíkov, ako aj poskytovanie záruk na riešenie špecifických problémov a zachovanie nemennosti ABI pre používateľské prostredie a jadro (s výnimkou niektorých subsystémov).
- Architektúra i386 bola presunutá na druhú úroveň podpory platforiem (Tier 2), pri ktorej bude pokračovaním vo vytváraní inštalačných balíkov, binárnych aktualizácií a hotových balíkov, ale nezaručuje riešenie špecifických problémov. Typ CPU (CPUTYPE) pre architektúru i386 bol predvolene zmenený z 486 na 686 (v prípade potreby je možné si vytvoriť balíky pre i486 a i586 samostatne).
- Komponenty clang, lld, lldb, compiler-rt, llvm, libunwind a libc++ boli aktualizované na verziu 11.
- Vývoj bol presunutý z centralizovaného systému správy zdrojových kódov Subversion do decentralizovaného systému Git.
- Bola vykonaná údržba základného systému od aplikácií rozširovaných pod licenciou GPL. Z stromu zdrojových kódov boli odstránené binutils 2.17 a gcc 4.2.1, všetky podporované architektúry boli prevedené na nástroje LLVM/clang. Boli zahrnuté verzie utilít grep a dtc (Device Tree Compiler) vydané pod licenciou BSD, ktoré nahradili verzie pod licenciou GPL. Proces automatického montovania amd bol odstránený a jeho funkčnosť teraz realizuje autofs. Nástroj ctm bol odstránený, namiesto neho sa odporúča používať port misc/ctm.
- Bol prepisovaný zásobník smerovania, v ktorom sa objavila podpora objektov nexthop, uchovávajúcich údaje o stave používanom na prenášanie paketu do požadovaného cieľa. Bola pridaná možnosť pripojenia vlastných algoritmov vyhľadávania trás. Boli pridané algoritmy vyhľadávania trás z DPDK (Data Plane Development Kit) librte, ktoré umožňujú optimalizovať prácu s veľmi veľkými tabuľkami smerovania. Pre požiadavky proxyarp bol využitý rozhranie fib. Bola pridaná možnosť zmeny počtu fib za behu prostredníctvom sysctl net.fibs. Bola implementovaná podpora dočasných trás pre IPv4 a IPv6 (s nastaveným časom života).
- Podpora Multipath-smerovania bola prepisaná a učinená viac škálovateľnou, pri ktorej čas vyhľadávania nezávisí od veľkosti zoznamu (O(1)). Nová implementácia Multipath je teraz spojená s parametrom jadra ROUTE_MPATH, ktorý nahradil RADIX_MPATH a je zapnutý predvolene. Na riadenie Multipath sa navrhuje sysctl net.route.multipath.
- Prepracovaný bol kryptografický rámec realizovaný na úrovni jadra, v ktorom sa objavila podpora moderných kryptografických algoritmov a zjednodušené rozhranie pre používanie šifrovania v ovládačoch a iných komponentoch jadra. Boli odstránené zastarané algoritmy ARC4, Blowfish, CAST128, DES, DES, MD5-HMAC a Skipjack. V IPsec a Kerberos sa ukončila podpora algoritmov, ktoré boli vyhlásené za zastarané v RFC 8221 a RFC 6649/8429, vrátane 3DES. Boli odstránené predtým vyhlásené zastarané algoritmy v subsystéme diskového šifrovania geli a cryptodev.
- Do jadra GENERIC bola pridaná podpora ovládačov aesni a armv8crypto na zrýchlenie diskového šifrovania na základe geli pomocou inštrukcií AES-NI pre architektúry amd64/i386 a AES-XTS pre ARM64.
- Bol pridaný ovládač qat pre kryptorýchlostné akcelerátory Intel QuickAssist (QAT) a ovládač ossl s implementáciou urýchlených softvérových šifrovacích procedúr z OpenSSL, optimalizovaných pomocou kódu v assembleri. V ovládači armv8crypto bola pridaná podpora AES-XTS a AES-GCM s využitím príslušných inštrukcií procesorov ARMv8.
- Bola pridaná implementácia TLS (kTLS), ktorá funguje na úrovni jadra FreeBSD a umožňuje dosiahnuť podstatné zvýšenie výkonu šifrovania pre TCP sokety. Podporujú sa verzie TLS od 1.0 po 1.3. Na šifrovanie sa používajú kryptodrive a jadra s podporou AES-CBC alebo AES-GCM. Na použitie kTLS v používateľskom priestore je potrebné prekompilovať OpenSSL s voľbou WITH_OPENSSL_KTLS.
- Bol pridaný nový typ sieťových bufferov mbuf (network data buffer), ktorý môže reprezentovať v jednom buffere niekoľko neodrážaných fyzických stránok pamäte, čo zvyšuje výkon volania sendfile(2) vďaka zníženiu veľkosti zoznamov mbuf v sockete.
- Do TCP zásobníka bola integrovaná podpora algoritmu proporcionálneho zníženia intenzity odosielania paketov (Proportional Rate Reduction, RFC 6937), ktorý umožňuje rýchlejšie obnoviť optimálne parametre toku po dočasných problémoch s prenosom dát. Na vypnutie PRR je určený sysctl net.inet.tcp.do_prr.
- Rozšírené možnosti hypervízora Bhyve: Pridaná podpora zdieľania súborov pomocou VirtIO-9p (VirtFS). Implementovaná bola možnosť práce so snapshotmi. virtuálních strojůBol pridaný podporovaný PCI HDAudio a ďalšie sériové porty COM3 a COM4. Boli odstránené zastarané modely zariadení bvmconsole a bvmdebug. Stabilita práce s klientmi VNC, vrátane macOS aplikácie „Zdieľanie obrazovky“, bola zvýšená.
- Do ovládačov VirtIO bola pridaná podpora špecifikácie VirtIO V1, čo zlepšilo kompatibilitu hosťovacích systémov s FreeBSD s rôznymi emulátormi a hypervízormi.
- Pre procesy pripojené k prostrediam jail bolo zabezpečené prevádzanie pripojení k CPU (pôvodne priradené k procesu cpuset bude nahradené so zohľadnením cpuset jail-a a stanovených obmedzení).
- Pridala sa možnosť zostaviť základný systém FreeBSD v prostrediach založených na iných operačných systémoch. Potreba zostavy v iných operačných systémoch je spôsobená želaním využiť nástroje nepretržitej integrácie, ktoré sú viazané na Linux alebo macOS, na testovanie FreeBSD.
- Bol navrhnutý nový stack MMC/SD, založený na frameworku CAM, ktorý umožňuje pripojiť zariadenia s rozhraním SDIO (Secure Digital I/O). Napríklad, SDIO sa používa pri WiFi a Bluetooth moduloch v mnohých doskách, ako je Raspberry Pi 3. Nový stack tiež umožňuje používať rozhranie CAM na zasielanie SD príkazov z aplikácií v užívateľskom prostredí, čo umožňuje vytvárať ovládače zariadení fungujúce na úrovni užívateľa.
- Zlepšila sa funkčnosť vrstvy pre kompatibilitu s Linuxom. Súbory DTS (Device Tree Sources) sú synchronizované s jadrom Linux 5.8.
- Pridaná podpora NFSv4.2 (RFC-7862) a implementovaná možnosť fungovania NFS cez šifrovaný komunikačný kanál založený na TLS 1.3, namiesto použitia Kerberos (režim sec=krb5p), ktorý sa obmedzoval len na šifrovanie RPC správ a bol implementovaný len softvérovo.
- Odstránená zastaraná verzia ladenia GDB, ktorá bola predtým nainštalovaná v priečinku /usr/libexec a používala sa v utilite crashinfo. Namiesto predinštalovaného GDB sa na získanie podrobných informácií o príčinách pádu odporúča nainštalovať čerstvú verziu GDB z portov alebo balíkov. Podpora ladenia procesov cez procfs bola ukončená. Pridaný ovládač netgdb, ktorý umožňuje pristupovať k ladičovi jadra cez sieť.
- Z libc bola odstránená nebezpečná funkcia gets (od štandardu C11 bola táto funkcia vylúčená zo špecifikácie) a bola vykonaná korekcia portov, ktoré ešte používajú túto funkciu. Odstránené funkcie cap_random (je potrebné používať getrandom).
- Pridaný nový systémový volanie copy_file_range, kompatibilný s implementáciou z jadra Linux, ktorý umožňuje zrýchliť kopírovanie údajov z jedného súboru do druhého vďaka vykonávaniu operácie iba na strane jadra bez predchádzajúceho čítania údajov do pamäte procesu. Systémové volanie sa tiež používa v serveri NFSv4.2 na lokálne vykonávanie operácií kopírovania na serveri (bez prenosu k klientovi).
- V mechanizme asynchrónneho vkladu/výstupu POSIX AIO je predstavená podpora vektorovaných funkcií. Najmä boli pridané systémové volania aio_writev a aio_readv, ktoré umožňujú realizovať vektorované ekvivalenty funkcií aio_read a aio_write.
- Podpora komponentov používateľského priestoru pre formát spustiteľných súborov a.out na systémoch s architektúrou i386 bola zrušená. Nástroj elf2aout bol odstránený.
- Nástroje ping a ping6 boli zlúčené. Do ping bola pridaná možnosť nastaviť parametre kvality služby (QoS) cez IP DSCP a Ethernet PCP.
- V nástroji freebsd-update bol zabezpečený prehľad postupu sťahovania súborov a boli pridané príkazy updatesready a showconfig na kontrolu dostupnosti aktualizácií a zobrazenie konfigurácie.
- Prebehla rozsiahla práca na zlepšení podpory systémov NUMA (Non-Uniform Memory Access).
- Grafické ovládače a komponenty grafického stacku boli aktualizované. Problémy s fungovaním prostredí založených na protokole Wayland boli vyriešené.
- Bol pridaný subsystém backlight na vytváranie ovládačov pre riadenie podsvietenia. Ovládač pwm-backlight bol pridaný na riadenie podsvietenia Pinebook a Pinebook Pro.
- Podpora protokolu SCTP bola presunutá do samostatného modulu sctp.ko, ktorý je predvolene vypnutý v jadre GENERIC.
- Pre vstupné zariadenia bol navrhnutý nový ovládač usbhid, ktorý používa rámec hid na prácu s zariadeniami USB HID, namiesto ovládačov ukbd, ums a uhid.
- V ovládači cpufreq bola implementovaná podpora technológie Intel Speed Shift.
- Bola pridaná podpora nových dosiek založených na 64-bitových CPU ARMv8, vrátane SoC Broadcom BCM5871X a NXP LS1046A.
- Pre architektúru AMD64 bola implementovaná podpora 57-bitových virtuálnych adries (LA57). Bolo pridané aj podporu čínskych x86 CPU Hygon Dhyana na základe technológií AMD.
- Port pre architektúru powerpc64 bol prevedený na používanie LLVM a ABI ELFv2 (binárne súbory z predchádzajúcich verzií FreeBSD nebudú použiteľné v FreeBSD 13). Pre powerpc64 boli portované ovládače virtio, ixl, mrsas, aacraid, cpld.
- Ovládače pre zastarané Ethernet adaptéry boli odstránené:
- bm(4) BMAC
- cs(4) Crystal Semiconductor CS8900/CS8920
- de(4) DEC DC21x4x
- ed(4) NE-2000 a WD-80×3
- ep(4) 3Com Etherlink III (3c5x9) ISA
- ex(4) Intel EtherExpress Pro/10 a 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
- Ovládače ubsec (kryptoakcelerátory Broadcom BCM58xx), ufm (FM-tuner s USB rozhraním), ctau (Cronix Tau), cx (Cronix Sigma) a vpo (SCSI na paralelnom porte) boli odstránené.
Zdroj: opennet.ru
