Linux 6.7 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds esitteli Linux-ytimen 6.7:n julkaisun. Merkittävimpiä muutoksia: Bcachefs-tiedostojärjestelmän integrointi, Itanium-arkkitehtuurin tuen lopettaminen, Nouvean kyky työskennellä GSP-R-laiteohjelmiston kanssa, TLS-salauksen tuki NVMe-TCP:ssä, mahdollisuus käyttää poikkeuksia BPF:ssä, tuki futexille io_uringissa, fq (Fair Queuing) -aikataulun suorituskyvyn optimointi, tuki TCP-AO-laajennukselle (TCP Authentication Option) ja mahdollisuus rajoittaa verkkoyhteyksiä Landlock-suojausmekanismissa, lisätty pääsynhallinta käyttäjän nimiavaruuteen ja io_uring AppArmorin kautta.

Uusi versio sisältää 18405 2066 korjausta 72 13467 kehittäjältä, korjaustiedoston koko on 906147 MB (muutokset vaikuttivat 341048 15291 tiedostoon, 2058 39 koodiriviä lisättiin, 45 6.7 riviä poistettiin). Viimeisessä julkaisussa oli 14 korjausta 13 kehittäjältä, korjaustiedoston koko oli 5 MB. Noin 3 % kaikista versiossa XNUMX 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.7:

  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • Ydin ottaa käyttöön Bcachefs-tiedostojärjestelmäkoodin, joka yrittää saavuttaa XFS:n suorituskyvyn, luotettavuuden ja skaalautuvuuden yhdistettynä Btrfs- ja ZFS:n edistyneisiin toimintoihin. Esimerkiksi Bcachefs tukee ominaisuuksia, kuten useiden laitteiden sisällyttäminen osioon, monikerroksiset asemaasettelut (alempi kerros, jossa usein käytetty data perustuu nopeisiin SSD-levyihin ja ylin kerros vähemmän käytettyjä tietoja kiintolevyiltä), replikointi (RAID) 1/10), välimuisti, läpinäkyvä tietojen pakkaus (LZ4, gzip ja ZSTD-tilat), tilaviipaleet (snapshots), eheyden tarkistus tarkistussummien avulla, mahdollisuus tallentaa Reed-Solomonin virheenkorjauskoodeja (RAID 5/6), tietojen tallentaminen salatussa muodossa (ChaCha20 ja Poly1305 käytetään). Suorituskyvyltään Bcachefs on edellä Btrfs-tiedostojärjestelmiä ja muita Copy-on-Write-mekanismiin perustuvia tiedostojärjestelmiä, ja sen toimintanopeus on lähellä Ext4:ää ja XFS:ää.
    • Btrfs-tiedostojärjestelmä esittelee yksinkertaistetun kiintiötilan, jonka avulla voit saavuttaa korkeamman suorituskyvyn seuraamalla laajuuksia vain siinä aliosiossa, jossa ne on luotu. Tämä yksinkertaistaa merkittävästi laskelmia ja parantaa suorituskykyä, mutta ei salli useissa jaetuissa laajuuksissa huomioimista. alaosiot.
    • Btrfs on lisännyt uuden "raitapuu" -tietorakenteen, joka soveltuu loogiseen laajuuden kartoitukseen tilanteissa, joissa fyysiset kartoitukset eivät täsmää eri laitteissa. Rakennetta käytetään tällä hetkellä RAID0:n ja RAID1:n toteutuksissa vyöhyketyille lohkolaitteille. Tulevaisuudessa he aikovat käyttää tätä rakennetta korkeamman tason RAID:issa, mikä ratkaisee useita nykyisessä toteutuksessa esiintyviä ongelmia.
    • Ceph-tiedostojärjestelmä toteuttaa tuen liitettyjen tiedostojärjestelmien käyttäjätunnusten yhdistämiseen, joita käytetään liitetyssä vieraassa osiossa olevan tietyn käyttäjän tiedostojen yhdistämiseen nykyisen järjestelmän toisen käyttäjän kanssa.
    • Lisätty mahdollisuus määrittää uid ja gid on mount efivarfsiin, jotta muut kuin juuriprosessit voivat muuttaa UEFI-muuttujia.
    • Lisätty ioctl-kutsut exFATiin FS-attribuuttien lukemista ja muuttamista varten. Lisätty nollakokoisten hakemistojen käsittely.
    • F2FS toteuttaa mahdollisuuden käyttää 16K lohkoa.
    • Autofs:n automaattinen asennusmekanismi on vaihdettu käyttämään uutta osion asennussovellusliittymää.
    • OverlayFS tarjoaa "lowerdir+"- ja "datadir+"-asennusvaihtoehdot. Lisätty tuki OverlayFS:n sisäkkäiselle asennukselle xattrsilla.
    • XFS on optimoinut suorittimen kuormituksen reaaliaikaisessa lohkojakokoodissa. Tarjolla on mahdollisuus suorittaa samanaikaisesti luku- ja FICLONE-toimintoja.
    • EXT2-koodi on muutettu käyttämään sivufolioita.
  • Muisti- ja järjestelmäpalvelut
    • Vuonna 64 kokonaan lopetettujen Intel Itanium -suorittimien ia2021-arkkitehtuurin tuki on lopetettu. Intel esitteli Itanium-prosessorit vuonna 2001, mutta ia64-arkkitehtuuri ei pystynyt kilpailemaan AMD64:n kanssa pääasiassa AMD64:n paremman suorituskyvyn ja sujuvamman siirtymisen vuoksi 32-bittisistä x86-prosessoreista. Tämän seurauksena Intelin intressit siirtyivät x86-64-prosessorien puolelle, ja Itaniumin osa jäi HP Integrity -palvelimille, joiden tilaukset lopetettiin kolme vuotta sitten. Koodi ia64-tuelle poistettiin ytimestä pääasiassa tämän alustan pitkäaikaisen tuen puutteen vuoksi, kun taas Linus Torvalds ilmaisi halukkuutensa palauttaa ia64-tuki ytimeen, mutta vain, jos on ylläpitäjä, joka pystyy osoittamaan korkean laadun. tuki tälle alustalle pääytimen ulkopuolella vähintään vuoden ajan.
    • Lisätty "ia32_emulation"-ytimen rivikomentoparametri, jonka avulla voit ottaa käyttöön tai poistaa käytöstä 32-bittisen tilan emuloinnin tuen x86-64-arkkitehtuurille rakennetuissa ytimissä käynnistysvaiheessa. Käytännön puolella uusi vaihtoehto mahdollistaa ytimen rakentamisen tukemalla yhteensopivuutta 32-bittisten sovellusten kanssa, mutta poista tämä tila oletusarvoisesti käytöstä vähentääksesi ytimen hyökkäysvektoria, koska yhteensopivuus API on vähemmän testattu kuin pääydin. käyttöliittymät.
    • Jatkuva muutosten siirto Rust-for-Linux-haaroista, jotka liittyvät Rust-kielen käyttöön toisena kielenä ohjaimien ja ydinmoduulien kehittämisessä (Rust-tuki ei ole oletuksena aktiivinen, eikä se johda Rustin sisällyttämiseen ytimen vaadittavat kokoonpanoriippuvuudet). Uusi versio siirtyy käyttämään Rust 1.73 -julkaisua ja tarjoaa joukon sidoksia työjonojen kanssa työskentelemiseen.
    • On mahdollista käyttää binfmt_misc-mekanismia uusien suoritettavien tiedostomuotojen tuen lisäämiseen (esimerkiksi käännettyjen Java- tai Python-sovellusten suorittamiseen) erillisissä etuoikeutetuissa nimiavaruuksissa.
    • cgroup-ohjain cpuset, jonka avulla voit hallita suorittimen ytimien käyttöä tehtävää suoritettaessa, jakaa paikallisen ja etäosion, jotka eroavat toisistaan ​​sen mukaan, onko emo-cgroup oikea juuriosa vai ei. Uudet asetukset "cpuset.cpus.exclusive" ja "cpuset.cpus.excluisve.effective" on myös lisätty cpusetille yksinoikeudella suorittimen sitomista varten.
    • BPF-alijärjestelmä toteuttaa tuen poikkeuksille, jotka käsitellään hätäuloskäynninä BPF-ohjelmasta, jolla on mahdollisuus purkaa pinokehykset turvallisesti. Lisäksi BPF-ohjelmat mahdollistavat kptr-osoittimien käytön CPU:n yhteydessä.
    • Tuki futex-operaatioille on lisätty io_uring-alijärjestelmään ja uusia toimintoja on otettu käyttöön: IORING_OP_WAITID (asynkroninen versio waididista), SOCKET_URING_OP_GETSOCKOPT (getsockoptand-vaihtoehto), SOCKET_URING_OP_SETSOCKOPT (setsockopt-vaihtoehto) ja IORING_OPT-toiminto ei pysäytä lukua_REAHODORULT. on dataa tai puskuri ei ole täynnä).
    • Lisätty kevyiden yhteen kytkettyjen FIFO-jonojen toteutus, jotka vaativat spinlockin vain jonon purkamiseen prosessikontekstissa ja luopuvat spinlockista atomin lisäyksille jonoon missä tahansa kontekstissa.
    • Lisätty rengaspuskuri "objpool", jossa on skaalautuva suorituskyvyltään korkean suorituskyvyn jono objektien allokointia ja palauttamista varten.
    • Alkuosa muutoksista on lisätty toteuttamaan uusi futex2 API, joka on parempi suorituskyky NUMA-järjestelmissä, tukee muita kokoja kuin 32 bittiä ja jota voidaan käyttää multipleksoidun futex()-järjestelmäkutsun sijaan.
    • ARM32- ja S390x-arkkitehtuureihin on lisätty tuki nykyiselle BPF-käskyjoukolle (cpuv4).
    • RISC-V-arkkitehtuurissa on mahdollista käyttää Clang 17:ssä saatavilla olevaa Shadow-Call-pinon tarkistustilaa, joka on suunniteltu suojaamaan funktion paluuosoitteen ylikirjoitukselta, jos pinossa puskurin ylivuoto. Suojauksen ydin on tallentaa paluuosoite erilliseen "varjo"-pinoon sen jälkeen, kun ohjaus on siirretty funktiolle ja tämä osoite on haettu ennen funktiosta poistumista.
    • Identtisten muistisivujen yhdistämismekanismiin (KSM: Kernel Samepage Merging) on ​​lisätty uusi älykäs muistisivun skannaustila, joka seuraa epäonnistuneesti skannatut sivut ja vähentää niiden uudelleenskannauksen intensiteettiä. Uuden tilan käyttöön ottamiseksi /sys/kernel/mm/ksm/smart_scan-asetus on lisätty.
    • Lisätty uusi ioctl-komento PAGEMAP_SCAN, joka, kun sitä käytetään yhdessä userfaultfd() kanssa, antaa sinun määrittää tietylle muistialueelle kirjoittamisen tosiasiat. Uutta ominaisuutta voidaan käyttää järjestelmässä esimerkiksi CRIU-prosessien tilan tallentamiseen ja palauttamiseen tai pelien huijauksenestojärjestelmiin.
    • Kokoonpanojärjestelmässä, jos Clang-kääntäjä on saatavilla, BPF-ohjelmina kirjoitettujen esimerkkien kokoonpano perf-alijärjestelmän käytöstä on oletusarvoisesti käytössä.
    • Vanha videobuf-kerros, jota käytettiin media-alijärjestelmän kehyspuskureiden hallintaan ja joka korvattiin uudella videobuf10-toteutuksella yli 2 vuotta sitten, on poistettu.
  • Virtualisointi ja turvallisuus
    • Fscrypt-alijärjestelmään on lisätty mahdollisuus salata tietoja tiedostojärjestelmän lohkokokoa pienempiin lohkoihin. Tämä saattaa olla tarpeen vain pieniä lohkoja tukevien laitteiston salausmekanismien mahdollistamiseksi (esimerkiksi UFS-ohjaimia, jotka tukevat vain lohkokokoa 4096, voidaan käyttää tiedostojärjestelmän kanssa, jonka lohkokoko on 16 kt).
    • "iommufd"-alijärjestelmä, jonka avulla voit hallita IOMMU (I/O Memory-Management Unit) -muistisivutaulukoita tiedostokuvaajien avulla käyttäjätilasta, on lisännyt niiden tietojen seurannan, joita ei ole vielä tyhjennetty välimuistista (likainen) DMA:ta varten. operaatioita, mikä on tarpeen muistin määrittämiseksi tyhjentämättömällä tiedolla prosessin siirron aikana.
    • Landlock-mekanismiin on lisätty tuki pääsynvalvontasääntöjen määrittämiseen TCP-socketeille, jonka avulla voit rajoittaa prosessiryhmän vuorovaikutusta ulkoisen ympäristön kanssa. Voit esimerkiksi luoda säännön, joka sallii pääsyn vain verkkoporttiin 443 HTTPS-yhteyksien muodostamiseksi.
    • AppArmor-alijärjestelmä on lisännyt mahdollisuuden hallita pääsyä io_uring-mekanismiin ja luoda käyttäjänimiavaruuksia, mikä mahdollistaa pääsyn näihin ominaisuuksiin valikoivasti vain tietyille prosesseille.
    • Lisätty virtuaalikoneen vahvistussovellusliittymä virtuaalikoneen käynnistysprosessin eheyden tarkistamiseksi.
    • LoongArch-järjestelmät tukevat virtualisointia KVM-hypervisorilla.
    • Käytettäessä KVM-hypervisoria RISC-V-järjestelmissä on ilmestynyt tuki Smstateen-laajennukselle, joka estää virtuaalikoneen pääsyn CPU-rekistereihin, joita hypervisor ei nimenomaisesti tue. Lisätty myös tuki Zicond-laajennuksen käytölle vierasjärjestelmissä, mikä mahdollistaa joidenkin ehdollisten kokonaislukutoimintojen käytön.
    • KVM:llä toimivissa x86-pohjaisissa vierasjärjestelmissä sallitaan jopa 4096 virtuaalista suoritinta.
  • Verkkoalijärjestelmä
    • NVMe-TCP (NVMe over TCP) -ohjain, jonka avulla voit käyttää NVMe-asemia verkon yli (NVM Express over Fabrics) TCP-protokollan avulla, on lisännyt tuen tiedonsiirtokanavan salaamiseen TLS:n avulla (käyttäen KTLS:ää ja taustaprosessia). käyttäjätilassa tlshd yhteysneuvottelua varten).
    • Fq (Fair Queuing) -pakettien ajoittimen suorituskyky optimoitiin, mikä mahdollisti 5 %:n suorituskyvyn lisäämisen raskaassa kuormituksessa tcp_rr (TCP Request/Response) -testissä ja 13 %:lla rajoittamattomalla UDP-pakettivirralla.
    • TCP lisää valinnaisen mikrosekunnin tarkkuuden aikaleiman (TCP TS) -ominaisuuden (RFC 7323), joka mahdollistaa tarkemman latenssiarvioinnin ja edistyneemmät ruuhkanhallintamoduulit. Voit ottaa sen käyttöön komennolla "ip route add 10/8 ... features tcp_usec_ts".
    • TCP-pinoon on lisätty tuki TCP-AO-laajennukselle (TCP Authentication Option, RFC 5925), joka mahdollistaa TCP-otsikoiden varmentamisen MAC-koodeilla (Message Authentication Code) käyttämällä nykyaikaisempia algoritmeja HMAC-SHA1 ja CMAC-AES- 128 sen sijaan aiemmin saatavilla olevaan TCP-MD5-vaihtoehtoon, joka perustuu vanhaan MD5-algoritmiin.
    • Lisätty uudenlainen virtuaaliverkkolaite "netkit", jonka tiedonsiirtologiikka asetetaan BPF-ohjelmalla.
    • KSMBD, SMB-palvelimen ydintason toteutus, on lisännyt tuen yhdistelmämerkkien korvikepareja sisältävien tiedostonimien ratkaisemiseen.
    • NFS on parantanut säikeiden toteutusta RPC-palveluiden kanssa. Lisätty tuki kirjoitusdelegaatiolle (NFSv4.1+). NFSD on lisännyt tuen rpc_status netlink-käsittelijälle. Parannettu tuki NFSv4.x-asiakkaille, kun ne viedään uudelleen knfsd:hen.
  • Оборудование
    • Alkuperäinen tuki GSP-RM-laiteohjelmistolle on lisätty Nouveau-ydinmoduuliin, jota käytetään NVIDIA RTX 20+ -grafiikkasuorittimessa siirtämään alustus- ja GPU-ohjaustoiminnot erillisen GSP-mikro-ohjaimen (GPU-järjestelmäprosessorin) puolelle. GSP-RM-tuki mahdollistaa Nouveau-ohjaimen työskentelyn laiteohjelmistokutsujen kautta sen sijaan, että se ohjelmoisi suoraan laitteistovuorovaikutuksia, mikä tekee uusien NVIDIA-grafiikkasuorittimien tuen lisäämisestä paljon helpompaa käyttämällä valmiita alustus- ja virranhallintakutsuja.
    • AMDGPU-ohjain tukee GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 ja DML2. Parannettu tuki saumattomalle lataamiselle (ei välkkymistä videotilaa vaihdettaessa).
    • I915-ohjain lisää tuen Intel Meteor Lake -siruille ja lisää Intel LunarLaken (Xe 2) alustavan toteutuksen.
    • Lisätty tuki epäsymmetrisille siirtokanaville lisätty USB4 v2 (120/40G) -spesifikaatioon.
    • Lisätty tuki ARM SoC:lle: Qualcomm Snapdragon 720G (käytetään Xiaomi-älypuhelimissa), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (käytetään reitittimissä ja NAS:issa).
    • Lisätty tuki Fairphone 5 -älypuhelimelle ja ARM-korteille Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Lisätty tuki RISC-V-levyille Milk-V Pioneer ja Milk-V Duo.
    • Lisätty tuki AMD-suorittimien mukana toimitettujen HUAWEI-kannettavien äänirajapinnoille. Lisätty tuki lisäkaiuttimille, jotka on asennettu Dell Oasis 13/14/16 -kannettaviin. Lisätty tuki sisäänrakennetuille ASUS K6500ZC kaiuttimille. Lisätty tuki mykistysilmaisimelle HP 255 G8- ja G10 -kannettavissa tietokoneissa. Lisätty tuki acp6.3-ääniajureille. Lisätty tuki Focusrite Clarett+ 2Pre- ja 4Pre Professional -tallennusliitäntöille.

Samaan aikaan Latinalaisen Amerikan Free Software Foundation muodosti version täysin ilmaisesta ytimestä 6.7 - Linux-libre 6.7-gnu, josta oli poistettu laiteohjelmistoelementit ja ajurit, jotka sisältävät ei-vapaita komponentteja tai koodiosia, joiden laajuus on rajoitettu valmistajan toimesta. Julkaisussa 6.7 blob-puhdistuskoodia on päivitetty eri ohjaimissa ja alijärjestelmissä, esimerkiksi amdgpu-, nouveau-, adreno-, mwifiex-, mt7988-, ath11k-, avs- ja btqca-ajureissa. Localtalk- ja rtl8192u-ajurien puhdistuskoodi on poistettu, koska ne on jätetty pois ytimestä. Poistettiin turhat komponentit xhci-pci-, rtl8xxxu- ja rtw8822b-ajureiden puhdistamiseksi, aiemmin lisätyt vahingossa. Puhdistettu blob-nimet dts-tiedostoista Aarch64-arkkitehtuuria varten. Poistettu blobit uusista ohjaimista mt7925, tps6598x, aw87390 ja aw88399.

Lähde: opennet.ru

Lisää kommentti