Linux 6.19

Linux 6.19

После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 6.19. Med med videnis ændringer inkluderer: Live Update Orchestrator subsystemet, PCIe Link Encryption understøttelse, systemopkald listns, Zero-Copy Receive-tilstand i io_uring, ARM-udvidelse MPAM understøttelse, klp-build til generering af live-patches, støtte for LoongArch32-arkitektur, QoS for s2idle, audit subsystem optimering, Intel LASS til beskyttelse mod Spectre, SHA-3 og BLAKE2b hash understøttelse, Confidential VMBus mekanisme, TX-optimeringer i netværk subsystemet, CAN XL protokol, API til hardwareaccelereret HDR-udgang.

I meddelelsen om den nye version nævnte Linus, at den næste kerneludgivelse vil få nummer 7.0, da der i 6.x-sektionen er blevet opbygget tilstrækkeligt mange udgivelser til at ændre det første tal i versionsnummeret (den tidligere version 6.0 blev dannet umiddelbart efter 5.19). Ændringen af nummersystemet sker af æstetiske grunde og er et formelt skridt, der fjerner ubehag ved det store antal udgivelser i rækken. Linus jokede med, at han bliver forvirret af de store tal, for dem har han ikke fingre nok til. Samtidig er der dog en formel anledning til at ændre versionsnummeret betydeligt, da vi starter med den næste udgivelse vil understøtte Rust løst overføre fra eksperimentelle til kernefunktioner.

Den nye version inkluderer 15.657 rettelser fra 2.237 udviklere, patchstørrelsen er 52 MB (ændringer berørte 13.682 filer, tilføjet 794.649 linjer kode, fjernet 335.498 linjer). Den tidligere udgivelse omfattede 15.035 rettelser fra 2.217 udviklere, patchstørrelsen var 45 MB. Cirka 40% af alle ændringer præsenteret i 6.19 vedrører enhedsdrivere, cirka 13% af ændringerne vedrører opdatering af kode, der er specifik for hardwarearkitekturer, 12% relaterer sig til netværksstakken, 5% til filsystemer og 3% til de interne subsystemer af kernen.

Hovednyhederne i kernen 6.19 (1, 2, 3):

  • Дисковая подсистема, ввод/вывод и файловые системы
  • Pomnilnik in sistemske storitve
    • V jedru je vključena podsistem Live Update Orchestrator (LUO), ki omogoča polno ponovni zagon in posodobitev jedra brez ustavitve delovanja in brez izgube stanja sistema, naprav in procesov. Podsistem LUO temelji na predhodno dodanem mehanizmu v jedro KHO (Kexec HandOver) in addition to the capability of launching a new kernel from an old one without losing the system's state addresses tasks such as preserving the state of devices and RAM, as well as ensuring continuity of operations related to DMA and interrupt handling. The state is preserved up to the switch to the new kernel and is restored after engaging the new kernel without interrupting continuous operations with devices undertaken by the system and applications in user space.

    • Dodano the system call listns() to output a list of existing namespaces in the system without needing to iterate through /proc//ns/ for all processes.

    • The io_uring asynchronous I/O system has added support for placing elements of different sizes in the submission queue (SQE, Submission Queue Entry), similar to how mixing the size of content in the completion queue (CQE, Completion Queue Event) was allowed in the previous release. Previously, all elements in the queue had to be of one size, leading to excessive memory consumption due to the need to use the maximum size for all elements in the queue.

      io_uring has also introduced support for the zcrx (Zero-Copy Receive) mechanism to receive data without copying between the kernel and user space. Support for memory layout requests for SQ (Submission Queue) and CQ (Completion Queue) has been added, allowing retrieval of information about the size of the ring buffer necessary when allocating memory by the user, using the IORING_SETUP_NO_MMAP and IORING_MEM_REGION_TYPE_USER flags.

    • For quick stack tracing using tools like perf, support for the SFrame format with information on call stack unwinding has been added. SFrame is already supported in GCC and binutils, does not degrade performance, and, unlike the DWARF format, contains only the minimal set of information necessary for stack tracing.

    • in the perf utility je dodana support for unified descriptions of metrics and events in JSON format, as well as deferred unwinding of the call stack in user space.

    • Za AMD processors a data substitution mechanism in the cache has been implemented, allowing input/output devices to directly place data into the L3 cache of the CPU without first placing it in RAM.

    • Dodana je podpora za MPAM (Memory System Resource Partitioning and Monitoring), razširitev arhitekture niza ukazov ARMv8-A za označevanje vsakega dostopa do pomnilnika z identifikatorjem razdelka (PARTID, Partition ID) in identifikatorjem skupine nadzora (PMG, Monitoring Group ID). V povezavi s PARTID lahko omejimo porabo virov, kot so širina pasu pomnilnika ali velikost predpomnilnika, tako da neka skupina nalog ne zasede vseh virov. V kontekstu nadzora se lahko kombinacija PMG in PARTID uporablja za sledenje porabi pomnilniških virov pri določenih vrstah obremenitev.

    • V primeru nenadne prekinitve procesa po prejemu signala lahko drug proces, ki ima pidfd končanega procesa, zdaj določi številko signala, ki je povzročila prekinitev procesa.

    • Preoblikovana je bila implementacija ponovljivih zaporedij (ponovljiva zaporedja), ki omogočajo aplikacijam organizacijo pseudo-atomarne neprekinjene izvedbe skupine navodil (v primeru prekinitve z drugim tokom se poskusi ponovna izvedba zaporedja). Nova implementacija se ponaša z večjo zmogljivostjo.

    • Za BPF-programov so izvedeni navodila BPF_JMP, BPF_X in BPF_JA za izvajanje posrednih prehodov na določeno mesto iz tabele prehodov. Dodana je bila koncept dinamčnih kazalcev (dynptr), ki omogočajo branje podatkov iz strukturiranih datotek. Dodana možnost pripenjanja več bajtov z metapodatki na omrežne pakete.

    • Moduli v jeziku Python, ki se uporabljajo za obdelavo dokumentacije jedra, so bili premaknjeni v ločen imenik tools/lib/python.

    • Dodana funkcija mempool_alloc_bulk() za varno dodeljevanje elementov iz pomnilniškega bazena hkrati za več objektov.

    • Nadaljevanje prenos sprememb iz veje Rust-for-Linux, povezanih z uporabo jezika Rust kot drugega jezika za razvoj gonilnikov in jedrskih modulov (podpora za Rust ni privzeto aktivirana in ne vodi do vključitve Rust-a med obvezne odvisnosti za sestavljanje jedra). V novi različici je v jedro vgrajena knjižnica „syn“ s parserjem Rust-kode, ki poenostavi pisanje zapletenih makrov. Razširjene so možnosti knjižnic kernel, pin-init in rbtree. Dodana je knjižnica num s tipom Integer za manipulacijo s celimi števili. V makru module! je dodana podpora za celoštevilske parametre. Izvedena je bila možnost določanja parametrov pri nalaganju jedrskih modulov, napisanih v Rustu. Izvedene so bile abstrakcije za podsistem I2C in PWM (Pulse Width Modulation).

    • Dodano макрос at_least (напр. param[at_least 7]), указывающий минимально допустимый размер массива, передаваемого в функцию. Если в функцию будет передан массив с меньшим количеством элементов, то компилятор выведет предупреждение.

    • V sestavi vključen скрипт klp-build для генерации модулей ядра, вносящих изменения в работающее ядро (livepatch), на основе файла с патчем. В утилиту objtool внесены изменения, необходимые для создания live-патчей.

    • V User-mode Linux (запуск ядра как пользовательского процесса) добавлена ограниченная поддержка многопроцессорности, но потоки внутри одного процесса пока не могут выполняться одновременно. Začelo se je портирование User-mode Linux на библиотеку nolibc.

    • Dodana поддержка архитектуры LoongArch32 (LA32R, LA32S) в дополнение к LoongArch64.

    • Dodana возможность выставления QoS-лимитов на интенсивность пробуждения процессора в режиме экономии энергии s2idle (Suspend-To-Idle), замораживающего выполнение процессов в пространстве пользователя, но оставляющего активными некоторые обработчики в ядре.

    • Dodana поддержка управления таблицами страниц памяти для контроллеров IOMMU (Input-Output Memory Management Unit), выполняющих трансляцию виртуальных адресов, видимых аппаратным устройством, в физические адреса, с возможностью фильтровать операции DMA по виртуальным адресам, а также ограничивать и изолировать операции ввода-вывода.

    • В событиях трассировки системных вызовов реализована возможность чтения буферов из пространства пользователя и включения их содержимого (например, имён файлов) в результат трассировки.

    • **Сторожевые страницы памяти(( (guard page), обращение к которым вызывает исключение и аварийное завершение процесса (SIGSEGV), теперь помечаются особой меткой в файле /proc/PID/smaps.

    • Dodana возможность управления крупными страницами памяти (transparent huge page) в приватной памяти зонированных устройств.

    • В устройстве zram, ki se uporablja za stiskano shranjevanje strani za zamenjavo v pomnilniku, je bila uvedena поддержка вытеснения нескольких структур «bio» (Block I/O) в пакетном режиме (writeback batching).

    • В состав включён шрифт «Terminus 10×18», улучшающий читаемость информации с консоли на экранах ноутбуков со средним разрешением (1440×900).

    • Znatno оптимизирована rad подсистемы аудита — отмечается снижение накладных расходов в два раза.

  • Virtualizacija in varnost
    • Добавлена поддержка предоставляемой процессорами Intel возможности для разделения linijskega prostora naslovov (LASS, ločevanje linearnega prostor-naslova), kar omogoča hardversko ločevanje obsegov naslovov uporabniškega in jedrnega prostora za povečanje varnosti. Naslovni prostor se ločuje po višjem bitu naslova - polovica naslovnega prostora z nastavljenim višjim bitom se uporablja za jedro, spodnja polovica pa za uporabniški prostor. V zgodnji fazi izvrševanja ukazov (pred spekulativnim izvrševanjem) se izvede preverjanje veljavnosti dostopa iz uporabniškega prostora do naslovov z višjim bitom in obratno. Takšna ločitev omogoča blokiranje uhajanja pomnilnika jedra v uporabniški prostor po stranskih kanalih tudi pri spekulativnem izvrševanju ukazov, kar omogoča uporabo LASS za zaščito pred napadi Meltdown in Spectre, brez večjih stroškov.
    • Dodana je možnost vključitve razširitev krepitev varnosti vodila PCI Express – PCIe Link Encryption in PCIe Device Authentication, kar omogoča potrjevanje pristnosti in šifriranje komunikacijskega kanala med napravo PCIe in virtualnim strojem, zaščitenim s pomočjo mehanizmov Intel TDX (Trusted Domain Extensions) in AMD SEV-SNP (Secure Nested Paging). Uvedene tehnologije ne omogočajo prestrezanja, analiziranja in ustvarjanja podatkov v DMA prometu ob dostopu do gostiteljske sisteme ali drugih naprav.
    • V vgrajeni kriptografski knjižnici je dodana podpora za algoritme SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), SHAKE128, SHAKE256 in BLAKE2b.
    • Za LSM module (Linux Security Modules) in posebej za SELinux, je bila uvedena možnost sledenja ustvarjanju deskriptorjev memfd za uporabo varnostnih politik na povezanih objektih.
    • V LSM modul IPE (Uveljavitev politik celovitosti), ki določa skupno politiko zagotavljanja celovitosti za celoten sistem, je bila dodana podpora za zastavico AT_EXECVE_CHECK v funkciji execveat(), ki vključuje preverjanje celovitosti skripte pred njenim izvajanjem s pomočjo interpretatorja.
    • Dodani so bili primitivni scoped_user_read_access(), scoped_user_write_access in scoped_user_rw_access() za omejen dostop do podatkov v uporabniškem prostoru s zaščito spekulativnih napadov.
    • Dodana podpora za mehanizem Confidential VMBus, used in the HyperV hypervisor for secure interaction without interference between a guest system running in confidential mode (with memory encryption and register isolation based on AMD SNP and Intel TDX technologies) and the paravisor responsible for accessing devices processing confidential data.
    • Dodana the ability to transmit information about a process that has terminated unexpectedly (for coredump generation) through the pidfd mechanism. The PIDFD identifier is linked to a specific process and does not change, whereas the PID may be associated with another process after the current process that is associated with this PID has ended. Using pidfd allows blocking the substitution of napadi the unexpectedly terminated suid process with another process, creating a race condition at the moment after the kernel begins handling the emergency termination but before the handler in user space checks the process parameters.
  • Mrežna podsistem
    • In the network subsystem внесены optimization to enhance data transfer efficiency (TX). Eliminating spin-locks from the __dev_queue_xmit() function and using a lock-free llist structure enabled a fourfold increase in performance under heavy load and doubled packet sending intensity while reducing CPU load by half.
    • Dostavljena je možnost izklopa for individual network sockets, system limits on memory usage (in this case, common memory limits set for individual containers will be used). To manage the disabling of limits, the sysctl net.core.bypass_prot_mem has been proposed along with the SK_BPF_BYPASS_PROT_MEM flag in the bpf_setsockopt function.
    • Dodana podpora za razširitev RFC 5837, adding data about incoming network interfaces to ICMP messages Time Exceeded returned when a packet's time to live (TTL) expires for more detailed information during route tracing with the traceroute utility.
    • Dodana support for continuous active polling in a separate kernel thread to extract descriptors from RX/TX queues for applications requiring minimal delays.
    • Dodana podpora za protokol CAN XL (Controller Area Network eXtended Length), where the data field size has been increased to 2048 bytes to ensure integration with TCP/IP networks, enabling Ethernet frame tunneling and adding support for pulse-width modulation, ki je omogočila prenos podatkov s hitrostmi 20 Mbit/s in več.
    • Dodana podpora strukturi sockaddr_unsized, različice strukture sockaddr, ki uporablja tabelo z fleksibilnimi elementi namesto tabel z fiksno velikostjo (sa_data[] namesto sa_data[14], ki se v bistvu uporabljala za sklice na druge večje strukture).
    • Dodana je bila možnost uporabe funkcionalnosti getsockname in getpeername preko podsistema io_uring.
    • Dodani so bili sysctl net.ipv4.tcp_rcvbuf_low_rtt in net.ipv4.tcp_comp_sack_rtt_percent za optimizacijo TCP.
    • Dodana podpora povezavam s prepustnostjo 1600 Gbps (1.6T).
  • Oprema
    • V podsistem DRM (Direct Rendering Manager) je bil dodan API za izkoriščanje strojnih možnosti pretvorbe barv, kar omogoča, da se takšne pretvorbe izvedejo brez izvajanja preko shaderjev ali izvajanja kode na CPU-ju. Za prikazovanje vsebine na HDR-monitorju lahko zdaj zapletene barvne pretvorbe izvede nadzornik zaslona v fazi pred in po mešanju plasti (blending), namesto programskega kompozitinga vsebine v končni izhodni buffer. Poleg zmanjšanja stroškov in porabe energije pri organizaciji izhoda v HDR, se predlagana funkcionalnost lahko uporablja za pravilno reprodukcijo barv v video ali slikovnih urejevalnikih.
    • Dodano drver ethosu za NPU Arm Ethos U65 in U85, namenjen za strojno pospeševanje izvajanja AI-modelov.
    • V drajverju i915 za GPU Lunar Lake in novejše je bila dodana podpora za strojno izboljšanje ostrine slike (Sharpening).
    • Nadaljuje se delo na drm-drajverju (Direct Rendering Manager) Xe za GPU na osnovi arhitekture Intel Xe, ki se uporablja v grafičnih karticah Intel serije Arc in vgrajeni grafiki, od procesorjev Tiger Lake naprej. Začela se je osnovna podpora za arhitekturo Xe3P, ki se uporablja v GPU Crescent Island in družini procesorjev z vgrajeno grafiko Nova Lake.
    • V drajverju AMDGPU je bila realizirana polna podpora za grafične kartice AMD družine GCN 1.0 „Southern Island“ in 1.1 „Sea Islands“, za delo s katerimi je bil prej uporabljen drajver Radeon. Drajver AMDGPU je dosegel pariteto glede možnosti z drajverjem Radeon in je bil privzeto aktiviran za navedene GPU. Kartice GCN 1.x so bile izdelane od leta 2012 do 2019 in vključujejo takšne modele, kot so Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790/8870 in druge grafične kartice družin Radeon Rx 200/Rx 300. Poleg povečanja производительность увеличилась в среднем на 24%, переход на AMDGPU обеспечил поддержку графического API Vulkan 1.3 для данных GPU. Кроме того, в AMDGPU добавлена поддержка аналоговых коннекторов и Video Coding Engine 1.0, а также по умолчанию используется стек DC (Display Core) для GPU на базе микроархитектуры Bonaire (Radeon HD 7790).
    • В драйвере Nouveau je bila uvedena добавлена поддержка аппаратного ускорителя NVJPG, используемого в SoC Tegra210.
    • В драйвере Panthor je dodana добавлена поддержка GPU Mali-G1 и начальная поддержка чипа MediaTek MT8196.
    • Dodana добавлена поддержка звуковой подсистемы чипов Intel Nova Lake S, ноутбуков HP с HDA CS35L41, а также звуковых интерфейсов CIX IPBLOQ HD и Onkyo SE-300PCIE.
    • Продолжена интеграция компонентов драйвера Nova для GPU NVIDIA с GSP-прошивками, используемыми с серии NVIDIA GeForce RTX 2000 на базе микроархитектуры Turing. Драйвер написан на языке Rust. В новой версии начата работа над RPC и završena. реализацией загрузки сопроцессора GSP (GPU System Processor).
    • Dodana добавлена поддержка ARM-плат, SoC и устройств: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 варианта плат Enclustra Mercury.
    • Добавлена поддержка смартфонов и планшетов на базе SoC Mediatek MT6582 (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) и Qualcomm MSM8939 (ASUS ZenFone 2). Также добавлена поддержка ноутбуков на SoC Qualcomm sdm850, таких как Huawei MateBook E 2019.
    • Добавлена поддержка SoC и плат на базе архитектуры RISC-V: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.

Istovremeno latinskoamerička Fondacija slobodnog softvera je formirala varijantu полностью свободное ядро 6.19 — Linux-libre 6.19-gnu, очищенное от элементов прошивок и драйверов с несвободными компонентами или частями кода, область применения которых ограничена производителем. В выпуске 6.19 из звуковой подсистемы SDCA удалён код для загрузки бинарных прошивок. Обновлён код очищения blob-ов в драйверах Intel XE, Nova-Core, Qualcomm Iris, Venus и Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 и звуковых кодеках TI tas2783. Выполнена очистка имён blob-ов в dts-файлах (devicetree) для ARM-чипов. Прекращена очистка драйвера STM C8SECTPFE DVB, удалённого из ядра.

Izvor: linux.org.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster