Linux 5.11 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds esitteli Linux-ytimen 5.11:n julkaisun. Merkittävimpiä muutoksia: tuki Intel SGX -enklaaveille, uusi mekanismi järjestelmäpuheluiden sieppaamiseen, virtuaalinen apuväylä, moduulien kokoamiskielto ilman MODULE_LICENSE(), nopea suodatustila järjestelmäkutsuille seccompissa, tuen lopettaminen ia64-arkkitehtuuri, WiMAX-tekniikan siirto "lavastuksen" haaraan, mahdollisuus kapseloida SCTP UDP:hen.

Uusi versio sisältää 15480 1991 korjausta 72 12090 kehittäjältä, korjaustiedoston koko on 868025 MB (muutokset vaikuttivat 261456 46 tiedostoon, 5.11 16 koodiriviä lisättiin, 13 3 riviä poistettiin). Noin 4 % kaikista XNUMX:ssä 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:

  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • Btrfs-tiedostoon on lisätty useita asennusvaihtoehtoja, joita voidaan käyttää palautettaessa tietoja vaurioituneesta tiedostojärjestelmästä: "rescue=ignorebadroots" asennukseen huolimatta joidenkin juuripuiden vaurioista (laajuus, uuid, data reloc, laite, csum, vapaa tila), " Rescue=ignoredatacsums poistaa tietojen tarkistussummien tarkistuksen käytöstä ja "rescue=all" ottaa samanaikaisesti käyttöön "ignorebadroots", "ignoredatacsums" ja "nologreplay" tilat. "inode_cache" -liitosvaihtoehto, joka oli aiemmin vanhentunut, on lopetettu. Koodi on valmistettu tukemaan lohkoja, joissa on metadataa ja sivukokoa (PAGE_SIZE) pienempää dataa, sekä tuen vyöhykekäyttötilaa. Puskuroimattomat (Direct IO) -pyynnöt on siirretty iomap-infrastruktuuriin. Useiden toimintojen suorituskykyä on optimoitu, joissakin tapauksissa kiihtyvyys voi olla kymmeniä prosentteja.
    • XFS toteuttaa "needsrepair"-lipun, joka ilmaisee korjauksen tarpeen. Kun tämä lippu on asetettu, tiedostojärjestelmää ei voi liittää ennen kuin xfs_repair-apuohjelma on nollannut lipun.
    • Ext4 tarjoaa vain virheenkorjauksia ja optimointeja sekä koodin puhdistuksen.
    • NFS:n kautta asennettujen tiedostojärjestelmien uudelleenvienti on sallittu (eli NFS:n kautta liitetty osio voidaan nyt viedä NFS:n kautta ja käyttää välimuistina).
    • close_range()-järjestelmäkutsu, jonka avulla prosessi voi sulkea koko joukon avoimia tiedostokuvauksia kerralla, on lisännyt CLOSE_RANGE_CLOEXEC-vaihtoehdon kuvaajien sulkemiseksi sulje-on-exec-tilassa.
    • F2FS-tiedostojärjestelmä lisää uusia ioctl()-kutsuja, jotta käyttäjätila voi hallita, mitkä tiedostot tallennetaan pakatussa muodossa. Lisätty "compress_mode="-liitosvaihtoehto, jolla valitaan, sijoitetaanko pakkauskäsittelijä ytimen puolelle vai käyttäjätilaan.
    • Tarjosi mahdollisuuden liittää Overlayfs-tiedostoja etuoikeutetuilla prosesseilla käyttämällä erillistä käyttäjänimiavaruutta. Turvamallin toteutuksen noudattamisen varmistamiseksi suoritettiin täydellinen kooditarkastus. Overlayfs lisää myös mahdollisuuden käyttää tiedostojärjestelmän kuvien kopioita poistamalla valinnaisesti UUID-tarkistuksen käytöstä.
    • Ceph-tiedostojärjestelmä on lisännyt tuen msgr2.1-protokollalle, joka mahdollistaa AES-GCM-algoritmin käytön siirrettäessä tietoja salatussa muodossa.
    • Dm-multipath-moduuli toteuttaa mahdollisuuden ottaa huomioon CPU-affiniteetti ("IO-affiniteetti") valittaessa reittiä I/O-pyyntöille.
  • Muisti- ja järjestelmäpalvelut
    • Uusi järjestelmäkutsujen sieppausmekanismi on lisätty, joka perustuu prctl()-toimintoon, jonka avulla voit luoda poikkeuksia käyttäjätilasta käytettäessä tiettyä järjestelmäkutsua ja emuloida sen suoritusta. Tämä toiminto vaaditaan Wine and Protonissa Windows-järjestelmäkutsujen emulointiin, mikä on tarpeen yhteensopivuuden varmistamiseksi sellaisten pelien ja ohjelmien kanssa, jotka suorittavat järjestelmäkutsuja suoraan Windows API:n ohittaen (esimerkiksi suojatakseen luvattomalta käytöltä).
    • Userfaultfd()-järjestelmäkutsu, joka on suunniteltu käsittelemään sivuvirheitä (pääsy varaamattomille muistisivuille) käyttäjätilassa, pystyy nyt poistamaan ytimen tasolla tapahtuvan poikkeuskäsittelyn, mikä vaikeuttaa tiettyjen haavoittuvuuksien hyödyntämistä.
    • BPF-alijärjestelmä on lisännyt tuen tehtäväkohtaiselle tallennustilalle, joka tarjoaa datan sitomisen tiettyyn BPF-käsittelijään.
    • BPF-ohjelmien muistinkulutuksen laskenta on suunniteltu kokonaan uudelleen - memlock rlimit -ohjelman sijaan on ehdotettu cgroup-ohjainta hallitsemaan muistin käyttöä BPF-objekteissa.
    • BTF (BPF Type Format) -mekanismi, joka tarjoaa tyypintarkistustiedot BPF-pseudokoodissa, tukee ydinmoduuleja.
    • Lisätty tuki shutdown(), renameat2()- ja unlinkat()-järjestelmäkutsuille io_uring asynkroniseen I/O-liitäntään. Kutsuttaessa io_uring_enter() on lisätty mahdollisuus määrittää aikakatkaisu (voit tarkistaa argumentin tuen aikakatkaisun määrittämiselle IORING_FEAT_EXT_ARG-lipulla).
    • Intel Itanium -suorittimissa käytetty ia64-arkkitehtuuri on siirretty orpoluokkaan, mikä tarkoittaa, että testaus on lopetettu. Hewlett Packard Enterprise lopetti uusien Itanium-laitteiden tilausten vastaanottamisen, ja Intel teki niin viime vuonna.
    • Tuki MicroBlaze-arkkitehtuuriin perustuville järjestelmille, jotka eivät sisällä muistinhallintayksikköä (MMU), on lopetettu. Tällaisia ​​järjestelmiä ei ole nähty arjessa pitkään aikaan.
    • MIPS-arkkitehtuuriin on lisätty tuki koodipeittotestaukselle gcov-apuohjelmalla.
    • Lisätty tuki virtuaaliselle apuväylälle liitäntään monitoimilaitteiden kanssa, jotka yhdistävät eri ohjaimia vaativia toimintoja (esimerkiksi verkkokortit Ethernet- ja RDMA-tuella). Väylää voidaan käyttää ensisijaisen ja toissijaisen ajurin osoittamiseen laitteelle tilanteissa, joissa MFD (Multi-Function Devices) -alijärjestelmän käyttö on ongelmallista.
    • RISC-V-arkkitehtuuriin on lisätty tuki CMA (Contiguous Memory Allocator) -muistin varausjärjestelmälle, joka on optimoitu varaamaan suuria vierekkäisiä muistialueita käyttämällä muistisivun siirtotekniikoita. RISC-V:lle on myös otettu käyttöön työkaluja, jotka rajoittavat pääsyä tiedostoon /dev/mem ja ottavat huomioon keskeytyksen käsittelyajan.
    • 32-bittisiin ARM-järjestelmiin on lisätty tuki KASan-virheenkorjaustyökalulle (Kernel address sanitizer), joka auttaa tunnistamaan virheet muistia käytettäessä. 64-bittiselle ARM:lle KASan-toteutus on muutettu käyttämään MTE-tageja (MemTag).
    • Lisätty järjestelmäkutsu epoll_pwait2() sallimaan aikakatkaisut nanosekunnin tarkkuudella (epoll_wait-kutsu manipuloi millisekunteja).
    • Koontijärjestelmä näyttää nyt virheilmoituksen yritettäessä rakentaa ladattavia ydinmoduuleja, joissa koodilisenssiä ei ole määritetty MODULE_LICENSE()-makron avulla. Tästä eteenpäin makron EXPORT_SYMBOL() käyttö staattisille funktioille aiheuttaa myös koontivirheen.
    • Lisätty tuki GEM-objektien kartoittamiseen I/O:ssa käytetystä muistista, mikä mahdollisti joidenkin arkkitehtuurien kehyspuskurin kanssa työskentelyn nopeuttamisen.
    • Kconfig on poistanut tuen Qt4:lle (samalla kun se säilyttää tuen Qt5:lle, GTK:lle ja Ncursesille).
  • Virtualisointi ja turvallisuus
    • Seccomp()-järjestelmäkutsuun on lisätty tuki nopealle vastaustilalle, jonka avulla voit nopeasti määrittää, onko tietty järjestelmäkutsu sallittu vai kielletty prosessiin liitetyn jatkuvatoimisen bittikartan perusteella, joka ei vaadi suorittamista. BPF-käsittelijä.
    • Integroidut ytimen komponentit enklaavien luomiseen ja hallintaan, jotka perustuvat Intel SGX (Software Guard eXtensions) -tekniikkaan, jonka avulla sovellukset voivat suorittaa koodia eristetyillä salatuilla muistialueilla, joihin muulla järjestelmällä on rajoitettu pääsy.
    • Osana aloitetta rajoittaa pääsyä käyttäjätilasta MSR:ään (mallikohtainen rekisteri) kirjoittaminen MSR_IA32_ENERGY_PERF_BIAS-rekisteriin, jonka avulla voit muuttaa prosessorin energiatehokkuustilaa ("normaali", "suorituskyky", "virransäästö") , on kielletty.
    • Mahdollisuus poistaa käytöstä korkean prioriteetin tehtävien siirtäminen suorittimien välillä on siirretty kernel-rt-haaraasta reaaliaikaisissa järjestelmissä.
    • ARM64-järjestelmiin on lisätty mahdollisuus käyttää MTE-tunnisteita (MemTag, Memory Tagging Extension) signaalinkäsittelylaitteiden muistiosoitteisiin. MTE:n käyttö otetaan käyttöön määrittämällä SA_EXPOSE_TAGBITS-vaihtoehto sigaction()-kohdassa, ja sen avulla voit tarkistaa osoittimien oikean käytön estääksesi haavoittuvuuksien hyödyntämisen, jotka johtuvat jo vapautettujen muistilohkojen käytöstä, puskurin ylivuodosta, alustuksesta ja käytöstä nykyinen konteksti.
    • Lisätty parametri "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", jonka avulla dm-verity-alijärjestelmä voi tarkistaa toissijaiseen avainrenkaaseen sijoitettujen sertifikaattien hajautusallekirjoitukset. Käytännössä asennus mahdollistaa ytimeen sisäänrakennettujen varmenteiden lisäksi myös toiminnan aikana ladattujen sertifikaattien tarkistamisen, mikä mahdollistaa varmenteiden päivittämisen ilman koko ytimen päivittämistä.
    • User-mode Linux on lisännyt tuen keskeytystilalle, jonka avulla voit jäädyttää ympäristön ja käyttää SIGUSR1-signaalia lepotilasta herättämiseen.
    • Virto-mem-mekanismi, jonka avulla voit kytkeä ja irrottaa muistin virtuaalikoneisiin, on lisännyt tuen Big Block Modelle (BBM), joka mahdollistaa muistin siirtämisen tai ottamisen ytimen muistia suurempina lohkoina. lohko, joka on tarpeen VFIO:n optimoimiseksi QEMU:ssa.
    • Tuki CHACHA20-POLY1305-salaukselle on lisätty TLS:n ytimen toteutukseen.
  • Verkkoalijärjestelmä
    • 802.1Q:lle (VLAN) on otettu käyttöön yhteysvikojen hallintamekanismi (CFM, Connectivity Fault Management), jonka avulla voit tunnistaa, tarkistaa ja eristää vikoja verkoissa, joissa on virtuaalisia siltoja (Virtual Bridged Networks). CFM:n avulla voidaan esimerkiksi eristää ongelmia verkoissa, jotka kattavat useita itsenäisiä organisaatioita, joiden työntekijöillä on pääsy vain omiin laitteisiinsa.
    • Lisätty tuki SCTP-protokollapakettien kapseloinnille UDP-paketteihin (RFC 6951), jonka avulla voit käyttää SCTP:tä verkoissa, joissa on vanhempia osoitekääntäjiä, jotka eivät tue suoraan SCTP:tä, sekä ottaa käyttöön SCTP:n järjestelmissä, jotka eivät tarjoa suoraa pääsyä IP-osoitteeseen. kerros.
    • WiMAX-tekniikan käyttöönotto on siirretty vaiheittaiseen vaiheeseen, ja se on tarkoitus poistaa tulevaisuudessa, jos WiMAXia tarvitsevia käyttäjiä ei ole. WiMAXia ei enää käytetä julkisissa verkoissa, ja ytimessä ainoa ohjain, jolla WiMAXia voidaan käyttää, on vanhentunut Intel 2400m -ohjain. WiMAX-tuki lopetettiin NetworkManager-verkkokonfiguraattorissa vuonna 2015. Tällä hetkellä WiMax on lähes kokonaan korvattu teknologioilla, kuten LTE, HSPA+ ja Wi-Fi 802.11n.
    • Saapuvan TCP-liikenteen käsittelyn suorituskyvyn optimoimiseksi on tehty työtä nollakopiotilassa, ts. ilman ylimääräistä kopiointia uusiin puskureihin. Keskikokoisessa liikenteessä, joka kattaa kymmeniä tai useita satoja kilotavuja dataa, zerocopyn käyttö recvmsg():n sijaan on huomattavasti tehokkaampaa. Esimerkiksi toteutetut muutokset mahdollistivat RPC-tyyppisen liikenteen käsittelyn tehokkuuden 32 kt:n viesteillä zerocopya käytettäessä 60-70 %.
    • Lisätty uusia ioctl()-kutsuja useiden PPP-linkkien kattavien verkkosiltojen luomiseksi. Ehdotettu ominaisuus mahdollistaa kehysten siirtymisen kanavalta toiselle, esimerkiksi PPPoE:stä PPPoL2TP-istuntoon.
    • Integrointi MPTCP:n (MultiPath TCP) ytimeen, TCP-protokollan laajennus TCP-yhteyden toiminnan järjestämiseen ja pakettien toimittamiseen samanaikaisesti useita reittejä pitkin eri verkkoliitäntöjen kautta, jotka liittyvät eri IP-osoitteisiin. Uusi julkaisu tukee ADD_ADDR-vaihtoehtoa, joka mainostaa käytettävissä olevia IP-osoitteita, joihin voidaan muodostaa yhteys, kun olemassa olevaan MPTCP-yhteyteen lisätään uusia virtauksia.
    • Lisätty mahdollisuus määrittää toimintoja, kun yhteyskyselyn budjetti ylittyy (varattu-kysely). Aiemmin saatavilla oleva SO_BUSY_POLL-tila tarkoitti vaihtamista softirq-tilaan, kun budjetti oli käytetty. Sovelluksille, joiden on jatkettava kyselyn käyttöä, ehdotetaan uutta vaihtoehtoa SO_PREFER_BUSY_POLL.
    • IPv6 tukee SRv6 End.DT4- ja End.DT6 -tiloja, joita käytetään luomaan usean käyttäjän IPv4 L3 VPN:itä ja VRF (Virtual Routing and Forwarding) -laitteita.
    • Netfilter yhtenäisti joukkolausekkeiden toteutuksen, mikä mahdollisti useiden lausekkeiden määrittämisen jokaiselle joukkoluettelon elementille.
    • Langattomaan 802.11-pinoon on lisätty API:t SAR-tehorajojen sekä AE PWE- ja HE MCS -parametrien määrittämiseksi. Intel iwlwifi -ohjain on lisännyt tuen 6 GHz (Ultra High Band) -alueelle. Qualcomm Ath11k -ohjain on lisännyt tuen FILS-teknologialle (Fast Initial Link Setup, standardoitu IEEE 802.11ai -standardiksi), jonka avulla voit päästä eroon verkkovierailuviiveistä siirron aikana tukiasemasta toiseen.
  • Оборудование
    • Amdgpu-ohjain tukee AMD "Green Sardine" APU:ta (Ryzen 5000) ja "Dimgrey Cavefish" GPU:ta (Navi 2) sekä alustavaa tukea AMD Van Gogh APU:lle Zen 2 -ytimellä ja RDNA 2 GPU:lla (Navi 2). Lisätty tuki uusille Renoirin APU-tunnisteille (perustuu Zen 2 -suorittimeen ja Vega GPU:hun).
    • Intel-näytönohjainkorttien i915-ohjain tukee IS (Integer scaling) -tekniikkaa, jossa on suodatin, joka lisää skaalaa ja ottaa huomioon naapuripikseleiden tilan (lähimmän naapurin interpolaatio) puuttuvien pikselien värin määrittämiseksi. Erillisten Intel DG1 -korttien tukea on laajennettu. Tuki "Big Joiner" -teknologialle on otettu käyttöön, joka on ollut olemassa Ice Lake / Gen11-siruista lähtien ja mahdollistaa yhden transkooderin käytön kahden streamin käsittelemiseen esimerkiksi 8K-näytölle yhden DisplayPortin kautta. Lisätty tila kahden videomuistin puskurin asynkroniseen vaihtamiseen (asynkroninen kääntö).
    • Nouveau-ohjain on lisännyt alustavan tuen NVIDIA-grafiikkasuorittimille, jotka perustuvat Ampere-mikroarkkitehtuuriin (GA100, GeForce RTX 30xx), joka on toistaiseksi rajoittunut videotilojen ohjaustyökaluihin.
    • Lisätty tuki LCD-paneeleissa käytettävälle 3WIRE-protokollalle. Lisätty tuki novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 ja ABT Y030XX067A 3.0 paneeleille. Erikseen voimme huomata OnePlus 6- ja 6T-älypuhelimien paneelin tuen, joka mahdollisti muokkaamattoman ytimen lataamisen laitteissa.
    • Lisätty tuki Intelin ensimmäiselle erilliselle USB4-isäntäohjaimelle, Maple Ridgelle.
    • Lisätty tuki Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI ja XCVR, Realtek RT715 ja Qualcomm SM8250 audiokoodekeille.
    • Lisätty tuki ARM-korteille, laitteille ja alustoille: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2CM, Nu730 Arvotonda, Nu382 Arvotonda ​Mikrotik perustuu Marvell Prestera 98DX3236:een, palvelimet, joissa on Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, “Trogdor” Chromebook, Kobol Helios64, Engicam PX30.Core.
    • Sisäänrakennettu tuki Ouya-pelikonsolille, joka perustuu NVIDIA Tegra 3:een.

Samaan aikaan Latinalaisen Amerikan Free Software Foundation muodosti version täysin ilmaisesta 5.11-ytimestä - Linux-libre 5.11-gnu, josta oli poistettu laiteohjelmistoelementit ja ajurit, jotka sisältävät ei-vapaita komponentteja tai koodiosia, joiden laajuus on rajoitettu valmistajan toimesta. Uusi julkaisu puhdistaa ajurit qat_4xxx (crypto), lt9611uxcm (dsi/hdmi silta), ccs/smia++ (sensori), ath11k_pci, nxp-äänilähetinvastaanottimelle ja mhi pci -ohjaimelle. Päivitetty blob-puhdistuskoodi ohjaimissa ja alijärjestelmissä amdgpu, btqca, btrtl, btusb, i915 csr. Poistettu uudet blobit käytöstä m3 rprocissa, idt82p33 ptp-kellossa ja qualcomm arm64:ssä.

Lähde: opennet.ru

Lisää kommentti