После двух месяцев разработки Линус Торвальдс релиз ядра . Med najbolj opaznimi spremembami: integracija VPN vmesnika WireGuard, podpora USB4, prostori imen za čas, možnost ustvarjanja obdelovalcev prenosa TCP s pomočjo BPF, začetna podpora za MultiPath TCP, odprava težave jedra iz leta 2038, mehanizem „bootconfig“, datotečni sistem ZoneFS.
V novo različico je bilo sprejetih 13702 popravkov od 1810 razvijalcev,
velikost popravka je 40 MB (spremembe so zajele 11577 datotek, dodanih je bilo 610012 vrstic kode,
odstranjenih 294828 vrstic). Približno 45% vseh predstavljenih v 5.6
je povezanih z gonilniki naprav, približno 15 % sprememb se nanaša
se nanaša na posodobitev kode, specifične za strojne arhitekture, 12%
je povezanih z omrežnim skladom, 4% — s datotečnimi sistemi in 3% z notranjimi
podsystemi jedra.
:
- Mrežna podsistem
- izvedba VPN vmesnika , ki temelji na sodobnih metodah šifriranja (ChaCha20, Poly1305, Curve25519, BLAKE2s), enostaven za uporabo, brez zapletov, se je dobro izkazal v številnih velikih uvedbah in zagotavlja zelo visoko zmogljivost (3,9-krat presega OpenVPN po propustnosti). V WireGuard se uporablja koncept usmerjanja s pomočjo šifrirnih ključev, kar pomeni povezavo vsakega omrežnega vmesnika z zasebnim ključem ter uporabo odprtih ključev za povezovanje. Izmenjava odprtih ključev za vzpostavitev povezave poteka podobno kot pri SSH. Potrebni za delovanje WireGuard, kriptografski primi z knjižnice vključen v standardni Crypto API in v jedro .
- integracija komponent, potrebnih za podporo MPTCP (MultiPath TCP), razširitev protokola TCP za organizacijo dela TCP povezave z dostavo paketov hkrati po več poteh preko različnih omrežnih vmesnikov, povezanih z različnimi IP naslovi. Za omrežne aplikacije se takšna agregirana povezava zdi kot običajna TCP povezava, celotna logika delitve tokov pa je izvedena s pomočjo MPTCP. Multipath TCP se lahko uporablja tako za razširitev propustnosti kot za povečanje zanesljivosti. Na primer, MPTCP se lahko uporablja za prenos podatkov na pametnem telefonu ob uporabi hkrati povezav WiFi in 4G ali za zmanjšanje stroškov z uporabo strežnika z več poceni povezavami namesto ene drage.
- podpora disciplini obdelave omrežnih vrstic sch_ets (, IEEE 802.1Qaz), ki omogoča dodelitev pasovne širine različnim razredom prometa. Ko je obremenitev določenega razreda prometa pod dodeljeno pasovno širino, ETS omogoča drugim razredom prometa, da uporabijo razpoložljivo (neizkoriščeno) pasovno širino. Qdisc sch_ets je nastavljen kot disciplina PRIO in uporablja razrede prometa za določanje strogo določenih in skupno uporabljenih omejitev pasovne širine. Deluje ETS kot kombinacija disciplin. in — pri obstoju strogo omejenih razredov prometa uporablja PRIO, vendar, če v vrsti prometa ni, deluje kot DRR.
- Dodana je bila nova vrsta BPF programov. , ki omogoča izvajanje obdelovalcev funkcij jedra preko BPF. Trenutno je to možnost mogoče uporabiti za izvajanje algoritmov nadzora obremenitve TCP v obliki BPF programov. Kot primer BPF program z implementacijo algoritma .
- Je sprejeta v jedro. , ki prenaša orodje z ioctl() na uporabo . Novi vmesnik poenostavi dodajanje razširitev, izboljšuje obravnavo napak, omogoča pošiljanje obvestil ob spremembi stanja, poenostavi interakcijo med jedrom in prostorom uporabnika ter zmanjšuje število sinhroniziranih imenovanih seznamov.
- Dodana je realizacija algoritma za upravljanje omrežnimi čakalnimi vrstami FQ-PIE (Flow Queue PIE), ki je usmerjena na zmanjšanje negativnega vpliva intermediarnnega shranjevanja paketov na robni omrežni opremi (bufferbloat). FQ-PIE izkazuje visoko učinkovitost pri uporabi v sistemih s kabelskimi modemi.
- Дисковая подсистема, ввод/вывод и файловые системы
- Za datotečni sistem Btrfs asynhrona realizacija operacije DISCARD (označevanje osvobojenih blokov, ki jih že ni treba fizično shranjevati). Sprva so se operacije DISCARD izvajale sinhrono, kar je lahko povzročilo upočasnjeno delovanje zaradi čakanja na dokončanje ustreznih ukazov iz pomnilnika. Asinhrona izvedba omogoča, da ne čakamo na dokončanje DISCARD iz pomnilnika in izvaja to operacijo v ozadju.
- V XFS čiščenje kode, v kateri so bili uporabljeni stari 32-bitni časovni števci (tip time_t zamenjan s 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 predelana za delo z razširjenimi atributi.
- v datotečnem sistemu ext4 optimizacije zmogljivosti, povezane z obdelavo zaklepanja inode pri operacijah branja in pisanja. Povečana je zmogljivost prepisovanja v načinu neposrednega vnosa/izvoza (Direct I/O). Za poenostavitev diagnosticiranja težav je omogočeno shranjevanje prvega in zadnjega kode napake v superblok.
- V datotečnem sistemu F2FS možnost shranjevanja podatkov v stisnjeni obliki. Za posamezno datoteko ali mapo je mogoče stiskanje omogočiti s pomočjo ukaza „chattr +c file“ ali „chattr +c dir; touch dir/file“. Za stiskanje celotnega razdelka v orodju mount lahko uporabite možnost „-o compress_extension=ext“.
- V jedro je sprejet datotečni sistem , ki poenostavi nizkonivojsko delo z zoniiranimi shranjevalnimi napravami. Pod zoniiranimi napravami se razumejo naprave na trdih magnetnih diskih ali NVMe SSD, pri katerih je prostor za shranjevanje razdeljen na cone, ki predstavljajo skupine blokov ali sektorjev, v katere je dovoljeno le zaporedno dodajanje podatkov z posodobitvijo celotne skupine blokov. Datotečni sistem ZoneFS je razvil Western Digital in povezuje vsako cono v shranjevalniku z ločeno datoteko, ki jo je mogoče uporabiti za shranjevanje podatkov v raw-obliki brez manipulacije na ravni sektorjev in blokov, tj. omogoča aplikacijam uporabo datotečnega API namesto neposrednega dostopa do blokovne naprave s pomočjo ioctl.
- V NFS je privzeto onemogočeno nameščanje razdelkov preko UDP. Dodana je podpora za možnost neposrednega kopiranja datotek med strežniki, ki je določena v specifikaciji NFS 4.2. Dodana je nova možnost montaže „softreval“, ki v primeru odpovedi strežnika omogoča uporabo predpomnjenih vrednosti atributov. Na primer, ob določeni možnosti po nedostopnosti strežnika ostane možnost premikanja po poteh v NFS-razdelku in dostopa do informacij, ki so ostale v predpomnilniku.
- optimizacija zmogljivosti mehanizma fs-verity, ki se uporablja za nadzor celovitosti in preverjanje pristnosti posameznih datotek. Povečana je hitrost zaporednega branja, zahvaljujoč uporabi Merklejevega drevesa. Optimizirana je zmogljivost FS_IOC_ENABLE_VERITY v pogojih, ko manjkajo podatki v predpomnilniku (uporabljen je predhodni bralnik strani s podatki).
- Virtualizacija in varnost
- Napaka pri izklopu modula SELinux med delovanjem je označena kot zastarela, v prihodnje pa bo prepovedana tudi odstranitev že aktiviranega SELinux. Za izklop SELinux bo potrebno predati parameter „selinux=0“ v ukazni vrstici jedra.
- podpora za časovne prostore (time namespaces), ki omogočajo vezavo stanja sistemskih ur (CLOCK_REALTIME,
CLOCK_MONOTONIC, CLOCK_BOOTTIME) na kontejner, kar omogoča kontejnerju uporabo lastnega časa in zagotavljanje nespremenljivosti vrednosti CLOCK_MONOTONIC in CLOCK_BOOTTIME ob prenosu kontejnerja na drugo gostiteljsko okolje (uporaba časa po nalaganju, ob upoštevanju ali brez upoštevanja stanja spanja). - Odstranjen je blokiran bazen /dev/random. Obnašanje /dev/random je približano /dev/urandom s poudarkom na preprečevanju blokade entropije po inicializaciji bazena.
- V glavno sestavo jedra je vključen gonilnik, ki omogoča gostovskim sistemom, ki delujejo v VirtualBoxu, dostop do map, ki jih izvaža gostiteljsko okolje (VirtualBox Shared Folder).
- V podsklop BPF je dodan niz popravkov (), ki v pogojih uporabe mehanizma Retpoline za zaščito pred napadi tipa Spectre V2 povečuje učinkovitost klicanja BPF programov ob nastopu dogodkov, povezanih z njimi (na primer omogoča pospešen klic XDP obdelovalcev ob prejemu omrežnega paketa).
- Dodano je gonilo za podporo vgrajenim okoljem TEE (Trusted Execution Environment) v APU AMD.
- Pomnilnik in sistemske storitve
- V BPF je bila dodana podpora za globalne funkcije. Razvoj poteka v okviru pobude za dodajanje podpornih knjižnic funkcij, ki jih je mogoče vključiti v BPF programe. Naslednji korak bo podpora dinamičnim razširitvam, ki omogočajo nalaganje globalnih funkcij, vključno z nadomeščanjem obstoječih globalnih funkcij med njihovo uporabo. V podsklopu BPF je prav tako dodana podpora za varianto operacije map (ki se uporablja za shranjevanje trajnih podatkov), ki podpira izvajanje v paketu.
- naprava „cpu_cooling”, ki omogoča hlajenje pregretega CPU z znižanjem njegovega stanja na kratek čas (idle).
- Dodana sistemska klica , ki ponuja niz dodatnih zastavic za omejitev dovoljenja datotečne poti (prepoved križanja točk pritrditve, simboličnih povezav, magic-povezav (\/proc\/PID\/fd), komponent „..\/“.
- Za heterogene sisteme na podlagi arhitekture big.LITTLE, ki kombinirajo v enem čipu močne in manj zmogljive energetsko učinkovite CPU jedra, je med izvajanjem nalog v realnem času zagotovljeno nastavljanje parametra uclamp_min ( v jedru 5.3 mehanizem pritrditve obremenitve). Ta parameter zagotavlja, da bo naloga dodeljena načrtovalniku na CPU jedru, ki ima dovolj zmogljivosti.
- Jedro se je znebilo Zadnji preostali obdelovalniki, ki so za števec epoch uporabljali 32-bitni (signed int) tip time_t, so bili zamenjani in bi se s poročanjem od leta 1970 morali preplaviti leta 2038.
- Nadaljuje se izboljševanje vmesnika asinhronega vhoda/izhoda , v kateri podpora novim operacijam: IORING_OP_FALLOCATE (rezervacija praznih con), IORING_OP_OPENAT,
IORING_OP_OPENAT2,
IORING_OP_CLOSE (odpiranje in zapiranje datotek),
IORING_OP_FILES_UPDATE (dodajanje in brisanje datotek iz seznama hitrega dostopa),
IORING_OP_STATX (zahteva informacij o datoteki),
IORING_OP_READ,
IORING_OP_WRITE (poenostavljeni analogi IORING_OP_READV in IORING_OP_WRITEV),
IORING_OP_FADVISE,
IORING_OP_MADVISE (asinhrone različice klicev posix_fadvise in madvise), IORING_OP_SEND,
IORING_OP_RECV (pošiljanje in prejemanje omrežnih podatkov),
IORING_OP_EPOLL_CTL (izvajanje operacij nad datotečnimi descriptorji epoll). - Dodana sistemska klica , ki omogoča procesu, da iz drugega procesa pridobi datotečni descriptor odprte datoteke.
- mehanizem „bootconfig”, ki omogoča določanje parametrov delovanja jedra poleg možnosti ukazne vrstice prek nastavitvenega datoteka. Za dodajanje takih datotek v sliko initramfs je predlagana orodje bootconfig. Ta možnost se lahko uporablja, na primer, za nastavitev kprobes med nalaganjem.
- mehanizem čakanja na zapisovanje in branje podatkov v neimenovanih kanalih (pipe). Sprememba je omogočila pospešitev izvajanja takih nalog, kot sta paralelna sestava velikih projektov. Pri tem lahko optimizacija privede do stanja dirke v GNU make zaradi napake v izdaji 4.2.1, ki je bila odpravljena v različici 4.3.
- V prctl() je bil dodan flag PR_SET_IO_FLUSHER, ki se lahko uporabi za označevanje procesov, ki se ukvarjajo z osvobajanjem pomnilnika, za katere ne bi bilo treba uporabiti omejitev v situaciji pomanjkanja pomnilnika v sistemu.
- Na podlagi v Androidu uporabljanega sistema razporejanja pomnilnika ION je bila реализирана podpora za , kar omogoča upravljanje dodeljevanja DMA-bufrov za skupno rabo pomnilnika med gonilniki, aplikacijami in različnimi podsystemi.
- Strojne arhitekture
- Dodana je podpora za razširitev E0PD, ki se je pojavila v ARMv8.5 in omogoča izvajanje zaščite pred napadi v zvezi s spekulativnim izvajanjem ukazov v CPU. Zaščita na osnovi E0PD povzroča manjše stroške kot zaščita KPTI (izolacija tabel strani jedra).
- Za sisteme, temelječe na arhitekturi ARMv8.5, je bila dodana podpora za ukaz RNG, ki omogoča dostop do strojnega generatorja pseudo naključnih števil. V jedru se ukaz RNG uporablja za oblikovanje entropije pri inicializaciji generatorja pseudo naključnih števil, ki ga zagotavlja jedro.
- Odstranjena je podpora za razširitve MPX (razširitve zaščite pomnilnika), dodane v jedro in ki omogočajo preverjanje kazalcev glede na spoštovanje meja pomnilniških območij. Omenjena tehnologija ni našla široke uporabe v prevajalnikih in je bila odstranjena iz GCC.
- Za arhitekturo RISC-V je bila реализирана podpora za orodje za odpravljanje napak KASan (Kernel address sanitizer), ki omogoča odkrivanje napak pri delu s pomnilnikom.
- Oprema
- Realizirana je podpora za specifikacijo , ki temelji na protokolu Thunderbolt 3 in zagotavlja propustnost do 40 Gbit/s, pri tem pa ohranja združljivost z USB 2.0 in USB 3.2. Na podoben način kot interfejs USB 4.0 omogoča tuneliranje različnih protokolov preko enega kabla z vtičem , including PCIe, Display Port, and USB 3.x, as well as software implementations of protocols, for example, to create network links between hosts. The implementation is based on the existing Thunderbolt driver in the Linux kernel and adapts it to work with hosts and devices compatible with USB4. Changes also add support for Thunderbolt 3 devices in the software implementation of the Connection Manager, which is responsible for creating tunnels to connect multiple devices via a single port.
- In the amdgpu driver, initial support for HDCP 2.x (High-bandwidth Digital Content Protection) has been added. Support for the AMD Pollock ASIC chip, based on Raven 2, has been implemented. The ability to reset the GPU for the Renoir and Navi families has also been realized.
- In the DRM driver for Intel graphics cards, support for DSI VDSC for chips based on the Ice Lake and Tiger Lake microarchitecture has been added; LMEM mmap (device local memory) has been implemented; parsing of VBT (Video BIOS Table) has been improved; and HDCP 2.2 support for Coffee Lake chips has been implemented.
- Work continues on unifying the amdkfd driver code (for discrete GPUs such as Fiji, Tonga, Polaris) with the amdgpu driver.
- The k10temp driver has been revamped, now supporting the output of voltage and current parameters for AMD Zen CPUs, as well as extended data from temperature sensors used in Zen and Zen 2 CPUs.
- In the nouveau driver, support for validated firmware boot mode for NVIDIA GPUs based on the Turing microarchitecture (GeForce RTX 2000) has been added, enabling support for 3D acceleration on these cards (requires loading official firmware with NVIDIA's digital signature). Support for the TU10x graphics engine has been added. Issues with HD Audio have been resolved.
- Support for data compression 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, workstation, and Mesh network node modes. - Access to readable temperature sensor readings used in modern hard drives and SSDs is provided through sysfs.
- Significant changes to the ALSA sound system aimed at eliminating code related to (moving away from the use of the 32-bit time_t type in the 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. - drivers for LCD panels 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. - support for ARM platforms and Gen1 Amazon Echo (OMAP3630-based), 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 eBook reader,
Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX and 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. Added support for PCIe controller used in Raspberry Pi 4.
Istovremeno latinskoamerička Fondacija slobodnog softvera
varijantu — , purged of firmware elements and drivers containing non-free components or code segments restricted by the manufacturer. The new release has disabled blob loading in drivers for AMD TEE, ATH11K, and Mediatek SCP. Updated blob cleaning code in drivers and AMD PSP, amdgpu, and nouveau subsystems.
Izvor: opennet.ru
