PĂ€rast kahte kuud arendust Linus Torvalds ydinversioon . KĂ”ige silmapaistvamad muudatused: uus exFAT-failisĂŒsteemi rakendus, bareudp-moodul UDP-tunnelite loomise jaoks, ARM64-pĂ”hine osutite autentimise kaitse, vĂ”imalus kinnitada BPF-programme LSM-töötlejatele, uus Curve25519 rakendus, split-lock detektor, BPF ĂŒhilduvus PREEMPT_RT, 80-tĂ€hemĂ€rgi piirangute eemaldamine koodis, CPU temperatuurinĂ€itude arvestamine ĂŒlesannete ajakava koostamisel, vĂ”imalus kasutada clone() protsesside kĂ€ivitamiseks teises cgroupis, mĂ€lu kirjutamise kaitse userfaultfd abil.
Uude versiooni on lisatud 15033 parandust 1961 arendajalt,
patĆĄi suurus on 39 MB (muudatused puudutasid 11590 faili, lisatud 570560 rida koodi,
kustutatud 297401 rida). Umbes 41% kÔigist 5.7
muudatustest on seotud seadme draiveritega, umbes 16% muudatusi on
seotud riistvaraarhitektuuride kohandatud koodi vÀrskendamisega, 13%
seotud vĂ”rgu protokolliga, 4% - failisĂŒsteemide ja 4% - sisemiste
alamsĂŒsteemidega.
:
- DiskisĂŒsteem, sisend/vĂ€ljund ja failisĂŒsteemid
- Lisatud on uus exFAT draiveri rakendus, tÀiustatud koodibaas 'sdfat' (2.x), mida arendab Samsung oma Android-smartfonide jaoks. Varasemalt lisatud draiver oli pÔhinenud aegunud Samsungi koodil (versioon 1.2.9) ja vastandas uue draiveriga umbes 10% madalamal jÔudlusel. Meenutame, et exFAT-i toe lisamine kernelisse sai vÔimalikuks pÀrast seda, kui Microsoft avaldas avalikud spetsifikatsioonid ja vÔimaldas tasuta kasutada exFAT patende Linuxis.
- Btrfs-is on rakendatud uus ioctl() kĂ€sk â BTRFS_IOC_SNAP_DESTROY_V2, mis vĂ”imaldab eemaldada alamkategooria selle identifikaatori jĂ€rgi. TĂ€ielik inline-esteente kloonimise tugi on tagatud. Töötluse tĂ€iendamise punktide arv on laienenud, mis on vĂ”imaldanud vĂ€hendada ootamisaega 'balance cancel' kĂ€su tĂ€itmisel. Tagasiviidud eetente mÀÀramine on kiirenenud (nĂ€iteks teststsenaariumi tĂ€itmise aeg vĂ€henes tunnist mĂ”ne minuti peale). Lisatud on vĂ”imalus kinnitada iga inimese failieestendite puusse. Kirjutamiseks ja NOCOW erandite mÀÀramiseks kasutatav lukustusmehhanism on ĂŒmber töötatud. Fsng-i tĂ”husus vahemike teostamisel on paranenud.
- XFS-is on parandanud metaandmete kontrolli ja fsck-i teostamist aktiivsete jaotiste jaoks. Pakutud on btree struktuuride ĂŒmberkujundamise teek, mida tulevikus kasutatakse xfs_repairi ĂŒmberehitusel ning jaotiste mittetgevuse taastamise vĂ”imaluse rakendamisel.
- CIFS-is on lisatud katsetamisjĂ€rgus tugi vahetusĂŒhenduse faile SMB3-kogudes. Teostatud on POSIX-i laiendused readdiris, nagu on mÀÀratletud SMB3.1.1 spetsifikatsioonis. Kirjutamise jĂ”udlust on suurendatud 64 KB suuruste lehtede puhul, kui on sisse lĂŒlitatud cache=strict reĆŸiim ja kasutatakse protokolli versioone 2.1+.
- EXT4-failisĂŒsteem on tĂ”lgitud bmap-ist ja iopoll-ist iomap-i kasutamisele.
- F2FS-is on teostatud valikuline andmete tihendamise tugi zstd algoritmi kasutamisega. Tihendamiseks kasutatakse vaikimisi LZ4 algoritmi. Lisatud on kÀsk «chattr -c commit». Paigaldamise aja kuvamine on tagatud. Lisatud on ioctl F2FS_IOC_GET_COMPRESS_BLOCKS tihendatud blokkiinfo saamiseks. Statx kaudu kuvatakse tihendamise andmeid.
- Ceph-failisĂŒsteemis on lisatud vĂ”imalus luua ja kustutada (unlink) faile lokaalselt ilma serverilt vastust ootamata (asĂŒnkroonne tööreĆŸiim). See muudatus suurendab oluliselt rsync utiliidi töövĂ”imet.
- OVERLAYFS-is on lisatud virtiofs-i kasutamise vĂ”imalus ĂŒlemise taseme failisĂŒsteemina.
- VFS-teid lĂ€bimise kood on ĂŒmber kirjutatud, sĂŒmboolsĂŒlinkite parsimise kood on ĂŒmber töötatud ning montaaĆŸitooted on ĂŒhtsustatud.
- SCSI-alamsĂŒsteemis on mitteprivilegeeritud kasutajatele ZBC kĂ€sude tĂ€itmise vĂ”imalus.
- dm_writecache-s on lisatud vÔimalus jÀrk-jÀrgult puhastada vahemÀlu max_age parameetri alusel, mis mÀÀrab ploki maksimaalse eluiga.
- dm_integrity-s on lisatud 'discard' tehingu tugi.
- null_blk-s on lisatud vigade asendamise tugi, et simuleerida rikkeid testimise kÀigus.
- on lisatud udev-teatiste saatmine plokiseade suuruse muutmise kohta.
- VĂ”rgusĂŒsteem
- Netfilterisse on lisatud , mis kiirendavad mĂ€rkimisvÀÀrselt suurte vastavusrĂŒhmade (nftables set) töötlemist, kus on vajalik alamside, vĂ”rguportide, protokolli ja MAC-aadresside kombinatsiooni kontrollimine.
Optimeerimised nft_set_pipapo (PIle PAcket POlicies) moodul lahendab pakettide sisu vastavuse mÀÀramise ĂŒlesande, rakendades filtrireeglitega valiidseid olekute vĂ€ljade vahemikke, nagu IP ja vĂ”rgupordid (nft_set_rbtree ja nft_set_hash manipuleerivad vahemike vastavuse ja otse reflekteeritavate vÀÀrtustega). 256-bitist AVX2 juhiseid kasutav pipapo versioon AMD Epyc 7402 protsessoriga nĂ€itas 420% jĂ”udluse kasvamist 30 000 kirje töötlemisel, sealhulgas port-protokolli paaride arvestamisel. Alamsordist ja pordist koosneva paaride vastavuse kasv 1000 kirje töötlemisel oli 87% IPv4 ja 128% IPv6 puhul. - bareudp moodul, mis vĂ”imaldab erinevaid L3 protokolle, nagu MPLS, IP ja NSH, UDP-tunnelisse kapseldada.
- MPTCP (MultiPath TCP) komponentide integreerimist on jĂ€tkatud, mis on TCP protokolli laiendus, et korraldada TCP-ĂŒhenduse tööd pakettide kohaletoimetamisega samaaegselt mitme marsruudi kaudu erinevate vĂ”rguliideste kaudu, mis on seotud erinevate IP-aadressidega.
- Ethernet-raamide kapseldamise riistvaralise kiirendamise mehhanismide tugi 802.11 (Wi-Fi).
- Seadme liigutamisel ĂŒhest vĂ”rgunimeksonist (network namespace) teise tagatakse vastavate failide Ă”iguste ja omaniku korrigeerimine sysfs-is.
- Kasutajatele, kellel ei ole root Ôigusi, on antud vÔimalus kasutada SO_BINDTODEVICE lippu.
- Kolmas osa patĆĄi on vastu vĂ”etud, mis viib ethtooli tööriistad ĂŒle ioctl() kasutamiselt netlink liidese kasutamisele. Uus liides lihtsustab laiendite lisamist, parandab vigade töötlemist, vĂ”imaldab teateid staatuse muutuste korral, lihtsustab tuuma ja kasutusruumi vahelisi suhtlemisi ning vĂ€hendab sĂŒnkroonitud nimeliste nimekirjade arvu.
- Lisatud on vĂ”imalus kasutada spetsiaalseid riistvarakiirendajaid ĂŒhenduste jĂ€lgimise operatsioonide tĂ€itmiseks.
- netfilteris vĂ€ljuvate pakkide klassifitseerijate ĂŒhendamiseks mĂ”eldud hook, mis tĂ€iendab varem olemasolevat sissetulevate pakkide (ingress) hooki.
- Netfilterisse on lisatud , mis kiirendavad mĂ€rkimisvÀÀrselt suurte vastavusrĂŒhmade (nftables set) töötlemist, kus on vajalik alamside, vĂ”rguportide, protokolli ja MAC-aadresside kombinatsiooni kontrollimine.
- Virtualiseerimine ja turvalisus
- Lisatud on suunamiste autentimise (), kasutades ARM64 CPU spetsialiseeritud juhiseid rĂŒndetaktikate vastu, mis kasutavad tagasipöördumise orientatsiooni programmimise meetodeid (ROP), mille kĂ€igus rĂŒndaja ei pĂŒhi oma koodi mĂ€llu, vaid opereerib juba laaditud raamatukogudes olevate masiinijuhiste tĂŒkkidega, mille lĂ”pp on tagasipöördumise juhis. Kaitse seisneb digitaalsete allkirjade kasutamises tagasipöördumise aadresside kontrollimiseks kernitase. Allkiri salvestatakse mittekasutatavates kĂ”rgeimates biitides ise nĂ€itaja. Erinevalt tarkvaralistest rakendustest toimub digitaalsete allkirjade loomine ja kontrollimine spetsiaalsete CPU juhiste abil.
- vĂ”imalus kaitsta mĂ€luala kirjutamise eest sĂŒsteemikutsungi userfaultfd() abil, mis on mĂ”eldud lehekĂŒlje vigade töötlemiseks (juurdepÀÀs mittejaotatud mĂ€lulehekĂŒlgedele) kasutajaruumi. Idee on kasutada userfaultfd() ka lehekĂŒlgede juurdepÀÀsupiirangute jĂ€lgimiseks, mis on mĂ€rgitud kirjutamise eest kaitstuks, ja kutseli töötleja, mis saab reageerida sellistele kirjutamise katsetele (nt töötavate protsesside elusnapsode loomise töötlemiseks, seisundi fikseerimine mĂ€ludumpide kettale kirjutamise ajal, jagatud mĂ€lu rakendamiseks, muutuste jĂ€lgimiseks mĂ€lus). Funktsionaalsus mprotect() kasutamisega koos SIGSEGV signaalitöötlijaga, kuid töötab mĂ€rgatavalt kiiremini.
- SELinuxis on kĂ€ideldav parameter âcheckreqprotâ aegunud, vĂ”imaldades mĂ€lukaitse kontrollimise keelamine reeglite töötlemisel (lubades teostatavate mĂ€lupiirkondade kasutamist, sĂ”ltumata reeglites mÀÀratud piirangutest). SĂŒmboolsetele linkidele on kernfsis lubatud vanemate kataloogide konteksti pĂ€rimine.
- kuuluvad moodul , mis vĂ”imaldab BPF-programmide kinnitamist igasugustele kernelis LSM-haakidele. Muudatus vĂ”imaldab luua LSM-mooduleid (Linuxi turvamuul) BPF-programmide vormis auditi ja mandaadi juurdepÀÀsu kontrollimise ĂŒlesannete lahendamiseks.
- tootlikkuse optimeerimine /dev/random vÀÀrtuste CRNG paketipĂ”hise edastamise kaudu eraldi RNG juhiste kutsetest. Parandatud on getrandom ja /dev/random töötlust ARM64 sĂŒsteemides, mis pakuvad RNG juhiseid.
- Elliptilise kÔvera Curve25519 rakendamine HACL raamatukogu variandiga, on viidatud matemaatiline tÔestus formaalsest verifitseerimisest usaldusvÀÀrsuse osas.
- mĂ€lu vabade lehtede teavitamise mehhanism. Selle mehhanismi abil saavad kĂŒlgsĂŒsteemid edastada host-sĂŒsteemile teavet lehtede kohta, mida ei kasutata enam, ning host saab need lehed tagasi vĂ”tta.
- Vfio/pci SR-IOV (Single-Root I/O Virtualization) tugi.
- MĂ€lu ja sĂŒsteemiteenused
- 80 kuni 100 sĂŒmbolit piirang algtekstide maksimaalsele stringi pikkusele. Arendajatele soovitatakse endiselt jÀÀda 80 sĂŒmboli piiresse, kuid see ei ole enam range piirang. Lisaks toob stringi pikkuse ĂŒletamine kaasa hoiatuse koostamisel ainult juhul, kui utility checkpatch on kĂ€ivitatud valiku ââstrictâ abil. Muudatus annab vĂ”imaluse arendajatel mitte keskenduda tĂŒhikute olemasolule ja tunda end koodi joondamisel vabamalt, samuti ĂŒlemÀÀrast stringide jagamist, koodi tajumist ja leidmist.
- EFI segalaadi kĂ€ivitamise reĆŸiimi toetamine, mis vĂ”imaldab ilma spetsialiseeritud kĂ€ivitaja kasutamiseta kĂ€ivitada 64-bitise tuuma 32-bitise pĂŒsivara kaudu, mis töötab 64-bitises CPU-s.
- sĂŒsteem jagatud lukustuste avastamiseks ja tĂ”rkeotsinguks (""), mis tekivad siis, kui proovime juurdepÀÀseda joondamata andmetele mĂ€lu, kuna atomaarsed kĂ€sklused ĂŒletavad kaks CPU vahemĂ€lu rida. Sellised lukustused toovad kaasa mĂ€rkimisvÀÀrse jĂ”udluse vĂ€henemise (1000 tsĂŒklit aeglasem kui atomaarsed operatsioonid, mille andmed langevad ĂŒhte vahemĂ€lu ritta). SĂ”ltuvalt kĂ€ivitamisparameetrist âsplit_lock_detectâ suudab tuum reaalajas tuvastada selliseid lukustusi ja vĂ€ljastada hoiatusi vĂ”i saata SIGBUS signaali blokeerimise tekitanud rakendusele.
- Ălesannete planeerijas on tagatud temperatuuriandurid () ja on rakendatud ĂŒlekuumenemise jĂ€lgimine ĂŒlesannete jaotamisel. Kasutades antud statistikat, saab temperatuuri töötleja (thermal governor) kuuma tingimuste korral korrigeerida CPU maksimaalset sagedust, samas kui ĂŒlesande planeerija arvestab nĂŒĂŒd arvutusvĂ”imsuse kĂ€rpimist sageduse langemise tĂ”ttu ĂŒlesannete kĂ€ivitamisel (varem reageeris planeerija sageduse muutusele teatud viivitusega, aktsepteerides mĂ”nedel hetkedel valeid eeldusi saadaval olevate arvutusressursside kohta).
- Ălesande planeerijas on kasutatud koormuse jĂ€lgimiseks, mis vĂ”imaldab Ă”igesti hinnata koormust, olenemata CPU praegsest sagedusest. Muudatus vĂ”imaldab tĂ€psemalt prognoosida ĂŒlesannete kĂ€itumist dĂŒnaamiliste pingete ja CPU sageduse muutumise tingimustes. NĂ€iteks ĂŒlesanne, mis sĂ”i 1/3 CPU ressursse sagedusel 1000 MHz, hakkab kulutama 2/3 ressursse sageduse langemisel 500 MHz, mis varem tekitas vale arusaama tĂ€isvĂ”imsuses töötamisest (st ĂŒlesanded planeerijas tundusid suuremad ainult sageduse vĂ€henemise tĂ”ttu, mis viis vale otsuste tegemiseni schedutil cpufreq governoris).
- Intel P-state draiver, mis vastutab jĂ”udluse reĆŸiimide valimise eest, on viidud ĂŒle .
- Rakendatud on vĂ”imalus kasutada BPF-alamsĂŒsteemi, kui kerneli reĆŸiim on reaalajas (PREEMPT_RT). Varasemalt nĂ”udis PREEMPT_RT sisselĂŒlitamine BPF-i keelamist.
- Lisatud on uus BPF-programmide tĂŒĂŒp â BPF_MODIFY_RETURN, mis saab kinnitada kerneli funktsioonidele ja muuta nende tagastatavaid vÀÀrtusi.
- Lisatud sĂŒsteemikĂ”ne clone3() kasutamine protsessi loomiseks erinevas cgroupis, mis erineb vanemat cgroupist, vĂ”imaldades vanemal protsessil rakendada piiranguid ja aktiveerida arvestuse kohe pĂ€rast uue protsessi vĂ”i lĂ”ime sĂŒnnitamist. NĂ€iteks teenuse haldur vĂ”ib otse mÀÀrata uusi teenuseid eraldi cgroupidesse, samas kui uued protsessid, mis on paigutatud 'kĂŒlmutatud' cgroupidesse, peatatakse koheselt.
- Kbuild-is toetatakse keskkonnamuutujat 'LLVM=1' kerneli ehitamisel Clang/LLVM tööriistakomplekti vĂ€lja lĂŒlitamiseks. TĂ”stetud on binutils versiooni nĂ”uded (2.23).
- debugfs-ile on lisatud jaotis /sys/kernel/debug/kunit/ kunit testide tulemuste jaoks.
- Lisatud pm_debug_messages tuuma laadimisparameeter (sarnane /sys/power/pm_debug_messages), mis vĂ”imaldab kuvada toitehalduse sĂŒsteemi töö kohta silumisinfot (kasulik probleemide lahendamisel, mis on seotud magamise ja ootereĆŸiimiga).
- AsĂŒnkroonse sisendi/vĂ€ljundi lisatud tugi ja .
- Cgroupi profiliseerimist on parandatud perf-teenuse abil. Varem suutis perf profiliseerida ĂŒlesandeid ainult kindlas cgroupis ja ei suutnud teada, millesse cgroupi praegune proov kuulub. NĂŒĂŒd saab perf teavet cgroupi kohta iga prooviga, mis vĂ”imaldab profiliseerida rohkem kui ĂŒhte cgroupi ja rakendada sortimist
cgroupide raportites. - Cgroupfs, cgroupide haldamiseks mÔeldud pseudo-FS, on lisatud laiendatud atribuutide (xattrs) tugi, mille abil saab nÀiteks jÀtta tÀiendavat teavet töötlejatele kasutajaruumi.
- Cgroupi mĂ€lu kontrolleris on toetatud rekurssiivne kaitse vÀÀrtuseks "memory.low", mis reguleerib minimaalset operatiivmĂ€lu, mis on rĂŒhma osalistele kĂ€ttesaadav. Cgroupi hierarhia mountimisel koos "memory_recursiveprot" valikuga, jagatakse "memory.low" vÀÀrtus automaatselt kĂ”igile alamsĂ”lmedele, mis on seatud alumistes sĂ”lmedes.
- Uacce raamistik (Unified/User-space-access-intended Accelerator Framework) vÔimaldab jagada virtuaalseid aadresse (SVA, Jagatud Virtuaalne Aadressimine) CPU ja perifeerseadmete vahel, vÔimaldades riistvarakiirenditel pÀÀseda andmestruktuuridele peamise CPU-s.
- Riistvaraarhitektuurid
- ARM arhitektuuri jaoks on sisse viidud vÔimalus mÀlu kuumaks eemaldamiseks.
- RISC-V arhitektuuri jaoks on lisatud CPU kuumplug ja eemaldamise tugi (CPU hotplug). 32-bitise RISC-V jaoks on rakendatud eBPF JIT.
- 32-bitiste ARM sĂŒsteemide kasutamise vĂ”imalus on eemaldatud KVM-iga kĂŒlaliskeskkondade kĂ€itamiseks.
- S390 arhitektuuri jaoks on eemaldatud "fiktivne" NUMA teostus, mille jaoks pole leitud kasutusstsenaariume, mis tooksid kaasa jÔudluse kasvu.
- ARM64 jaoks on lisatud AMU (Activity Monitors Unit) laienduse tugi, mis mÀÀratletakse ARMv8.4-s ja mis pakub jĂ”udlusloendureid, mida kasutatakse sageduse skaala korrektsioonide tegurite arvutamiseks ĂŒlesannete ajastajas.
- Varustus
- vDPA seadmete tugi, mis kasutavad virtio spetsifikatsioonidele vastavat andmevahetuskanalit. vDPA seadmed vĂ”ivad olla nii fĂŒĂŒsiliselt ĂŒhendatud seadmed kui ka emuleeritud virtuaalsed seadmed.
- GPIO alamsĂŒsteemis uus ioctl() kĂ€skude muutuste jĂ€lgimiseks, mis vĂ”imaldab protsessile teavitada igasuguste GPIO ridade oleku muutmisest. NĂ€iteks uue kĂ€skluse kasutamine tööriist gpio-watch.
- Intel'i i915 DRM draiveris on vaikimisi Tigerlake (âGen12â) kiipide tugi ja algne OLED taustvalgustuse juhtimise tugi. Parandatud on Ice Lake, Elkhart Lake, Baytrail ja Haswell kiipide toimet.
- amdgpu draiveris vĂ”ime laadida firmavĂ€rskendusi USBC kiibis ASIC. Parandatud on AMD Ryzen 4000 âRenoirâ kiipide tugi. OLED-paneelide juhtimise tugi on lisatud. Tugi on lisatud foorumi oleku kuvamiseks debugfs.
- VMware virtualiseerimissĂŒsteemide vmwgfx DRM draiverisse on lisatud OpenGL 4 kasutamise vĂ”imalus kĂŒlgsĂŒsteemides (varasemalt toetati OpenGL 3.3).
- Lisa uus DRM draiver tidss TI Keystone platvormi kuvandisĂŒsteemi jaoks.
- Lisatud ĂŒlekanne LCD paneelidele: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
- Energiahalduse sĂŒsteemis tugi Intel Jasper Lake (JSL) pĂ”hinevatel Atom platvormidel.
- Lisatud Pinebook Pro sĂŒlearvuti tugi Rockchip RK3399 pĂ”hiselt, Pine64 PineTab tahvelarvuti ja nutitelefoni Allwinner A64 pĂ”hised.
- Lisatud toetus uutele helikoodikatele ja kiipidele:
Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc. - Lisatud ARM-plaatide ja Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plusi, Kontroni âsl28â, 11 versiooni i.MX6 TechNexion Pico, kolm uut versiooni Toradex Colibri, Samsung S7710 Galaxy Xcover 2 ST-Ericsson u8500, DH Electronics DHCOM SoM ja PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.
Allikas: opennet.ru
