Linux 5.6 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds toimitettu ytimen julkaisu Linux 5.6. Merkittävimpiä muutoksia ovat: WireGuard VPN -liitännän integrointi, tuki USB4:lle, nimiavaruudet ajalle, mahdollisuus luoda TCP-ruuhkakäsittelijöitä BPF:n avulla, MultiPath TCP:n alustava tuki, ytimen poistaminen 2038-ongelmasta, "bootconfig"-mekanismi , ZoneFS.

Uusi versio sisältää 13702 1810 korjausta XNUMX XNUMX kehittäjältä,
korjaustiedoston koko - 40 Mt (muutokset vaikuttivat 11577 tiedostoon, 610012 koodiriviä lisättiin,
294828 riviä poistettu). Noin 45 % kaikista 5.6
muutokset liittyvät laiteajureihin, noin 15 % muutoksista on
asenne laitteistoarkkitehtuurikohtaisen koodin päivittämiseen, 12 %
liittyy verkkopinoon, 4 % tiedostojärjestelmiin ja 3 % sisäisiin
ytimen alijärjestelmät.

Pääasiallinen innovaatioita:

  • Verkkoalijärjestelmä
    • lisätty VPN-rajapinnan toteuttaminen WireGuard, joka on toteutettu nykyaikaisiin salausmenetelmiin (ChaCha20, Poly1305, Curve25519, BLAKE2s), on helppokäyttöinen, vailla komplikaatioita, on osoittautunut useissa suurissa toteutuksissa ja tarjoaa erittäin korkean suorituskyvyn (3,9 kertaa nopeampi kuin OpenVPN). suorituskyvystä). WireGuard käyttää salausavainten reitityksen käsitettä, joka sisältää yksityisen avaimen liittämisen jokaiseen verkkoliitäntään ja sen käyttämisen julkisten avainten sitomiseen. Julkisia avaimia vaihdetaan yhteyden muodostamiseksi samalla tavalla kuin SSH. Cryptographic primitiivit vaaditaan WireGuardin toimintaan Olimme siirretty kirjastosta sinkki osana standardia Crypto API:ta ja mukana ytimeen 5.5.
    • Aloittaja MPTCP:n (MultiPath TCP) tukemiseen tarvittavien komponenttien integrointi, TCP-protokollan laajennus TCP-yhteyden toiminnan järjestämiseen ja pakettien toimittamiseen samanaikaisesti useita reittejä pitkin eri verkkorajapintojen kautta, jotka liittyvät eri IP-osoitteisiin. Verkkosovelluksissa tällainen yhdistetty yhteys näyttää tavalliselta TCP-yhteydeltä, ja kaikki virtauksen erottelulogiikka suorittaa MPTCP. Monitie-TCP:tä voidaan käyttää sekä suorituskyvyn että luotettavuuden lisäämiseen. MPTCP:n avulla voidaan esimerkiksi järjestää tiedonsiirto älypuhelimella samanaikaisesti WiFi- ja 4G-linkeillä tai alentaa kustannuksia yhdistämällä palvelin usealla halvalla yhden kalliin linkin sijaan.
    • lisätty tuki verkon jonojen käsittelyyn sch_ets (Parannettu lähetyksen valinta, IEEE 802.1Qaz), joka tarjoaa mahdollisuuden jakaa kaistanleveyttä eri liikenneluokkien välillä. Jos tietyn liikenneluokan kuormitus on alle varatun kaistanleveyden, ETS sallii muiden liikenneluokkien käyttää käytettävissä olevaa (käyttämätöntä) kaistanleveyttä. Qdisc sch_ets on konfiguroitu PRIO-aineeksi ja käyttää liikenneluokkia tiukkojen ja jaettujen kaistanleveysrajoitusten määrittämiseen. ETS toimii tieteenalojen yhdistelmänä ENNEN и DRR — jos liikenneluokkia on tiukasti rajoitettu, käytetään PRIOa, mutta jos jonossa ei ole liikennettä, se toimii kuten DRR.
    • Lisätty uudentyyppiset BPF-ohjelmat BPF_PROG_TYPE_STRUCT_OPS, jonka avulla voit toteuttaa ytimen toimintokäsittelijöitä BPF:n kautta. Tällä hetkellä tätä ominaisuutta voidaan jo käyttää TCP-ruuhkanhallinta-algoritmien toteuttamiseen BPF-ohjelmien muodossa. Esimerkiksi ehdotettu BPF-ohjelma algoritmien toteutuksella DCTCP.
    • Hyväksytty ytimeen muutokset, käännöstyökalut ethool ioctl():n kanssa käytettäväksi netlinkin käyttöliittymä. Uusi käyttöliittymä helpottaa laajennuksien lisäämistä, parantaa virheiden käsittelyä, mahdollistaa ilmoitusten lähettämisen tilan muuttuessa, yksinkertaistaa ytimen ja käyttäjätilan välistä vuorovaikutusta ja vähentää synkronoitavien nimettyjen listojen määrää.
    • Lisätty FQ-PIE (Flow Queue PIE) -verkkojononhallinta-algoritmin toteutus, jonka tarkoituksena on vähentää pakettien välipuskuroinnin negatiivista vaikutusta reunaverkkolaitteisiin (bufferbloat). FQ-PIE osoittaa korkean hyötysuhteen, kun sitä käytetään järjestelmissä, joissa on kaapelimodeemit.
  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • Btrfs-tiedostojärjestelmälle lisätty DISCARD-toiminnon asynkroninen toteutus (merkitsevät vapautetut lohkot, joita ei enää tarvitse fyysisesti tallentaa). Aluksi DISCARD-toiminnot suoritettiin synkronisesti, mikä saattoi johtaa suorituskyvyn heikkenemiseen, koska asemat odottavat vastaavien komentojen valmistumista. Asynkronisen toteutuksen ansiosta et odota, että asema suorittaa DISCARD-toiminnon loppuun ja suorittaa tämän toiminnon taustalla.
    • XFS:ssä toteutettu Vanhoja 32-bittisiä aikalaskureita käyttävän koodin puhdistaminen (tyyppi time_t korvattiin time64_t:lla), mikä johti 2038-ongelmaan. Korjattu virheet ja muistin vioittumiset 32-bittisissä alustoissa. Koodi on muokattu toimimaan laajennettujen attribuuttien kanssa.
    • Ext4 tiedostojärjestelmään tehty Suorituskyvyn optimointi, joka liittyy inodien lukituksen käsittelyyn luku- ja kirjoitustoimintojen aikana. Parannettu uudelleenkirjoitussuorituskyky Direct I/O -tilassa. Ongelmien diagnosoinnin yksinkertaistamiseksi ensimmäinen ja viimeinen virhekoodi tallennetaan superlohkoon.
    • F2FS-tiedostojärjestelmässä toteutettu kyky tallentaa tietoja pakatussa muodossa. Yksittäiselle tiedostolle tai hakemistolle pakkaus voidaan ottaa käyttöön komennolla "chattr +c file" tai "chattr +c dir; kosketa dir/file". Voit pakata koko osion käyttämällä asennusapuohjelman "-o compress_extension=ext" -vaihtoehtoa.
    • Ydin sisältää tiedostojärjestelmän ZoneFS, joka yksinkertaistaa matalan tason työskentelyä kaavoitettujen tallennuslaitteiden kanssa. Vyöhykeasemilla tarkoitetaan kiintolevyillä tai NVMe SSD -levyillä olevia laitteita, joiden tallennustila on jaettu vyöhykkeisiin, jotka muodostavat lohko- tai sektoriryhmiä, joihin sallitaan vain peräkkäinen tietojen lisääminen, mikä päivittää koko lohkoryhmän. FS ZoneFS on Western Digitalin kehittämä, ja se yhdistää jokaisen aseman vyöhykkeen erilliseen tiedostoon, jota voidaan käyttää tietojen tallentamiseen raakatilassa ilman manipulointia sektori- ja lohkotasolla, ts. Sallii sovellusten käyttää tiedostosovellusliittymää sen sijaan, että ne pääsisivät suoraan lohkolaitteeseen ioctl:n avulla.
    • NFS:ssä osioiden liittäminen UDP:n kautta on oletusarvoisesti poissa käytöstä. Lisätty tuki mahdollisuudelle kopioida tiedostoja suoraan palvelimien välillä NFS 4.2 -määrityksen mukaisesti. Lisätty uusi liitosvaihtoehto "softreval", joka mahdollistaa välimuistissa olevien attribuuttiarvojen käytön palvelinvian sattuessa. Kun esimerkiksi määrität tämän vaihtoehdon, sen jälkeen kun palvelin ei ole käytettävissä, on edelleen mahdollista liikkua NFS-osion polkuja pitkin ja käyttää välimuistiin tallentuneita tietoja.
    • Suoritettu fs-verity-mekanismin suorituskyvyn optimointi, jota käytetään yksittäisten tiedostojen eheyden ja autentikoinnin valvontaan. Lisääntynyt lukunopeus Merklen hash-puun käytön ansiosta. FS_IOC_ENABLE_VERITY:n suorituskyky on optimoitu, kun välimuistissa ei ole dataa (tietoa sisältävien sivujen ennaltaehkäisevä luku on käytössä).
  • Virtualisointi ja turvallisuus
    • Mahdollisuus poistaa SELinux-moduuli käytöstä ajon aikana on vanhentunut, ja jo aktivoidun SELinuxin purkaminen on kielletty tulevaisuudessa. SELinuxin poistamiseksi käytöstä sinun on välitettävä "selinux=0"-parametri ytimen komentoriviltä.
    • lisätty tuki ajan nimiavaruille (ajan nimiavaruudet), jolloin voit sitoa järjestelmän kellon tilan säilöön (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), käytä omaa aikaa säilössä ja siirtäessäsi säilöä toiseen isäntään varmista, että CLOCK_MONOTONIC- ja CLOCK_BOOTTIME-lukemat pysyvät ennallaan (ota huomioon latauksen jälkeinen aika, lepotilassa tai ilman sitä ).

    • /dev/random estoallas on poistettu. Tiedoston /dev/random käyttäytyminen on samanlainen kuin /dev/urandom entropian eston estämisessä poolin alustuksen jälkeen.
    • Ydinydin sisältää ohjaimen, jonka avulla VirtualBoxia käyttävät vierasjärjestelmät voivat liittää isäntäympäristön viemiä hakemistoja (VirtualBox Shared Folder).
    • BPF-alijärjestelmään on lisätty joukko korjaustiedostoja (BPF lähettäjä), kun Retpoline-mekanismia käytetään suojaamaan Spectre V2 -luokan hyökkäyksiä vastaan, sen avulla voit tehostaa BPF-ohjelmien kutsumista niihin liittyvien tapahtumien sattuessa (esim. se mahdollistaa XDP-käsittelijöiden kutsumisen nopeuttamisen, kun verkkopaketti saapuu).
    • Lisätty ohjain tukee AMD:n APU:ihin sisäänrakennettua TEE:tä (Trusted Execution Environment).
  • Muisti- ja järjestelmäpalvelut
    • BPF on lisännyt tuen maailmanlaajuisille toiminnoille. Kehitystä tehdään osana aloitetta, jolla lisätään tuki BPF-ohjelmiin sisällytettäville toimintokirjastoille. Seuraava askel on tukea dynaamisia laajennuksia, jotka mahdollistavat globaalien toimintojen lataamisen, mukaan lukien olemassa olevien globaalien toimintojen korvaaminen niiden ollessa käytössä. BPF-alijärjestelmä lisää myös tuen karttatoiminnon versiolle (käytetään pysyvien tietojen tallentamiseen), joka tukee suoritusta erätilassa.
    • Добавлено "cpu_cooling" -laitteen avulla voit jäähdyttää ylikuumentunutta prosessoria asettamalla se lepotilaan lyhyeksi ajaksi.
    • Lisätty järjestelmäkutsu openat2(), joka tarjoaa joukon lisälippuja tiedostopolun tarkkuuden rajoittamiseksi (liitoskohtien ylittämisen kielto, symboliset linkit, maagiset linkit (/proc/PID/fd), "../"-komponentit).
    • Heterogeenisissä järjestelmissä, jotka perustuvat big.LITTLE-arkkitehtuuriin, jotka yhdistävät tehokkaat ja vähemmän tehokkaat energiatehokkaat CPU-ytimet yhdessä sirussa, parametri uclamp_min asetetaan suoritettaessa reaaliaikaisia ​​tehtäviä (nousi esiin ytimessä 5.3 on mekanismi kuorman kiinnittämiseksi). Tämä parametri varmistaa, että ajoittaja sijoittaa tehtävän suorittimen ytimeen, jonka suorituskyky on riittävä.
    • Ydin on vapautettu vuoden 2038 ongelmat. Korvattiin viimeiset jäljellä olevat käsittelijät, jotka käyttivät 32-bittistä (signed int) tyyppiä time_t epokaalisen aikalaskurina, jonka vuoden 1970 raportin mukaan pitäisi ylivuoto vuonna 2038.
    • Asynkronisen I/O-liitännän jatkuva parantaminen io_uringmissä turvattu uusien toimintojen tuki: IORING_OP_FALLOCATE (tyhjien alueiden varaus), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (tiedostojen avaaminen ja sulkeminen),
      IORING_OP_FILES_UPDATE (tiedostojen lisääminen ja poistaminen pikakäyttöluettelosta),
      IORING_OP_STATX (tiedoston tietopyyntö),
      IORING_OP_READ,
      IORING_OP_WRITE (IORING_OP_READV:n ja IORING_OP_WRITEV:n yksinkertaistetut analogit),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asynkroniset muunnelmat puheluista posix_fadvise ja madvise), IORING_OP_SEND,
      IORING_OP_RECV (verkkotietojen lähettäminen ja vastaanottaminen),
      IORING_OP_EPOLL_CTL (suorita toiminnot epoll-tiedostojen kuvaajille).

    • Lisätty järjestelmäkutsu pidfd_getfd(), jolloin prosessi voi noutaa avoimen tiedoston tiedostokuvaajan toisesta prosessista.
    • Toteutettu "bootconfig"-mekanismi, jonka avulla komentorivivalintojen lisäksi voidaan määrittää ytimen parametrit asetustiedoston kautta. Tällaisten tiedostojen lisäämiseksi initramfs-kuvaan ehdotetaan bootconfig-apuohjelmaa. Tätä ominaisuutta voidaan käyttää esimerkiksi kprobes-toimintojen määrittämiseen käynnistyksen yhteydessä.
    • Uudelleentyöstetty mekanismi tietojen kirjoittamisen ja lukemisen odottamiseksi nimeämättömissä putkissa. Muutos mahdollisti esimerkiksi suurten projektien rinnakkaiskokoonpanon nopeuttamisen. Optimointi voi kuitenkin johtaa kilpailutilanteeseen GNU-tuotteessa 4.2.1-julkaisun virheen vuoksi, joka korjattiin versiossa 4.3.
    • Lisätty PR_SET_IO_FLUSHER lippu prctl(), jota voidaan käyttää merkitsemään muistivapaita prosesseja, joihin ei pitäisi kohdistua rajoituksia, kun järjestelmän muisti on vähissä.
    • Androidissa käytettävään ION-muistinjakojärjestelmään pohjautuva alijärjestelmä on toteutettu dma-buf kasat, jonka avulla voit hallita DMA-puskurien varaamista muistialueiden jakamiseen ohjainten, sovellusten ja eri alijärjestelmien välillä.
  • Laitteistoarkkitehtuurit
    • Lisätty tuki E0PD-laajennukselle, joka ilmestyi ARMv8.5:ssä ja mahdollistaa suojauksen hyökkäyksiltä, ​​jotka liittyvät käskyjen spekulatiiviseen suorittamiseen CPU:ssa. E0PD-pohjainen suojaus johtaa pienempään ylikuormitukseen kuin KPTI (Kernel Page Table Isolation) -suojaus.
    • ARMv8.5-arkkitehtuuriin perustuviin järjestelmiin on lisätty tuki RNG-käskylle, joka tarjoaa pääsyn laitteiston näennäissatunnaislukugeneraattoriin. Ytimessä RNG-käskyä käytetään entropian luomiseen, kun alustetaan ytimen tarjoamaa näennäissatunnaislukugeneraattoria.
    • Poistettu tuki MPX:lle (Memory Protection Extensions), joka on lisätty ytimeen 3.19 ja voit järjestää osoittimien tarkistuksen varmistaaksesi, että muistialueiden rajoja noudatetaan. Tätä tekniikkaa ei käytetty laajasti kääntäjissä ja se poistettiin GCC:stä.
    • RISC-V-arkkitehtuuriin on otettu käyttöön tuki KASan-virheenkorjaustyökalulle (Kernel address sanitizer), joka auttaa tunnistamaan virheet muistia käytettäessä.
  • Оборудование
    • Määrittelytuki otettu käyttöön USB 4.0, joka perustuu Thunderbolt 3 -protokollaan ja tarjoaa jopa 40 Gbps:n suorituskyvyn säilyttäen samalla taaksepäin yhteensopivuuden USB 2.0:n ja USB 3.2:n kanssa. Analogisesti kanssa Salama USB 4.0 -liitännän avulla voit tunneloida eri protokollia yhdellä liittimellä varustetulla kaapelilla C-tyypin, mukaan lukien PCIe, Display Port ja USB 3.x, sekä protokollien ohjelmistototeutukset esimerkiksi verkkoyhteyksien järjestämiseen isäntien välillä. Toteutus perustuu Linux-ytimeen jo sisältyvään Thunderbolt-ohjaimeen ja mukauttaa sen toimimaan USB4-yhteensopivien isäntien ja laitteiden kanssa. Muutokset lisäävät myös tuen Thunderbolt 3 -laitteille Connection Managerin ohjelmistototeutukseen, joka vastaa tunneleiden luomisesta useiden laitteiden yhdistämiseksi yhden liittimen kautta.
    • amdgpu-ohjaimessa lisätty alustava tuki HDCP 2.x (High-bandwidth Digital Content Protection) kopiosuojaustekniikalle. Lisätty tuki Raven 2 -pohjaiselle AMD Pollock ASIC -sirulle. Otettiin käyttöön mahdollisuus nollata GPU Renoir- ja Navi-perheille.
    • DRM-ohjain Intel-näytönohjaimelle lisätty DSI VDSC -tuki Ice Lake- ja Tiger Lake -mikroarkkitehtuuriin perustuville siruille, LMEM mmap (laitteen paikallinen muisti) on otettu käyttöön, VBT (Video BIOS Table) jäsennystä on parannettu, HDCP 2.2 -tuki on otettu käyttöön Coffee Lake -siruille.
    • Työtä jatkettiin amdkfd-ohjainkoodin yhdistämiseksi (erillisille GPU:ille, kuten Fiji, Tonga, Polaris) amdgpu-ohjaimen kanssa.
    • K10temp-ohjain on muokattu ja lisätty tuki AMD Zen -suorittimien jännite- ja virtaparametrien näyttämiseen sekä laajennettu tieto Zen- ja Zen 2 -suorittimissa käytetyistä lämpötila-antureista.
    • Nouveau kuljettajassa lisätty Tuki vahvistetulle laiteohjelmiston lataustilalle NVIDIA-grafiikkasuorittimille, jotka perustuvat Turing-mikroarkkitehtuuriin (GeForce RTX 2000), mikä mahdollisti 3D-kiihdytyksen tuen näille korteille (virallisen laiteohjelmiston lataaminen NVIDIA-digitaaliallekirjoituksella vaaditaan). Lisätty tuki TU10x-grafiikkamoottorille. HD-äänen ongelmat on ratkaistu.
    • Lisätty tuki tietojen pakkaamiselle, kun ne lähetetään DisplayPort MST:n (Multi-Stream Transport) kautta.
    • Lisätty uusi ohjain"ath11k» langattomille Qualcommin siruille, jotka tukevat 802.11ax-standardia.
      Ohjain perustuu mac80211-pinoon ja tukee tukiasema-, työasema- ja mesh-verkkosolmutiloja.

    • Sysfs tarjoaa pääsyn luettavissa oleviin lämpötila-anturin lukemiin, joita käytetään nykyaikaisilla kiintolevyillä ja SSD-levyillä.
    • Lähetetty merkittäviä muutoksia ALSA-äänijärjestelmään, joiden tarkoituksena on poistaa koodi vuoden 2038 ongelmat (vältetään 32-bittisen time_t-tyypin käyttöä snd_pcm_mmap_status- ja snd_pcm_mmap_control-liitännöissä). Lisätty tuki uusille äänikoodekeille
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Lisätty LCD-paneelien ajurit Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Terävä LS020B1DD01D.

    • lisätty tuki ARM-korteille ja Gen1-alustoille Amazon Echo (OMAP3630-pohjainen), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
      Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
      Tolino Shine 3 e-kirjan lukija,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX ja HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
      Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM
      ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Lisätty tuki Raspberry Pi 8505:ssä käytetylle PCIe-ohjaimelle.

Samaan aikaan Latinalaisen Amerikan Free Software Foundation muodostettu
вариант täysin ilmainen kernel 5.6 - Linux-vapaa 5.6-gnu, puhdistettu laiteohjelmistosta ja ajurielementeistä, jotka sisältävät ei-vapaita komponentteja tai koodiosia, joiden laajuutta valmistaja rajoittaa. Uusi julkaisu poistaa käytöstä blob-latauksen AMD TEE:n, ATH11K:n ja Mediatek SCP:n ohjaimissa. Päivitetty blob-puhdistuskoodi AMD PSP:ssä, amdgpu- ja nouveau-ajureissa ja alijärjestelmissä.

Lähde: opennet.ru

Lisää kommentti