Linux 5.8 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds toimitettu ytimen julkaisu Linux 5.8. Merkittävimpiä muutoksia ovat: KCSAN-kilpailutilanteen ilmaisin, yleinen mekanismi ilmoitusten toimittamiseen käyttäjätilaan, laitteistotuki inline-salaukselle, parannetut suojausmekanismit ARM64:lle, tuki venäläiselle Baikal-T1-prosessorille, mahdollisuus asentaa erikseen procfs-esiintymiä , Shadow-suojausmekanismien käyttöönotto ARM64 Call Stackille ja BTI:lle.

Ydin 5.8 nousi kaikkien ytimien muutosmäärällä mitattuna suurin koko projektin aikana. Muutokset eivät myöskään liity mihinkään yhteen alijärjestelmään, vaan kattavat ytimen eri osia ja liittyvät pääasiassa sisäiseen uudelleenkäsittelyyn ja puhdistukseen. Suurimmat muutokset näkyvät kuljettajissa. Uusi versio sisälsi 17606 2081 korjausta 20 65 kehittäjältä, mikä vaikutti noin 16180 prosenttiin kaikista ytimen koodivaraston tiedostoista. Korjaustiedoston koko on 1043240 Mt (muutokset vaikuttivat 489854 5.7 tiedostoon, 15033 39 37 koodiriviä lisättiin, 5.8 16 riviä poistettiin). Vertailun vuoksi, 11-haarassa oli 3 4 korjausta ja korjaustiedoston koko oli XNUMX megatavua. Noin XNUMX % 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.

Pääasiallinen innovaatioita:

  • Virtualisointi ja turvallisuus
    • Sellaisten ytimen moduulien lataaminen, joissa on koodiosia, joissa suorituksen ja kirjoittamisen mahdollistavat bitit asetetaan samanaikaisesti. Muutos toteutettiin osana suurempaa projektia, jonka tarkoituksena oli vapauttaa ydin samanaikaisen suorituksen ja kirjoittamisen mahdollistavien muistisivujen käytöstä.
    • Nyt on mahdollista luoda erillisiä procfs-esiintymiä, jotka mahdollistavat useiden procfs-liitospisteiden käytön, jotka on liitetty eri vaihtoehdoilla, mutta heijastavat samaa prosessitunnisteen nimiavaruutta (pid namespace). Aiemmin kaikki procfs-liitoskohdat peilasivat vain yhtä sisäistä esitystä, ja kaikki liitosparametreihin tehdyt muutokset vaikuttivat kaikkiin muihin samaan prosessitunnuksen nimiavaruuteen liittyviin liitospisteisiin. Yksi niistä alueista, joilla asennus eri vaihtoehdoilla voi olla kysyntää, on sulautettujen järjestelmien kevyen eristyksen toteuttaminen, jossa on mahdollisuus piilottaa tietyntyyppiset prosessit ja tietosolmut procfsissa.
    • Tuki mekanismille on otettu käyttöön ARM64-alustalle
      Shadow-Call Stack, jonka Clang-kääntäjä tarjoaa suojaamaan funktion paluuosoitteen ylikirjoitukselta pinopuskurin ylivuodon sattuessa. 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.

    • Ohjetuki on lisätty ARM64-alustalle ARMv8.5-BTI (Branch Target Indicator) suojaamaan sellaisten käskyjoukkojen suorittamista, joihin ei pitäisi haarautua. Siirtymien estäminen mielivaltaisiin koodin osiin on toteutettu estämään gadgetien luominen hyväksikäytöissä, jotka käyttävät paluusuuntautuneita ohjelmointitekniikoita (ROP - Return-Oriented Programming; hyökkääjä ei yritä sijoittaa koodiaan muistiin, vaan toimii jo olemassa olevilla osilla konekäskyistä, jotka päättyvät paluuohjauskäskyyn, josta rakennetaan kutsuketju halutun toiminnallisuuden saavuttamiseksi).
    • Lisätty laitteistotuki lohkolaitteiden sisäiseen salaukseen (Sisäinen salaus). Inlinep-salauslaitteet on tyypillisesti rakennettu asemaan, mutta ne sijaitsevat loogisesti järjestelmämuistin ja levyn välissä, ja ne salaavat läpinäkyvästi I/O:n ja purkavat sen salauksen ytimen määrittämien avainten ja salausalgoritmin perusteella.
    • Lisätty "initrdmem"-ytimen komentorivivaihtoehto, jonka avulla voit määrittää initrd:n fyysisen muistin osoitteen, kun sijoitat alkuperäisen käynnistysvedoksen RAM-muistiin.
    • Lisätty uusi ominaisuus: CAP_PERFMON päästäksesi täydelliseen alijärjestelmään ja suorittaaksesi suorituskyvyn valvontaa. CAP_BPF, joka sallii tietyt BPF-toiminnot (kuten BPF-ohjelmien lataaminen), jotka aiemmin vaativat CAP_SYS_ADMIN-oikeuksia (CAP_SYS_ADMIN-oikeudet on nyt jaettu yhdistelmäksi CAP_BPF, CAP_PERFMON ja CAP_NET_ADMIN).
    • Добавлено uusi virtio-mem-laite, jonka avulla voit hot-plug-ja hot-plug-muistia vierasjärjestelmiin.
    • Toteutettu kartoitustoimintojen palautus tiedostossa /dev/mem, jos laiteajuri käyttää päällekkäisiä muistialueita.
    • Lisätty suoja haavoittuvuuksilta CROSSTalk/SRBDS, jonka avulla voit palauttaa tiettyjen toisessa CPU-ytimessä suoritettujen ohjeiden tulokset.
  • Muisti- ja järjestelmäpalvelut
    • Asiakirjassa, joka määrittelee koodin muotoilun säännöt, hyväksytty suosituksia osallistavan terminologian käytöstä. Kehittäjien ei suositella käyttämään yhdistelmiä "isäntä / orja" ja "musta lista / valkoinen lista" sekä sanaa "orja" erikseen. Suositukset koskevat vain näiden termien uusia käyttötapoja. Ytimessä jo olevien määritettyjen sanojen maininnat säilyvät ennallaan. Uudessa koodissa merkittyjen termien käyttö on sallittua, jos se on tarpeen käyttäjätilassa näkyvien API:n ja ABI:n tukemiseksi sekä päivitettäessä koodia tukemaan olemassa olevia laitteita tai protokollia, joiden spesifikaatiot edellyttävät tiettyjen termien käyttöä.
    • Mukana virheenkorjaustyökalu KCSAN (Kernel Concurrency Sanitizer), suunniteltu dynaamiseen havaitsemiseen kilpailuolosuhteet ytimen sisällä. KCSANin käyttöä tuetaan rakennettaessa GCC:ssä ja Clangissa, ja se vaatii erityisiä muutoksia käännöshetkellä muistin käytön seuraamiseksi (käytetään keskeytyskohtia, jotka laukeavat, kun muistia luetaan tai muokataan). KCSANin kehitystyön painopiste oli väärien positiivisten tulosten ehkäisyssä, skaalautuvuus ja helppokäyttöisyys.
    • lisättyä universaali mekanismi ilmoitusten toimittaminen ytimestä käyttäjätilaan. Mekanismi perustuu vakioputkiohjaimeen ja mahdollistaa ytimen ilmoitusten tehokkaan jakamisen käyttäjätilassa avoimille kanaville. Ilmoitusten vastaanottopisteet ovat putkia, jotka avataan erityistilassa ja mahdollistavat ytimestä vastaanotettujen viestien keräämisen rengaspuskuriin. Lukeminen suoritetaan tavallisella read()-funktiolla. Kanavan omistaja määrittää, mitä ytimen lähteitä on valvottava, ja voi määrittää suodattimen, joka jättää huomiotta tietyn tyyppiset viestit ja tapahtumat. Tapahtumista tuetaan tällä hetkellä vain toimintoja avaimilla, kuten avainten lisääminen/poistaminen ja niiden attribuuttien muuttaminen. Näitä tapahtumia on tarkoitus käyttää GNOMEssa.
    • Jatkuva pidfd-toiminnallisuuden kehittäminen PID-uudelleenkäyttötilanteiden käsittelemiseksi (pidfd liittyy tiettyyn prosessiin eikä muutu, kun taas PID voidaan liittää toiseen prosessiin sen jälkeen, kun tähän PID:hen liittyvä nykyinen prosessi päättyy). Uusi versio lisää tuen pidfd:n käyttämiselle prosessin liittämiseen nimiavaruuksiin (mahdollistaa pidfd:n määrittämisen setns-järjestelmäkutsua suoritettaessa). Pidfd:n avulla voit hallita prosessin liittämistä useisiin nimiavaruuksiin yhdellä kutsulla, mikä vähentää merkittävästi tarvittavien järjestelmäkutsujen määrää ja toteuttaa liittämisen atomitilassa (jos liittäminen yhteen nimiavaruuksista epäonnistuu, muut eivät muodosta yhteyttä) .
    • Lisätty uusi järjestelmäkutsu faccessat2(), erilainen kuin
      faccessat() lisäargumentti lipuilla, jotka noudattavat POSIX-suosituksia (aiemmin näitä lippuja emuloitiin C-kirjastossa ja uusi faccessat2 mahdollistaa niiden toteuttamisen ytimessä).

    • C-ryhmässä lisätty memory.swap.high-asetus, jolla voidaan hidastaa liian paljon sivutustilaa vieviä tehtäviä.
    • Asynkroniseen I/O-liitäntään io_uring lisätty tuki tee()-järjestelmäkutsulle.
    • Lisätty mekanismi"BPF-iteraattori, joka on suunniteltu tulostamaan ydinrakenteiden sisältö käyttäjätilaan.
    • Edellyttäen kyky käyttää rengaspuskuria tiedonvaihtoon BPF-ohjelmien välillä.
    • Mekanismiin padata, suunniteltu järjestämään tehtävien rinnakkainen suorittaminen ytimessä, lisäsi tukea monisäikeisille tehtäville kuormituksen tasapainotuksella.
    • Pstore-mekanismissa, jonka avulla voit tallentaa virheenkorjaustietoja kaatumisen syystä muistialueille, jotka eivät katoa uudelleenkäynnistysten välillä, lisätty taustaohjelma tietojen tallentamiseen laitteiden estämistä varten.
    • PREEMPT_RT-ytimen haarasta siirretty paikallisten lukkojen toteuttaminen.
    • lisättyä uusi puskurin allokointi API (AF_XDP), jonka tarkoituksena on yksinkertaistaa verkkoajurien kirjoittamista XDP (eXpress Data Path) -tuella.
    • RISC-V-arkkitehtuurille on otettu käyttöön tuki ytimen komponenttien virheenkorjaukseen KGDB:n avulla.
    • Ennen julkaisua 4.8 GCC-version vaatimuksia, jota voidaan käyttää ytimen rakentamiseen, on korotettu. Yhdessä seuraavista julkaisuista on tarkoitus nostaa rimaa GCC 4.9:ään.
  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • Device Mapperissa lisätty uusi dm-ebs (emulate block size) -käsittelijä, jota voidaan käyttää pienemmän loogisen lohkokoon emulointiin (esimerkiksi 512-tavuisten sektoreiden emulointiin 4K-sektorin kokoisilla levyillä).
    • F2FS-tiedostojärjestelmä tukee nyt pakkausta LZO-RLE-algoritmin avulla.
    • dm-cryptissä lisätty tuki salatuille avaimille.
    • Btrfs on parantanut lukutoimintojen käsittelyä suorassa I/O-tilassa. Asennettaessa kiihdytetty tarkistaa poistetut alaosastot ja hakemistot, jotka jäivät ilman vanhempia.
    • CIFS:ään on lisätty "nodelete"-parametri, joka sallii normaalit lupatarkastukset palvelimella, mutta estää asiakasta poistamasta tiedostoja tai hakemistoja.
    • Ext4 on parantanut virheiden käsittelyä ENOSPC kun käytät monisäikeistystä. xattr on lisännyt tuen GNU Hurdissa käytettävälle gnu.*-nimiavaruudelle.
    • Ext4:ssä ja XFS:ssä DAX-toimintojen tuki on käytössä (suora pääsy tiedostojärjestelmään, sivuvälimuistin ohittaminen ilman lohkolaitetasoa) yksittäisten tiedostojen ja hakemistojen osalta.
    • Järjestelmäpuhelussa statx() lippu lisätty STATX_ATTR_DAX, joka määritettynä hakee tiedot DAX-moottorin avulla.
    • EXFAT lisätty tuki käynnistysalueen tarkastukselle.
    • FATissa parantunut FS-elementtien ennakoiva lataus. Hitaan 2 Tt:n USB-aseman testaus osoitti, että testin valmistumisaika lyheni 383 sekunnista 51 sekuntiin.
  • Verkkoalijärjestelmä
    • Verkkosiltojen toiminnan ohjauskoodissa lisätty protokollan tuki MRP (Media Redundancy Protocol), joka mahdollistaa vikasietoisuuden silmukoimalla useita Ethernet-kytkimiä.
    • Liikenteenohjausjärjestelmään (Tc) lisätty uusi "portti"-toiminto, jonka avulla voidaan määrittää aikavälejä tiettyjen pakettien käsittelylle ja hylkäämiselle.
    • Ytimeen ja ethtool-apuohjelmaan on lisätty tuki kytketyn verkkokaapelin testaamiseen ja verkkolaitteiden itsediagnosointiin.
    • MPLS (Multiprotocol Label Switching) -algoritmin tuki on lisätty IPv6-pinoon pakettien reitittämiseksi moniprotokollan vaihtamisen avulla (MPLS oli aiemmin tuettu IPv4:lle).
    • Lisätty tuki IKE- (Internet Key Exchange)- ja IPSec-pakettien lähettämiseen TCP:n kautta (RFC 8229) ohittaaksesi mahdollisen UDP-eston.
    • Добавлено verkkolohkolaite rnbd, jonka avulla voit järjestää etäkäytön lohkolaitteeseen käyttämällä RDMA-siirtoa (InfiniBand, RoCE, iWARP) ja RTRS-protokollaa.
    • TCP-pinossa lisätty tuki alueen pakkaamiselle selektiivisissä kuittausvastauksissa (SACK).
    • IPv6:lle toteutettu TCP-LD tuki (RFC 6069, Pitkät yhteyshäiriöt).
  • Оборудование
    • Intelin näytönohjainten i915 DRM -ohjain sisältää oletuksena tuen Intel Tiger Lake (GEN12) -siruille, joita varten toteutettu kyky käyttää SAGV-järjestelmää (System Agent Geyserville) taajuuden ja jännitteen dynaamiseen säätämiseen virrankulutuksen tai suorituskykyvaatimusten mukaan.
    • Amdgpu-ohjain on lisännyt tuen FP16 pikselimuodolle ja mahdollisuuden työskennellä videomuistin salattujen puskureiden kanssa (TMZ, Trusted Memory Zone).
    • Lisätty tuki tehoantureille AMD Zen- ja Zen2-prosessoreille sekä lämpötila-antureille AMD Ryzen 4000 Renoirille. AMD Zenille ja Zen2:lle tarjotaan tuki virrankulutustietojen hakemiseen käyttöliittymän kautta RAPL (Keskimääräisen tehon raja).
    • Lisätty tuki NVIDIA-muokkausmuodolle Nouveau-ohjaimeen. Gv100:lle on otettu käyttöön kyky käyttää lomitettuja skannaustiloja. Lisätty vGPU-tunnistus.
    • Lisätty tuki Adreno A405, A640 ja A650 GPU:ille MSM (Qualcomm) -ohjaimeen.
    • lisättyä sisäinen kehys DRM (Direct Rendering Manager) -resurssien hallintaan.
    • Lisätty tuki Xiaomi Redmi Note 7- ja Samsung Galaxy S2 -älypuhelimille sekä Elm/Hana Chromebook-kannettaville.
    • Lisätyt ajurit LCD-paneeleille: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Lisätty tuki ARM-levyille ja -alustoille Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuMM50, LME
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.

    • Lisätty tuki MIPS-prosessorille Loongson-2K (lyhennetty Loongson64). CPU Loongson 3:lle on lisätty tuki virtualisoinnille KVM-hypervisorilla.
    • lisätty
      tuki venäläiselle Baikal-T1-prosessorille ja siihen perustuvalle järjestelmälle BE-T1000. Baikal-T1-prosessori sisältää kaksi P5600 MIPS 32 r5 superskalaariydintä, jotka toimivat 1.2 GHz:llä. Siru sisältää L2-välimuistin (1 Mt), DDR3-1600 ECC-muistiohjaimen, 1 10Gb Ethernet-portin, 2 1Gb Ethernet-porttia, PCIe Gen.3 x4 -ohjaimen, 2 SATA 3.0 -porttia, USB 2.0, GPIO, UART, SPI, I2C. Prosessori tarjoaa laitteistotuen virtualisoinnille, SIMD-käskyt ja integroidun laitteiston salauskiihdytin, joka tukee GOST 28147-89:ää. Siru on kehitetty käyttämällä Imagination Technologiesin lisensoitua MIPS32 P5600 Warrior -prosessoriydinyksikköä.

Samaan aikaan Latinalaisen Amerikan Free Software Foundation muodostettu
вариант täysin ilmainen kernel 5.8 - Linux-vapaa 5.8-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 ohjaimissa: Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Enhanced Asynchronous Sample Rate Converter, Maxim Integrated MAX98390 SpeedL38060, Micro2imp Integrated MAX86 Speed6656 Home ja IXNUMXC EEPROM Slave. Päivitetty blob-puhdistuskoodi Adreno GPU-, HabanaLabs Goya-, xXNUMX-kosketusnäytössä, vtXNUMX- ja btbcm-ajureissa ja alijärjestelmissä.

Lähde: opennet.ru

Lisää kommentti