После двух месяцев разработки Линус Торвальдс релиз ядра . Med među najistaknutijim promjenama: integracija VPN sučelja WireGuard, podrška za USB4, prostori imena za vrijeme, mogućnost izrade handlera za TCP preopterećenje uz pomoć BPF, početna podrška za MultiPath TCP, uklanjanje problema s godinom 2038 iz kernela, mehanizam «bootconfig», datotečni sustav ZoneFS.
U novu verziju je uključeno 13702 ispravki od 1810 developera,
veličina patch-a je 40 MB (promjene su se dotakle 11577 datoteka, dodano je 610012 linija koda,
uklonjeno je 294828 linija). Oko 45% svih predstavljenih u 5.6
je povezanih z gonilniki naprav, približno 15 % sprememb se nanaša
odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 12%
se odnosi na mrežni stog, 4% na datotečne sustave i 3% na unutrašnje
podsystemi jedra.
:
- Mrežna podsistem
- implementaciju VPN sučelja , koje se temelji na suvremenim metodama enkripcije (ChaCha20, Poly1305, Curve25519, BLAKE2s), lako je za korištenje, jednostavno, dobro se pokazalo u nizu velikih implementacija i osigurava vrlo visoke performanse (3,9 puta brže od OpenVPN-a po propusnosti). U WireGuardu se primjenjuje koncept rutiranja prema enkripcijskim ključevima, koji podrazumijeva vezanje privatnog ključa za svaki mrežni sučelje i korištenje za povezivanje javnih ključeva. Razmjena javnih ključeva za uspostavljanje veze provodi se analogno SSH-u. Neophodni kriptografski primitivni za rad WireGuarda iz biblioteke u sastavu standardnog Crypto API i u sastavu kernela .
- integracija komponenti potrebnih za podršku MPTCP (MultiPath TCP), proširenje TCP protokola za organizaciju TCP veze s dostavom paketa istovremeno kroz više ruta putem različitih mrežnih sučelja, vezanih za različite IP adrese. Za mrežne aplikacije, ovakva agregirana veza izgleda kao obična TCP veza, a sva logika podjele tokova se izvršava putem MPTCP-a. Multipath TCP može se koristiti kako za povećanje propusnosti, tako i za povećanje pouzdanosti. Na primjer, MPTCP se može koristiti za prijenos podataka na pametnom telefonu koristeći istovremeno WiFi i 4G veze ili za smanjenje troškova povezivanjem poslužitelja korištenjem više jeftinih veza umjesto jedne skupe.
- podrška za disciplinu obrade mrežnih redova sch_ets (, IEEE 802.1Qaz), ki omogoča razporeditev prepustnosti med različnimi razredi prometa. Če je obremenitev določenega razreda prometa nižja od zagotovljene prepustnosti, ETS drugim razredom prometa omogoča uporabo razpoložljive (neizkoriščene) prepustnosti. Qdisc sch_ets je nastavljen kot disciplina PRIO in uporablja razrede prometa za določanje strogih in skupnih omejitev prepustnosti. ETS deluje kot kombinacija disciplin. in — ko so na voljo strogo omejeni razredi prometa, se uporablja PRIO, vendar če v čakalni vrsti prometa ni, deluje kot DRR.
- Dodana je nova vrsta BPF programov. , ki omogoča izvajanje obdelovalcev funkcij jedra preko BPF. Trenutno je to možnost že mogoče uporabiti za izvajanje algoritmov nadzora preobremenitve TCP v obliki BPF programov. Kot primer. BPF program z implementacijo algoritma .
- Je sprejet v jedro. , ki prenaša orodje iz ioctl() na uporabo Nov vmesnik poenostavi dodajanje razširitev, izboljša obravnavo napak, omogoča pošiljanje obvestil ob spremembi stanja, poenostavi interakcijo med jedrom in prostorom uporabnika ter zmanjšuje število sinhroniziranih poimenovanih seznamov.
- Dodana je implementacija algoritma za upravljanje omrežnimi čakalnimi vrstami FQ-PIE (Flow Queue PIE), ki je usmerjen v zmanjšanje negativnega vpliva medpomnjenja paketov na mejnih omrežnih napravah (bufferbloat). FQ-PIE izkazuje visoko učinkovitost pri uporabi v sistemih s kabelskimi modemi.
- Дисковая подсистема, ввод/вывод и файловые системы
- Za datotečni sistem Btrfs asinkrona implementacija operacije DISCARD (označevanje sproščenih blokov, ki jih ni več potrebno fizično shranjevati). Sprva so se operacije DISCARD izvajale sinhrono, kar je lahko privedlo do upočasnitve delovanja zaradi čakanja na dokončanje ustreznih ukazov izpomnilnikov. Asinkrona implementacija omogoča, da ni potrebno čakati na dokončanje DISCARD na pomnilniku, temveč se ta operacija izvaja v ozadju.
- V XFS čiščenje kode, v kateri so bili uporabljeni stari 32-bitni časovni števci (tip time_t zamenjan z time64_t), kar povzroča problem leta 2038. Odpravljene so napake in poškodbe pomnilnika, ki so se pojavljale na 32-bitnih platformah. Koda je bila preoblikovana za delo z razširjenimi atributi.
- v datotečnem sistemu ext4 optimizacija zmogljivosti, povezana z obdelavo zaklepa inode pri operacijah branja in pisanja. Povečana zmogljivost prepisovanja v načinu neposrednega vnosa/izvoda (Direct I/O). Za poenostavitev diagnoze težav je zagotovljeno shranjevanje prvega in zadnjega kode napake v superbloku.
- v datotečnem sistemu F2FS možnost shranjevanja podatkov v stisnjeni obliki. Za posamezno datoteko ali katalog lahko stiskanje omogočite s pomočjo ukaza „chattr +c file“ ali „chattr +c dir; touch dir/file“. Za stiskanje celotne particije lahko v orodju mount uporabite možnost „-o compress_extension=ext“.
- V jedro je sprejet datotečni sistem , ki poenostavi nizkonivojsko delo z zoniranimi napravam za shranjevanje. Pod zoniranimi napravami so mišljene naprave na trdih magnetnih diskih ali NVMe SSD, kjer je prostor za shranjevanje razdeljen na cone, ki predstavljajo skupine blokov ali sektorjev, kamor je dovoljeno le zaporedno dodajanje podatkov z posodobitvijo celotne skupine blokov. Datotečni sistem ZoneFS je bil razvit s strani podjetja Western Digital in vsako cono v napravi povezuje z ločeno datoteko, ki jo je mogoče uporabiti za shranjevanje podatkov v raw- režimu brez manipulacije na ravni sektorjev in blokov, torej omogoča aplikacijam, da uporabljajo datotečni API namesto neposrednega dostopa do blokovne naprave s pomočjo ioctl.
- V NFS je privzeto onemogočeno montažo particij preko UDP. Dodana je podpora za možnost neposrednega kopiranja datotek med strežniki, opredeljena v specifikaciji NFS 4.2. Dodana je nova možnost montaže „softreval“, ki v primeru napake strežnika omogoča uporabo predpomnjenih vrednosti atributov. Na primer, ob navedeni možnosti po nedostopnosti strežnika ostaja možnost premikanja po poteh v NFS-particiji in dostopa do informacij, ki so ostale v predpomnilniku.
- optimizacija delovanja mehanizma fs-verity, ki se uporablja za nadzor celovitosti in preverjanje pristnosti posameznih datotek. Povečana je hitrost sekvenčnega branja z uporabo Merklovega drevesa hashov. Optimizirana je učinkovitost FS_IOC_ENABLE_VERITY v pogojih, ko manjkajo podatki v predpomnilniku (uporabljeno predhodno branje strani s podatki).
- Virtualizacija in varnost
- Možnost onemogočanja modula SELinux med delovanjem je razglašena za zastarelo, v prihodnosti pa bo onemogočanje že aktiviranega SELinuxa prepovedano. Za onemogočanje SELinuxa bo potrebno prenesti parameter „selinux=0“ v ukazni vrstici jedra.
- podpora za časovne prostore (time namespaces), ki omogočajo povezovanje stanja sistemskih ur (CLOCK_REALTIME,
CLOCK_MONOTONIC, CLOCK_BOOTTIME) s kontejnerjem ter omogočajo, da kontejner uporablja svoj čas in pri selitvi kontejnerja na drugo gostiteljico zagotovi nespremenjenost prikazov CLOCK_MONOTONIC in CLOCK_BOOTTIME (uporabi čas po nalaganju ob upoštevanju ali brez upoštevanja stanja v mirovanju). - Odstranjen je blokirni bazen /dev/random. Obnašanje /dev/random je približano obnašanju /dev/urandom glede na preprečevanje blokiranja entropije po inicializaciji bazena.
- V glavno jedro je vključen gonilnik, ki omogoča gostiteljskim sistemom, ki delujejo pod VirtualBoxom, montažo imenikov, izvoženih iz gostiteljskega okolja (VirtualBox Shared Folder).
- V podsistem BPF je dodan niz popravkov (), ki v pogojih uporabe mehanizma Retpoline za zaščito pred napadi Spectre V2 omogoča povečanje učinkovitosti klicanja programov BPF ob pojavu z njimi povezanih dogodkov (na primer omogoča pospešitev klica XDP obdelovalcev ob prejemu omrežnega paketa).
- Dodano je gonilo za podporo vgrajenim v APU AMD okoljem TEE (Trusted Execution Environment).
- Pomnilnik in sistemske storitve
- V BPF je dodana podpora za globalne funkcije. Razvoj poteka v okviru pobude za dodajanje podpore knjižnicam funkcij, ki jih je mogoče povezati v programih BPF. Naslednji korak bo podpora dinamičnim razširitvam, ki omogočajo nalaganje globalnih funkcij, vključno z zamenjavo obstoječih globalnih funkcij med njihovo uporabo. V podsistem BPF je dodana tudi podpora za različico operacije map (katera se uporablja za shranjevanje stalnih podatkov), ki podpira izvajanje v paketu.
- Uređaj «cpu_cooling» omogućava hlađenje pregrejanog CPU-a tako što ga privremeno prebacuje u stanje mirovanja (idle).
- Dodana je sistemska funkcija , koja nudi skup dodatnih flagova za ograničavanje pristupa datotekama (sprečavanje prolaska kroz tačke montiranja, simboličke linkove, magic-linkove ("/proc/PID/fd"), komponente «..»).
- Za heterogene sisteme zasnovane na big.LITTLE arhitekturi, koje kombinuju snažne i manje efikasne energetski štedljive CPU jezgre u jednom čipu, omogućeno je postavljanje parametra uclamp_min ( u jezgru 5.3 mehanizam zaklapanja opterećenja). Navedeni parametar garantuje da će planirnik dodeliti zadatak CPU jezgri koja ima dovoljno performansi.
- Jezgro je oslobođeno od . Poslednji preostali obrada u kojima je korišćen 32-bitni (signed int) tip time_t za prekid epoha, koji se s obzirom na brojanje od 1970. godine moraće prepuniti 2038. godine.
- Nastavljeno je unapređenje interfejsa asinhronog ulaza/izlaza , v kateri podrška za nove operacije: IORING_OP_FALLOCATE (rezervacija praznih oblasti), IORING_OP_OPENAT,
IORING_OP_OPENAT2,
IORING_OP_CLOSE (otvaranje i zatvaranje datoteka),
IORING_OP_FILES_UPDATE (dodavanje i brisanje datoteka sa brze pristupa),
IORING_OP_STATX (izvlačenje informacija o datoteci),
IORING_OP_READ,
IORING_OP_WRITE (pojednostavljene verzije IORING_OP_READV i IORING_OP_WRITEV),
IORING_OP_FADVISE,
IORING_OP_MADVISE (asinhrone varijante poziva posix_fadvise i madvise), IORING_OP_SEND,
IORING_OP_RECV (slanje i primanje mrežnih podataka),
IORING_OP_EPOLL_CTL (izvršavanje operacija na datotečnim deskriptorima epoll). - Dodana je sistemska funkcija , koja omogućava procesu da iz drugog procesa izvuče datotečni deskriptor otvorene datoteke.
- Mehanizam «bootconfig», koji omogućava određivanje parametara rada jezgra putem datoteke sa podešavanjima osim opcija komandne linije. Za dodavanje sličnih datoteka u initramfs sliku, predložena je alatka bootconfig. Ova mogućnost može se koristiti, na primer, za podešavanje kprobes tokom pokretanja.
- mehanizem čakanja na zapisovanje in branje podatkov v neimenovanih kanalih (pipe). Sprememba je omogočila pospešitev izvajanja nalog, kot je paralelna gradnja velikih projektov. Pri tem lahko optimizacija povzroči stanje dirke v GNU make zaradi napake v izdaji 4.2.1, ki je odpravljena v različici 4.3.
- V prctl() je dodana zastavica PR_SET_IO_FLUSHER, ki se lahko uporabi za označevanje procesov, ki se ukvarjajo s sproščanjem pomnilnika, za katere ne bi smeli uveljaviti omejitev v situaciji pomanjkanja pomnilnika v sistemu.
- Na podlagi sistema dodeljevanja pomnilnika ION, uporabljenega v Androidu, je implementiran podsistem , ki omogoča upravljanje dodeljevanja DMA-bufrov za skupno rabo področij pomnilnika med gonilniki, aplikacijami in različnimi podsistemi.
- Strojne arhitekture
- Dodana je podpora razširitvi E0PD, ki se je pojavila v ARMv8.5 in omogoča zaščito pred napadi, povezanimi s spekulativnim izvajanjem ukazov v CPU. Zaščita, osnovana na E0PD, prinaša manjše stroške kot zaščita KPTI (Izolacija jedrskih tabel strani).
- Za sisteme, osnovane na arhitekturi ARMv8.5, je dodana podpora ukazu RNG, ki omogoča dostop do strojnega generatorja psevdonaključnih števil. V jedru se ukaz RNG uporablja za oblikovanje entropije pri inicializaciji generatorja psevdonaključnih števil, ki ga zagotavlja jedro.
- Podpora za razširitve MPX (Razširitve zaščite pomnilnika), dodane v jedro in omogočajo preverjanje kazalcev na skladnost z mejniki področij pomnilnika, je odstranjena. Omenjena tehnologija ni pridobila široke uporabe v prevajalnikih in je bila odstranjena iz GCC.
- Za arhitekturo RISC-V je implementirana podpora za orodje za odpravljanje napak KASan (Kernel address sanitizer), ki zagotavlja odkrivanje napak pri delu s pomnilnikom.
- Oprema
- Implementirana je podpora za specifikacijo , ki temelji na protokolu Thunderbolt 3 in omogoča pasovno širino do 40 Gbit/s, pri čemer ohranja nazajno združljivost z USB 2.0 in USB 3.2. Podobno kot interfejs USB 4.0 omogoča tuneliranje različnih protokolov preko enega kabla s priključkom , including PCIe, Display Port, and USB 3.x, as well as software implementations of protocols for establishing network links between hosts. The implementation is based on the Thunderbolt driver already in the Linux kernel and adapts it for use with USB4-compatible hosts and devices. Changes also add support for Thunderbolt 3 devices in the Connection Manager software implementation that is responsible for creating tunnels for connecting multiple devices through a single port.
- In the amdgpu driver , initial support for HDCP 2.x (High-bandwidth Digital Content Protection) has been added. Support for AMD Pollock ASIC chip based on Raven 2 has been introduced. The ability to reset GPU for Renoir and Navi families has been implemented.
- In the Intel graphics DRM driver , DSI VDSC support has been added for chips based on Ice Lake and Tiger Lake microarchitectures, LMEM mmap (device local memory) has been implemented, VBT (Video BIOS Table) parsing has been improved, and HDCP 2.2 support has been realized for Coffee Lake chips.
- Work continues to unify the amdkfd driver code (for discrete GPUs such as Fiji, Tonga, Polaris) with the amdgpu driver.
- The k10temp driver has been redesigned to support output of voltage and current parameters for AMD Zen CPUs, as well as extended information from temperature sensors used in Zen and Zen 2 CPUs.
- In the nouveau driver , support for verified firmware boot mode for NVIDIA GPUs based on Turing microarchitecture (GeForce RTX 2000) has been added, which has enabled support for 3D acceleration for these cards (requires downloading official firmware with NVIDIA's digital signature). Support for the TU10x graphics engine has also been added. Issues with HD Audio have been resolved.
- Data compression support during transmission via DisplayPort MST (Multi-Stream Transport) has been added.
- A new driver "" for Qualcomm wireless chips with support for 802.11ax has been added.
The driver is based on the mac80211 stack and supports access point, station, and Mesh network node modes. - Accessible readable sensor readings used in modern hard drives and SSDs are provided through sysfs.
- Significant changes in the ALSA sound system aimed at eliminating code from (moving away from the use of 32-bit time_t type in snd_pcm_mmap_status and snd_pcm_mmap_control interfaces). Support for new audio codecs has been added.
Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770. - vozniki za LCD-panele Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
BOE NV140FHM-N49,
Satoz SAT050AT40H12R2,
Sharp LS020B1DD01D. - podpora ARM-platform in platform Gen1 Amazon Echo (OMAP3630-podlaganje), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
Tolino Shine 3 bralnik e-knjig,
Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX in HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM
ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863A, Qualcomm SC7180. Dodana podpora za PCIe-nadzornik, uporabljen v Raspberry Pi 4.
Istovremeno latinskoamerička Fondacija slobodnog softvera
varijantu — , očiščeno od elementov programske opreme in gonilnikov, ki vsebujejo nesvobodne komponente ali dele kode, katerih področje aplikacije je omejeno s proizvajalcem. V novem izidu je onemogočeno nalaganje blobov v gonilnikih za AMD TEE, ATH11K in Mediatek SCP. Posodobljen je bil koda za čiščenje blobov v gonilnikih in podsystemih AMD PSP, amdgpu in nouveau.
Izvor: opennet.ru
