Pēc diviem mēnešiem izstrādes Linuss Torvalds prezentēja Linux 5.17 kodola izlaišanu. Starp visredzamākajām izmaiņām: jauna veiktspējas vadības sistēma AMD procesoriem, iespēja rekurzīvi kartēt lietotāju identifikatorus failu sistēmās, atbalsts pārnesamām kompilētiem BPF programmām, pseido nejaušo skaitļu ģeneratora pāreja uz BLAKE2s algoritmu, RTLA rīks reāllaika izpildes analīzei, jauns fscache aizmugurējais nodrošinājums tīkla FS kešošanai, iespēja pievienot nosaukumus anonīmām mmap operācijām.
Jaunajā versijā iekļauti 14203 labojumi no 1995 izstrādātājiem, plāksnes lielums — 37 MB (izmaiņas skāra 11366 failus, pievienoti 506043 koda rindiņas, dzēstas 250954 rindiņas). Aptuveni 44% visu 5.17 izmaiņu saistītas ar ierīču draiveriem, apmēram 16% izmaiņas attiecās uz aparatūras arhitektūrām specifiska koda atjauninājumiem, 15% attiecās uz tīkla steku, 4% — uz failu sistēmām un 4% uz iekšējām kodola subsistēmām.
Galvenās jaunas funkcijas kodolā 5.17:
- Disku apakšsistēma, I/O un failu sistēmas
- Ieviesta iespēja veidot iegultus lietotāju identifikatoru kartējumus pievienotajās failu sistēmās, kas tiek izmantota, lai sasaistītu konkrētā lietotāja failus pievienotajā svešajā daļā ar citu lietotāju pašreizējā sistēmā. Pievienotā iespēja ļauj rekurzīvi izmantot kartējumu virs failu sistēmām, kurām jau tiek izmantots kartējums.
- Pavisam pārstrādāta fscache subsistēma, kas tiek izmantota datu kešošanai lokālajā failu sistēmā, ko pārsūta caur tīkla failu sistēmām. Jaunā versija izceļas ar ievērojamu koda vienkāršošanu un sarežģītu objektu stāvokļa izsekotāju un plānošanas operāciju aizstāšanu ar vienkāršākiem mehānismiem. Atbalsts jaunajam fscache realizēts CIFS failu sistēmā.
- FS notikumu izsekošanas subsistēmā fanotify ieviests jauns notikumu tips FAN_RENAME, kas ļauj vienlaikus pārtraukt failu vai katalogu pārdēvēšanas operāciju (iepriekš pārdēvēšanai tika izmantoti divi atsevišķi notikumi FAN_MOVED_FROM un FAN_MOVED_TO).
- Btrfs failu sistēmā ir optimizēta žurnālu un fsync operāciju veikšana lielās direktorijās, izmantojot tikai indeksu atslēgu kopēšanu un samazinot žurnālu metadatu apjomu. Nodrošināta atbalsts indeksēšanai un meklēšanai pēc brīvā vietas ierakstu izmēra, kas ļāvis samazināt aizturi par aptuveni 30% un samazināt meklēšanas laiku. Atļauts pārtraukt defragmentācijas operācijas. Iekļauta iespēja pievienot ierīces, izslēdzot balansēšanu starp krātuvi, t.i., pie montēšanas, izmantojot opciju skip_balance.
- Ierosināts jauns Ceph failu sistēmas montēšanas sintakse, kas atrisina iepriekšējās problēmas, kas saistītas ar piesaisti IP adresēm. Turklāt IP adreses tagad servera noteikšanai var izmantot klastera identifikatoru (FSID): mount -t ceph user@fsid.fs_name=\/[subdir] mnt -o mon_addr=monip1[:port][\/monip2[:port]]
- Ext4 failu sistēma pārgājusi uz jaunu montēšanas API, kas sadala montēšanas opciju analīzes un superbloka konfigurācijas posmus. Pārtraukta lazytime un nolazytime montēšanas opciju atbalsts, kas tika pievienotas kā pagaidu izmaiņas util-linux pārejas atvieglošanai uz MS_LAZYTIME opciju. Iekļauts atbalsts etiķešu iestatīšanai un lasīšanai failu sistēmā (ioctl FS_IOC_GETFSLABEL un FS_IOC_SETFSLABEL).
- NFSv4 pievienots atbalsts failu sistēmām bez reģistru atšķirības failu un katalogu nosaukumos. NFSv4.1+ pievienots atbalsts agregēto sesiju noteikšanai (trunking).
- Atmiņa un sistēmas pakalpojumi
- Pievienots amd-pstate draiveris, nodrošinot dinamisku frekvences pārvaldību, lai sasniegtu optimālu veiktspēju. Draiveris atbalsta AMD CPU un APU sākot no Zen 2 paaudzes, izstrādāts kopā ar uzņēmumu Valve un ir mērķēts uz enerģijas patēriņa vadības efektivitātes paaugstināšanu. Adaptīvai frekvences izmaiņai tiek izmantots CPPC (Collaborative Processor Performance Control) mehānisms, kas ļauj precīzāk mainīt rādītājus (nav ierobežots ar trim veiktspējas līmeņiem) un ātrāk reaģēt uz stāvokļa izmaiņām, nekā agrāk izmantotie ACPI (CPUFreq) bāzes P-state draiveri.
- eBPF apakšsistēmā ierosināts bpf_loop() apstrādātājs, kas piedāvā alternatīvu iespēju ciklu organizēšanai eBPF programmās, kas ir ātrāka un vieglāk pārbaudāma verifikatorā.
- Kodola ir ieviesta CO-RE (Compile Once — Run Everywhere) mehānika, kas ļauj eBPF programmu kodu kompilēt tikai vienu reizi un izmantot īpašu universālu ielādētāju, kas pielāgo ielādējamo programmu esošajam kernel un BTF (BPF Type Format) tipiem.
- Iespējams piešķirt nosaukumus privātās anonīmās (izdalītas caur malloc) atmiņas apgabaliem, kas var atvieglot atkļūdošanas un atmiņas patēriņa optimizēšanas procesus lietojumprogrammās. Nosaukumi tiek piešķirti ar prctl ar PR_SET_VMA_ANON_NAME zīmi un tiek attēloti /proc/pid/maps un /proc/pid/smaps kā «[anon:]».
- Uzdevumu plānotājā ir ieviesta iespēja izsekot un attēlot /proc/PID/sched laiku, ko procesi pavada piespiedu bezdarbībā (forced-idle), kas tiek pielietots, piemēram, lai samazinātu slodzi, kad procesors pārkarst.
- Pievienots gpio-sim modulis, kas paredzēts GPIO čipu simulācijai testēšanas nolūkos.
- Komandai «perf ftrace» pievienota apakškomanda «latency» histogrāmu ģenerēšanai, kas satur informāciju par aiztures laikiem.
- Pievienots rīku komplekts «RTLA» reāllaika režīma analīzei. Tajā iekļautas tādas utilītas kā osnoise (nosaka operētājsistēmas ietekmi uz uzdevuma izpildi) un timerlat (maina laiku, kas saistīts ar taimeri).
- Integrēta otrā sērija ar plāksteriem, kas realizē atmiņas lapu folio koncepciju, kas atgādina apvienotās atmiņas lapas (compound pages), bet atšķiras ar uzlabotu semantiku un skaidrāku darba organizāciju. Folio izmantošana ļauj paātrināt atmiņas pārvaldību dažās kodola subsistēmās. Ierosinātajos plāksteros pabeigts lapu keša pārgājiens uz folio izmantošanu un pievienota sākotnējā atbalsta foliem XFS FS.
- Pievienots «make mod2noconfig» kompilācijas režīms, kurā tiek ģenerēta konfigurācija, kas apvieno visus atslēgtos subsistēmas moduļos.
- Paaugstinātas prasības LLVM/Clang versijai, ko var izmantot kodola kompilācijai. Tagad minimāli nepieciešams LLVM 11 izlaidums.
- Virtualizācija un drošība
- Tika ir piedāvāts uzlabots pseido nejaušo skaitļu ģeneratora RDRAND īstenojums, kas atbild par /dev/random un /dev/urandom ierīču darbību, kas izceļas ar pāreju uz BLAKE2s heša funkcijas izmantošanu entropijas sajaukšanas operācijās, nevis SHA1. Šī izmaiņa ļāvusi palielināt pseido nejaušo skaitļu ģeneratora drošību, novēršot problemātisko SHA1 algoritmu un izslēdzot RNG inicializācijas vektora pārrakstīšanu. Tā kā BLAKE2s algoritms ir ātrāks par SHA1, tā izmantošana ir pozitīvi atspoguļojusies arī veiktspējā.
- Pievienota aizsardzība pret procesoru ievainojamībām, kas saistītas ar spekulatīvo instrukciju izpildi pēc nosacītā pārejas operācijām. Problēma rodas sakarā ar to, ka tiek iepriekš apstrādātas instrukcijas, kas atrodas atmiņā tieši aiz pārejas komandas (SLS, Straight Line Speculation). Lai aktivizētu aizsardzību, nepieciešama kompilācija, izmantojot GCC 12 versiju, kas šobrīd ir testēšanas posmā.
- Ieviešot atsauces skaitīšanas (refcount, reference-count) mehānismu, mērķis ir samazināt kļūdas, kas izraisa piekļuvi atmiņai pēc tās atbrīvošanas. Mehānisms pagaidām ir ierobežots ar tīkla apakšsistēmu, taču nākotnē var tikt pielāgots arī citām kodola daļām.
- Ieviestas paplašinātas pārbaudes jauniem ierakstiem procesa atmiņas lapu tabulā, kas ļauj identificēt dažus bojājumu veidus un apturēt sistēmu, bloķējot uzbrukumus agrīnā posmā.
- Pievienota iespēja izsaiņot kodola moduļus tieši no paša kodola, nevis no lietotāja telpas apstrādātāja, kas ļauj, izmantojot LSM moduļa LoadPin, garantēt, ka kodola moduļi tiek ielādēti no pārbaudītas glabāšanas ierīces.
- Tiek nodrošināta kompilācija ar -Wcast-function-type karogu, kas iekļauj brīdinājumu izsniegšanu par funkciju rādītāju pārveidi uz nesaderīgu tipu.
- Pievienots virtuālais hosta draiveris pvUSB hiper-vizoram Xen, kas nodrošina piekļuvi USB ierīcēm, kas tiek piešķirtas viesu sistēmām (ļauj viesu sistēmām piekļūt fiziskām USB ierīcēm, kas ir piesaistītas viesu sistēmai).
- Pievienots modulis, kas ļauj sazināties ar IME (Intel Management Engine) apakšsistēmu, izmantojot Wi-Fi. Šī apakšsistēma tiek iekļauta lielākajā daļā mūsdienu mātesplatņu ar Intel procesoriem un darbojas kā atsevišķs mikroprocesors neatkarīgi no CPU.
- ARM64 arhitektūrai ieviesta atbalsts KCSAN (Kernel Concurrency Sanitizer) rīkam, kas paredzēts dinamiskiem sacensību stāvokļu noteikšanai kodolā.
- 32 bitu ARM sistēmām pievienota iespēja izmantot KFENCE mehānismu, lai identificētu atmiņas kļūdas.
- KVM hipervizorā pievienots atbalsts AMX (Advanced Matrix Extensions) instrukcijām, kas ieviestas gaidāmajos Intel Xeon Scalable serveru procesoros.
- Tīkla subsistēma
- Pievienots atbalsts operāciju izvadīšanai (offloading) uz tīkla ierīču pusi, kas saistītas ar satiksmes vadību.
- Pievienota iespēja izmantot MCTP (Management Component Transport Protocol) protokolu pāri ierīcēm ar secīlo interfeisu. MCTP var izmantot, lai sazinātos ar kontrolieriem un saistītajām ierīcēm (host procesoriem, perifērijas ierīcēm utt.).
- Optimizēts TCP steks, piemēram, atkārtoti atbrīvojot sīkumus soketu buferiem, lai uzlabotu recvmsg izsaukumu veiktspēju.
- CAP_NET_RAW pilnvaru līmenī atļauts iestatīt SO_PRIORITY un SO_MARK režīmus caur setsockopt funkciju.
- IPv4 atļauts piesaistīt izejošas soketu nevis lokālajiem IP adresēm, izmantojot IP_FREEBIND un IP_TRANSPARENT opcijas.
- Pievienots sysctl arp_missed_max, lai konfigurētu augšējo sliekšņa skaitu kļūdu ARP uzraudzībā, pēc kuras tīkla interfeiss tiek izslēgts.
- Nodrošināta iespēja konfigurēt atsevišķas sysctl min_pmtu un mtu_expires vērtības tīkla nosaukumu telpām.
- API ethtool pievienota iespēja iestatīt un noteikt ienākošo un izejošo paketu buferu izmērus.
- Netfilter pievienots atbalsts pppoe satiksmes filtrēšanai tīkla tiltos.
- Modulī ksmbd, kas īsteno failu, izmantojot SMB3 protokolu, pievienots atbalsts atslēgu apmaiņai, izmantojot 445. portu smbdirect un atbalsts parametram 'smb2 max credit.' serveris, kas izmanto SMB3 protokolu, ir pievienota atbalsts atslēgu apmaiņai, ir izmantots tīkla ports 445 smbdirect un ir pievienots parametra «smb2 max credit» atbalsts.
- Aprīkojums
- DRM (Direct Rendering Manager) apakšsistēmā un i915 draiverī ir pievienota atbalsta funkcionalitāte ekrāniem, kas atbalsta konfidenciālu informāciju, piemēram, daži portatīvie datori ir aprīkoti ar ekrāniem, kuriem ir iebūvēts konfidenciālas skatīšanās režīms, apgrūtinošs skatīšanos no malas. Pievienotās izmaiņas ļauj pievienot specializētus draiverus šādiem ekrāniem un pārvaldīt konfidenciālas skatīšanās režīmus, nosakot īpašības parastos KMS draiveros.
- amdgpu draiverī ir iekļauts atbalsts STB (Smart Trace Buffer) atkļūdošanas tehnoloģijai visiem AMD GPU, kas to atbalsta. STB vienkāršo avāriju analīzi un problēmu avotu identificēšanu, saglabājot specializētā buferī informāciju par funkcijām, kas tika veiktas pirms pēdējās avārijas.
- i915 draiverī ir pievienots atbalsts Intel Raptor Lake S mikroshēmām, un grafiskās apakšsistēmas atbalsts Intel Alder Lake P mikroshēmām ir iekļauts pēc noklusējuma. Ir nodrošināta iespēja pārvaldīt ekrāna apgaismojumu, izmantojot VESA DPCD saskarni.
- fbcon/fbdev draiveros ir atjaunots atbalsts aparatūras paātrināšanai ritināšanā terminālī.
- Turpināta izmaiņu integrācija Apple M1 mikroshēmu atbalstam. Ir realizēta iespēja izmantot simpledrm draiveri uz sistēmām ar Apple M1 mikroshēmu, lai izvadītu caur framebuffer, ko nodrošina firmware.
- Ir pievienots ARM SoC, ierīču un plātņu atbalsts Snapdragon 7c, 845 un 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 (Acer Chromebook 314), Mediatek MT7986a/b (lietojas Wi-Fi maršrutētājos), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8, Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
- Ir pievienots ARM Cortex-M55 un Cortex-M33 procesoru atbalsts.
- Ir pievienots atbalsts MIPS CPU bāzes ierīcēm: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
- Ir pievienots RISC-V arhitektūrā balstītais StarFive JH7100 SoC atbalsts.
- Ir pievienots lenovo-yogabook-wmi draiveris, lai pārvaldītu klaviatūras apgaismojumu un piekļūtu dažādiem sensoram Lenovo Yoga Book.
- Ir pievienots asus_wmi_sensors draiveris, lai piekļūtu sensoriem, kas tiek lietoti Asus X370, X470, B450, B550 un X399 mātesplatēs ar AMD Ryzen procesoriem.
- Ir pievienots x86-android-tablets draiveris x86 arhitektūrā balstītiem planšetdatoriem, kas piegādāti ar Android platformu.
- Pievienota atbalsta skārienekrāniem TrekStor SurfTab duo W1 un elektroniskajām pildspalvām planšetdatoriem Chuwi Hi10 Plus un Pro.
- SoC Tegra 20/30 draiveros pievienots atbalsts jaudas un sprieguma vadībai. Nodrošināta iespēja bootot vecākās 32 bitu ierīcēs, kas balstītas uz SoC Tegra, piemēram, ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 un Pad TF300TG.
- Pievienoti draiveri industriālajiem datoriem Siemens.
- Pievienots atbalsts LCD paneļiem Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA un Team Source Display TST043015CMHX.
- Pievienots atbalsts skaņas sistēmām un kodekiem AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel sistēmām, kas izmanto NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDOF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Atrisinātas problēmas ar Tegra194 HD-audio. Pievienots HDA atbalsts CS35L41 kodekiem. Uzlabots atbalsts skaņas sistēmām Lenovo un HP klēpjdatoriem, kā arī Gigabyte mātesplatēm.
Avots: opennet.lv
