Рэліз FreeBSD 13.0/XNUMX

Праз два з паловай гады пасля фармавання галінкі 12.x прадстаўлены рэліз FreeBSD 13.0, які падрыхтаваны для архітэктур amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 і riscv64. Дадаткова сфарміраваны вобразы для сістэм віртуалізацыі (QCOW2, VHD, VMDK, raw) і хмарных акружэнняў Amazon EC2, Google Compute Engine і Vagrant.

Асноўныя навіны:

  • Ажыццёўлены пераход на ўніфікаваную c Linux рэалізацыю файлавай сістэмы ZFS ад праекту OpenZFS. Сярод магчымасцяў, якія сталі даступныя ва FreeBSD пасля пераходу на OpenZFS: пашыраная сістэма квот, шыфраванне набораў дадзеных, раздзельны выбар класаў размеркавання блокаў (allocation classes), выкарыстанне вектарных працэсарных інструкцый для паскарэння рэалізацыя RAIDZ і вылічэнні кантрольных сум, падтрымка алгарытму сціску ZSTD, рэжым multihost (MMP, Multi Modifier Protection), палепшаны інструментар каманднага радка, выпраўленне шматлікіх памылак, злучаных са станам гонкі і блакіроўкамі.
  • Порт для архітэктуры ARM64 (AArch64) пераведзены на першы ўзровень падтрымкі (Tier 1), які падпадае пад суправаджэнне камандамі, якія адказваюць за ўхіленне ўразлівасцяў, падрыхтоўку рэлізаў і падтрыманне партоў. Першы ўзровень падтрымкі мае на ўвазе фармаванне ўсталявальных зборак, бінарных абнаўленняў і гатовых пакетаў, а таксама падаванне гарантый рашэння спецыфічных праблем і захаванні нязменнасці ABI для карыстацкага асяроддзя і ядры (за выключэннем некаторых падсістэм).
  • Архітэктура i386 пераведзена на другі ўзровень падтрымкі платформаў (Tier 2), пры якім будзе працягнута фармаванне ўсталявальных зборак, бінарных абнаўленняў і гатовых пакетаў, але не гарантуе рашэнне спецыфічных праблем. Тып CPU (CPUTYPE) для архітэктуры i386 па змаўчанні зменены з 486 на 686 (пры жаданні зборкі для i486 і i586 можна сфарміраваць самастойна).
  • Кампаненты clang, lld, lldb, compiler-rt, llvm, libunwind і libc++ абноўлены да версіі 11.
  • Распрацоўка пераведзена з цэнтралізаванай сістэмы кіравання зыходнымі тэкстамі Subversion у дэцэнтралізаваную сістэму Git.
  • Праведзена чыстка базавай сістэмы ад прыкладанняў, якія распаўсюджваюцца пад ліцэнзіяй GPL. З дрэва зыходных тэкстаў выдалены binutils 2.17 і gcc 4.2.1, усе падтрымліваемыя архітэктуры перакладзены на інструментар LLVM/clang. Уключаны распаўсюджваюцца пад ліцэнзіяй BSD варыянты ўтыліт grep і dtc (Device Tree Compiler), якія замянілі сабой версіі пад ліцэнзіяй GPL. Выдалены працэс аўтаматычнага мантавання amd, функцыянальнасць якога зараз рэалізавана праз autofs. Выдалена ўтыліта ctm, замест якой рэкамендуецца выкарыстоўваць порт misc/ctm.
  • Перапісаны стэк маршрутызацыі, у якім з'явілася падтрымка аб'ектаў nexthop, якія захоўваюць дадзеныя аб стане, выкарыстоўваным для перадачы пакета ў жаданую кропку прызначэння. Дададзена магчымасць падключэння ўласных алгарытмаў пошуку маршрутаў. Дададзеныя алгарытмы пошуку маршрутаў з DPDK (Data Plane Development Kit) librte, якія дазваляюць аптымізаваць працу з вельмі вялікімі табліцамі маршрутызацыі. Для запытаў proxyarp задзейнічаны інтэрфейс fib. Дададзена магчымасць змены ліку fib на лета праз sysctl net.fibs. Рэалізавана падтрымка часовых маршрутаў для IPv4 і IPv6 (з выстаўленым часам жыцця).
  • Перапісана і зроблена больш якая маштабуецца падтрымка Multipath-маршрутызацыі, у якой час пошуку не залежыць ад памеру спісу (O(1)). Новая рэалізацыя Multipath зараз звязана з параметрам ядра ROUTE_MPATH, які замяніў сабой RADIX_MPATH і ўключаны па змаўчанні. Для кіравання Multipath прапанаваны sysctl net.route.multipath.
  • Перароблены рэалізаваны на ўзроўні ядра крыптаграфічны фрэймворк, у якім з'явілася падтрымка сучасных крыптаграфічных алгарытмаў і спрошчаны інтэрфейс для выкарыстання шыфравання ў драйверах і іншых кампанентах ядра. Выдалены састарэлыя алгарытмы ARC4, Blowfish, CAST128, DES, DES, MD5-HMAC і Skipjack. У IPsec і Kerberos спынена падтрымка алгарытмаў, абвешчаных састарэлымі ў RFC 8221 і RFC 6649/8429, у тым ліку 3DES. Выдалены раней абвешчаныя састарэлыя алгарытмы ў падсістэме дыскавага шыфравання geli і cryptodev.
  • У ядро ​​GENERIC уключаная падтрымка драйвераў aesni і armv8crypto для паскарэння дыскавага шыфравання на базе geli пры дапамозе інструкцый AES-NI для архітэктур amd64/i386 і AES-XTS для ARM64.
  • Дададзены драйвер qat для крыптаакселератараў Intel QuickAssist (QAT) і драйвер ossl з рэалізацыяй паскораных праграмных працэдур шыфравання з OpenSSL, аптымізаваных пры дапамозе кода на асэмблеры. У драйверы armv8crypto дададзена падтрымка AES-XTS і AES-GCM з выкарыстаннем адпаведных інструкцый працэсараў ARMv8.
  • Дададзена рэалізацыя TLS (kTLS), якая працуе на ўзроўні ядра FreeBSD, якая дазваляе дамагчыся істотнага павелічэння прадукцыйнасці шыфравання для TCP-сокетаў. Падтрымліваецца версіяў TLS з 1.0 па 1.3. Для шыфравання выкарыстоўваюцца криптодрайверы ядра з падтрымкай AES-CBC ці AES-GCM. Для выкарыстання kTLS у прасторы карыстальніка патрабуецца перазборка OpenSSL з опцыяй WITH_OPENSSL_KTLS.
  • Дададзены новы тып сеткавых буфераў mbuf (network data buffer), які можа прадстаўляць у адным буферы некалькі не адлюстраваных фізічных старонак памяці, што дазваляе павялічыць прадукцыйнасць выкліку sendfile(2) за рахунак скарачэння памеру спісаў mbuf у буферах сокета.
  • У TCP-стэк інтэграваная падтрымка алгарытму прапарцыйнага паніжэння інтэнсіўнасці адпраўкі пакетаў (Proportional Rate Reduction, RFC 6937), які дазваляе хутчэй аднавіць аптымальныя параметры струменя пасля часавых праблем з перадачай дадзеных. Для адключэння PRR прадугледжаны sysctl net.inet.tcp.do_prr.
  • Пашыраны магчымасці гіпервізара Bhyve: Дададзена падтрымка падавання сумеснага доступу да файлаў пры дапамозе VirtIO-9p (VirtFS). Рэалізавана магчымасць працы са снапшотамі віртуальных машын. Дададзена падтрымка прылад PCI HDAudio і дадатковых паслядоўных партоў COM3 і COM4. Выдалены састарэлыя мадэлі прылад bvmconsole і bvmdebug. Падвышаная стабільнасць працы з кліентамі VNC, уключаючы macOS-дадатак "Screen Sharing".
  • У драйверы VirtIO дададзеная падтрымка спецыфікацыі VirtIO V1, што палепшыла сумяшчальнасць гасцявых сістэм з FreeBSD з рознымі эмулятарамі і гіпервізорамі.
  • Для якія прымацоўваюцца да jail-акружэнняў працэсаў забяспечана пераўтварэнне прывязак да CPU (першапачаткова прывязаны да працэсу cpuset будзе заменены з улікам cpuset jail-а і выстаўленых абмежаванняў).
  • Дададзена магчымасць зборкі базавай сістэмы FreeBSD у асяроддзі на аснове іншых аперацыйных сістэм. Неабходнасць зборкі ў іншых аперацыйных сістэмах абумоўлена жаданнем задзейнічаць для тэставання FreeBSD інструментары бесперапыннай інтэграцыі, завязаныя на Linux ці macOS.
  • Прапанаваны новы стэк MMC/SD, заснаваны на фрэймворку CAM і які дазваляе падлучаць прылады з інтэрфейсам SDIO (Secure Digital I/O). Напрыклад, SDIO выкарыстоўваецца ва WiFi і Bluetooth модулях для шматлікіх поплаткаў, такіх як Raspberry Pi 3. Новы стэк таксама дазваляе выкарыстоўваць інтэрфейс CAM для адпраўкі SD-каманд з прыкладанняў у прасторы карыстача, што дае магчымасць ствараць драйверы прылад, якія працуюць на ўзроўні карыстача.
  • Палепшана праца праслойкі для сумяшчальнасці з Linux. Файлы DTS (Device Tree Sources) сінхранізаваныя з ядром Linux 5.8.
  • Дададзена падтрымка NFSv4.2 (RFC-7862) і рэалізаваная магчымасць працы NFS па-над шыфраваным каналам сувязі на базе TLS 1.3, замест выкарыстання Kerberos (рэжым sec=krb5p), які абмяжоўваўся шыфраваннем толькі RPC-паведамленняў і быў рэалізаваны толькі праграмна.
  • Выдалена састарэлая версія адладчыка GDB, які раней быў усталяваны ў каталогу /usr/libexec і прымяняўся ва ўтыліце crashinfo. Замест прадусталяванага GDB для атрымання дэталёвай інфармацыі аб прычынах краху зараз прапануецца ўсталяваць свежую версію GDB з партоў ці пакетаў. Спынена падтрымка адладкі працэсаў праз procfs. Дададзены драйвер netgdb, які дазваляе звяртацца да адладчыка ядра па сетцы.
  • З libc выдаленая небяспечная функцыя gets (пачынальна са стандарту C11 дадзеная функцыя выключаная са спецыфікацыі) і праведзеная карэкціроўка портаў, яшчэ выкарыстоўвалых дадзеную функцыю. Выдалены функцыі cap_random (варта выкарыстоўваць getrandom).
  • Дададзены новы сістэмны выклік copy_file_range, сумяшчальны з рэалізацыяй з ядра Linux і які дазваляе паскорыць капіраванне дадзеных з аднаго файла ў іншы, дзякуючы выкананню аперацыі толькі на боку ядра без папярэдняга чытання дадзеных у памяць працэсу. Сістэмны выклік таксама выкарыстоўваецца ў серверы NFSv4.2 для лакальнага выканання аперацый капіявання на серверы (без перадачы кліенту).
  • У механізме асінхроннага ўводу/высновы POSIX AIO прадстаўлена падтрымка вектарызаваных функцый. У прыватнасці, дададзены сістэмныя выклікі aio_writev і aio_readv, якія дазваляюць рэалізаваць вектарызаваныя эквіваленты функцый aio_read і aio_write.
  • Спынена падтрымка кампанентаў прасторы карыстача для падтрымкі фармату выкананых файлаў a.out на сістэмах з архітэктурай i386. Выдалена ўтыліта elf2aout.
  • Аб'яднаны ўтыліты ping і ping6. У ping дададзена магчымасць усталёўкі параметраў якасці сэрвісу (QoS) праз IP DSCP і Ethernet PCP.
  • Ва ўтыліце freebsd-update забяспечаны паказ прагрэсу загрузкі файлаў і дададзены каманды updatesready і showconfig для праверкі наяўнасці абнаўленняў і паказу канфігурацыі.
  • Праведзена вялікая праца па паляпшэнні падтрымкі сістэм NUMA (Non-Uniform Memory Access).
  • Абноўлены графічныя драйверы і кампаненты графічнага стэка. Вырашаны праблемы з працай акружэнняў на базе пратакола Wayland.
  • Дададзена падсістэма backlight для стварэння драйвераў кіравання падсветкай. Дададзены драйвер pwm-backlight для кіравання падсветкай Pinebook і Pinebook Pro.
  • Падтрымка пратаколу SCTP вынесена ў асобны модуль sctp.ko, які адключаны па змаўчанні ў ядры GENERIC.
  • Для прылад уводу прапанаваны новы драйвер usbhid, выкарыстоўвалы фрэймворк hid для працы з прыладамі USB HID, замест драйвераў ukbd, ums і uhid.
  • У драйверы cpufreq рэалізавана падтрымка тэхналогіі Intel Speed ​​Shift.
  • Дададзена падтрымка новых поплаткаў на базе 64-разрадных CPU ARMv8, уключаючы SoC Broadcom BCM5871X і NXP LS1046A.
  • Для архітэктуры AMD64 рэалізавана падтрымка 57-разрадных віртуальных адрасоў (LA57). Дададзена падтрымка кітайскіх x86 CPU Hygon Dhyana на аснове тэхналогій AMD.
  • Порт для архітэктуры powerpc64 пераведзены на выкарыстанне LLVM і ABI ELFv2 (бінарныя файлы з мінулых версій FreeBSD не змогуць выкарыстоўвацца ва FreeBSD 13). Для powerpc64 партаваны драйверы virtio, ixl, mrsas, aacraid, cpld.
  • Выдалены драйверы для састарэлых Ethernet-адаптараў:
    • bm(4) BMAC
    • cs(4) Crystal Semiconductor CS8900/CS8920
    • de(4) DEC DC21x4x
    • ed(4) NE-2000 and WD-80×3
    • ep(4) 3Com Etherlink III (3c5x9) ISA
    • ex(4) Intel EtherExpress Pro/10 and 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
  • Выдалены драйверы ubsec (крыптаакселератары Broadcom BCM58xx), ufm (FM-цюнэры з інтэрфейсам USB), ctau (Cronix Tau), cx (Cronix Sigma) і vpo (parallel port SCSI).

Крыніца: opennet.ru

Дадаць каментар