Lëshimi i kernelit Linux 5.6

Pas dy muajsh zhvillimi, Linus Torvalds paraqitur lëshimi i kernelit Linux 5.6. Ndër ndryshimet më të dukshme: integrimi i ndërfaqes WireGuard VPN, mbështetja për USB4, hapësirat e emrave për kohën, aftësia për të krijuar mbajtës të kongjestionit TCP duke përdorur BPF, mbështetje fillestare për MultiPath TCP, heqja e kernelit nga problemi 2038, mekanizmi "bootconfig". , ZoneFS.

Versioni i ri përfshin 13702 rregullime nga 1810 zhvillues,
madhësia e patch - 40 MB (ndryshimet prekën 11577 skedarë, u shtuan 610012 rreshta kodi,
294828 rreshta janë hequr). Rreth 45% e të gjitha të paraqitura në 5.6
ndryshimet lidhen me drejtuesit e pajisjes, afërsisht 15% e ndryshimeve janë
qëndrimi ndaj përditësimit të kodit specifik për arkitekturat e harduerit, 12%
të lidhura me grupin e rrjetit, 4% me sistemet e skedarëve dhe 3% me sistemet e brendshme
nënsistemet e bërthamës.

Kryesore risitë:

  • Nënsistemi i rrjetit
    • Shtuar implementimi i një ndërfaqeje VPN WireGuard, i cili zbatohet bazuar në metodat moderne të kriptimit (ChaCha20, Poly1305, Curve25519, BLAKE2s), është i lehtë për t'u përdorur, pa komplikime, ka dëshmuar veten në një numër zbatimesh të mëdha dhe ofron performancë shumë të lartë (3,9 herë më shpejt se OpenVPN në terma të xhiros). WireGuard përdor konceptin e drejtimit të çelësit të enkriptimit, i cili përfshin bashkimin e një çelësi privat në secilën ndërfaqe të rrjetit dhe përdorimin e tij për të lidhur çelësat publikë. Çelësat publikë shkëmbehen për të krijuar një lidhje në një mënyrë të ngjashme me SSH. Primitivët kriptografikë kërkohen që WireGuard të funksionojë ishin bartur nga biblioteka zink si pjesë e API standarde Crypto dhe përfshirë në thelb 5.5.
    • Filluar integrimi i komponentëve të nevojshëm për të mbështetur MPTCP (MultiPath TCP), një zgjerim i protokollit TCP për organizimin e funksionimit të një lidhjeje TCP me dërgimin e paketave njëkohësisht përgjatë disa rrugëve përmes ndërfaqeve të ndryshme të rrjetit të lidhura me adresa IP të ndryshme. Për aplikacionet e rrjetit, një lidhje e tillë e grumbulluar duket si një lidhje e rregullt TCP dhe e gjithë logjika e ndarjes së rrjedhës kryhet nga MPTCP. TCP Multipath mund të përdoret si për të rritur xhiron ashtu edhe për të rritur besueshmërinë. Për shembull, MPTCP mund të përdoret për të organizuar transmetimin e të dhënave në një smartphone duke përdorur lidhjet WiFi dhe 4G njëkohësisht, ose për të ulur kostot duke lidhur një server duke përdorur disa lidhje të lira në vend të një të shtrenjti.
    • Shtuar mbështetje për disiplinën e përpunimit të radhës së rrjetit sch_ets (Zgjedhja e përmirësuar e transmisionit, IEEE 802.1Qaz), i cili ofron mundësinë për të shpërndarë gjerësinë e brezit midis klasave të ndryshme të trafikut. Nëse ngarkesa në një klasë të caktuar trafiku është nën gjerësinë e brezit të caktuar, atëherë ETS lejon klasat e tjera të trafikut të përdorin gjerësinë e brezit të disponueshëm (të papërdorur). Qdisc sch_ets është konfiguruar si një disiplinë PRIO dhe përdor klasat e trafikut për të përcaktuar kufijtë strikte dhe të përbashkëta të gjerësisë së brezit. ETS funksionon si një kombinim i disiplinave PRIO и DRR — nëse ka klasa të trafikut rreptësisht të kufizuar, përdoret PRIO, por nëse nuk ka trafik në radhë, funksionon si DRR.
    • U shtua një lloj i ri i programeve BPF BPF_PROG_TYPE_STRUCT_OPS, i cili ju lejon të implementoni mbajtësit e funksioneve të kernelit përmes BPF. Aktualisht, kjo veçori tashmë mund të përdoret për të zbatuar algoritmet e kontrollit të kongjestionit TCP në formën e programeve BPF. Si nje shembull propozuar Programi BPF me zbatimin e algoritmit DCTCP.
    • Pranuar në thelb Ndryshimet, mjete përkthimi ettool me ioctl() për t'u përdorur ndërfaqe netlink. Ndërfaqja e re e bën më të lehtë shtimin e shtesave, përmirëson trajtimin e gabimeve, lejon dërgimin e njoftimeve kur ndryshon gjendja, thjeshton ndërveprimin midis kernelit dhe hapësirës së përdoruesit dhe redukton numrin e listave të emërtuara që duhet të sinkronizohen.
    • U shtua zbatimi i algoritmit të menaxhimit të radhëve të rrjetit FQ-PIE (Flow Queue PIE), që synon të zvogëlojë ndikimin negativ të bufferimit të ndërmjetëm të paketave në pajisjet e rrjetit skajor (bufferbloat). FQ-PIE tregon efikasitet të lartë kur përdoret në sisteme me modem kabllor.
  • Nënsistemi i diskut, I/O dhe sistemet e skedarëve
    • Për sistemin e skedarëve Btrfs shtuar zbatimi asinkron i operacionit DISCARD (duke shënuar blloqe të liruara që nuk kanë më nevojë të ruhen fizikisht). Fillimisht, operacionet DISCARD u kryen në mënyrë sinkrone, gjë që mund të çonte në degradim të performancës për shkak të disqeve që prisnin për të përfunduar komandat përkatëse. Zbatimi asinkron ju lejon të mos prisni që disku të përfundojë DISCARD dhe të kryeni këtë veprim në sfond.
    • Në XFS kryera Pastrimi i kodit që përdorte numëruesit e vjetër të kohës 32-bit (lloji time_t u zëvendësua nga time64_t), duke çuar në problemin e 2038-ës. Rregullohen gabimet dhe dëmtimi i kujtesës që kanë ndodhur në platformat 32-bit. Kodi është ripunuar për të punuar me atribute të zgjeruara.
    • Në sistemin e skedarëve ext4 futur Optimizimet e performancës në lidhje me trajtimin e bllokimit të inodit gjatë operacioneve të leximit dhe shkrimit. Performanca e përmirësuar e rishkrimit në modalitetin direkt I/O. Për të thjeshtuar diagnostikimin e problemeve, kodi i parë dhe i fundit i gabimit ruhen në superbllokun.
    • Në sistemin e skedarëve F2FS zbatuar aftësia për të ruajtur të dhënat në formë të ngjeshur. Për një skedar ose drejtori individuale, kompresimi mund të aktivizohet duke përdorur komandën "chattr +c file" ose "chattr +c dir; prek dir/skedarin". Për të kompresuar të gjithë ndarjen, mund të përdorni opsionin “-o compress_extension=ext” në programin montues.
    • Kerneli përfshin një sistem skedari ZonaFS, i cili thjeshton punën e nivelit të ulët me pajisjet e ruajtjes së zonës. Disqet e zonuara nënkuptojnë pajisje në disqe magnetikë të fortë ose NVMe SSD, hapësira e ruajtjes në të cilën ndahet në zona që përbëjnë grupe blloqesh ose sektorësh, në të cilat lejohet vetëm shtimi vijues i të dhënave, duke përditësuar të gjithë grupin e blloqeve. FS ZoneFS u zhvillua nga Western Digital dhe shoqëron secilën zonë në disk me një skedar të veçantë që mund të përdoret për të ruajtur të dhënat në modalitetin e papërpunuar pa manipulim në nivel sektori dhe blloku, d.m.th. Lejon aplikacionet të përdorin API-në e skedarit në vend që të kenë akses direkt në pajisjen e bllokut duke përdorur një ioctl.
    • Në NFS, montimi i ndarjeve mbi UDP është i çaktivizuar si parazgjedhje. Mbështetje e shtuar për aftësinë për të kopjuar drejtpërdrejt skedarët midis serverëve, të përcaktuar në specifikimin NFS 4.2. U shtua një opsion i ri montimi "softreval", i cili lejon që vlerat e atributeve të ruajtura në memorie të përdoren në rast të dështimit të serverit. Për shembull, kur specifikoni këtë opsion, pasi serveri nuk është i disponueshëm, mbetet e mundur të lëvizni përgjatë shtigjeve në ndarjen NFS dhe të aksesoni informacionin që është vendosur në cache.
    • E kryer optimizimi i performancës së mekanizmit fs-verity, i përdorur për të monitoruar integritetin dhe vërtetimin e skedarëve individualë. Rritja e shpejtësisë sekuenciale të leximit falë përdorimit të një peme hash Merkle. Performanca e FS_IOC_ENABLE_VERITY është optimizuar kur nuk ka të dhëna në cache (është aplikuar leximi parandalues ​​i faqeve me të dhëna).
  • Virtualizimi dhe Siguria
    • Aftësia për të çaktivizuar modulin SELinux gjatë ekzekutimit është vjetëruar dhe shkarkimi i një SELinux tashmë të aktivizuar do të ndalohet në të ardhmen. Për të çaktivizuar SELinux, do t'ju duhet të kaloni parametrin "selinux=0" në linjën e komandës së kernelit.
    • Shtuar mbështetje për hapësirat e emrave për kohën (hapësirat e emrave të kohës), duke ju lejuar të lidhni gjendjen e orës së sistemit me kontejnerin (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), përdorni kohën tuaj në kontejner dhe, kur migroni kontejnerin në një host tjetër, sigurohuni që leximet CLOCK_MONOTONIC dhe CLOCK_BOOTTIME të mbeten të pandryshuara (merrni parasysh kohën pas ngarkimit, me ose pa marrë parasysh qëndrimin në modalitetin e fjetjes ).

    • Grupi i bllokimit /dev/ rastësor është hequr. Sjellja e /dev/random është e ngjashme me /dev/urandom për sa i përket parandalimit të bllokimit të entropisë pas inicializimit të grupit.
    • Kerneli kryesor përfshin një drejtues që lejon sistemet e vizitorëve që ekzekutojnë VirtualBox të montojnë drejtoritë e eksportuara nga mjedisi pritës (Dosje e përbashkët VirtualBox).
    • Një grup arnimesh është shtuar në nënsistemin BPF (Dispeçer BPF), kur përdorni mekanizmin Retpoline për të mbrojtur kundër sulmeve të klasës Spectre V2, ju lejon të rritni efikasitetin e thirrjes së programeve BPF kur ndodhin ngjarje të lidhura me to (për shembull, bën të mundur përshpejtimin e thirrjes së mbajtësve XDP kur një mbërrin paketa e rrjetit).
    • U shtua drejtuesi për të mbështetur TEE (Mjedisi i Ekzekutimit të Besuar) i integruar në APU-të AMD.
  • Shërbimet e kujtesës dhe sistemit
    • BPF ka shtuar mbështetje për funksionet globale. Zhvillimi po kryhet si pjesë e një nisme për të shtuar mbështetje për bibliotekat e funksioneve që mund të përfshihen në programet e BPF. Hapi tjetër do të jetë mbështetja e shtesave dinamike që lejojnë ngarkimin e funksioneve globale, duke përfshirë zëvendësimin e funksioneve ekzistuese globale ndërsa ato janë në përdorim. Nënsistemi BPF shton gjithashtu mbështetje për një variant të funksionit të hartës (që përdoret për të ruajtur të dhënat e vazhdueshme), i cili mbështet ekzekutimin në modalitetin e grupit.
    • shtuar Pajisja "cpu_cooling" ju lejon të ftohni një CPU të mbinxehur duke e vendosur atë në gjendje boshe për periudha të shkurtra kohore.
    • Thirrja e sistemit u shtua openat2 (), i cili ofron një grup flamujsh shtesë për të kufizuar rezolucionin e shtegut të skedarit (ndalimi i kalimit të pikave të montimit, lidhjet simbolike, lidhjet magjike (/proc/PID/fd), komponentët “../”).
    • Për sistemet heterogjene të bazuara në arkitekturën big.LITTLE, duke kombinuar bërthama të fuqishme dhe më pak efikase të CPU-së me efikasitet energjetik në një çip, parametri uclamp_min vendoset gjatë ekzekutimit të detyrave në kohë reale (u shfaq në kernel 5.3 ekziston një mekanizëm për sigurimin e ngarkesës). Ky parametër siguron që detyra do të vendoset nga planifikuesi në një bërthamë CPU që ka performancë të mjaftueshme.
    • Bërthama është çliruar nga problemet e vitit 2038. Zëvendësoi mbajtësit e fundit të mbetur, të cilët përdorën tipin 32-bit (int të nënshkruar) time_t për numëruesin e kohës epokale, i cili, duke marrë parasysh raportin e vitit 1970, duhet të vërshojë në vitin 2038.
    • Përmirësimi i vazhdueshëm i ndërfaqes asinkrone I/O io_uringnë të cilën siguruar mbështetje për operacionet e reja: IORING_OP_FALLOCATE (rezervimi i zonave boshe), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (hapja dhe mbyllja e skedarëve),
      IORING_OP_FILES_UPDATE (duke shtuar dhe hequr skedarët nga lista e aksesit të shpejtë),
      IORING_OP_STATX (kërkesë për informacionin e skedarit),
      IORING_OP_LEXO,
      IORING_OP_WRITE (analoge të thjeshtuara të IORING_OP_READV dhe IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (variante asinkrone të thirrjeve posix_fadvise dhe madvise), IORING_OP_SEND,
      IORING_OP_RECV (dërgimi dhe marrja e të dhënave të rrjetit),
      IORING_OP_EPOLL_CTL (kryer operacione në përshkruesit e skedarëve epoll).

    • Thirrja e sistemit u shtua pidfd_getfd(), duke i lejuar një procesi të marrë një përshkrues skedari për një skedar të hapur nga një proces tjetër.
    • Zbatuar mekanizmi "bootconfig", i cili lejon, përveç opsioneve të linjës së komandës, të përcaktojë parametrat e kernelit përmes një skedari cilësimesh. Për të shtuar skedarë të tillë në imazhin initramfs, propozohet mjeti bootconfig. Ky funksion mund të përdoret, për shembull, për të konfiguruar kprobes në kohën e nisjes.
    • E ripunuar një mekanizëm për pritjen e shkrimit dhe leximit të të dhënave në tuba pa emër. Ndryshimi bëri të mundur përshpejtimin e detyrave të tilla si montimi paralel i projekteve të mëdha. Megjithatë, optimizimi mund të çojë në një gjendje gare në GNU make për shkak të një gabimi në versionin 4.2.1, i cili u rregullua në versionin 4.3.
    • U shtua flamuri PR_SET_IO_FLUSHER në prctl(), i cili mund të përdoret për të shënuar proceset pa memorie që nuk duhet t'i nënshtrohen kufijve kur sistemi ka memorie të ulët.
    • Bazuar në sistemin e shpërndarjes së memories ION të përdorur në Android, është implementuar një nënsistem grumbuj dma-buf, i cili ju lejon të kontrolloni shpërndarjen e buferëve DMA për ndarjen e zonave të kujtesës midis drejtuesve, aplikacioneve dhe nënsistemeve të ndryshme.
  • Arkitekturat e harduerit
    • Mbështetje e shtuar për shtesën E0PD, e cila u shfaq në ARMv8.5 dhe lejon mbrojtjen kundër sulmeve që lidhen me ekzekutimin spekulativ të udhëzimeve në CPU. Mbrojtja e bazuar në E0PD rezulton me shpenzime më të ulëta se mbrojtja nga KPTI (Izolimi i tabelës së faqeve të bërthamës).
    • Për sistemet e bazuara në arkitekturën ARMv8.5, është shtuar mbështetja për instruksionin RNG, duke siguruar akses në një gjenerator të numrave pseudo të rastësishëm të harduerit. Në kernel, instruksioni RNG përdoret për të gjeneruar entropinë kur inicializon gjeneratorin e numrave pseudo të rastësishëm të ofruar nga kerneli.
    • U hoq mbështetja për MPX (Zgjatjet e Mbrojtjes së Memories) të shtuara në kernel 3.19 dhe ju lejon të organizoni kontrollin e treguesve për të siguruar që kufijtë e zonave të kujtesës janë respektuar. Kjo teknologji nuk u përdor gjerësisht në përpilues dhe u hoq nga GCC.
    • Për arkitekturën RISC-V, është implementuar mbështetja për mjetin e korrigjimit të KASan (Kernel address sanitizer), i cili ndihmon në identifikimin e gabimeve gjatë punës me memorie.
  • Оборудование
    • Mbështetja e specifikimeve është zbatuar USB 4.0, i cili bazohet në protokollin Thunderbolt 3 dhe ofron shpejtësi deri në 40 Gbps, duke ruajtur përputhshmërinë e prapambetur me USB 2.0 dhe USB 3.2. Për analogji me Vetëtimë Ndërfaqja USB 4.0 ju lejon të tuneloni protokolle të ndryshme mbi një kabllo të vetme me një lidhës Type-C, duke përfshirë PCIe, Display Port dhe USB 3.x, si dhe implementime softuerësh të protokolleve, për shembull, për organizimin e lidhjeve të rrjetit midis hosteve. Zbatimi bazohet në drejtuesin Thunderbolt tashmë të përfshirë në kernelin Linux dhe e përshtat atë për të punuar me hostet dhe pajisjet e pajtueshme me USB4. Ndryshimet shtojnë gjithashtu mbështetjen për pajisjet Thunderbolt 3 në implementimin e softuerit të Menaxherit të Lidhjes, i cili është përgjegjës për krijimin e tuneleve për lidhjen e shumë pajisjeve përmes një lidhësi të vetëm.
    • Në shofer amdgpu shtuar mbështetje fillestare për teknologjinë e mbrojtjes nga kopjimi HDCP 2.x (High-bandwidth Digital Content Protection). Mbështetje e shtuar për çipin AMD Pollock ASIC bazuar në Raven 2. Zbatoi aftësinë për të rivendosur GPU-në për familjet Renoir dhe Navi.
    • Drejtues DRM për kartat video Intel shtuar Mbështetja DSI VDSC për çipat e bazuar në mikroarkitekturën Ice Lake dhe Tiger Lake, LMEM mmap (memoria lokale e pajisjes) është zbatuar, analizimi VBT (Tabela BIOS Video) është përmirësuar, mbështetja HDCP 2.2 është zbatuar për çipat Coffee Lake.
    • Puna vazhdoi për unifikimin e kodit të drejtuesit amdkfd (për GPU-të diskrete, si Fixhi, Tonga, Polaris) me drejtuesin amdgpu.
    • Drejtuesi i k10temp është ripunuar, duke shtuar mbështetje për shfaqjen e parametrave të tensionit dhe rrymës për CPU-të AMD Zen, si dhe informacion të zgjeruar nga sensorët e temperaturës të përdorur në CPU-të Zen dhe Zen 2.
    • Në shofer nouveau shtuar mbështetje për modalitetin e verifikuar të ngarkimit të firmuerit për GPU-të NVIDIA bazuar në mikroarkitekturën Turing (GeForce RTX 2000), e cila bëri të mundur aktivizimin e mbështetjes për përshpejtimin 3D për këto karta (kërkohet shkarkimi i firmuerit zyrtar me një nënshkrim dixhital NVIDIA). Mbështetje e shtuar për motorin grafik TU10x. Problemet me audio HD janë zgjidhur.
    • Mbështetje e shtuar për kompresimin e të dhënave kur transmetohet përmes DisplayPort MST (Transport Multi-Stream).
    • U shtua shofer i ri "ath11k» për çipat me valë Qualcomm që mbështesin 802.11ax.
      Drejtuesi bazohet në pirgun mac80211 dhe mbështet modalitetet e pikës së hyrjes, stacionit të punës dhe rrjetit të nyjeve të rrjetit.

    • Nëpërmjet sysfs, sigurohet qasja në leximet e sensorëve të temperaturës të lexueshme të përdorura në hard disqet moderne dhe SSD.
    • dorëzuar ndryshime të rëndësishme në sistemin e zërit ALSA, që synojnë heqjen e kodit problemet e vitit 2038 (duke shmangur përdorimin e tipit time_t 32-bit në ndërfaqet snd_pcm_mmap_status dhe snd_pcm_mmap_control). Mbështetje e shtuar për kodekët e rinj audio
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Shtuar drejtues për panelet LCD Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Sharp LS020B1DD01D.

    • Shtuar mbështetje për bordet ARM dhe platformat Gen1 Amazon Echo (me bazë OMAP3630), 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,
      Lexues i librave elektronik të Tolino Shine 3,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX dhe 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 Ericsson ab8505, QuSCA9863, Unis Mbështetje e shtuar për kontrolluesin PCIe të përdorur në Raspberry Pi 7180.

Në të njëjtën kohë, Fondacioni i Software-it të Lirë të Amerikës Latine formuar
alternativë kernel plotësisht i lirë 5.6 - Linux-Libre 5.6-Gnu, i pastruar nga elementët e firmuerit dhe drejtuesit që përmbajnë komponentë jo të lirë ose seksione kodi, fushëveprimi i të cilave është i kufizuar nga prodhuesi. Publikimi i ri çaktivizon ngarkimin e blobit në drejtuesit për AMD TEE, ATH11K dhe Mediatek SCP. Kodi i përditësuar i pastrimit të blobit në drejtuesit dhe nënsistemet AMD PSP, amdgpu dhe nouveau.

Burimi: opennet.ru

Shto një koment