Linux 6.2 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds esitteli Linux-ytimen 6.2:n julkaisun. Merkittävimpiä muutoksia ovat: koodin hyväksyminen Copyleft-Next-lisenssillä on sallittu, RAID5/6:n toteutus Btrfsissä on parantunut, Rust-kielen tuen integrointi jatkuu, Retbleed-hyökkäyksiltä suojautumisen ylimääräiset kustannukset vähenevät, kyky säädellä muistin kulutusta takaisinkirjoituksen aikana on lisätty, lisätty mekanismi TCP-tasapainotukseen PLB (Protective Load Balancing), hybridikomentovirran suojausmekanismi (FineIBT) on lisätty, BPF:llä on nyt mahdollisuus määritellä omat objektinsa ja tietorakenteet , rv (Runtime Verification) -apuohjelma on mukana, virrankulutus RCU-lukkojen toteutuksessa on vähentynyt.

Uusi versio sisältää 16843 2178 korjausta 62 14108 kehittäjältä, korjaustiedoston koko on 730195 MB (muutokset vaikuttivat 409485 42 tiedostoon, 6.2 16 koodiriviä lisättiin, 12 4 riviä poistettiin). Noin 3 % kaikista XNUMX:ssa tehdyistä muutoksista liittyy laiteajureihin, noin XNUMX % muutoksista liittyy laitteistoarkkitehtuurikohtaiseen koodin päivittämiseen, XNUMX % liittyy verkkopinoon, XNUMX % liittyy tiedostojärjestelmiin ja XNUMX %. liittyvät sisäisiin ytimen alijärjestelmiin.

Tärkeimmät innovaatiot ytimessä 6.2:

  • Muisti- ja järjestelmäpalvelut
    • On sallittua sisällyttää ytimen koodiin ja Copyleft-Next 0.3.1 -lisenssin mukaisiin muutoksiin. Copyleft-Next-lisenssin loi yksi GPLv3:n tekijöistä, ja se on täysin yhteensopiva GPLv2-lisenssin kanssa, kuten SUSE:n ja Red Hatin asianajajat ovat vahvistaneet. GPLv2:een verrattuna Copyleft-Next-lisenssi on paljon kompaktimpi ja helpompi ymmärtää (johdanto-osa ja maininta vanhentuneista kompromisseista on poistettu), määrittää aikataulun ja menettelyn rikkomusten poistamiselle ja poistaa automaattisesti copyleft-vaatimukset vanhentuneilta ohjelmistoilta, jotka on yli 15 vuotta vanha.

      Copyleft-Next sisältää myös patentoidun teknologian myöntämislausekkeen, joka toisin kuin GPLv2 tekee tästä lisenssistä yhteensopivan Apache 2.0 -lisenssin kanssa. Täydellisen yhteensopivuuden varmistamiseksi GPLv2:n kanssa Copyleft-Next sanoo nimenomaisesti, että GPL-lisenssillä voidaan tarjota johdannaisteos alkuperäisen Copyleft-Next-lisenssin lisäksi.

    • Rakenne sisältää "rv"-apuohjelman, joka tarjoaa käyttöliittymän vuorovaikutukseen käyttäjätilasta RV (Runtime Verification) -alijärjestelmän käsittelijöiden kanssa. Se on suunniteltu tarkistamaan oikean toiminnan erittäin luotettavissa järjestelmissä, jotka takaavat vikojen puuttumisen. Varmentaminen suoritetaan ajon aikana liittämällä käsittelijät jäljityspisteisiin, jotka tarkistavat suorituksen todellisen edistymisen koneen ennalta määrättyyn referenssideterministiseen malliin, joka määrittää järjestelmän odotetun toiminnan.
    • zRAM-laite, joka mahdollistaa swap-osion tallentamisen muistiin pakatussa muodossa (muistiin luodaan lohkolaite, johon vaihto suoritetaan pakkaamalla), toteuttaa mahdollisuuden pakata sivuja uudelleen vaihtoehtoisella algoritmilla korkeamman tason saavuttamiseksi. puristamisesta. Pääideana on tarjota valinnanvaraa useiden algoritmien välillä (lzo, lzo-rle, lz4, lz4hc, zstd), jotka tarjoavat omat kompromissinsa pakkaus/dekompression nopeuden ja pakkaustason välillä tai optimaalisia erikoistilanteissa (esim. muistisivut).
    • Lisätty "iommufd" API I/O-muistin hallintajärjestelmän hallintaan - IOMMU (I/O Memory-Management Unit) käyttäjätilasta. Uusi API mahdollistaa I/O-muistisivutaulukoiden hallinnan tiedostokuvaajien avulla.
    • BPF tarjoaa mahdollisuuden luoda tyyppejä, määrittää omia objekteja, rakentaa omaa objektihierarkiaa ja luoda joustavasti omia tietorakenteita, kuten linkitettyjä luetteloita. Lepotilaan siirtyville BPF-ohjelmille (BPF_F_SLEEPABLE) on lisätty tuki bpf_rcu_read_{,un}lock()-lukkoille. Toteutettu tuki task_struct-objektien tallentamiseen. Lisätty karttatyyppi BPF_MAP_TYPE_CGRP_STORAGE, joka tarjoaa paikallista tallennustilaa cryhmille.
    • RCU (Read-copy-update) -estomekanismille on toteutettu valinnainen "laiskojen" takaisinsoittojen mekanismi, jossa useita takaisinsoittopyyntöjä käsitellään kerralla ajastimella eräajona. Ehdotetun optimoinnin avulla voimme vähentää Android- ja ChromeOS-laitteiden virrankulutusta 5-10 % lykkäämällä RCU-pyyntöjä lepotilan tai järjestelmän alhaisen kuormituksen aikana.
    • Lisätty sysctl split_lock_mitigate ohjaamaan, kuinka järjestelmä reagoi havaitessaan jaetun lukon, joka ilmenee käytettäessä muistissa olevaa kohdistamatonta dataa, koska tiedot ylittävät prosessorin kahden välimuistirivin atomikäskyä suoritettaessa. Tällaiset tukokset johtavat huomattavaan suorituskyvyn heikkenemiseen. Split_lock_mitigate-arvon asettaminen 0:ksi antaa vain varoituksen ongelmasta, kun taas split_lock_mitigate-arvon asettaminen arvoon 1 aiheuttaa myös prosessin, joka aiheutti lukon hidastumisen, jotta muun järjestelmän suorituskyky säilyy.
    • PowerPC-arkkitehtuurille on ehdotettu uutta qspinlockin toteutusta, joka osoittaa parempaa suorituskykyä ja ratkaisee joitain poikkeustapauksissa ilmeneviä lukitusongelmia.
    • MSI (Message-Signaled Interrupts) -keskeytyksen käsittelykoodi on muokattu, mikä eliminoi kertyneet arkkitehtoniset ongelmat ja lisää tukea yksittäisten käsittelijöiden sitomiselle eri laitteisiin.
    • Järjestelmissä, jotka perustuvat Loongson 3 5000 -prosessoreissa käytettyyn LoongArch-käskysarjaarkkitehtuuriin ja jotka toteuttavat uuden RISC ISA:n, kuten MIPS ja RISC-V, fttrace-, pinosuojaus-, lepotila- ja valmiustilojen tuki on toteutettu.
    • Mahdollisuus antaa nimiä jaetun anonyymin muistin alueille on tarjottu (aiemmin nimiä voitiin määrittää vain tietylle prosessille määritettyyn yksityiseen anonyymiin muistiin).
    • Lisätty uusi ytimen komentoriviparametri "trace_trigger", joka on suunniteltu aktivoimaan seurantakäynnistin, jota käytetään ehdollisten komentojen sitomiseen, kun ohjaustarkistus laukaistaan ​​(esimerkiksi trace_trigger=”sched_switch.stacktrace, jos prev_state == 2″).
    • Binutils-paketin version vaatimuksia on korotettu. Ytimen rakentaminen vaatii nyt vähintään binutils 2.25:n.
    • Kutsuttaessa exec() on lisätty mahdollisuus sijoittaa prosessi aikanimiavaruuteen, jossa aika eroaa järjestelmän ajasta.
    • Olemme alkaneet siirtää Rust-for-Linux-haaroista lisätoimintoja, jotka liittyvät Rust-kielen käyttöön toisena kielenä ohjaimien ja ydinmoduulien kehittämisessä. Ruosteen tuki on oletusarvoisesti poistettu käytöstä, eikä se johda ruosteen sisällyttämiseen pakollisena ytimen koontiriippuvuutena. Viimeisimmän julkaisun perustoimintoja on laajennettu tukemaan matalan tason koodia, kuten Vec-tyyppiä ja makroja pr_debug!(), pr_cont!() ja pr_alert!(), sekä prosessimakroa “#[vtable ]”, joka yksinkertaistaa funktioiden osoitintaulukoiden käyttöä. Tulevissa julkaisuissa odotetaan lisäävän korkean tason Rust-sidoksia ytimen alijärjestelmiin, mikä mahdollistaa täysimittaisten ajurien luomisen Rustissa.
    • Ytimessä käytetty "char"-tyyppi on nyt oletusarvoisesti allekirjoitettu kaikissa arkkitehtuureissa.
    • Slab-muistin varausmekanismi - SLOB (slab allocator), joka oli suunniteltu järjestelmille, joissa on pieni muistimäärä, on julistettu vanhentuneeksi. SLOBin sijasta normaaleissa olosuhteissa on suositeltavaa käyttää SLUB:ia tai SLABia. Järjestelmässä, jossa on vähän muistia, on suositeltavaa käyttää SLUB:ia SLUB_TINY-tilassa.
  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • Btrfs:iin on tehty parannuksia, joiden tarkoituksena on korjata "kirjoitusaukko" -ongelma RAID 5/6 -toteutuksissa (yritetään palauttaa RAID, jos kirjoituksen aikana tapahtuu kaatuminen ja on mahdotonta ymmärtää, mihin lohkoon mihin RAID-laitteeseen kirjoitettiin oikein, mikä voi johtaa lohkon tuhoutumiseen, mikä vastaa suojattuja lohkoja). Lisäksi SSD-levyt mahdollistavat nyt automaattisesti asynkronisen hylkäystoiminnon oletusarvoisesti, kun mahdollista, mikä mahdollistaa paremman suorituskyvyn hylkäystoimintojen tehokkaan ryhmittelyn jonoihin ja jonon käsittelyn taustaprosessorilla ansiosta. Parempi lähetys- ja lseek-toimintojen sekä FIEMAP ioctl:n suorituskyky.
    • Lohkolaitteiden viivästetyn kirjoittamisen (takaisinkirjoitus, muuttuneiden tietojen taustatallennus) hallintamahdollisuuksia on laajennettu. Joissakin tilanteissa, kuten käytettäessä verkkolohkolaitteita tai USB-asemia, laiska kirjoittaminen voi johtaa suureen RAM-muistin kulutukseen. Laiskojen kirjoitusten toiminnan hallitsemiseksi ja sivun välimuistin koon pitämiseksi tietyissä rajoissa sysfs:ssä (/sys/class/bdi/) on otettu käyttöön uudet parametrit strict_limit, min_bytes, max_bytes, min_ratio_fine ja max_ratio_fine.
    • F2FS-tiedostojärjestelmä toteuttaa atomic korvaa ioctl -operaation, jonka avulla voit kirjoittaa tietoja tiedostoon yhden atomioperaation sisällä. F2FS lisää myös lohkon laajuuden välimuistin, joka auttaa tunnistamaan aktiivisesti käytetyt tiedot tai tiedot, joita ei ole käytetty pitkään aikaan.
    • Ext4 FS:ssä vain virheenkorjaukset huomioidaan.
    • Ntfs3-tiedostojärjestelmä tarjoaa useita uusia asennusvaihtoehtoja: "nocase" hallitsee kirjainkokoa tiedostojen ja hakemistojen nimissä; windows_name estääksesi sellaisten tiedostonimien luomisen, jotka sisältävät merkkejä, jotka eivät kelpaa Windowsille; hide_dot_files hallita piilotetun tiedoston tunnisteen määrittämistä tiedostoille, jotka alkavat pisteellä.
    • Squashfs-tiedostojärjestelmä toteuttaa "threads="-liitosvaihtoehdon, jonka avulla voit määrittää säikeiden lukumäärän rinnakkaispakkauksen purkamiseen. Squashfs esitteli myös mahdollisuuden yhdistää asennettujen tiedostojärjestelmien käyttäjätunnuksia, joita käytetään sovittamaan tietyn käyttäjän tiedostot liitetyssä vieraassa osiossa toisen käyttäjän tiedostot nykyisessä järjestelmässä.
    • POSIX-käyttöoikeusluetteloiden (POSIX ACL:ien) toteutus on muokattu. Uusi toteutus poistaa arkkitehtoniset ongelmat, yksinkertaistaa koodikannan ylläpitoa ja tuo turvallisempia tietotyyppejä.
    • Fscrypt-alijärjestelmä, jota käytetään tiedostojen ja hakemistojen läpinäkyvään salaukseen, on lisännyt tuen SM4-salausalgoritmille (kiinalainen standardi GB/T 32907-2016).
    • Mahdollisuus rakentaa ydin ilman NFSv2-tukea on tarjottu (tulevaisuudessa he suunnittelevat lopettavansa kokonaan NFSv2:n tukemisen).
    • NVMe-laitteiden käyttöoikeuksien tarkistuksen organisaatiota on muutettu. Tarjoaa mahdollisuuden lukea ja kirjoittaa NVMe-laitteeseen, jos kirjoitusprosessilla on pääsy laitteen omaan tiedostoon (aiemmin prosessilla oli oltava CAP_SYS_ADMIN-käyttöoikeus).
    • Poistettiin CD/DVD-pakettiajuri, joka vanhentui vuonna 2016.
  • Virtualisointi ja turvallisuus
    • Intel- ja AMD-suorittimiin on otettu käyttöön uusi suojausmenetelmä Retbleed-haavoittuvuutta vastaan ​​käyttämällä puhelusyvyyden seurantaa, joka ei hidasta työtä yhtä paljon kuin aiemmin käytössä ollut suojaus Retbleediä vastaan. Uuden tilan käyttöön ottamiseksi on ehdotettu ytimen komentoriviparametria "retbleed=stuff".
    • Lisätty hybridi FineIBT-käskyvirran suojausmekanismi, joka yhdistää laitteiston Intel IBT (Indirect Branch Tracking) -käskyt ja ohjelmistosuojauksen kCFI (kernel Control Flow Integrity) estääkseen normaalin suoritusjärjestyksen (ohjausvirtauksen) rikkomisen käytön seurauksena. funktioiden muistiin tallennettuja osoittimia muokkaavia hyödyntäjiä. FineIBT sallii suorituksen epäsuoralla hyppyllä vain siinä tapauksessa, että hypätään ENDBR-käskyyn, joka sijoitetaan aivan funktion alkuun. Lisäksi, analogisesti kCFI-mekanismin kanssa, tiivisteet tarkistetaan sitten osoittimien muuttumattomuuden takaamiseksi.
    • Lisätty rajoituksia estämään hyökkäyksiä, jotka manipuloivat "oops"-tilojen luomista, minkä jälkeen ongelmalliset tehtävät suoritetaan ja tila palautetaan pysäyttämättä järjestelmää. Hyvin suurella määrällä kutsuja "oops"-tilaan tapahtuu viitelaskurin ylivuoto (refcount), mikä mahdollistaa NULL-osoittimen viittausten aiheuttamien haavoittuvuuksien hyödyntämisen. Suojatakseen tällaisilta hyökkäyksiltä ytimeen on lisätty rajoitus "oops"-laukaisimien enimmäismäärälle, jonka ylittymisen jälkeen ydin käynnistää siirtymisen "paniikki"-tilaan, jota seuraa uudelleenkäynnistys, mikä ei salli uudelleenlaskennan ylivuotoon vaadittavien iteraatioiden määrä. Oletusarvoisesti raja on asetettu 10 XNUMX "oops", mutta haluttaessa sitä voidaan muuttaa oops_limit-parametrin kautta.
    • Lisätty konfiguraatioparametri LEGACY_TIOCSTI ja sysctl legacy_tiocsti estämään kyky sijoittaa tietoja päätteeseen ioctl TIOCSTI:n avulla, koska tällä toiminnallisuudella voidaan korvata mielivaltaisia ​​merkkejä päätteen syöttöpuskuriin ja simuloida käyttäjän syötettä.
    • Ehdotetaan uudenlaista sisäistä rakennetta, encoded_page, jossa osoittimen alempia bittejä käytetään lisätietojen tallentamiseen, joita käytetään suojaamaan osoittimen tahattomalta viittaukselta (jos viittauksen poistaminen on todella tarpeen, nämä lisäbitit on ensin tyhjennettävä) .
    • ARM64-alustalla on käynnistysvaiheessa mahdollista ottaa käyttöön tai poistaa käytöstä Shadow Stack -mekanismin ohjelmistototeutus, jota käytetään suojaamaan palautusosoitteen ylikirjoitukselta funktiosta, jos pinossa tapahtuu puskurin ylivuoto ( suojauksen ydin on tallentaa paluuosoite erilliseen "varjo"pinoon sen jälkeen, kun ohjaus on siirretty funktiolle ja haetaan annettu osoite ennen funktiosta poistumista). Tuki Shadow Stackin laitteisto- ja ohjelmistototeutuksiin yhdessä ydinkokoonpanossa mahdollistaa yhden ytimen käytön eri ARM-järjestelmissä riippumatta siitä, tukevatko ne osoittimen todennusohjeita. Ohjelmistototeutuksen sisällyttäminen tapahtuu korvaamalla koodissa tarvittavat ohjeet latauksen aikana.
    • Lisätty tuki asynkronisen poistumisilmoitusmekanismin käytölle Intel-suorittimissa, mikä mahdollistaa yksivaiheisten hyökkäysten havaitsemisen SGX-enklaaveissa suoritettuun koodiin.
    • Ehdotetaan joukko toimintoja, joiden avulla hypervisor voi tukea Intel TDX (Trusted Domain Extensions) -vierasjärjestelmien pyyntöjä.
    • Ytimen koontiasetukset RANDOM_TRUST_BOOTLOADER ja RANDOM_TRUST_CPU on poistettu vastaavien komentorivivaihtoehtojen random.trust_bootloader ja random.trust_cpu hyväksi.
    • Landlock-mekanismi, jonka avulla voit rajoittaa prosessiryhmän vuorovaikutusta ulkoisen ympäristön kanssa, on lisännyt tuen LANDLOCK_ACCESS_FS_TRUNCATE-lipulle, joka mahdollistaa tiedostojen katkaisutoimintojen suorittamisen ohjauksen.
  • Verkkoalijärjestelmä
    • IPv6:lle on lisätty tuki PLB:lle (Protective Load Balancing), verkkolinkkien väliselle kuormituksen tasausmekanismille, jonka tarkoituksena on vähentää datakeskuksen kytkimien ylikuormituspisteitä. Vaihtamalla IPv6-kulkutunnistetta, PLB muuttaa satunnaisesti pakettipolkuja tasapainottaakseen kytkinporttien kuormitusta. Pakettien uudelleenjärjestämisen vähentämiseksi tämä toiminto suoritetaan joutojaksojen jälkeen aina kun mahdollista. PLB:n käyttö Googlen palvelinkeskuksissa on vähentänyt kytkinporttien kuormituksen epätasapainoa keskimäärin 60 %, pakettihäviöitä 33 % ja latenssia 20 %.
    • Lisätty ohjain MediaTek-laitteille, jotka tukevat Wi-Fi 7:ää (802.11be).
    • Lisätty tuki 800 gigabitin linkeille.
    • Lisätty mahdollisuus nimetä verkkoliitännät uudelleen lennossa keskeyttämättä työtä.
    • SYN-tulvan lokiviesteihin on lisätty maininta IP-osoitteesta, johon paketti saapui.
    • UDP:ssä on otettu käyttöön mahdollisuus käyttää erillisiä hash-taulukoita eri verkkonimiavaruuksille.
    • Verkkosilloille on otettu käyttöön MAB (MAC Authentication Bypass) -todennusmenetelmän tuki.
    • CAN-protokollalle (CAN_RAW) on toteutettu tuki SO_MARK-liitäntämoodille fwmark-pohjaisten liikennesuodattimien liittämistä varten.
    • ipset ottaa käyttöön uuden bitmask-parametrin, jonka avulla voit asettaa peitteen IP-osoitteen mielivaltaisten bittien perusteella (esimerkiksi "ipset create set1 hash:ip bitmask 255.128.255.0").
    • Lisätty tuki sisäisten otsikoiden käsittelylle tunneloitujen pakettien sisällä nf_tables-tiedostoon.
  • Оборудование
    • "Kiihdytys"-alijärjestelmä on lisätty toteuttamalla kehys laskentakiihdyttimille, jotka voidaan toimittaa joko yksittäisinä ASIC-kortteina tai IP-lohkoina SoC:n ja GPU:n sisällä. Näiden kiihdyttimien tarkoituksena on pääasiassa nopeuttaa koneoppimisongelmien ratkaisua.
    • Amdgpu-ohjain sisältää tuen GC-, PSP-, SMU- ja NBIO IP -komponenteille. ARM64-järjestelmissä on toteutettu tuki DCN:lle (Display Core Next). Suojatun näytön ulostulon toteutus on siirretty DCN10:stä DCN21:een, ja sitä voidaan nyt käyttää useiden näyttöjen yhdistämiseen.
    • i915 (Intel) -ohjaimessa on vakiintunut tuki erillisille Intel Arc (DG2/Alchemist) -näytönohjainkorteille.
    • Nouveau-ohjain tukee NVIDIA GA102 (RTX 30) -grafiikkasuorittimia, jotka perustuvat Ampere-arkkitehtuuriin. nva3 (GT215) -korteille on lisätty mahdollisuus ohjata taustavaloa.
    • Lisätty tuki langattomille sovittimille, jotka perustuvat Realtek 8852BE-, Realtek 8821CU-, 8822BU-, 8822CU-, 8723DU (USB)- ja MediaTek MT7996 -siruihin, Broadcom BCM4377/4378/4387 Bluetooth-liitäntöihin sekä Ethernet NVIDIA:n, Motorcomm yt8521 TegraXNUMX:n
    • Lisätty ASoC (ALSA System on Chip) -tuki sisäänrakennetuille äänisiruille HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588. Lisätty tuki Focusrite Saffire Pro 40 -ääniliittymälle. Lisätty Realtek RT1318 -äänikoodekki.
    • Lisätty tuki Sonyn älypuhelimille ja tableteille (Xperia 10 IV, 5 IV, X and X compact, OnePlus One, 3, 3T ja Nord N100, Xiaomi Poco F1 ja Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1.
    • Lisätty tuki ARM SoC:lle ja Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Prolle (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695), SM670dragon670. levyt, SDM8976 (Snapdragon 652), MSM8956 (Snapdragon 650), MSM3326 (Snapdragon 351), RK310 Odroid-Go/rg8, Zyxel NSAXNUMXS, InnoComm i.MXXNUMXMM, Odroid Go Ultra.

Samaan aikaan Latinalaisen Amerikan Free Software Foundation muodosti version täysin ilmaisesta 6.2-ytimestä - Linux-libre 6.2-gnu, joka on puhdistettu laiteohjelmiston elementeistä ja ohjaimista, jotka sisältävät ei-vapaita komponentteja tai koodiosia, joiden laajuus on rajoitettu valmistajan toimesta. Uusi julkaisu puhdistaa uudet läiskät nouveau-ohjaimesta. Blob-lataus on poistettu käytöstä mt7622-, ​​mt7996 wifi- ja bcm4377 bluetooth-ajureissa. Puhdistettu blob-nimet dts-tiedostoista Aarch64-arkkitehtuuria varten. Päivitetty blob-puhdistuskoodi eri ohjaimissa ja alijärjestelmissä. Lopetti s5k4ecgx-ohjaimen puhdistamisen, koska se poistettiin ytimestä.

Lähde: opennet.ru

Lisää kommentti