PĂ€rast kahte kuud arendust esitles Linus Torvalds Linuxi tuuma versiooni 6.8. KĂ”ige mĂ€rgatavamad muudatused on: Intel GPU jaoks mĂ”eldud Xe draiver, blokeeritud seadmete kaitsereĆŸiim monteeritud failisĂŒsteemidega, Deadline serveri ĂŒlesande planeerimise mehhanism, automaatne identsete mĂ€lu lehtede ĂŒhendamise optimeerimine, esimene Rusti keeles kirjutatud draiver, sĂŒsteemikutsed listmount ja statmount, bpfilter ja SLAB eemaldamine, KVM-i guest_memfd mehhanism, andmete juurde pÀÀsu profileerimine.
Uude versioonis on vastu vĂ”etud 15641 parandust 2018 arendajalt, patĆĄi suurus on 44 MB (muudatused puudutasid 12212 faili, lisatud 663864 koodirea, eemaldatud 339094 rida). Eelmine vĂ€ljalase sisaldas 18405 parandust 2066 arendajalt, patĆĄi suurus oli 72 MB. Umbes 42% kĂ”ikidest 6.8 versioonis esitatud muudatustest on seotud seadme draiveritega, umbes 15% muudatustest puudutab riistvaraarhitektuuridele spetsiifilist koodi uuendamist, 14% on seotud vĂ”rgu neid, 6% - failisĂŒsteemidega ja 3% - tuum sisemiste alamsĂŒsteemidega.
Git-repositooriumis, kus asub tuum 6.8, on 9,996 miljonit objekti, mis viitab sellele, et jĂ€rgmine tuum 6.9 ĂŒletab 10 miljoni git-objekti mĂ€rgilise piiri. Varasematel juhtudel, kui vahetati harude numbreid 3.x ja 4.x, korreleeris see hĂ€sti repositooriumis olevate git-objektide arvuga â tuum 3.0 vĂ€lja anti, kui repositooriumis oli ligikaudu 2 miljonit objekti, ja tuum 4.0 â 4 miljonit objekti. Samas, 2019. aastal 5.0 vĂ€ljaandmine katkestas selle loogilise ahela, kuna selle koostamise ajal sisaldas repositoorium umbes 6,5 miljonit git-objekti.
Tuuma 6.8 peamised uuendused:
- DiskisĂŒsteem, sisend/vĂ€ljund ja failisĂŒsteemid
- Lisatud on otsese kirjutamise blokeerimise reĆŸiim blokeeritud seadmetele, millel on monteeritud failisĂŒsteemid (reĆŸiimi aktiveerimisel ei saa root-kasutaja failisĂŒsteemi muuta blokeeritud seadme tasemel). Vaikimisi on reĆŸiim vĂ€lja lĂŒlitatud ja nĂ”uab kompileerimisel parameetri BLK_DEV_WRITE_MOUNTED mÀÀramist. Btrfs-i partitsioonide puhul ei toimi blokeerimine praegu, kuna Btrfs koodis pole veel vajalikud muudatused vastu vĂ”etud.
- Lisatud on sĂŒsteemikutsed listmount() ja statmount(), mis vĂ”imaldavad kasutajaruumi kaudu saada detailset teavet monteeritud failisĂŒsteemide kohta.
- XFS failisĂŒsteemi puhul on jĂ€tkatud tööd fsck utiliidi rakendamise vĂ”imaluse realiseerimise nimel, et kontrollida ja parandada esilekerkivaid probleeme online-reĆŸiimis, ilma failisĂŒsteemi lahutamata.
- Ext4-s on vĂ€iksemate mĂ€lu lehtede blokid kasutavad dioread_nolock kutset, mis vĂ”imaldab tĂ”sta jĂ”udlust, vabanedes liigsetest lukustustest. MĂ”ned funktsioonid on viidud ĂŒle mĂ€lu lehtede folio'ide kasutamisele.
- Btrfs-is on lisatud tugi monteerimislipule "nospace_cache" vabade blokkide vahemĂ€lu deaktiveerimiseks. MĂ”ned funktsioonid on viidud ĂŒle mĂ€lu lehtede folio'ide kasutamisele.
- EROFS-failisĂŒsteemis (Extendable Read-Only File System), mis on mĂ”eldud kasutamiseks ainult lugemisreĆŸiimis osade jaoks, on lisatud sublehtede tihendamise tugi ning parendatud töölemehed olukordades, kus mĂ€lu on vĂ€he.
- F2FS-is on parendatud tsoonitud salvestusseadmete toetust (gruppide blokaerimine vÔi sektorite jaotamine, kuhu on lubatud vaid jÀrjestikune andmete lisamine kogu bloki grupi uuendamisega).
- SMB FS-is on rakendatud vĂ”imalus luua seadme plokilisie ja sĂŒmboolne faile.
- Bcachefs-ile on lisatud osaline toetus monteeritud FS-i kontrollimiseks ja taastamiseks.
- Seadmestiku map'i subsĂŒsteemis on lĂ”petatud MD_LINEAR, MD_MULTIPATH ja MD_FAULTY töötlejateta toetus, mis kuulutati 2021. aastal vananenuks.
- MĂ€lu ja sĂŒsteemiteenused
- Zswap subsĂŒsteemi on lisatud, et mĂ€lu nappuse korral aktiveerida vĂ”imalus sunniviisiliselt tĂŒhjendada âkĂŒlmadâ mĂ€letlehed reaalsesse vahetusfailisse, mis ei ole olnud juurdepÀÀsetavad ja mis tĂ”enĂ€oliselt jÀÀvad kasutamata. Zswap lĂ”petab vahetusfailidesse suunatud lehtede vahemĂ€lu, hoides neid vĂ”imaluse korral mĂ€lu kompressitud vormis ilma reaalsesse mittesurutud vahetusfaili diskil. Muudatused mĂ€lu nappuse korral vĂ€hendavad Zswap-is hoitava pulga suurust ja vabastavad mĂ€lu sĂŒsteemile.
- Zswap-is on pakutud uus reĆŸiim, mis tĂ€ielikult keelab edasi lĂŒkatud kirjutamise (writeback) reaalsetesse vahetusfailidesse, kui kirjutamisĂŒritus ebaĂ”nnestub, ja ei tĂŒhjenda juba olemasolevaid Zswap pulgas lehti vahetusfailidesse.
- Ălesande ajastaja on lisatud SCHED_DEADLINE serveri mehhanism, mis lahendab protsessorressursside mittekaotamise probleemi tavaliste ĂŒlesannete jaoks, kui CPU-d monopoliseerivad kĂ”rge prioriteediga (realtime) ĂŒlesanded. CPU monopoolimise vĂ€ltimiseks tuumas kasutati varem mehhanismi Realtime throttling, mis pĂŒĂŒdis reserveerida 5% madalama prioriteediga ĂŒlesannete jaoks, jĂ€ttes 95% aega realtime-ĂŒlesannetele. See mehhanism jĂ€ttis soovida, kuna tavalised ĂŒlesanded ei saanud paljudes olukordades protsessori aega piisavalt. SCHED_DEADLINE server rakendab tĂ”husamat ressursside reserveerimise mehhanismi.
- DAMON (Data Access MONitor) alamsĂŒsteemi, mis jĂ€lgib protsessi juurdepÀÀsu andmetele operatiivmĂ€lu, on lisatud automaatse mĂ€lukoormuse agressiivsuse seadistamise mehhanism, mis pĂ”hineb mÀÀratud kvootidel.
- Tugiteenus multi-suurusega suured mĂ€lulehed (mTHP â multi-size Transparent Huge Pages) on nĂŒĂŒd toetatud, vĂ”imaldades eraldada mĂ€luruumi plokkides, mis on suuremad kui alammĂ€lu leht, kuid vĂ€iksemad kui traditsioonilised THP-lehed.
- Toetatakse suurte foliantide (page folios, ĂŒhendatud mĂ€lulehed) kasutuselevĂ”ttu anonĂŒĂŒmses mĂ€lus (mis ei ole seotud failisĂŒsteemiga, nĂ€iteks lĂ€bi malloc'i eraldatud). Muudatus on suunatud jĂ”udluse suurendamisele, eraldades suuri mĂ€lukilde mĂ€lulehtede (page faults) juurdepÀÀsu ajal. NĂ€iteks suurte foliantide kasutamine on vĂ”imaldanud 5% vĂ”rra vĂ€hendada kerneli uuesti koostamise aega (kui kerneli tasemel veedetud aega vĂ€hendada 40% vĂ”rra).
- Mitu suurust mÀlulehtede (Transparent Huge Pages) keelamiseks on kerneli konfigureerimisfaili lisatud parameeter TRANSPARENT_HUGEPAGE_NEVER.
- Kasutaja ruumi mĂ€lulehtede (page faults) kĂ€sitlejate loomise vĂ”imalusteruutuseruptfd() sĂŒsteemkutsesse on lisatud toiming UFFDIO_MOVE, mis vĂ”imaldab mĂ€lulehtede teisaldamist virtuaalses aadressiruumis virna pakendamise (heap compaction) kĂ€igus ilma mĂ€lulehe eraldamise toimingut teostamata. Tehtud katsete tulemused nĂ€itavad, et UFFDIO_MOVE kasutamine on vĂ”imaldanud 40% vĂ”rra vĂ€hendada virna pakendamise aega vĂ”rreldes UFFDIO_COPY toimingu kasutamisega.
- Lisatud on mehhanism «KSM advisor», mis vĂ”imaldab automaatselt optimeerida identsete mĂ€lulehtede liitmise alam-sĂŒsteemi parameetreid (KSM â Kernel Samepage Merging).
- Rohkem on edasi viidud Rust-for-Linux haru muudatusi, mis on seotud Rusti keele kasutamisega teise keelena draiverite ja tuumamoodulite arendamisel (Rusti tugi ei ole vaikimisi aktiivne ja ei too kaasa Rusti kui kohustuslikke ehitamisriike tuuma hulka). Uues versioonis on lisatud muudatused, mis lisavad Rusti mĂ€hise phylib abstraktsiooni tasemele ja kasutavad seda mĂ€hist draiver ax88796b_rust, mis tagab Ethernet-kontrolleri Asix AX88772A (100MBit) PHY-liidese toe. Funktsionaalsuse poolest on Rusti draiver tĂ€iesti ekvivalentne vana C-programmeerimise keeles kirjutatud draiveriga ax88796b ning seda saab kasutada X-Surf 100 vĂ”rgukaartidega, mis on varustatud kiibiga AX88796B. LoongArch arhitektuuri jaoks on vĂ”imalik kirjutada mooduleid Rusti keeles. Ăleminek on toimunud Rusti vĂ€ljalaskeversioonile 1.74.1.
- Lisatud on BPF token mehhanism, mis vÔimaldab valikuliselt delegeerida BPF-i teatud omaduste töötlemise, nÀiteks BPF programmi laadimise vÔi BPF kaardi loomise, mitteprivileegitud protsessidele kasutajaruumis, mille usaldusvÀÀrsust kinnitab spetsiaalne token.
- BPF-programmide valideerimise funktsionaalsus on laiendatud.
- Perf utiliiti on lisatud toe andmete profiilimiseks, mis vĂ”imaldab jĂ€lgida andmestruktuuride lugemist ja kirjutamist, nĂ€iteks kĂ”ige aktiivsemate muudetavate vĂ€ljade tuvastamiseks struktuurides. SĂŒsteemides, kus protsessorid toetavad mĂ€luoperatsioonide teabe kogumist (Intel, AMD, ARM), tuleks statistika kogumise jaoks kasutada kĂ€sku «perf mem record» ja andmestruktuuride kutsumise aruanne vĂ€ljastamiseks «perf annotate âdata-type».
- s390 (IBM Z) arhitektuuri sĂŒsteemikutsungite töötlemise jĂ”udluse optimeerimine on viinud testides sĂŒsteemikutsungi sisenemise kiiruseni, mis on umbes 11% kiirem.
- On antud vÔimalus muuta jÀlgimisbufferite suurust, mida kasutatakse jÀlgimisinfo nii-öelda kasutajaruumi edastamiseks.
- Eelmise versiooni vananenud mĂ€lujaotuse mehhanism SLAB on eemaldatud, selle asemel kasutatakse tuumas nĂŒĂŒd ainult SLUBi. PĂ”hjuseks on hooldamisprobleemid, koodivead ja funktsionaalsuse dubleerimine tĂ€iustatud allokaatoriga SLUB.
- Tuuma koostamisel on sisse lĂŒlitatud lipp â-Wmissing-prototypesâ, mis genereerib hoiatusteateid globaalsest funktsioonikutsest, millel puudub prototĂŒĂŒbi mÀÀratlemine.
- RISC-V arhitektuuril sĂŒsteemides, mis toetavad SUSP SBI laiendust, on ellu viidud tugi ootereĆŸiimi ĂŒleminekuks, salvestades oleku RAM-i. Pakutakse vĂ”imalust kasutada sĂŒsteemi kutset riscv_hwprobe(), et saada teavet toetatud RISC-V kĂ€skude komplekti laienduste kohta.
- Virtualiseerimine ja turvalisus
- Uued sĂŒsteemi kutsed lsm_list_modules(), lsm_get_self_attr() ja lsm_set_self_attr() on lisatud, et kuvada laaditud LSM-moodulite (Linux Security Modules) loendit ning saada/seada LSM-mooduli atribuute. Uus struktuur lsm_ctx on lisatud suhtlemiseks LSM kontekstis kasutaja ruumis ja tuumas.
- AppArmori alamsĂŒsteem on ĂŒleminekul SHA-256 algoritmi kasutamisele reeglite verifitseerimiseks, asendades SHA-1 hashid.
- Tuumas on eemaldatud strlcpy() funktsiooni teostus, mis suvel lisati C teeki Glibc 3.38. Strlcpy on alternatiiv strncpy() funktsioonile, mis sisaldab puhversoomise kaitset ja tagab alati Ôige stringi lÔpu nullbaiti.
- HĂŒpervisor KVM Lisatud tugi guest_memfd alamsĂŒsteemile (guest-first memory), mis pakub mĂ€luhalduse funktsioone, mis vĂ”imaldavad saavutada vĂ”imalusi ja optimeerimisi, mida tavalise mĂ€luhalduse sĂŒsteemi kasutamisel ei saa. NĂ€iteks vĂ”imaldab guest_memfd eraldada ja peegeldada kĂŒlastussĂŒsteemis mĂ€luala, mis on host-keskkonnast kĂ€ttesaamatu, mida saab kasutada konfidentsiaalsete arvutuste korraldamiseks.
- KĂŒlastussĂŒsteemide jaoks, mis töötavad KVM hĂŒperviisori all, on sisse lĂŒlitatud Intel protsessorites oleva LAM (Linear Address Masking) reĆŸiimi tugi, mis vĂ”imaldab kasutada osa 64-bitiste osutite bitte (57. kuni 62. bit) aadressimisega seotud metaandmete salvestamiseks.
- KVM-hĂŒperviisori jaoks on ARM64-architectuuri sĂŒsteemidesse lisatud 52-bitiste (LPA2) fĂŒĂŒsiliste aadresside tugi. x86-architectuuri sĂŒsteemide jaoks on saadaval kompileerimine ilma Hyper-V hĂŒperkĂ”nede emuleerimiseta, mis vĂ”imaldab vĂ€hendada tuuma suurust.
- Lisatud on iaa (IAA Compression Accelerator) draiver, et kiirendada DEFLATE meetodil andmete tihendamise ja dekomprimeerimise operatsioone, kasutades Intel Analytics Accelerator (IAA) krĂŒptograafiliste kiirendite vĂ”imalusi.
- Host-keskkonna poolel on rakendatud Intel TDX (Trusted Domain Extensions) mehhanismi tugi, mis vĂ”imaldab KVM-hĂŒperviisorit kasutades luua kaitstud kĂŒlalisrakendusi, kus kasutatakse mĂ€lu krĂŒpteerimist. virtuaalmasinate.
- SELinuxi on lisatud SID-identifikaator "init", mis vÔimaldab eristada alglaadimise kÀigus kÀivitatud protsesse, mis on alustatud enne SELinuxi poliitikate rakendamist. Parandatud on /sys/fs/selinux liidese haldamist SELinuxi jaoks.
- VĂ”rgusĂŒsteem
- Töötati lĂ€bi madala taseme ĂŒmberkorraldus pĂ”hivĂ”rgustruktuurides, et suurendada vahemĂ€lu tĂ”husust. Varasemalt olid vĂ”rgu stacki socks, netdev, netns ja mibs struktuurides vĂ€ljad paigutatud lisamise jĂ€rjekorras, mis piiratis protsessori vahemĂ€lu kasutamist. Muutused muutujate paigutamises struktuurides tĂ”id kaasa TCP töökiirusetĂ”usu, vĂ€hendades andmete edastamise etapis vahemĂ€lu stringide kasutamist ning optimeerides muutujate juurde pÀÀsemist. Paljude paralleelsete TCP-ĂŒhenduste töötlemise korral vĂ”ib kiirusetĂ”us ulatuda 40%-ni.
- Eemaldatud on bpfilteri sĂŒsteem, mis kasutas BPF-i paketifiltreerimiseks. Bpfilterit pakuti alates versioonist 4.18, kuid seda ei viidud kunagi laiemaks kasutamiseks sobivale tasemele. Viimastel aastatel ei ole bpfilteri kood tuumas edasi arenenud, samas kui arendust jĂ€tkas Facebook eraldi repos.
- Varustus
- Uue Intel Xe arhitektuuril pĂ”hineva GPU jaoks on lisatud uus drm-draiver (Direct Rendering Manager), mida kasutatakse Intel Arc seeria graafikakaartides ja integreeritud graafikas alates Tiger Lake protsessoritest. Xe draiverit positsioneeritakse uute kiipide töötamise aluseks, mis ei ole seotud vanade platvormide toe koodiga. Draiver on loodud uue arhitektuuri pĂ”hjal, kus kasutatakse aktiivsemalt olemasolevaid DRM-alamsĂŒsteemi komponente ning tĂŒĂŒpilisi draiveri i915 komponente, mis ei ole seotud konkreetsete GPU-dega, nagu ekraanidega suhtlemiseks vajalik kood, mĂ€lumudel ja execbuf'i realiseerimine. Mesa-s on OpenGL ja Vulkan töö Xe draiveri peal rakendatud olemasolevatesse Mesa-draiveritesse Iris ja ANV tehtud muudatuste tasemel.
- i915 draiveris jÀtkub Intel LunarLake (Xe 2) kiipide toe rakendamine. Suurenenud on Intel Meteor Lake kiipide toetus.
- Nouveau draiveris on seadistatud vaikimisi kasutada GSP pĂŒsivara funktsioone NVIDIA GPU-de juhtimiseks, mille aluseks on Turingi ja Ampere mikroadarkitektuurid, kus GPU initsialiseerimise ja juhtimise toimingud teostab eraldi mikrokontroller GSP (GPU System Processor). Seadistuse lubamisel töötab draiver pĂŒsivara kaudu, mitte otse riistvaraliste toimingute programmeerimisega.
- AMDGPU draiveris on rakendatud ACPI WBRF ja VPE DPM toe, muudatud PCIe kanali kiirusetöötlust, 64-bitised jĂ€rjestikused numbrid on seotud sĂŒnkroniseerimisjĂ€rjekordadega, lisatud AMD-spetsiifilised vĂ€rvijuhtimise mehhanismid ning lahendatud une reĆŸiimi ĂŒlemineku probleem.
- Lisatud on algne draiver Broadcom VideoCore 7.1 GPU-le, mida kasutatakse Raspberry Pi 5 leidudes.
- Lisatud on draiver PowerVR 6 seeria GPU-dele, mis pÔhinevad Imagination Technologies'i Rogue mikroadarkitektuuril.
- Lisatud on toetused Thunderbolt/USB4 kontrolleritele, mis on integreeritud Intel Lunar Lake mikroadarkitektuuril pÔhinevatesse kiipidesse.
- Lisatud on draiverid kaameratele, millel on Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave ja THine THP7312 SoC-ides.
- Lisatud on toe mĂ€ngujuhikutele NSO (Nintendo Switch Online) â vanade SNES (Super Nintendo), Genesis ja N64 (Nintendo 64) juhtide variandid, mis on kohandatud Nintendo Switchile. Lisatud on draiver Adafruit Seesaw mĂ€ngupuldile. Draiver xpad on tĂ€iendatud Lenovo Legion Go juhtide toega.
- DTS draiverisse on lisatud tugi mÀnguseadmete jaoks Powkiddy RK2023, Powkiddy X55 ja Anbernic RG351V.
- Tugi helisĂŒsteemidele, mida kasutatakse NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 ja X1E80100 kiipides.
- AMD on teinud muudatusi, mis on seotud tulevase protsessoriseeria toetamisega, mis pÔhineb uuel mikroarhitektuuril Zen 5.
- Lisatud tugi ARM64 SoC-dele: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 ja Unisoc UMS9620 (Tanggula 7).
- Lisatud tugi ARM-plaatidele ja seadmetele: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress Marvelli CN913x alusel, Lenovo Chromebook, Asus ja Acer MediaTek MT8183 alusel, Toradex Verdin AM62, Allwinner H616/H618 alusel olevad plaadid.
- ARM11 ARMv6K SMP protsessorite toetus lÔpetatud.
Samas töötas Ladina-Ameerika Vaba Tarkvara Sihtasutus vĂ€lja tĂ€iesti vaba tuuma 6.8 â Linux-libre 6.8-gnu, mis on puhastatud mittevabade komponentide vĂ”i koodilĂ”igutega seotud pĂŒsiprogrammide ja draiverite elementidest, mille rakendust piirab tootja. VĂ€ljaandes 6.8 on uuendatud blobide puhastamise kood erinevates draiverites ja alamsĂŒsteemides. Puhastamine toimus Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY ja Realtek rtw8922a draiverites. Draiverite atmel, hermes, orinoco_usb, libertas_cs ja zd1201 puhastamine lĂ”petati seoses nende eemaldamisega tuumast. Dts-failides (devicetree) on puhastatud blobide nimetused ARM ja Aarch64 arhitektuuride jaoks. Probleemid i915 draiveri puhastamisega on kĂ”rvaldatud.
Allikas: opennet.ru
