Pēc divu mēnešu izstrādes Linuss Torvalds prezentēja Linux 5.12 kodola laidienu. Starp vissvarīgākajām izmaiņām ir: atbalsts zonētajiem blokaprīkojumiem Btrfs, iespēja mappēt lietotāja identifikatorus failu sistēmās, novecojušo ARM arhitektūru tīrīšana, "nepacietīgās" ierakstīšanas režīms NFS, LOOKUP_CACHED mehānisms failu ceļu noteikšanai no keša, atbalsts atomārajām instrukcijām BPF, KFENCE atkļūdošanas sistēma, lai atklātu kļūdas atmiņas darbībā, NAPI pollinga režīms tīkla steka atsevišķā kodola pavedienā, hipervizors ACRN, iespēja mainīt preempt mode plānošanas programmā cīņā par resursiem un atbalsts LTO optimizācijām, veidojot Clang.
Jaunajā versijā ir 14170 (iepriekšējā laidienā 15480) labojumu no 1946 (1991) izstrādātājiem, plākstere ir 38 MB (izmaiņas ietekmēja 12102 (12090) failus, pievienoti 538599 (868025) koda rindiņas, dzēstas 333377 (261456) rindiņas). Aptuveni 43% no visiem 5.12 izmaiņām attiecas uz ierīču draiveriem, aptuveni 17% izmaiņas ir saistītas ar aparatūras arhitektūrai raksturīga koda atjaunināšanu, 12% ir saistītas ar tīkla steku, 5% – ar failu sistēmām, un 4% ar iekšējām kodola apakšsistēmām.
Galvenās jauninājumi:
- Disku apakšsistēma, I/O un failu sistēmas
- Ieviesta iespēja mappēt lietotāja identifikatorus montētām failu sistēmām (var sasaistīt viena lietotāja failus montētajā svešā nodalījumā ar citu lietotāju pašreizējā sistēmā). Mappēšana tiek atbalstīta FAT, ext4 un XFS failu sistēmām. Piedāvātā funkcionalitāte ļauj vienkāršot failu koplietošanu starp dažādiem lietotājiem un dažādās datoros, tostarp mappēšana tiks izmantota systemd-homed pārnēsājamo mājas katalogu mehānismā, dodot iespēju lietotājiem pārvietot savus mājas katalogus uz ārējiem nesējiem un izmantot tos dažādās datoros, kuru lietotāja identifikatoru sadalījums nesakrīt. Vēl viena noderīga pielietojuma joma ir organizēt koplietošanu ar failiem no ārēja saimnieka, nezaudējot faktisko informāciju par failu īpašniekiem failu sistēmā.
- Kodā ir iekļauti LOOKUP_CACHED lāpījumi, kas ļauj no lietotāja telpas veikt faila ceļa noteikšanas darbības bez bloķēšanas, tikai balstoties uz kešatmiņā esošajiem datiem. LOOKUP_CACHED režīms tiek aktivizēts, izsaucot openat2() ar RESOLVE_CACHED flagu, kurā dati tiek sniegti tikai no kešatmiņas, un, ja ceļa noteikšanai nepieciešama piekļuve glabātājam, tiek atgriezta kļūda EAGAIN.
- Failu sistēmā Btrfs tika pievienota sākotnējā atbalsta zonoṭajiem bloķiem (ierīces cietajos disku vai NVMe SSD, kuru krātuve ir sadalīta zonās, kas veido bloku vai sektoru grupas, kurās ir atļauts tikai secīgi pievienot datus, atjauninot visu bloku grupu). Lasīšanas režīmā ir ieviests atbalsts bloku ar metadatiem un datiem, kuru lielums ir mazāks par lapu (subpage).
- Failu sistēmā F2FS ir pievienota iespēja izvēlēties saspiešanas algoritmu un līmeni. Ir pievienots augsta līmeņa saspiešanas atbalsts LZ4 algoritmam. Ir ieviesta iespēja montēt checkpoint_merge.
- Ieviesta jauna ioctl komanda FS_IOC_READ_VERITY_METADATA, lai nolasītu metadatus no failiem, kas aizsargāti ar fs-verity.
- NFS klientā ir ieviests "nepacietīgas" rakstīšanas režīms (writes=eager), kas ļauj rakstīšanas operācijām uzreiz tikt nosūtītām uz serveri, apejot lapu kešu. Šis režīms ļauj samazināt atmiņas patēriņu, nodrošina tūlītēju informācijas saņemšanu par brīvas vietas pabeigšanu FS un dažās situācijās palielina veiktspēju.
- CIFS (SMB) ir pievienotas jaunas montēšanas opcijas: acregmax, lai pārvaldītu failu kešatmiņu, un acdirmax, lai pārvaldītu katalogu metadatu kešatmiņu.
- XFS ir ieslēgts daudzu pavedienu kvotu pārbaudes režīms, paātrināta fsync izpilde, un kodekss growfs ir sagatavots, lai īstenotu funkciju, kas samazina FS izmēru.
- Atmiņa un sistēmas pakalpojumi
- Tika pievienota DTMP apakšsistēma (Dynamic Thermal Power Management), kas ļauj dinamiski regulēt dažādu ierīču enerģijas patēriņu, pamatojoties uz noteiktiem kopējiem temperatūras ierobežojumiem.
- Ieviešota iespēja izveidot kodu ar Clang kompilatoru, iekļaujot optimizācijas saistīšanas posmā (LTO, Link Time Optimization). LTO optimizācijas atšķiras ar to, ka ņem vērā visu failu stāvokli, kas piedalās būves procesā, kamēr tradicionālās optimizācijas režīmi optimizē katru failu atsevišķi un neņem vērā funkciju, kas definētas citos failos, izsaukumu apstākļus. Piemēram, LTO režīmā funkcijām no citiem failiem ir iespējama inline izplešanās, neizmantojams kods netiek iekļauts izpildāmā failā, tiek veikta tipu pārbaude un kopējā optimizācija projekta līmenī. LTO atbalsts pašlaik ir ierobežots tikai x86 un ARM64 arhitektūrām.
- Ieviesta iespēja izvēlēties izsistēšanas režīmus (PREEMPT) uzdevumu plānotājā starta posmā (preempt=none/voluntary/full) vai darba laikā caur debugfs (/debug/sched_debug), ja tiek norādīta iestatīšana PREEMPT_DYNAMIC kodu izveidē. Agrāk izsistēšanas režīms varēja tikt iestatīts tikai būves parametru līmenī. Šī izmaiņa ļauj izplatītājiem piegādāt kodus ar ieslēgtu PREEMPT režīmu, kas nodrošina minimālas aiztures darbvirsmām, samazinot caurlaidību, un, ja nepieciešams, atgriezties pie PREEMPT_VOLUNTARY (starprežīms darbvirsmām) vai PREEMPT_NONE režīmiem (nodrošina maksimālu caurlaidību). serveriem).
- BPF subsistēmā papildināta atbalsts atomārām operācijām BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG un BPF_CMPXCHG.
- BPF programmām ir iespēja piekļūt datiem stekā, izmantojot rādītājus ar mainīgu novirzi. Piemēram, ja iepriekš, lai piekļūtu masīvam stekā, varēja izmantot tikai nemainīgu elementa indeksu, tagad ir iespējams izmantot mainīgu indeksu. Pieejas kontrole tiek veikta BPF verifikatorā tikai robežās, kas jau ir noteiktas, ņemot vērā bažas par ievainojamību izmantoto spekulatīvu izpildījumu. Iespēja pieejama tikai privileģētām programmām.
- Ieviesota iespēja pievienot BPF programmas „kailām” izsekošanas punktiem (bare tracepoints), kas nav saistīti ar redzamajiem lietotāja telpas izsekošanas notikumiem (šādiem izsekošanas punktiem netiek garantēta ABI saglabāšana).
- Ieviesta CXL 2.0 (Compute Express Link) bus atbalsts, ko izmanto, lai organizētu ātrdarbīgu mijiedarbību starp CPU un atmiņas ierīcēm (ļauj izmantot ārējās atmiņas ierīces kā daļu no RAM vai pastāvīgās atmiņas, it kā šī atmiņa būtu pieslēgta tieši pie CPU standartkontroliera).
- Pievienots nvmem draiveris, lai iegūtu datus no firmware rezervētajām atmiņas zonām, kas nav tieši pieejamas Linux (piemēram, EEPROM atmiņa, kas fiziski pieejama tikai firmware vai dati, kas pieejami tikai ielādes sākumposmā).
- Noņemts profila sistēmas "oprofile" atbalsts, kas nav guvis plašu pielietojumu un ir aizstāts ar mūsdienīgāku mehānismu perf.
- Asinhronā ieejas/izejas io_uring saskarnē nodrošināta integrācija ar cgroups, kas kontrolē atmiņas izmantošanu.
- RISC-V arhitektūrai ieviests NUMA atbalsts, kā arī kprobes un uprobes mehānismi.
- Pievienota iespēja izmantot sistēmas izsaukumu kcmp() neatkarīgi no procesu stāvokļa slēdža funkcionalitātes (checkpoint/restore).
- Noņemti makro EXPORT_UNUSED_SYMBOL() un EXPORT_SYMBOL_GPL_FUTURE(), kuri jau daudzus gadus nav praktiski izmantoti.
- Virtualizācija un drošība
- Ieviests KFence (Kernel Electric Fence) aizsardzības mehānisms, kas noķer kļūdas darbā ar atmiņu, piemēram, bufera pārsniegšanu un piekļuvi pēc atmiņas atbrīvošanas. Atšķirībā no KASAN atkļūdošanas mehānisma, KFence subsistēmai ir augsta darbības ātrums un zemi darbības izdevumi, kas ļauj atklāt atmiņas darbināšanas kļūdas, kas izpaužas tikai ražošanas sistēmās vai ilgstošā darbā.
- Ieviests ACRN hipervizors, kas izstrādāts, lai būtu gatavs reāllaika uzdevumu izpildei un izmantošanai kritiskās sistēmās. ACRN nodrošina minimālus izdevumus, garantē zemas kavēšanās (low latency) un adekvātu reakciju uz aparatūras mijiedarbību. Atbalsta CPU, ieejas/izejas, tīkla subsistēmas, grafikas un skaņas operāciju virtualizāciju. ACRN var tikt izmantots, lai palaistu vairākus izolētus. virtuālo mašīnu elektroniskajos vadības blokos, paneļos un automobiļu informācijas sistēmās, patērētāju IoT ierīcēs un citās iebūvētajās tehnoloģijās. ACRN atbalsta divu veidu viesosistēmas - privilēģētās Service VM, kuras izmanto resursu pārvaldībai (CPU, atmiņa, ievade/izvade utt.), un lietotāju User VM, kuros var darbināt Linux izplatījumus, Android un Windows.
- IMA (Integrity Measurement Architecture) apakšsistēmā, kas nodrošina hash datubāzes uzturēšanu failu un saistīto metadatu integritātes pārbaudei, tika pievienota iespēja pārbaudīt paša kodola integritāti, piemēram, lai izsekotu SELinux noteikumu izmaiņas.
- KVM hipervizorā pievienota iespēja notvert Xen hipervizorus un pārsūtīt tos emulatoram, kas darbojas lietotāju telpā.
- Pievienota iespēja izmantot Linux kā saknes vidi Hyper-V hipervizoram. Saknes videi ir tieša piekļuve aparatūrai un tā tiek izmantota viesosistēmu palaišanai (analogā Dom0 Xen). Līdz šim Hyper-V (Microsoft Hypervisor) atbalstīja Linux tikai viesos vidēs, bet pats hipervizors tika pārvaldīts no Windows balstītas vides.
- Pievienota inline šifrēšanas atbalsts eMMC kartēm, ļaujot izmantot iebūvētās šifrēšanas mehānismus diska kontrolierī, kas veic caurspīdīgu ievades/izvades šifrēšanu un atšifrēšanu.
- No kriptosistēmas tika noņemta neizmantotā atbalsta apakšsistēma nenozīmīgajiem kodekiem RIPE-MD 128/256/320 un Tiger 128/160/192, kā arī plūsmu šifrētājs Salsa20, kura vietā nāca algoritms ChaCha20. Algoritms blake2 tika atjaunināts līdz blake2s realizācijai.
- Tīkla subsistēma
- Pievienota iespēja iznest NAPI polling apstrādātāju tīkla ierīcēm atsevišķā kodola pavedienā, ļaujot uzlabot veiktspēju noteiktiem slodzes veidiem. Iepriekš polling tika izpildīts softirq kontekstā un netika ietverts uzdevumu plānotājā, kas apgrūtināja smalku optimizāciju maksimālās veiktspējas sasniegšanai. Izpilde atsevišķā kodola pavedienā ļauj novērot polling apstrādātāju no lietotāju telpas, piespraust pie atsevišķiem CPU kodoliem un ņemt vērā uzdevumu pārslēgšanas plānošanā. Lai iespējotu jauno režīmu, sysfs pievienots parameters /sys/class/net//threaded.
- Turpināta integrācija MPTCP (MultiPath TCP) kodolā, kas ir TCP protokola paplašinājums, lai organizētu TCP savienojumu, piegādājot paketēs vienlaikus pa vairākiem maršrutiem caur dažādiem tīkla interfeisiem, kas saistīti ar dažādiem IP adresēm. Jaunajā izlaidumā pievienota iespēja piešķirt prioritāti noteiktiem plūsmām, kas ļauj, piemēram, organizēt rezerves plūsmas, kas aktivizējas tikai tad, kad rodas problēmas ar primāro plūsmu.
- IGMPv3 ir pievienota EHT (Explicit Host Tracking) mehānisma atbalsts.
- Netfilter paketu filtrēšanas mehānismā ieviesta iespēja kontrolēt noteiktas tabulas, lai iegūtu ekskluzīvu kontroli (piemēram, aizmugures ugunsmūra process var piesaistīt noteiktas tabulas, aizliedzot kādam citam tajās iejaukties).
- Aprīkojums
- Tika veikta veco un bez uzraudzības ARM platformu tīrīšana. Tika dzēsta efm32, picoxcell, prima2, tango, u300, zx un c6x platformu kods, kā arī ar tām saistītie draiveri.
- Amdgpu draiverī ieviesta iespēja pārspēt (OverDrive) Sienna Cichlid (Navi 22, Radeon RX 6xxx) bāzes GPU kartes. Pievienots FP16 pikseļu formāta atbalsts DCE (display controller engine) no 8. līdz 11. paaudzei. GPU Navy Flounder (Navi 21) un APU Van Gogh ir aktivizēta GPU atiestatīšanas iespēja.
- Intel videokartēm paredzētajā i915 draiverī ieviests i915.mitigations parametrs, lai atspējotu izolācijas un aizsardzības mehānismus, lai palielinātu veiktspēju. Čipiem, sākot no Tiger Lake, ir ieslēgts VRR (Variable Rate Refresh) mehānisma atbalsts, kas ļauj elastīgi mainīt monitora atsvaidzinošo frekvenci, nodrošinot plūstošumu un traucējumu neesamību spēlēs. Aktivizēta Intel Clear Color tehnoloģijas atbalsts, lai uzlabotu krāsu attēlošanas precizitāti. Pievienots DP-HDMI 2.1 atbalsts. Ieviesta eDP paneļu apgaismojuma kontroļu iespēja. GPU Gen9 ar LSPCON (Level Shifter and Protocol Converter) atbalstu ir aktivizēts HDR atbalsts.
- Nouveau draiverī pievienota sākotnējā NVIDIA GPU atbalsts, balstoties uz GA100 (Ampere) arhitektūru.
- Msm draiverī pievienots atbalsts GPU Adreno 508, 509 un 512, ko izmanto SDM (Snapdragon) 630, 636 un 660 čipos.
- Pievienots atbalsts skaņas kartēm Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s un Pioneer DJM-750. Pievienots Intel Alder Lake PCH-P skaņu apakšsistēmas atbalsts. Ieviesta programmētas audio ligzdas pieslēgšanas un atslēgšanas simulācijas atbalsts, lai palīdzētu apstrādātājus lietotāja telpā.
- Pievienota atbalsts Nintendo 64 spēļu konsolēm, kas tika ražotas no 1996. līdz 2003. gadam (iepriekšējie mēģinājumi portēt Linux uz Nintendo 64 netika pabeigti un tika uzskatīti par Vaporware). Kā iemesls jaunā porta izveidei novecojušai platformai, kas neparādās tirgū jau gandrīz divdesmit gadus, ir vēlme veicināt emulatoru attīstību un spēļu pārsūtīšanu.
- Pievienots draiveris Sony PlayStation 5 DualSense spēļu kontrolierim.
- Pievienots atbalsts ARM platformām, ierīcēm un platformām: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
- Pievienots atbalsts Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 viedtālruņiem.
- Pievienots bcm-vk draiveris Broadcom VK (piemēram, PCIe kartēm Valkyrie un Viper), kas var tikt izmantots, lai ārēju ierīci apstrādātu audio, video un attēlu operācijas, kā arī šifrēšanas darbības.
- Pievienots atbalsts Lenovo IdeaPad platformai ar iespēju pārvaldīt nepārtrauktu uzlādi un tastatūras apgaismojumu. Tāpat nodrošināts atbalsts ThinkPad platformas ACPI profilam ar iespēju pārvaldīt enerģijas patēriņa režīmus. Pievienots draiveris Lenovo ThinkPad X1 Tablet Gen 2 HID apakšsistēmai.
- Pievienots ov5647 draiveris ar atbalstu kameru moduļiem Raspberry Pi.
- Pievienots atbalsts RISC-V SoC FU740 un HiFive Unleashed plates. Tāpat pievienots jauns draiveris Kendryte K210 čipam.
Avots: opennet.lv
