Linux kodola 6.9 izlaišana

Pēc divu mēnešu izstrādes Linus Torvalds prezentēja Linux 6.9 kodola izlaišanu. Starp ievērojamākajām izmaiņām ir dm-vdo modulis blokierīču dedupikācijai un kompresijai, tiešās piekļuves režīms failiem FUSE, pidfd izveide atsevišķiem pavedieniem, BPF tokenu mehānisms, Rust atbalsts ARM64 sistēmās, Ext2 failu sistēmas pāreja uz novecojušām, vecā NTFS draivera izņemšana un Intel FRED mehānisma atbalsts.

Jaunajā versijā ir iekļauti 15680 labojumi no 2106 izstrādātājiem, un plākstera izmērs ir 54 MB (izmaiņas skārušas 11825 failus, pievienotas 687954 koda rindas, izdzēstas 225344 rindas). Iepriekšējā laidienā bija 15641 labojums no 2018 izstrādātājiem, un plākstera izmērs bija 44 MB. Apmēram 42% no visām 6.9 izmaiņām attiecas uz ierīču draiveriem, aptuveni 17% izmaiņu attiecas uz aparatūras arhitektūrām specifisku koda atjaunināšanu, 13% saistīti ar tīkla kaudzi, 7% - ar failu sistēmām un 4% - ar iekšējām kodola apakšsistēmām.

Galvenās jaunās funkcijas kodolā 6.9:

  • Disku apakšsistēma, I/O un failu sistēmas
    • Device Mapper (DM) ir pievienots jauns dm-vdo (virtual data optimizer) apstrādātājs, kas ļauj, pamatojoties uz esošajām blokierīcēm, izveidot virtuālu blokierīci ar tādām funkcijām kā atkārtotu datu dedupikācija, datu kompresija, tukšo bloku izslēgšana un blokierīces lieluma palielināšana pēc nepieciešamības (thin provisioning). Minētās iespējas tiek īstenotas blokierīces līmenī un neietekmē izmantotās failu sistēmas (piemēram, izmantojot dm-vdo, var automatizēt atkārtotu datu apvienošanu un informācijas uzglabāšanu kompresētā veidā jebkurai FS). Tiek atbalstīta dm-vdo lietošana fiziskajiem krātuvēm līdz 256TB un loģisko apjomu izveide līdz 4PB. VDO šķērsgriezuma pārvaldīšanai ieteicams izmantot lvm. VDO tehnoloģiju izstrādāja uzņēmums Permabit un tā tika atklāta pēc tam, kad to 2017. gadā pārņēma Red Hat.
    • FUSE apakšsistēmā, kas tiek izmantota failu sistēmu īstenošanai lietotāja telpā, ir pievienota sākotnējā «passthrough» režīma īstenošana, kas ļauj tieši kodola līmenī iegūt failu datus, apejot procesus, kas darbojas lietotāja telpā, tādējādi dažos gadījumos būtiski palielinot veiktspēju. Piemēram, FUSE-īstenotās FS, kas darbojas tikai lasīšanas režīmā un ierobežo piekļuvi faili, var nodot failu saturu no avota FS bez to nodošanas FUSE procesam.
    • Kategorijā par novecojušiem (deprecated) ir iekļauts Ext2 failu sistēmas īstenojums. Par iemeslu minēta atbalsta sniegšana tikai 32-bit laika skaitītājiem inode, kas pārsniegs 19. gada 2038. janvārī. Tā vietā iepriekšējā ext2 draivera vietā ir ieteicams izmantot ext4 draiveri, kas atbalsta Ext2 failu sistēmu un ir pilnīgi saderīgs ar to, bet var izmantot ext2 sadaļās laika zīmes, kas nav pakļautas 2038. gada problēmai, ja FS izveidota ar inode, kuru lielums ir lielāks par 255 baitiem (ext2 draiverī 32-bit laika skaitītāji tika izmantoti neatkarīgi no inode lieluma).
    • Vecais NTFS failu sistēmas draiveris ir noņemts, tā vietā, sākot ar 5.15 versiju, ir ieviests jauns NTFS3 draiveris. Divu NTFS īstenojumu piegāde kodolā atzīta par nevajadzīgu, ņemot vērā to, ka vecais draiveris netika atjaunots daudzus gadus, atrodas slikstā stāvoklī un var darboties tikai lasīšanas režīmā.
    • Failu sistēmās zonefs un hugetlbfs ir pievienota lietotāju identifikatoru mappēšanas atbalsts montētām failu sistēmām, ko izmanto, lai sakautu noteikta lietotāja failus montētajā sveša nodalījumā ar citu lietotāju pašreizējā sistēmā.
    • NFSv4 administratori tagad var atjaunot failu atvēršanas un bloķēšanas stāvokļus.
    • Ext4 failu sistēmā atzīmēti tikai kļūdu labojumi un kunit testu atjauninājumi.
    • Btrfs turpināta funkciju pārcelšana uz lapu folio izmantošanu (page folios).
    • XFS failu sistēmā turpinās darbs pie iespējas izmantot utilītu fsck, lai pārbaudītu un labotu atklātās problēmas tiešsaistes režīmā, neatslēdzot failu sistēmu.
    • Sistēmas izsaukuma pwritev2() funkcijai pievienots karogs RWF_NOAPPEND, kas ļauj norādīt rakstīšanas offset, pat ja fails tika atvērts pievienošanas režīmā.
    • Pievienotas jaunas ioctl komandas: FS_IOC_GETUUID — atgriež norādītā failu sistēmas UUID identifikatoru, un FS_IOC_GETFSSYSFSPATH — nosaka atrašanās vietu /sys/fs norādītajai pievienotajai failu sistēmai.
    • Failu sistēmas efs, qnx4 un coda ir pārveidotas, lai izmantotu jauno sadaļu montēšanas API.
    • Uzlabota failu operāciju izpilde, kas tiek veikta bez reģistru atzīmēšanas. Veiktspēja ir uzlabota, veicot sākotnēju salīdzinājumu ar reģistru, un pēc tam pārejot uz meklēšanu bez reģistru. Atrisinātas problēmas, montējot overlayfs virs direktorijām, kuru reģistrs ir izslēgts.
  • Atmiņa un sistēmas pakalpojumi
    • Ieviesta Intel FRED (Flexible Return and Event Delivery) mehānisma atbalsts, kas izstrādāts, lai uzlabotu informācijas par zemu līmeņu notikumiem piegādes efektivitāti un uzticamību, salīdzinot ar pašreizējo IDT (Interrupt Descriptor Table) mehānismu. Veiktspējas uzlabošana un aiztures samazināšana tiek nodrošināta, atgriežot notikumus ar procesora instrukciju IRET, nevis pārsūtot notikumus caur IDT tabulu. Uzticamības palielināšana tiek panākta, atsevišķi apstrādājot notikuma iestāšanos kodola un lietotāja kontekstā, pasargājot no NMI ielādes un saglabājot paplašinātajā steka kadros visus saistītos izņēmuma CPU reģistrus.
    • Pievienota iespēja optimizēt datu piekļuvi individuālajiem CPU kodoliem, izmantojot kodola kodā nosauktās adresātu telpas (Named Address Spaces), kas realizētas GCC kā GNU C paplašinājums.
    • Funkcijai pidfd_open() pievienots PIDFD_THREAD karogs, kas ļauj izveidot pidfd individuāliem pavedieniem, nevis tikai izmantot pidfd grupas pavedienu kontekstā. Tāpat piedāvāta pseido-FS īstenošana, lai piekļūtu pidfd caur virtuālo failu sistēmu. Atšķirībā no procesu identifikācijas ar pid, pidfd identifikators ir saistīts ar konkrētu procesu un nemainās, kamēr PID pēc pašreizējā procesa pabeigšanas var tikt piesaistīts citam procesam.
    • BPF apakšsistēmā pievienots BPF-tokenu mehānisms, kas ļauj selektīvi deleģēt programmām piekļuves tiesības uz privilēģētām BPF operācijām, piemēram, var sniegt neprivileģētai lietojumprogrammai piekļuvi atsevišķām BPF apakšsistēmām bez pilnām CAP_BPF tiesībām.
    • BPF apakšsistēmā ir pievienots jauns koplietošanas atmiņas veids bpf_arena, kas definē jomu, kuru var koplietot BPF programmas un lietotāju telpā esošas procedūras. Ir pievienota instrukcija may_goto, kas ļauj organizēt ciklu darbu, kurus var pārtraukt verifikators. Ir pieejama iespēja ģenerēt no BPF programmām nejaušus TCP SYN cookie un izveidot BPF apstrādātājus, lai cīnītos ar SYN plūdiem.
    • Turpinās izmaiņu pārsūtīšana no Rust-for-Linux zara, kas saistīta ar Rust valodas izmantošanu kā otro valodu vadītāju un kodola moduļu izstrādē (Rust atbalsts pēc noklusējuma nav aktīvs un neietekmē to, ka Rust ir obligāts atkarību veids kodolam). Ir pievienots atbalsts Rust valodas izmantošanai 64 bitu ARM procesoros. Ir īstenota pāreja uz Rust 1.76 versiju. Ir pievienots makro ‘container_of!’. Nevis nestabila funkcionalitāte ‘ptr_metadata’ tiek izmantota stabila metode ‘byte_sub’. Ir pievienots modulis ‘time’ ar funkciju laika pārvēršanai ‘msecs_to_jiffies()’.
    • Io_uring apakšsistēmā ir pievienota iespēja failu saīsināšanai (ftruncate_file).
    • Ir pievienots jauns darba rindas veids WQ_BH (workqueue Bottom Halves) asynhronai koda izpildei programmatūras pārtraukumu kontekstā, kas paredzēts izmantošanai vietā novecojušiem tasklet.
    • Tiem, kas strādā ar taimeri, ir būtiski pārstrādāta loģika aktīvo CPU kodolu izvēlei, lai netraucētu neaktīvos kodolus izsist no miega stāvokļa.
    • Ir realizēta iespēja atjaunināt kodola energo patēriņa modeli (EM, Energy Model) darbības laikā, kas var tikt izmantots, piemēram, ņemot vērā darba temperatūras ietekmi uz CPU energoefektivitāti. Funkcija em_cpu_energy() ir būtiski paātrināta, tagad izpildes ātrums nesaistītā sistēmā ir par 1.43 reizes ātrāks, bet testā uz RockPi 4B plates — par 1.69 reizes ātrāks.
    • Ir pievienots atbalsts ARM64 arhitektūras sistēmu palaišanai LPA2 režīmā ar 52 bitu virtuālās adreses telpu.
    • ARM64 sistēmām ir īstenots nepārtrauktu PTE (Page Table Entry) ierakstu atbalsts, ļaujot palielināt veiktspēju, uzlabojot TLB (Translation Lookaside Buffer) izmantošanas efektivitāti.
    • Ir pieņemti labojumi, lai uzlabotu atmiņas pārvaldības apakšsistēmas veiktspēju, samazinot konkurējošo bloķējumu rašanos vmalloc().
    • LoongArch arhitektūrā ir ieviesta karsto labojumu mehānisms (live patching), kas ļauj veikt labojumus kodolā bez restartēšanas.
    • RISC-V sistēmām ir ieviesta sistēmas izsaukuma membarrier() atbalsts, kas nodrošina atmiņas barjeru iestatīšanu sistēmā darbojošajiem traucējumiem.
    • Ir paaugstinātas prasības par LLVM/Clang versiju, kuru var izmantot kodola kompilēšanai. Tagad nepieciešama vismaz LLVM 13.0.1 versija (iepriekš tika atbalstīta kompilācija ar LLVM 11+).
    • User trace events mehānismā, kas ļauj izveidot izsekošanas notikumus no lietotāja procesiem, lai sekotu lietotāja telpā notiekošajai aktivitātei, ir pievienots atbalsts notikumu informācijas eksportēšanai dažādos formātos (USER_EVENT_REG_MULTI_FORMAT).
    • Funkciju izsaukumu izsekošanas mehānismā ir pievienota iespēja izsekot funkcijas ienākošo argumentu stāvokli, kad tiek izsekots izeja no funkcijas. Tagad return operators atgrieztās vērtības var salīdzināt ar izmantotajiem argumentiem funkcijas izsaukšanai.
    • Rīkam perf ir pievienots atbalsts izvadīšanas agregēšanas režīmam "cluster" ("perf stat -a —per-cluster"), lai apvienotu kopīgo resursu statistiku. Ir ieviesta iespēja izmantot bibliotēku libcapstone procesora instrukciju disassemblerēšanai ("perf script -F disasm"). Ir veiktas optimizācijas atmiņas patēriņā, izpildot komandas perf report un perf annotate.
  • Virtualizācija un drošība
    • Ir pievienota aizsardzība pret RFDS (Register File Data Sampling) ievainojamību Intel Atom procesoros, kas ļauj iegūt atlikušās informācijas no reģistru failiem (RF, Register File) procesora, kas tiek izmantoti kopīgā reģistru satura uzglabāšanai visās uz to pašu CPU kodolu strādājošajās uzdevumos. Lai bloķētu ievainojamību, nepieciešama mikroiekārtas atjaunināšana un instrukcijas VERW izmantošana mikroarhitektūras buferu iztukšošanai, atgriežoties no kodola atpakaļ lietotāja telpā. Aizsardzības aktivizēšanai, ielādējot kodolu, var norādīt karogu "reg_file_data_sampling=on". Informāciju par ievainojamības pakļautību un nepieciešamo mikroiekārtas klātbūtni aizsardzībai var novērtēt failā "/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling".
    • Irīkotā pamatatbalsts viesu sistēmu aizsardzībai, izmantojot AMD SEV-SNP (Secure Nested Paging) paplašināšanu, kas nodrošina drošu darbu ar iekšējām atmiņas lapu tabulām un aizsargā pret «undeSErVed» un «SEVerity» uz AMD EPYC procesoriem, kas ļauj apiet AMD SEV (Secure Encrypted Virtualization) aizsardzības mehānismu. KVM Nepieciešamās izmaiņas SNP izmantošanā plānots pievienot versijā 6.10.
    • Moduļi ar IMA (Integrity Measurement Architecture) un EVM (Extended Verification Module) tehnoloģiju realizāciju ir pārveidoti, lai izmantotu LSM (Linux Security Modules) ietvaru, kas bez funkcionalitātes zaudēšanas ievērojami vienkāršo kodu, apvieno dublējošos funkcionalitātes un ļauj izmantot pieejamās LSM standartizētās iespējas. IMA modulis paredzēts operētājsistēmas komponentu integritātes pārbaudei, pamatojoties uz digitālajām parakstiem un hash vērtībām. EVM modulis aizsargā paplašinātos failu atribūtus (xattrs) no uzbrukumiem, kas vērsti uz to integritātes pārkāpšanu (EVM nepieļaus offline uzbrukumu, kurā uzbrucējs var mainīt metadatus, piemēram, bootējot no savas ierīces).
    • Tika pārstrādātas sistēmas izsaukumi lsm_list_modules(), lsm_get_self_attr() un lsm_set_self_attr(), lai nodrošinātu labāku saderību ar 32 bitu vidi, kas paredzēti, lai izvadītu ielādēto LSM moduļu (Linux Security Modules) sarakstu un iegūtu/norādītu LSM moduļa atribūtus. Izmaiņas traucē atpakaļsaderību, bet, ņemot vērā, ka jaunie sistēmas izsaukumi tika pievienoti pagājušajā kodola laidienā un pašlaik netiek izmantoti lietojumprogrammās, Linuss Torvalds uzskatīja, ka izmaiņas ir pieņemamas.
    • Tika tika mēģinājums atjaunot UBSAN (Undefined Behavior Sanitizer) mehānisma izmantošanu. Problēmas būtība ir tāda, ka kompilatori atšķirīgi apstrādā veselo skaitļu pārpildīšanu ar pazīstamajiem un bezpazīstamajiem tipiem. Zīmju pārpildījumi un norāžu pārpildījumi pieder pie nenoteiktas uzvedības kategorijas, bet bezpazīstami pārpildījumi tiek samazināti pēc modulo 2n, saglabājot tikai zemākos rezultāta bitus („wrap-around”) un nenoraksta nenoteiktu uzvedību. Lai izslēgtu situācijas ar nenoteiktu uzvedību, kodols tiek sapakots ar opciju „-fno-strict-overflow”, kas noved pie „wrap-around” izmantošanas visām veselā skaitļa pārpildēm. GCC un Clang nevar pareizi diagnosticēt dažas problēmas, lietojot karogu „-fno-strict-overflow”, un UBSAN ieviešana ir vērsta uz kopīgu sadarbību ar kompilatoru izstrādātājiem, lai novērstu radušos kļūdainas reakcijas un identificētu veselā skaitļa pārpildījumus vietās, kur nav skaidru pārbaudījumu.

      Lai pārbaudītu iespējamos pārpildījumus kodolā, tiek izmantoti konstrukcijas veida „var + offset PAGE_SHIFT) < pgoff){..}"), kas ir saistītas ar kompilāciju ar karogu „-fno-strict-overflow” un neaptver visu kodu, kur potenciāli var rasties pārpildījums. Problēma ir tāda, ka, lietojot UBSAN, līdzīgas pārbaudes izraisīja daudzu kļūdaini signālu izvadīšanu, un tādēļ 2021. gadā UBSAN nācās atslēgt. Atjaunotajā īstenojumā ieteikts izmantot īpašas anotācijas __signed_wrap un __unsigned_wrap, kā arī gatavus makros ar pārbaudēm add_would_overflow(a, b) un add_wrap(a, b), kas ļauj atdalīt izstrādātāju paredzēto veselā skaitļa pārpildījumu izmantošanu no nejaušiem pārpildījumiem, kas var novest pie ievainojamības. Ieteikums par plašāku kodola pārbūvi, iekļaujot papildu tipu definīcijas, tika noraidīts Linusa Torvalda.

  • Tīkla subsistēma
    • Tīklošanas apakšsistēmā ir veikts darbs, lai samazinātu konkurējošas bloķēšanas rašanos ("lock contention", mēģinājums iegūt bloķēšanu, ko notur cits pavedien). Tika samazināta RTNL bloķēšanas izmantošana.
    • Tika pievienota iespēja ieslēgt aktīvā socket polinga (busy polling) atbalstu konkrētu epoll izsaukumu kontekstā. Pule un budžeta parametri var tikt iestatīti atsevišķi no noklusējuma sistēmas parametriem.
    • Ieviesta struktūra net_hotdata, lai uzlabotu bieži izmantoto tīkla konfigurācijas mainīgo kešatmiņas efektivitāti.
    • MPTCP ir pievienots atbalsts opcijas TCP_NOTSENT_LOWAT iestatīšanai sockets, kas ļauj ierobežot sūtīšanas bufera izmēru. MCTP sockets API ir pievienots atbalsts tīkla identifikatoriem (“network ID”), kas ļauj izmantot vairākas nepārklājošas MCTP tīklus vienā tajā pašā host.
    • IPSec ir pievienots atbalsts ICMP ziņojumu novirzīšanai ar kļūdu informāciju (RFC 4301).
    • Tiek paātrināts maršrutu skenēšanas process, kad laiks ir beidzies.
    • Tiek paātrināta XDP darbība, pateicoties stingrākai plašu atmiņas blokā izvairīšanai.
    • Tika pievienota iespēja pievienot metadatus netconsole ziņojumiem.
    • Netfilter ir atļauts noteikt lietotāja telpas tabulas, kas pievienojas fona pārvaldības procesam un netiek automātiski noņemtas pēc lietotāja lietojumprogrammas pabeigšanas.
    • nftables ir paātrināta elementu pievienošana set-kopām ar apvienotiem diapazoniem.
  • Aprīkojums
    • i915 draiverī turpināta darba uzsākšana Intel LunarLake (Xe 2) čipu atbalsta ieviešanai. Pievienoti jauni PCI identifikatori ierīcēm, kas balstās uz Intel Arrow Lake un Alder Lake N čipiem. DisplayPort ir pievienots atbalsts tunelēšanai (DP tunneling) un caurlaides piešķiršanai (bandwidth allocation). Visām platformām ir ieslēgta ātrā palaišana. Pievienots atbalsts atkļūdošanas izvadei, kas saistīta ar atsevišķām ierīcēm.
    • AMDGPU draiverī ir veikta sagatavošana atbalsta ieviešanai AMD RDNA3.5 un RDNA4 GPU. Pievienots atbalsts ATHUB 4.1, LSDMA 7.0, JPEG DPG, IH 7.0, HDP 7.0, VCN 5.0, SMU 13.0.6, NBIO 7.11, SDMA 6.1, MMHUB 3.3, DCN 3.5.1, NBIF 6.3.1, VPE 6.1.1 un RAS ACA ietvara atbalstam. Kodu modulī ir pievienots parametrs freesync_video, lai ieslēgtu eksperimentālo atbalstu videorežīmu maiņas optimizācijai, izmantojot FreeSync adaptīvās sinhronizācijas tehnoloģiju.
    • Nouveau draiverī ekrāna pārvaldības kods ir pārgājis uz kmemdup() funkcijas izmantošanu.
    • Turpināta darba veikšana pie drm draivera (Direct Rendering Manager) Xe GPU, kas balstīts uz Intel Xe arhitektūras, ko izmanto Intel Arc sērijas grafiskajās kartēs un integrētajā grafikā, sākot ar Tiger Lake procesoriem.
    • Pievienots DRM draiveris Mediatek MT8188 VDOSYS1 čipiem.
    • Saistītās ar videopod-systemām kodola iestatījumi pārcelti uz CONFIG_VIDEO sadaļu.
    • Pievienota ARM64 SoC atbalsts: Mediatek MT7981B (Filogic 820), MT7988A (Filogic 880), NXP i.MX8DXP, Renesas R8A779G2 (R-Car V4H ES2.0), R8A779H0 (R-Car V4M), TI J722S.
    • Pievienots ARM platformu un ierīču atbalsts: Android telefoni, kas balstīti uz Tegra30 čipa, Chromebook modeļi, kas balstīti uz Mediatek MT8186, NAS, planšetdatori un spēļu konsoles uz Rockchips RK35xx bāzes, White Hawk plates uz Renesas SoC bāzes, Qualcomm SM8550 (Snapdragon 8 Gen 2) bāzes plates, Apalis novērtējuma plate, Sielaff i.MX6 Solo plate, Samsung Galaxy Tab 4 10.1 LTE.
    • Veikta ALSA skaņu sistēmas koda refaktorizācija. Pievienots Microchip SAM9x7, NXP i.MX95 un Qualcomm WCD939x skaņu sistēmu atbalsts. SoundWire draiverī pievienots ASoC atbalsts ar AMD ACP 6.3 skaņas koprocessoriem, savukārt Intel sistēmām realizēts DSPless režīms. Pievienots atbalsts papildu skaņas kodekiem Cirrus HD. Virtio draiverī uzlabota skaņas ierīču pārvaldība.
    • Pievienots Marvell Octeon PCI Endpoint NIC VF un Intel E825-C 100G Ethernet kontrolieru atbalsts.

Tajā pašā laikā Latīņamerikas Brīvās Programmatūras fonds izveidoja pilnīgi brīvas Linux 6.9 kodola versiju — Linux-libre 6.9-gnu, attīrītu no nesaistītām firmu komponenēm vai kodola daļām, kuru lietošana ir ierobežota ražotāja. 6.9 izlaidumā atjaunināts kodeka attīrīšanas kods amdgpu, ath12k, adreno, btusb un r8169 draiveros. Veikta jauna ptp_fc3 draivera attīrīšana. Veikta bloķēšanas nosaukumu attīrīšana dts failos (devicetree) Aarch64 arhitektūrai. Novērstas problēmas ar i915 draivera attīrīšanu, kas izraisīja iesaldēšanos inicializācijas laikā. Veiktas izmaiņas, kas saistītas ar bloķēšanas pārvaldību, kas tiek piegādāta hex dump formātā.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster