Çlirimi iKernel Linux 6.18.

Pas dy muajsh zhvillimi, Linus Torvalds prezantoi lançimin e kernelit Linux 6.18. Ndër ndryshimet më të dukshme: dm-pcache për caching-n e diskut në memorien e energjisë së pavarur (PMEM), heqja e Bcachefs, moda online për verifikimin XFS, driverat e Binder (Android IPC) dhe Tyr (GPU Mali) në Rust, mundësia për krijimin e driverave USB në Rust, optimizimi i caching në alokuesin e memories SLUB, adresimi i hapësirave të emrave përmes deshifruesve të skedarëve, përshpejtimi i mënyrës së swap-it, verifikimi i programeve BPF përmes nënshkrimit digjital, virtualizimi Intel CET në KVM, protokolli rrjet PSP (hibrid TLS dhe IPsec), mbështetje për zgjerimin IP AccECN, optimizimi i stakut UDP.

Në versionin e ri janë pranuar 15035 rregullime nga 2217 zhvillues, madhësia e patch-it është 45 MB (ndryshimet përfshijnë 13142 skedarë, janë shtuar 601897 rreshta kodi, janë hequr 355006 rreshta). Në lëshimin e kaluar ishin 14334 rregullime nga 2118 zhvillues, madhësia e patch-it ishte 46 MB. Rreth 40% e të gjitha ndryshimeve të paraqitura në 6.18 lidhen me driverat e pajisjeve, rreth 16% e ndryshimeve kanë të bëjnë me përditësimin e kodit specifik për arkitekturën harduerike, 12% janë të lidhura me stakun rrjet, 5% me sistemet e skedarëve dhe 3% me nën-sistemet e brendshme të kernelit.

Kryesore të reja në kernelin 6.18 (1, 2, 3):

  • Sistemi i diskut, hyrja/ dalje dhe sistemet e skedarëve
    • Në Device Mapper është shtuar trajtuesi dm-pcache për përdorimin e memories së përhershme (memorie CXL e adresuar përmes pajisjes DAX) si një cache shtesë me performancë të lartë para disqeve tradicionale më të ngadalta ose drive-ve flash. Dm-pcache siguron ruajtjen e përmbajtjes së caches në rast avarie (crash-safe) duke përdorur memorie të energjisë së pavarur, dyfishimin e metadata-ve dhe verifikimin e integritetit të të dhënave dhe metadata-ve përmes kontrolleve CRC32. Aktualisht mbështetet vetëm caching në modin e shkrimit të vonuar (write-back).
    • Kodi i sistemit të skedarëve Bcachefs është hequr nga kernel, i cili tani do të shpërndahet në formën e një moduli të jashtëm, që buildohet duke përdorur instrumentin DKMS (Dynamic Kernel Module Support). Kodi Bcachefs mund të kthehet në kernel pasi Kent Overstreet të dëshmojë në praktikë aftësinë për të bashkëpunuar me zhvilluesit e tjerë të kernelit dhe për të ndjekur rregullat e vendosura për zhvillim.
    • Në thirrjen e sistemit pwritev2() është shtuar flaga RWF_NOSIGNAL, e cila çaktivizon dërgimin e sinjalit SIGPIPE kur shkruhet në kanale të paemëruara ose soketë të ndarë.
    • Në Procfs është shtuar opsioni i montimit 'pidns' për të caktuar hapësirat e emrave të identifikuesve të proceseve (PID namespace). Për shembull: 'mount -t proc -o pidns=/proc/self/ns/pid proc /tmp/proc'.
    • Në XFS është shpallur e qëndrueshme dhe është përfshirë në mënyrë të paracaktuar mundësia e përdorimit të utilitarit fsck për verifikimin dhe korrigjimin e problemeve të zbuluara në mënyrë online, pa heqjen e sistemit të skedarëve. Janë shtuar thirrjet e sistemit file_getattr dhe file_setattr për të ndryshuar atributet e skedarëve të veçantë (çdo inode). Në KConfig, opsionet XFS_SUPPORT_V4 (versioni 4 i XFS) dhe XFS_SUPPORT_ASCII_CI (modus pa ndjeshmëri për karakteret ASCII) janë çaktivizuar si të vjetra. Janë hequr opsionet e montimit attr2, noattr2, ikeep dhe noikeep që janë shpallur të vjetra.
    • Në MD RAID është implementuar një lloj i ri i hartave të bitëve — llbitmap (lockless bitmap), që punojnë pa bllokada dhe sigurojnë performancë më të lartë.
    • Informacioni i lidhur me enkriptimin dhe verifikimin (pikat i_crypt_info dhe i_verity_info) është nxjerrë nga struktura e përgjithshme 'inode'. Ky ndryshim lejon një ulje të konsumit të memories në sistemet e skedarëve që nuk mbështesin enkriptimin dhe verifikimin.
    • Në nën-sistemin FUSE është shtuar mbështetje për thirrjen e sistemit copy_file_range() dhe kopjimin e drejtpërdrejtë të intervaleve duke përdorur madhësinë me tipin 64-bit (përpara ishte mbështetur vetëm madhësia 32-bit). Është shtuar mbështetje për nisin në modin sinqyrë gjatë montimit (FUSE_DEV_IOC_SYNC_INIT).
    • Në FS ext4 është implementuar mundësia e përdorimit të identifikatorëve 32-bit të përdoruesve (uid) dhe grupeve (gid) kur aksesohet blloqet e rezervuara. Janë shtuar operacionet ioctl për caktimin dhe leximin e parametrave të superblokut të FS-ve të montuara (tune2fs do të mund të ndryshojë parametrat në superblok pa të drejta për të shkruar në pajisjen bllok). Janë hequr plotësisht cilësimet e vjetra që janë specifike për ext3.
    • Në f2fs është shtuar opsioni i montimit 'lookup_mode' për të zgjedhur mënyrën e kërkimit: perf — kërkimi përmes hashes, compat — kërkimi linear, auto — zgjedhja automatike. Ndryshimi i mënyrës ka kuptim për konfigurimet me drejtoritë që nuk ndjekin regjimin e karaktereve. Mënyra aktuale e kërkimit mund të merret përmes skedarit '/sys/fs/f2fs//effective_lookup_mode'. Është shtuar mundësia e rezervimit të inode-ve, të disponueshme vetëm për përdoruesit me privilegje.
    • В Overlayfs добавлен режим работы без учёта регистра символов, включаемый на уровне слоёв ФС (выставление для отдельных директорий пока не поддерживается).
    • В BTRFS улучшено распараллеливание операций при высокой нагрузке на чтение и низкой нагрузке на запись, сокращено время фиксации транзакций, значительно сокращено время синхронизации (с минут до десятков секунд). Предоставлена возможность использования блоков (bs), размером больше страницы памяти (ps).
    • В ksmbd (работающий на уровне ядра SMB-сервер) добавлен параметр для ограничения максимального числа соединений с одного adresat IP. smbdirect, smbclient и smbserver переведены на использование типовых структур ядра.
    • В SQUASHFS добавлена возможность использования в системном вызове lseek() опций SEEK_DATA и SEEK_HOLE для поиска данных и пустот в разреженных файлах. В некоторых тестах зафиксировано увеличение поизводительности копирования разреженных файлов до 150 раз.
    • В EXFAT добавлена поддержка ioctl FS_IOC_GETFSLABEL и FS_IOC_SETFSLABEL для чтения и записи меток разделов. Предоставлена возможность изменения опций монтирования во время перемонтирования. Ускорена загрузка битовых карт.
    • В NTFS3 добавлена поддержка ioctl FS_IOC_GETFSLABEL и FS_IOC_SETFSLABEL для чтения и установки меток разделов.
  • Kujtesa dhe shërbimet sistemore
    • В состав принята реализация механизма межпроцессного взаимодействия Binder, написанная на языке Rust. Binder используется в Android для организации взаимодействия между процессами и удалённого вызова методов (один процесс Android может вызвать метод или функцию в другом процессе Android, используя Binder для идентификации, вызова и передачи аргументов между процессами). Код Binder был переписан на языке Rust в рамках инициативы Google по усилению защищённости Android.
    • В SLUB, аллокаторе памяти ядра, реализован опциональный слой кэширования «sheaves», использующий несколько кэшей, каждый из которых привязан к отдельному ядру CPU, что позволяет локализовать одним ядром операции при выделении или освобождении памяти. Подобный кэш повысил производительность выделения и освобождения памяти в ядре, благодаря избавлению от излишних примитивов синхронизации, требуемых при вовлечении разных ядер CPU. В проведённых тестах прирост производительности составил от 6.3% до 31% в зависимости от вида нагрузки.
    • Добавлена возможность создания файловых дескрипторов, отождествлённых с определённым пространством имён (namespace). В отличие от обращения к пространствам имён по идентификаторам (/proc/<pid>/ns/), файловый дескриптор закрепляется за конкретным экземпляром пространства имён и исключает ситуацию, когда идентификатор повторно выделен и указывает уже на другой объект. По аналогии с использованием pidfds открытие файловых дескрипторов, ссылающихся на пространства имён, осуществляется через функции open_by_handle_at() и name_to_handle_at().
    • Реализован механизм «Swap Table», позволяющий повысить производительность подкачки. Ускорение достигается благодаря уменьшению конкуренции за доступ к кэшу подкачки, более эффективного поиска в кэше и снижения фрагментации. Бэкенд на базе Swap Table задействован для кэширования подкачки вместо бэкенда XArray и позволил в среднем на 5-20% повысить производительность. В тесте usemem пропускная способность возросла на 17-28%, в тесте на многопоточную пересборку ядра время сборки уменьшилось на 1.12-3.19%, тест redis-benchmark с BGSAVE показал увеличение числа обрабатываемых запросов на 6-7%.
    • Подсистема Zswap переведена на прямое использование системы выделения памяти zsmalloc вместо слоя zpool, который больше нигде не используется и теперь удалён из ядра.
    • Для управления поведением загрузчика микрокода на системах x86 реализована опция командной строки «microcode=список флагов». В текущем виде новая опция пришла на смену «microcode.force_minrev» и также позволяет задать минимально допустимую для загрузки версию микрокода.
    • Началась работа по реорганизации излишне раздутой структуры «page», используемой для управления страницами оперативной памяти. Добавлен тип ‘memdesc_flags_t» для полей с универсальными флагами, которые смогут использоваться после ожидаемого в будущем выделения из структуры «page» отдельных структур для slab и фолиантов (folio).
    • Для архитектуры nios2, применяемой в процессорах Altera Nios II (soft-процессор на базе FPGA), реализована поддержка системного вызова clone3().
    • Në konfigurimin e bërthamës (KConfig) është shtuar atribute ‘transitional’, e cila mund të përdoret për të shënuar cilësimet që nuk shfaqen në ndërfaqet e përdoruesit, si ‘make menuconfig’, dhe që nuk përfshihen në skedarët e krijuar të konfigurimit. Qëllimi kryesor i atributit është të thjeshtojë ribërjen e opsioneve duke ruajtur përputhshmërinë prapa.
    • Versioni minimal i kompilatorit Clang, me të cilin mund të ndërtohet bërthama, është rritur në mjetin LLVM 15. Në Debian 12 dhe Ubuntu 22.04, ofrohet LLVM 14.
    • Është vazhduar transferimi i ndryshimeve nga dega Rust-for-Linux, e lidhur me përdorimin e gjuhës Rust si gjuhë e dytë për zhvillimin e piloteve dhe moduleve të bërthamës (mbështetje Rust nuk është aktive nga e drejta, dhe nuk çon në përfshirjen e Rust si detyrues për varësitë e ndërtimit të bërthamës). Në versionin e ri për kodin në gjuhën Rust janë realizuar operacione atomike me memorien, struktura maple tree, mundësia për të krijuar skedarë DebugFS dhe funksione për manipulimin e hartave bitore. Ankesat ndaj API-së për zhvillimin e piloteve janë zgjeruar. Është shtuar një set i plotë abstraksionesh për zhvillimin e piloteve për pajisjet USB (shembujm i pilotit USB). Në mjetin perf është shtuar mbështetje për simbolet e debimit të gjeneruara nga kompaktori rustc.
  • Virtualizimi dhe siguria
    • Është shtuar mbështetje për verifikimin kriptografik të BPF programeve të ngarkuara përmes nënshkrimeve digjitale. Në të ardhmen, kjo mundësi do të zgjerohet me mjete për përcaktimin e rregullave për ngarkimin e BPF programeve të nënshkruara dhe ofrimin e mundësive për përdoruesit pa privilegje për të përdorur BPF programet e verifikuara.
    • Në hipervizorin KVM është realizuar mbështetje për virtualizimin e shtrirjes Intel CET (Control-flow Enforcement Technology), e cila përdoret për të mbrojtur ndaj eksploiteve që përdorin metoda të programimit të orientuar nga kthimi (ROP - Return-Oriented Programming). Thelbi i mbrojtjes është se pas kalimit të kontrollit në një funksion, adresa e kthimit ruhet nga procesori jo vetëm në stekën e zakonshme, por edhe në një stekë të veçantë, e cila nuk mund të ndryshohet drejtpërdrejt.
    • Është shtuar mundësia për të përdorur më shumë se 255 CPU në sistemet e mysafirëve që punojnë nën hipervizorin Bhyve në hostet me FreeBSD 15.
    • Është shtuar një ndërfaqe dibs (Direct Internal Buffer Sharing) për ndarjen e menaxhuar të bufeve brenda një ambienti të izoluar, siç është hipervizori ose instanca e bërthamës Linux.
    • Në nënstrukturën e auditit është shtuar mbështetje për funksionimin me disa module LSM (Moduli i Sigurisë Linux) të aktivizuara në të njëjtën kohë.
    • Është shtuar një driver virtio spi-virtio për qasje në pajisjen SPI (Serial Peripheral Interface) nga makinave virtuale.
    • Në hipervizorin KVM është shtuar mbështetje për modin SEV-SNP CipherText Hiding, që parandalon leximin e ciphertext-it të memories së sistemeve të mbrojtura nga CPU të paautorizuar.
    • Është shtuar një driver qtee për ambientet TEE (Trusted Execution Environment) të çipave Qualcomm.
  • Sistemi i rrjetit
    • Është shtuar mbështetje për enkriptimin e lidhjeve TCP, duke përdorur protokollin PSP (Protokolli i Sigurisë PSP), i zhvilluar nga kompania Google për enkriptimin e trafikut midis qendrave të të dhënave. PSP siguron enkriptim, kontrollin kriptografik të integritetit dhe autentifikimin e burimit, duke realizuar një kombinim të veçorive të protokolleve TLS dhe IPsec. Në PSP, përdoret enkriptimi në nivelin e lidhjeve të veçanta rrjetës, jo të gjithë kanalit të komunikimit. PSP përdor çelësa të veçantë të enkriptimit për lidhje TCP të ndryshme për një izolim të rreptë të trafikut nga aplikacionet dhe menaxhuesit e ndryshëm. Për të ulur ngarkesën në CPU, mbështetet transferimi i operacioneve të enkriptimit dhe dekriptimit në anën e kartave të rrjetit (offload). Si transport për transferimin e të dhënave përdoret protokolli UDP, mbi të cilin kalon përmbajtja e paketës origjinale TCP.

      Çlirimi iKernel Linux 6.18.
    • Është shtuar mbështetje fillestare për zgjerimin AccECN (Accurate Explicit Congestion Notification), i cili përfaqëson një version të përmirësuar të zgjerimit ECN, duke lejuar hostet në rast ngarkese të shënojnë paketat IP në vend që t'i hedhin ato, duke dhënë mundësinë për të identifikuar fazën fillestare të ngurtësimit në kanalet e komunikimit pa humbur paketa. Zgjerimi fillestar ECN ka një kufizim që lejon vetëm një sinjal ngarkese për një cikël të vetëm dërgimi-marrjeje TCP (RTT, Round-Trip Time, dërgimi i kërkesës dhe marrja e përgjigjes). AccECN e heq këtë kufizim dhe lejon marrësin të transferojë dërguesit më shumë se një etiketë për ngarkesën në headerin e pakestres TCP. Algoritmet e menaxhimit të ngarkesës mund të përdorin informacionin e marrë për të reaguar më saktë ndaj ngarkesave dhe për të mos resortuar në ulje të papritur të intensitetit të dërgimit të paketeve në rastin e ngarkesës së vogël.
    • В UDP-стеке оптимизирована обработка входящих пакетов в условиях DDoS-атак, приводящих к поступлению большого числа пакетов в один или несколько UDP-сокетов. Внесённые оптимизации, такие как снижение конкурирующих блокировок, оптимизация размещения структур данных в памяти и задействование блокировок, учитывающих архитектуру NUMA (Non-Uniform Memory Access), позволили повысить производительность при приёме UDP-пакетов на 47% и выше в экстремальных условиях.
    • Реализована возможность отключения кэширования ввода/вывода в NFS-сервере, что позволяет использовать NFS-сервер в системах с небольшим объёмом памяти (например, урезанных облачных окружениях). Отключение кэша также может быть полезно на нагруженных NFS-серверах для избежания вытеснения из кэша данных, связанных с локальными накопителями, из-за освобождении памяти для кэша NFS.
    • Максимальный размер буферов поступающих и отправляемых пакетов для сетевых сокетов (net.core.rmem_max и net.core.wmem_max) увеличен с 2 МБ до 4 МБ. Выставляемый по умолчанию размер не изменился (net.core.rmem_default и net.core.wmem_default = 2 МБ).
    • Добавлен драйвер для ускорителя сетевых операций Qualcomm PPE (Packet Processing Engine), применяемого в SoC Qualcomm IPQ9574.
  • Pajisjet
    • В состав ядра принят драйвер Tyr, написанный на языке Rust и обеспечивающий работу с GPU ARM Mali, в которых применяется технология CSF (Сommand Stream Frontend), таких как Mali G310, G510 и G710. Драйвер пока не готов для постоянного использования обычными пользователями и рассматривается как экспериментальный прототип для тестирования абстракций для разработки драйверов на языке Rust.
    • В драйверы для устройств ввода с интерфейсом HID (Human interface device) добавлена поддержка тачпадов с тактильной связью и датчиками силы нажатия.
    • Продолжена работа над drm-драйвером (Direct Rendering Manager) Xe для GPU на базе архитектуры Intel Xe, которая используется в видеокартах Intel семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake. В новой версии добавлен интерфейс madvise, включена поддержка SR-IOV PF (Single Root I/O Virtualization Physical Function), добавлена поддержка режима Intel PSMI для валидации оборудования, обеспечена обработка передаваемой прошивками информации об ошибках, реализован профиль энергопотребления SLPC, добавлена поддержка загрузки вспомогательных прошивок (например, к контроллеру кулера и регулятору напряжения) во время проверки драйвера.
    • В драйвер AMDGPU добавлена поддержка устройств с APU Cyan Skillfish, улучшена поддержка AMD GCN 1.0, реализована совместимость с инструментарием criu, в sysfs добавлены метрики температуры, разрешены запросы ремапинга MMIO из пространства пользователя.
    • В драйвере i915 включена поддержка чипов семейства Wildcat Lake и улучшена работа с GPU Jasper Lake, Elkhart Lake, Gen7 и Gen6.
    • В драйвере Nouveau по умолчанию задействованы GSP-прошивки NVIDIA и улучшена обработка ошибок.
    • Продолжена интеграция компонентов драйвера Nova для GPU NVIDIA, оснащённых GSP-прошивками, используемыми начиная с серии NVIDIA GeForce RTX 2000 на базе микроархитектуры Turing. Драйвер написан на языке Rust. В новой версии расширена поддержка прошивок GSP, улучшена реализация макроса «register!», добавлена поддержка классов PCI-устройств и идентификаторов производителей.
    • Добавлен драйвер rocket для NPU ускорителей, применяемых в SoC Rockchip RK3588.
    • Добавлен параметр ядра «boot_display» для выбора устройства вывода для отображения процесса загрузки на системах с несколькими GPU.
    • В драйвере vesadrm реализована поддержка 8-разрядных палитр.
    • В драйвер msm добавлена поддержка GPU Adreno 663 и реализована поддержка технологии снижения энергопотребления IFPC (Inter Frame Power Collapse).
    • В драйвер panthor добавлена поддержка GPU Mali-G710, Mali-G510, Mali-G310, Mali-Gx15, Mali-Gx20 и Mali-Gx25.
    • Добавлена поддержка звуковых систем ASoC Qualcomm Glymur и PM4125, Realtek RT1321, Shanghai FourSemi FS2104/5S, Texas Instruments PCM1754 и TAS2783A, qcs615, CS35L56 B2, tas2118, tas2x20, tas5825. Добавлена поддержка звуковых USB-карт Tascam US-144mkII и Presonus S1824c.
    • Добавлена поддержка ARM CPU Cortex-A320/A520AE/A720AE и C1-Nano/Pro/Premium/Ultra.
    • Добавлена поддержка ARM-плат, SoC и устройств: Apple M2 Pro, M2 Max и M2 Ultr, Sony Xperia SP, Samsung Galaxy S22, Samsung Galaxy S20 FE, ASUS Eee Pad Slider SL101, Lenovo ThinkBook 16, HP Omnibook X14 X1P42100, Dell Inspiron 7441 / Latitude 7455, Sige1, NanoPi Zero2, Axis Artpec8, NXP i.MX91, ROCK 2A/2F, Qualcomm Lemans Auto, Renesas RZ/T2H, RZ/N2H, RZ/T2H и RZ/N2H, Aspeed AST27xx, Meta Clemente BMC, Netcube Nagami som, Tqma91xx, Ultratronik i.MX8MP Ultra-MACH, i.MX8ULP EVK9, Buffalo WXR-1750DHP,

Në të njëjtën kohë, Fondi i Lirë i Softuerit Latinoamerikan formoi versionin e plotë të lirë të kernelit 6.18 — Linux-libre 6.18-gnu, i pastruar nga elementët e firmware-it dhe drejtuesve që përmbajnë komponentë ose segmente kodi të pa lira, të cilat janë të kufizuara nga prodhuesi. Në publikimin 6.18, kodi për pastrimin e blob-ëve në drejtuesit Nova-Core, Intel XE, TI PRUeth, Lantiq GSWIP, Marvell WiFi-Ex është përmirësuar. Është kryer pastrimi i emrave të blob-ëve në skedarët dts (devicetree) për çipat ARM të Qualcomm, Mediatek dhe TI ARM64. Ngarkimi i blob-ëve në drejtuesit e rinj FourSemi fs2104/5s, TI TAS2783 dhe Qualcomm GENI është neutralizuar.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster