Linuxi 5.8 kerneli väljalase

Pärast kahekuulist arendustööd Linus Torvalds tutvustatud kerneli väljalase Linux 5.8. Märkimisväärsemate muudatuste hulgas: KCSAN võistlusseisundi detektor, universaalne mehhanism teadete edastamiseks kasutajaruumi, riistvaratugi sisekrüptimiseks, ARM64 täiustatud turvamehhanismid, Venemaa Baikal-T1 protsessori tugi, võimalus paigaldada eraldi procfs-juhtumeid , Varjuturbemehhanismide rakendamine ARM64 Call Stacki ja STI jaoks.

Kernel 5.8 sai kõigi tuumade muudatuste arvu poolest suurimaks kogu projekti jooksul. Pealegi ei ole muudatused seotud ühegi alamsüsteemiga, vaid hõlmavad kerneli erinevaid osi ning on peamiselt seotud sisemise ümbertöötamise ja puhastamisega. Suurimaid muutusi on näha autojuhtides. Uus versioon sisaldas 17606 2081 parandust 20 arendajalt, mis mõjutasid ligikaudu 65% kõigist kerneli koodihoidlas olevatest failidest. Plaastri suurus on 16180 MB (muudatused puudutasid 1043240 489854 faili, lisati 5.7 15033 39 rida koodi, 37 5.8 rida kustutati). Võrdluseks, 16 harus oli 11 3 parandust ja paiga suurus 4 MB. Umbes XNUMX% kõigist versioonis XNUMX sisse viidud muudatustest on seotud seadme draiveritega, ligikaudu XNUMX% muudatustest on seotud riistvaraarhitektuurile omase koodi värskendamisega, XNUMX% on seotud võrgupinuga, XNUMX% on seotud failisüsteemidega ja XNUMX% on seotud sisemiste tuuma alamsüsteemidega.

Kõik uuendused:

  • Virtualiseerimine ja turvalisus
    • Kerneli moodulite laadimine, millel on koodiga sektsioonid, milles on samaaegselt seadistatud täitmist ja kirjutamist võimaldavad bitid. Muudatus viidi ellu osana suuremast projektist, mille eesmärk oli vabastada kernel samaaegset täitmist ja kirjutamist võimaldavate mälulehtede kasutamisest.
    • Nüüd on võimalik luua eraldi procfs-i eksemplare, mis võimaldavad kasutada mitut procfs-i ühenduspunkti, mis on ühendatud erinevate suvanditega, kuid kajastavad sama protsessiidentifikaatori nimeruumi (pid namespace). Varem peegeldasid kõik procfs-i ühenduspunktid ainult ühte sisemist esitust ja kõik ühendamisparameetrite muudatused mõjutasid kõiki teisi sama protsessi ID nimeruumiga seotud ühendamispunkte. Valdkondade hulgas, kus erinevate võimalustega paigaldamine võib nõuda, on manustatud süsteemide kerge isolatsiooni rakendamine, mis võimaldab peita teatud tüüpi protsesse ja teabesõlmesid procfs-is.
    • ARM64 platvormi jaoks on mehhanismi tugi rakendatud
      Shadow-Call Stack, mille pakub kompilaator Clang, et kaitsta funktsiooni tagastusaadressi ülekirjutamise eest pinupuhvri ületäitumise korral. Kaitsmise olemus seisneb tagastusaadressi salvestamises eraldi "vari" virna pärast juhtimise üleandmist funktsioonile ja selle aadressi hankimist enne funktsioonist väljumist.

    • ARM64 platvormile on lisatud juhiste tugi ARMv8.5-BTI (Branch Target Indicator), et kaitsta käskude komplektide täitmist, millele ei tohiks hargneda. Üleminekute blokeerimine suvalistele koodiosadele on rakendatud selleks, et vältida vidinate loomist exploitides, mis kasutavad tagasisaatmisele orienteeritud programmeerimistehnikaid (ROP – Return-Oriented Programming; ründaja ei püüa oma koodi mällu paigutada, vaid tegutseb juba olemasolevate tükkidega masinkäskudest, mis lõpevad tagastusjuhtimise käsuga, millest koostatakse soovitud funktsionaalsuse saamiseks kõnede ahel).
    • Lisatud riistvaratugi plokkseadmete siseseks krüptimiseks (Tekstisisene krüptimine). Inlinepi krüpteerimisseadmed on tavaliselt draivi sisse ehitatud, kuid asuvad loogiliselt süsteemimälu ja ketta vahel, krüpteerides ja dekrüpteerides I/O läbipaistvalt kerneli määratud võtmete ja krüpteerimisalgoritmi alusel.
    • Lisati kerneli käsurea suvand "initrdmem", mis võimaldab teil esialgse alglaadimispildi RAM-i paigutamisel määrata initrd-i füüsilise mälu aadressi.
    • Lisatud uus võimalus: CAP_PERFMON, et pääseda juurde täiuslikule alamsüsteemile ja teostada jõudluse jälgimist. CAP_BPF, mis lubab teatud BPF-i toiminguid (nt BPF-programmide laadimist), mis varem nõudsid CAP_SYS_ADMIN õigusi (CAP_SYS_ADMIN õigused on nüüd jagatud CAP_BPF, CAP_PERFMON ja CAP_NET_ADMIN kombinatsiooniks).
    • Lisatud uus virtio-mem-seade, mis võimaldab teil külalissüsteemidesse mälu hot-plug ja hot-plug.
    • Rakendatud vastendustoimingute tagasikutsumine failis /dev/mem, kui seadmedraiver kasutab kattuvaid mälualasid.
    • Lisatud haavatavuse kaitse CROSSTalk/SRBDS, mis võimaldab teil taastada teatud juhiste tulemused, mis on täidetud mõnes teises CPU tuumas.
  • Mälu- ja süsteemiteenused
    • Dokumendis, mis määratleb koodi vormindamise reeglid, vastu võetud soovitused kaasava terminoloogia kasutamiseks. Arendajatel ei soovitata kasutada eraldi kombinatsioone 'master / slave' ja 'blacklist / whitelist', samuti sõna 'slave'. Soovitused puudutavad ainult nende terminite uusi kasutusviise. Kernelis juba olemasolevate määratud sõnade mainimised jäävad puutumata. Uues koodis on märgitud terminite kasutamine lubatud, kui see on vajalik kasutajaruumis eksponeeritud API ja ABI toetamiseks, samuti koodi värskendamisel, et toetada olemasolevat riistvara või protokolle, mille spetsifikatsioonid nõuavad teatud terminite kasutamist.
    • Kaasas silumistööriist KCSAN (Kernel Concurrency Sanitizer), mis on loodud dünaamiliseks tuvastamiseks võistlustingimused südamiku sees. KCSAN-i kasutamist toetatakse GCC-s ja Clangis ülesehitamisel ning see nõuab mälule juurdepääsu jälgimiseks kompileerimise ajal spetsiaalseid muudatusi (kasutatakse katkestuspunkte, mis käivituvad mälu lugemisel või muutmisel). KCSANi arenduse fookus oli valepositiivsete ennetustöödel, mastaapsusel ja kasutusmugavusel.
    • Lisatud universaalne mehhanism teadete edastamine kernelist kasutajaruumi. Mehhanism põhineb standardsel torudraiveril ja võimaldab tõhusalt jagada tuuma teateid kasutajaruumis avatud kanalite kaudu. Teavituste vastuvõtupunktid on torud, mis avatakse erirežiimis ja võimaldavad kernelist saadud sõnumite kogumist ringpuhvrisse. Lugemist teostab tavaline read() funktsioon. Kanali omanik määrab, milliseid kerneli allikaid tuleb jälgida, ja saab määrata filtri teatud tüüpi sõnumite ja sündmuste ignoreerimiseks. Sündmustest toetatakse hetkel ainult võtmetega toiminguid, nagu võtmete lisamine/eemaldamine ja nende atribuutide muutmine. Neid sündmusi kavatsetakse kasutada GNOME-is.
    • Funktsionaalsuse „pidfd” jätkuv arendamine, et aidata toime tulla PID-i korduskasutusolukordadega (pidfd on seotud konkreetse protsessiga ja ei muutu, samas kui PID-i saab seostada mõne teise protsessiga pärast seda, kui selle PID-ga seotud praegune protsess lõpeb). Uus versioon lisab toe pidfd kasutamisele protsessi lisamiseks nimeruumidesse (võimaldab määrata pidfd süsteemikutse setns käivitamisel). Pidfd kasutamine võimaldab ühe kõnega juhtida protsessi sidumist mitut tüüpi nimeruumiga, vähendades oluliselt vajalike süsteemikutsete arvu ja rakendades manuse aatomirežiimis (kui ühe nimeruumiga manustamine ebaõnnestub, siis teised ei ühendu) .
    • Lisati uus süsteemikutse faccessat2(), mis erineb
      faccessat() täiendav argument lippudega, mis vastavad POSIX-i soovitustele (varem emuleeriti neid lippe C teegis ja uus faccessat2 võimaldab neid tuumas juurutada).

    • C-rühmas lisatud säte memory.swap.high, mida saab kasutada liiga palju vahetusruumi võtvate toimingute aeglustamiseks.
    • Asünkroonse I/O liidese juurde io_uring lisatud tee() süsteemikõne tugi.
    • Lisatud mehhanism "BPF iteraator, mis on loodud kerneli struktuuride sisu väljastamiseks kasutajaruumi.
    • Tingimusel võimalus kasutada BPF-programmide vaheliseks andmevahetuseks ringpuhvrit.
    • Mehhanismi sisse padata, mis on loodud ülesannete paralleelse täitmise korraldamiseks tuumas, lisas tugi mitme lõimega ülesannetele koos koormuse tasakaalustamisega.
    • Pstore'i mehhanismis, mis võimaldab salvestada silumisinformatsiooni krahhi põhjuse kohta mälupiirkondadesse, mis taaskäivituste vahel ei kao, lisatud taustaprogramm teabe salvestamiseks seadmete blokeerimiseks.
    • PREEMPT_RT kerneli harust liigutatud kohalike lukkude rakendamine.
    • Lisatud uus puhvri eraldamise API (AF_XDP), mille eesmärk on lihtsustada XDP (eXpress Data Path) toega võrgudraiverite kirjutamist.
    • RISC-V arhitektuuri jaoks on juurutatud KGDB abil kerneli komponentide silumise tugi.
    • Enne versiooni 4.8 väljalaskmist on kerneli ehitamiseks kasutatavale GCC versioonile nõudeid tõstetud. Ühes järgmistest väljaannetest on plaanis latt tõsta GCC 4.9-le.
  • Ketta alamsüsteem, I/O ja failisüsteemid
    • Seadmes Mapper lisatud uus dm-ebs (emulate block size) töötleja, mida saab kasutada väiksema loogilise ploki suuruse emuleerimiseks (näiteks 512-baidiste sektorite emuleerimiseks 4K sektori suurusega ketastel).
    • F2FS-failisüsteem toetab nüüd pakkimist, kasutades LZO-RLE algoritmi.
    • dm-krüptis lisatud krüptitud võtmete tugi.
    • Btrfs on parandanud lugemistoimingute käsitlemist otseses I/O režiimis. Paigaldamisel kiirendatud kustutatud alajaotiste ja vanemata jäänud kataloogide kontrollimine.
    • CIFS-ile on lisatud parameeter "nodelete", mis võimaldab serveris tavapäraseid lubade kontrollimisi, kuid keelab kliendil failide või kataloogide kustutamise.
    • Ext4 on parandanud veakäsitlust ENOSPC mitme keermestamise kasutamisel. xattr on lisanud toe GNU Hurdis kasutatavale nimeruumile gnu.*.
    • Ext4 ja XFS puhul on üksikute failide ja kataloogide puhul lubatud DAX-i toimingute tugi (otsene juurdepääs failisüsteemile, lehe vahemälust möödahiilimine ilma blokeerimisseadme taset kasutamata).
    • Süsteemikõnes statx() lipp lisatud STATX_ATTR_DAX, mis täpsustamisel hangib teabe DAX-mootori abil.
    • EXFAT lisatud alglaadimisala kontrollimise tugi.
    • FAT-is paranenud FS-i elementide ennetav laadimine. Aeglase 2TB USB-draivi testimine näitas, et testi lõpetamise aeg vähenes 383 sekundilt 51 sekundile.
  • Võrgu alamsüsteem
    • Võrgusildade töö juhtimise koodis lisatud protokolli tugi MRP (Media Redundancy Protocol), mis võimaldab tõrketaluvust, ühendades mitu Etherneti lülitit.
    • Liikluskorraldussüsteemi (Tc) juurde lisatud uus "värava" toiming, mis võimaldab määrata teatud pakettide töötlemise ja tühistamise ajavahemikke.
    • Kernelile ja ethtool utiliidile on lisatud tugi ühendatud võrgukaabli testimiseks ja võrguseadmete enesediagnostikaks.
    • IPv6 virnale on lisatud MPLS (Multiprotocol Label Switching) algoritmi tugi pakettide marsruutimiseks mitme protokolli sildi vahetamise abil (varem oli MPLS-i toetatud IPv4 jaoks).
    • Lisatud tugi IKE (Internet Key Exchange) ja IPSec-pakettide edastamiseks TCP kaudu (RFC 8229), et vältida võimalikku UDP blokeerimist.
    • Lisatud võrguploki seade rnbd, mis võimaldab korraldada kaugjuurdepääsu plokkseadmele, kasutades RDMA transporti (InfiniBand, RoCE, iWARP) ja RTRS-protokolli.
    • TCP-virnas lisatud vahemiku tihendamise tugi selektiivsete kinnituste (SACK) vastustes.
    • IPv6 jaoks rakendatud TCP-LD tugi (RFC 6069, Pikad ühenduvushäired).
  • Оборудование
    • Inteli videokaartide i915 DRM-draiver sisaldab vaikimisi Intel Tiger Lake (GEN12) kiipide tuge, mille jaoks rakendatud võimalus kasutada SAGV (System Agent Geyserville) süsteemi sageduse ja pinge dünaamiliseks reguleerimiseks sõltuvalt energiatarbimisest või jõudlusnõuetest.
    • Amdgpu draiver on lisanud FP16 pikslivormingu toe ja võimaluse töötada videomälus oleva krüptitud puhvriga (TMZ, Trusted Memory Zone).
    • Lisatud on AMD Zeni ja Zen2 protsessorite võimsusandurite tugi, samuti AMD Ryzen 4000 Renoiri temperatuuriandurite tugi. AMD Zeni ja Zen2 jaoks pakutakse liidese kaudu energiatarbimise teabe hankimise tuge RAPL (Running Average Power Limit).
    • Nouveau draiverile lisati tugi NVIDIA modifikaatori vormingule. Gv100 jaoks on rakendatud ülerealaotusega skannimisrežiimide kasutamise võimalus. Lisatud vGPU definitsioon.
    • MSM (Qualcomm) draiverile on lisatud Adreno A405, A640 ja A650 GPU tugi.
    • Lisatud sisemine raamistik DRM-i (Direct Rendering Manager) ressursside haldamiseks.
    • Lisatud on tugi Xiaomi Redmi Note 7 ja Samsung Galaxy S2 nutitelefonidele ning Elm/Hana Chromebook sülearvutitele.
    • Lisatud draiverid LCD-paneelidele: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Lisatud tugi ARM-plaatidele ja platvormidele Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-50,,- Check PointeMMXNUMX-XNUMX-LIME
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 telekast, Stinger96, Beaglebone-AI.

    • Lisatud tugi MIPS-protsessorile Loongson-2K (lühendatult Loongson64). CPU Loongson 3 jaoks on lisatud KVM-i hüperviisori abil virtualiseerimise tugi.
    • Lisatud
      Venemaa Baikal-T1 protsessori ja sellel põhineva süsteem-kiibi tugi BE-T1000. Baikal-T1 protsessor sisaldab kahte P5600 MIPS 32 r5 superskalaarset südamikku, mis töötavad sagedusel 1.2 GHz. Kiip sisaldab L2 vahemälu (1 MB), DDR3-1600 ECC mälukontrollerit, 1 10Gb Etherneti porti, 2 1Gb Etherneti porti, PCIe Gen.3 x4 kontrollerit, 2 SATA 3.0 porti, USB 2.0, GPIO, UART, SPI, I2C. Protsessor pakub riistvaratuge virtualiseerimiseks, SIMD-juhiseid ja integreeritud riistvaralist krüptograafilist kiirendit, mis toetab standardit GOST 28147-89. Kiibi väljatöötamisel kasutatakse Imagination Technologiesilt litsentsitud protsessorituuma MIPS32 P5600 Warrior.

Samal ajal Ladina-Ameerika Vaba Tarkvara Fond moodustatud
võimalus täiesti tasuta kernel 5.8 - Linuxi vaba 5.8-gnu, puhastatud püsivarast ja draiverielementidest, mis sisaldavad mittevabu komponente või koodilõike, mille ulatust piirab tootja. Uus väljalase keelab blob-laadimise draiverites Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, täiustatud asünkroonse diskreetimissageduse muunduri, maksimaalse integreeritud heliprotsessori MAX98390 ZL38060, Microkerse Aimpmimi Protsessor 2, HomeAmp86 Speed6656. ja IXNUMXC EEPROM Slave. Värskendatud blob-puhastuskood Adreno GPU, HabanaLabs Goya, xXNUMX puuteekraani, vtXNUMX ja btbcm draiverites ja alamsüsteemides.

Allikas: opennet.ru

Lisa kommentaar