Linuxi 5.6 kerneli väljalase

Pärast kahekuulist arendustööd Linus Torvalds tutvustatud kerneli väljalase Linux 5.6. Märkimisväärsemate muudatuste hulgas: WireGuard VPN-liidese integreerimine, USB4 tugi, aja nimeruumid, võimalus luua BPF-i abil TCP ummikute töötlejaid, MultiPath TCP esialgne tugi, tuuma vabastamine 2038. aasta probleemist, mehhanism "bootconfig" , ZoneFS.

Uus versioon sisaldab 13702 1810 parandust XNUMX arendajalt,
plaastri suurus - 40 MB (muudatused mõjutasid 11577 faili, lisati 610012 koodirida,
294828 rida eemaldatud). Umbes 45% kõigist punktis 5.6
muudatused on seotud seadme draiveritega, ligikaudu 15% muudatustest on
suhtumine riistvaraarhitektuurile omase koodi värskendamisse, 12%
seotud võrgupinuga, 4% failisüsteemidega ja 3% sisemisega
kerneli alamsüsteemid.

Kõik uuendused:

  • Võrgu alamsüsteem
    • Lisatud VPN-liidese rakendamine WireGuard, mis on juurutatud kaasaegsetel krüpteerimismeetoditel (ChaCha20, Poly1305, Curve25519, BLAKE2s), on hõlpsasti kasutatav, ilma komplikatsioonideta, on end tõestanud paljudes suurtes rakendustes ja tagab väga kõrge jõudluse (3,9 korda kiirem kui OpenVPN läbilaskevõime). WireGuard kasutab krüpteerimisvõtme marsruutimise kontseptsiooni, mis hõlmab privaatvõtme lisamist igale võrguliidesele ja selle kasutamist avalike võtmete sidumiseks. Avalikke võtmeid vahetatakse ühenduse loomiseks sarnaselt SSH-ga. WireGuardi töötamiseks on vajalikud krüptoprimitiivid olid üle kantud raamatukogust tsink osana standardsest Crypto API-st ja kaasatud tuuma sisse 5.5.
    • Alustatud MPTCP (MultiPath TCP) toetamiseks vajalike komponentide integreerimine, TCP-protokolli laiendus TCP-ühenduse toimimise korraldamiseks koos pakettide üheaegse edastamisega mitmel marsruudil erinevate IP-aadressidega seotud erinevate võrguliideste kaudu. Võrgurakenduste puhul näeb selline koondatud ühendus välja nagu tavaline TCP-ühendus ja kogu voogude eraldamise loogika teostab MPTCP. Multipath TCP-d saab kasutada nii läbilaskevõime kui ka töökindluse suurendamiseks. Näiteks saab MPTCP abil korraldada andmeedastust nutitelefonis samaaegselt WiFi ja 4G linke kasutades või kulusid vähendada, ühendades serveri ühe kalli lingi asemel mitut odavat linki kasutades.
    • Lisatud tugi võrgujärjekorra töötlemise distsipliinile sch_ets (Täiustatud ülekande valik, IEEE 802.1Qaz), mis võimaldab jaotada ribalaiust erinevate liiklusklasside vahel. Kui teatud liiklusklassi koormus on alla eraldatud ribalaiuse, lubab ETS teistel liiklusklassidel kasutada saadaolevat (kasutamata) ribalaiust. Qdisc sch_ets on konfigureeritud PRIO distsipliinina ja kasutab liiklusklasse, et määratleda ranged ja jagatud ribalaiuse piirangud. ETS toimib erialade kombinatsioonina EELNEV и Suurõnnetuste ohu vähendamise — kui on rangelt piiratud liiklusklassid, siis kasutatakse PRIO-t, kui aga liiklust järjekorras pole, siis toimib nagu DRR.
    • Lisatud uut tüüpi BPF-programmid BPF_PROG_TYPE_STRUCT_OPS, mis võimaldab BPF-i kaudu juurutada kerneli funktsioonide töötlejaid. Praegu saab seda funktsiooni juba kasutada TCP ülekoormuse kontrolli algoritmide rakendamiseks BPF-programmide kujul. Näitena soovitas BPF programm koos algoritmi rakendamisega DCTCP.
    • Tuuma vastu võetud muutused, tõlketööriistad ethool ioctl() abil netlinki liides. Uus liides muudab laienduste lisamise lihtsamaks, parandab veakäsitlust, võimaldab saata teateid oleku muutumisel, lihtsustab tuuma ja kasutajaruumi vahelist suhtlust ning vähendab sünkroonimist vajavate nimeliste loendite arvu.
    • Lisatud on FQ-PIE (Flow Queue PIE) võrgu järjekorrahaldusalgoritmi juurutamine, mille eesmärk on vähendada pakettide vahepealse puhverdamise negatiivset mõju äärevõrgu seadmetele (bufferbloat). FQ-PIE näitab kõrget efektiivsust, kui seda kasutatakse kaabelmodemitega süsteemides.
  • Ketta alamsüsteem, I/O ja failisüsteemid
    • Btrfs-failisüsteemi jaoks lisatud DISCARD-operatsiooni asünkroonne rakendamine (vabanenud plokkide märgistamine, mida ei ole enam vaja füüsiliselt salvestada). Algselt tehti DISCARD toimingud sünkroonselt, mis võib viia jõudluse halvenemiseni, kuna draivid ootavad vastavate käskude täitmist. Asünkroonne rakendamine võimaldab teil mitte oodata, kuni draiv lõpetab DISCARD, ja teeb selle toimingu taustal.
    • XFS-is läbi viidud Vanu 32-bitisi ajaloendureid kasutava koodi puhastamine (tüüp time_t asendati tüübiga time64_t), mis viis probleemini 2038. Parandatud 32-bitistel platvormidel esinenud vead ja mälurikked. Kood on ümber töödeldud, et see töötaks laiendatud atribuutidega.
    • Ext4 failisüsteemi kasutusele võetud Jõudluse optimeerimine, mis on seotud sisendmooduli lukustamise käsitlemisega lugemis- ja kirjutamistoimingute ajal. Täiustatud ümberkirjutamise jõudlus Direct I/O režiimis. Probleemide diagnoosimise lihtsustamiseks salvestatakse esimene ja viimane veakood superplokki.
    • F2FS-failisüsteemis rakendatud võime salvestada andmeid tihendatud kujul. Üksiku faili või kataloogi puhul saab tihendamise lubada käsuga "chattr +c file" või "chattr +c dir; puudutage kausta/faili". Kogu partitsiooni tihendamiseks võite kasutada paigaldusutiliidi suvandit "-o compress_extension=ext".
    • Kernel sisaldab failisüsteemi ZoneFS, mis lihtsustab madalal tasemel tööd tsoneeritud salvestusseadmetega. Tsoneeritud draivid on kõvadel magnetketastel või NVMe SSD-del olevad seadmed, mille salvestusruum on jagatud tsoonideks, mis moodustavad plokkide või sektorite rühmad, kuhu on lubatud ainult järjestikune andmete lisamine, värskendades kogu plokkide rühma. FS ZoneFS on välja töötatud Western Digitali poolt ja seob iga draivi tsooni eraldi failiga, mida saab kasutada töötlemata režiimis andmete salvestamiseks ilma sektori ja ploki tasemel manipuleerimata, s.t. Võimaldab rakendustel kasutada faili API-d, selle asemel, et ioctl-i abil otse plokiseadmele juurde pääseda.
    • NFS-is on partitsioonide ühendamine UDP kaudu vaikimisi keelatud. Lisatud on NFS 4.2 spetsifikatsioonis määratletud tugi failide otse kopeerimiseks serverite vahel. Lisati uus ühendamisvalik "softreval", mis võimaldab serveri rikke korral kasutada vahemällu salvestatud atribuutide väärtusi. Näiteks selle suvandi määramisel on pärast serveri kättesaamatuks jäämist võimalik liikuda mööda NFS-i partitsiooni teid ja pääseda juurde vahemällu settinud teabele.
    • Läbi viidud fs-verity mehhanismi jõudluse optimeerimine, mida kasutatakse üksikute failide terviklikkuse ja autentimise jälgimiseks. Suurenenud järjestikuse lugemise kiirus tänu Merkle räsipuu kasutamisele. Funktsiooni FS_IOC_ENABLE_VERITY jõudlus on optimeeritud, kui vahemälus pole andmeid (rakendatud on andmetega lehtede ennetav lugemine).
  • Virtualiseerimine ja turvalisus
    • Võimalus SELinuxi moodulit töötamise ajal keelata on aegunud ja juba aktiveeritud SELinuxi mahalaadimine on tulevikus keelatud. SELinuxi keelamiseks peate kerneli käsureal edastama parameetri "selinux=0".
    • Lisatud aja nimeruumide tugi (aja nimeruumid), mis võimaldab siduda süsteemi kella oleku konteineriga (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), kasutage konteineris oma aega ja veenduge konteineri teisele hostile üleviimisel, et CLOCK_MONOTONIC ja CLOCK_BOOTTIME näidud jäävad muutumatuks (arvestage laadimisjärgset aega, võttes arvesse puhkerežiimis olemist või ilma selleta). ).

    • /dev/random blokeerimiskogum on eemaldatud. Faili /dev/random käitumine sarnaneb /dev/urandom-ga entroopia blokeerimise ärahoidmise osas pärast kogumi initsialiseerimist.
    • Tuumatuum sisaldab draiverit, mis võimaldab VirtualBoxi käitavatel külalissüsteemidel ühendada hostikeskkonna (VirtualBox Shared Folder) eksporditud katalooge.
    • BPF-i alamsüsteemi on lisatud plaastrite komplekt (BPF dispetšer), kui kasutate Retpoline'i mehhanismi kaitseks Spectre V2 klassi rünnakute eest, võimaldab see suurendada BPF-programmide kutsumise tõhusust, kui nendega seotud sündmused toimuvad (näiteks võimaldab kiirendada XDP-käitlejate helistamist, kui võrgupakett saabub).
    • Lisatud draiver, et toetada AMD APU-desse sisseehitatud TEE-d (usaldusväärne täitmiskeskkond).
  • Mälu- ja süsteemiteenused
    • BPF on lisanud globaalsete funktsioonide toe. Arendust tehakse osana algatusest, mille eesmärk on lisada tugi BPF-i programmidesse kaasatavate funktsioonide teekide jaoks. Järgmine samm on toetada dünaamilisi laiendusi, mis võimaldavad laadida globaalseid funktsioone, sealhulgas asendada olemasolevad globaalsed funktsioonid nende kasutamise ajal. BPF-i alamsüsteem lisab ka toe kaarditoimingu variandile (kasutatakse püsivate andmete salvestamiseks), mis toetab pakettrežiimis käivitamist.
    • Lisatud Seade "cpu_cooling" võimaldab jahutada ülekuumenenud protsessorit, pannes selle lühikeseks ajaks jõudeolekusse.
    • Lisatud süsteemikõne openat2(), mis pakub failitee eraldusvõime piiramiseks täiendavate lippude komplekti (ühenduspunktide ületamise keeld, sümboolsed lingid, maagilised lingid (/proc/PID/fd), “../” komponendid).
    • Big.LITTLE-arhitektuuril põhinevate heterogeensete süsteemide jaoks, mis ühendavad ühes kiibis võimsad ja vähem tõhusad energiatõhusad protsessori tuumad, määratakse parameeter uclamp_min reaalajas ülesannete täitmisel (tekkis tuumas 5.3 on mehhanism koorma kinnitamiseks). See parameeter tagab, et planeerija paigutab ülesande piisava jõudlusega protsessori tuumale.
    • Kernel on vabastatud 2038. aasta probleemid. Asendati viimased allesjäänud töötlejad, mis kasutasid epohaali ajaloenduriks 32-bitist (signed int) tüüpi time_t, mis 1970. aasta aruannet arvestades peaks 2038. aastal üle ajama.
    • Asünkroonse I/O liidese jätkuv täiustamine io_uringkus kindlustatud uute toimingute tugi: IORING_OP_FALLOCATE (tühjade alade reserveerimine), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (failide avamine ja sulgemine),
      IORING_OP_FILES_UPDATE (failide lisamine ja eemaldamine kiirjuurdepääsu loendist),
      IORING_OP_STATX (faili teabe päring),
      IORING_OP_READ,
      IORING_OP_WRITE (IORING_OP_READV ja IORING_OP_WRITEV lihtsustatud analoogid),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (kõnede asünkroonsed variandid posix_fadvise ja madvise), IORING_OP_SEND,
      IORING_OP_RECV (võrguandmete saatmine ja vastuvõtmine),
      IORING_OP_EPOLL_CTL (teostage toiminguid epolli failideskriptoritega).

    • Lisatud süsteemikõne pidfd_getfd(), mis võimaldab protsessil hankida mõnest teisest protsessist avatud faili failideskriptor.
    • Rakendatud "bootconfig" mehhanism, mis võimaldab lisaks käsurea suvanditele määrata ka kerneli parameetreid seadete faili kaudu. Selliste failide lisamiseks initramfsi pildile pakutakse välja utiliit bootconfig. Seda funktsiooni saab kasutada näiteks kprobesi seadistamiseks alglaadimise ajal.
    • Ümbertöödeldud mehhanism andmete kirjutamise ja lugemise ootamiseks nimetutes torudes. Muudatus võimaldas kiirendada selliseid ülesandeid nagu suurte projektide paralleelne kokkupanek. Optimeerimine võib aga kaasa tuua võistlusseisundi GNU maketis 4.2.1 väljalaske vea tõttu, mis parandati versioonis 4.3.
    • Lisas prctl() lipu PR_SET_IO_FLUSHER, mida saab kasutada mäluvabade protsesside tähistamiseks, millele ei tohiks kehtida piirangud, kui süsteemis on vähe mälu.
    • Androidis kasutatava ION mälujaotussüsteemi baasil on juurutatud alamsüsteem dma-buf kuhjad, mis võimaldab juhtida DMA puhvrite eraldamist mälualade jagamiseks draiverite, rakenduste ja erinevate alamsüsteemide vahel.
  • Riistvara arhitektuurid
    • Lisatud on tugi laiendusele E0PD, mis ilmus versioonis ARMv8.5 ja võimaldab kaitsta rünnakute eest, mis on seotud juhiste spekulatiivse täitmisega protsessoris. E0PD-põhise kaitse tulemuseks on madalam üldkulud kui KPTI (Kernel Page Table Isolation) kaitse.
    • ARMv8.5 arhitektuuril põhinevate süsteemide jaoks on lisatud RNG käsu tugi, mis annab juurdepääsu riistvaralisele pseudojuhuslike numbrite generaatorile. Kernelis kasutatakse RNG-käsku entroopia genereerimiseks tuuma poolt pakutava pseudojuhuslike arvude generaatori lähtestamisel.
    • Kernelisse lisatud MPX-i (Memory Protection Extensions) tugi on eemaldatud 3.19 ja võimaldab korraldada osutite kontrolli, et tagada mälualade piiridest kinnipidamine. Seda tehnoloogiat ei kasutatud kompilaatorites laialdaselt ja see eemaldati GCC-st.
    • RISC-V arhitektuuri jaoks on juurutatud KASani (Kernel address Sanitizer) silumistööriista tugi, mis aitab mäluga töötamisel vigu tuvastada.
  • Оборудование
    • Spetsifikatsiooni tugi rakendatud USB 4.0, mis põhineb Thunderbolt 3 protokollil ja pakub läbilaskevõimet kuni 40 Gbps, säilitades samal ajal tagasiühilduvuse USB 2.0 ja USB 3.2-ga. Analoogiliselt koos Piksenool USB 4.0 liides võimaldab tunneldada erinevaid protokolle ühe pistikuga kaabli kaudu Tüüp C, sealhulgas PCIe, Display Port ja USB 3.x, samuti protokollide tarkvararakendused, näiteks hostide vaheliste võrgulinkide korraldamiseks. Rakendus tugineb juba Linuxi tuumas sisalduvale Thunderbolti draiverile ja kohandab selle töötama USB4-ühilduvate hostide ja seadmetega. Muudatused lisavad ka Thunderbolt 3 seadmete toe ühendusehalduri tarkvarale, mis vastutab tunnelite loomise eest mitme seadme ühendamiseks ühe konnektori kaudu.
    • Amdgpu draiveris lisatud esialgne tugi HDCP 2.x (High-bandwidth Digital Content Protection) koopiakaitsetehnoloogiale. Lisati tugi Raven 2-l põhinevale AMD Pollock ASIC-kiibile. Rakendatud on Renoiri ja Navi perekondade GPU lähtestamise võimalus.
    • DRM-draiver Inteli videokaartidele lisatud Ice Lake'i ja Tiger Lake'i mikroarhitektuuril põhinevatele kiipidele on juurutatud DSI VDSC tugi, LMEM mmap (seadme lokaalne mälu), täiustatud on VBT (Video BIOS Table) parsimist, Coffee Lake'i kiipidele on rakendatud HDCP 2.2 tugi.
    • Jätkati tööd amdkfd draiverikoodi (diskreetsete GPU-de jaoks, nagu Fidži, Tonga, Polaris) ühendamiseks amdgpu draiveriga.
    • K10temp draiverit on ümber töödeldud, lisades tuge AMD Zen CPU-de pinge- ja vooluparameetrite kuvamiseks, samuti Zen ja Zen 2 protsessorites kasutatavate temperatuuriandurite laiendatud teavet.
    • Nouveau autojuhis lisatud Turingi mikroarhitektuuril (GeForce RTX 2000) põhinevate NVIDIA GPU-de kinnitatud püsivara laadimisrežiimi tugi, mis võimaldas nende kaartide 3D-kiirenduse toe lubada (vajalik on NVIDIA digitaalallkirjaga ametliku püsivara allalaadimine). Lisatud on TU10x graafikamootori tugi. HD-heliga seotud probleemid on lahendatud.
    • Lisatud on andmete tihendamise tugi DisplayPort MST (multi-Stream Transport) kaudu edastamisel.
    • Lisatud uus draiver "ath11k» Qualcommi traadita kiipide jaoks, mis toetavad 802.11ax.
      Draiver põhineb mac80211 pinul ja toetab pääsupunkti, tööjaama ja võrgusõlmede režiime.

    • Sysf-ide kaudu tagatakse juurdepääs loetavatele temperatuurianduri näitudele, mida kasutatakse tänapäevastel kõvaketastel ja SSD-del.
    • Esitatud olulisi muudatusi ALSA helisüsteemis, mille eesmärk on koodist lahti saada 2038. aasta probleemid (vältides 32-bitise time_t tüübi kasutamist liidestes snd_pcm_mmap_status ja snd_pcm_mmap_control). Lisatud on uute helikodekite tugi
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Lisatud LCD-paneelide draiverid Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Terav LS020B1DD01D.

    • Lisatud ARM-plaatide ja Gen1 platvormide tugi Amazon Echo (OMAP3630-põhine), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 mudel B, Aibretech Amlogic GX PC,
      Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
      Tolino Shine 3 e-raamatute lugeja,
      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 Lisati tugi Raspberry Pi 8505-s kasutatavale PCIe-kontrollerile.

Samal ajal Ladina-Ameerika Vaba Tarkvara Fond moodustatud
võimalus täiesti tasuta kernel 5.6 - Linuxi vaba 5.6-gnu, puhastatud püsivarast ja draiverielementidest, mis sisaldavad mittevabu komponente või koodilõike, mille ulatust piirab tootja. Uus versioon keelab blob-laadimise AMD TEE, ATH11K ja Mediatek SCP draiverites. Värskendatud blob-puhastuskood AMD PSP-s, amdgpu ja nouveau draiverites ja alamsüsteemides.

Allikas: opennet.ru

Lisa kommentaar