Linux 7.0

Linux 7.0

После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 7.0. Med med najvidnejšimi spremembami so: pravila uporabe AI asistentov, prevod Rust v osnovne zmogljivosti jedra, povečana zmogljivost swapanja, privzeto vklopljen način PREEMPT_LAZY, podpora filtrom za operacije io_uring, nova datotečna sistem Nullfs, infrastruktura fserror, orodja za spremljanje XFS, podpora za premapiranje v Btrfs, privzeto vključena različica NFS 4.1, integracija post-kvantnega kriptoalgoritma ML-DSA, aktivacija AccECN v omrežni podsklop, začetna podpora za WiFi 8.

Številka 7.0 je bila dodeljena, ker se je v veji 6.x nabrala dovolj izdaj za spremembo prve številke različice (v preteklosti je bila izdaja 6.0 oblikovana takoj za 5.19). Sprememba številčenja se izvede iz estetskih razlogov in predstavlja formalni korak, ki odpravi nelagodje zaradi prevelikega števila izdaj v seriji.

V novo različico je bilo vključeno 15624 popravkov od 2477 razvijalcev, velikost popravka znaša 56 MB (spremembe so zajemale 18053 datotek, dodanih je bilo 704060 vrstic kode, odstranjeno 278132 vrstic). V prejšnji izdaji je bilo 15657 popravkov od 2237 razvijalcev, velikost popravka je bila 52 MB. Približno 51% vseh predstavljenih sprememb v 7.0 se nanaša na gonilnike naprav, približno 11% sprememb se nanaša na posodobitev kode, specifične za strojne arhitekture, 14% se nanaša na omrežni sklad, 5% na datotečne sisteme in 3% na notranje podsklopi jedra.

Glavne novosti v jedru 7.0 (kernelnewbies.org, lwn.net, OpenNET):

  • Дисковая подсистема, ввод/вывод и файловые системы
    • Uvedena je infrastruktura fserror in dodano API za pridobivanje informacij o napakah vhod/izhod in poškodbah metapodatkov pri delu z datotekami. Predlagana infrastruktura poenoti v datotečnih sistemih prenos informacij o napakah v uporabniški prostor preko mehanizma fsnotify.
    • V XFS dodano nove možnosti za spremljanje stanja datotečnega sistema iz uporabniškega prostora. Predlagan je ioctl-postopek XFS_IOC_HEALTH_MONITOR, ki vrača datotečni opisnik, preko katerega lahko pridobite informacije o okvarah, povezanih s poškodbo metapodatkov ali napakami pri vhodu/izhodu, ter spremljate spremembe stanja FS, kot sta odmontiranje in končanje delovanja. Dodatno je bil predlagan upravljan proces v ozadju xfs_healer preko systemd, ki obdeluje dogodke o stanju FS iz uporabniškega prostora in po potrebi samodejno zažene. postopek obnovitve.
    • V datotečni sistem Btrfs je bila dodana eksperimentalna podpora za strukturo 'drevo premapiranja' (remap tree), ki bi se lahko v prihodnosti uporabila kot vmesni sloj med izvajanjem vhodno-izhodnih operacij. Osnovna ideja dodane funkcionalnosti je, da po premiku podatkov na napravi, namesto da bi posodobili vse povezane strukture za te podatke, v dodatni strukturi 'remap tree' shranimo stare in nove naslove podatkov, pri čemer se ob dostopu do podatkov naslovi zamenjajo. Novi pristop je predstavljen kot bolj zanesljiv in fleksibilen ter poenostavlja nadaljnje širjenje funkcionalnosti Btrfs.
    • V Btrfs je bila uvedena podpora neposrednemu vhodno-izhodnemu delu v primerih, ko velikost bloka presega velikost pomnilniške strani v sistemu.
    • V sestavi je vključena nova datotečna sistem Nullfs, ki se lahko uporablja kot nadomestni korenski FS. Datotečni sistem Nullfs je vedno prazen, ne vsebuje podatkov in ne podpira sprememb. Namen Nullfs je uporaba kot začetni FS za poenostavitev procesa zagona sistema – nad Nullfs se nato montirajo drugi FS in uporablja sistemski klic pivot_root() za preklop korenskega FS namesto čiščenja vsebine initramfs in uporabe povezanega korenskega FS.
    • Izvedeno posodabljanje informacij o času spremembe datotek v neblokirnem načinu. Prej je klic file_update_time_flags() z zastavico IOCB_NOWAIT vrnil napako -EAGAIN, kar ni omogočalo uporabe neposrednih zapisov v neblokirnem načinu.
    • V datotečnih sistemih v razredu ločeno vključenih možnosti prevedeno podpora obvestilnim zaklepanjem (lease). Privzeto ta mehanizem ni aktiviran zaradi težav s FS, ki izvorno niso bile zasnovane za njegovo uporabo. Na primer, FS 9p in cephfs ga ne podpirata.
    • V datotečnem sistemu EROFS (Extendable Read-Only File System), namenjenem uporabi na particijah, dostopnih v načinu samo za branje, je za stiskanje privzeto uporabljen algoritem LZMA. Opcijsko so na voljo algoritmi DEFLATE in Zstandard, ki več ne označeni kot eksperimentalni. Implementirano je skupno rabo zapisov v strančnem predpomnilniku (page-cache) za identične datoteke v ločenih FS EROFS.
    • Odstranjeno režim laptop_mode, ki varčuje z energijo z odlaganjem in združevanjem operacij pisanja na trdi disk, da podaljša čas, ko je disk v mirovanju, in zmanjša število prebuditev. Ta režim je izgubil aktualnost, saj so v sodobnih mobilnih napravah trdi diski nadomeščeni s trdimi diski SSD.
    • Datotečni sistem F2FS je bil prenesen na uporabo večjih фолиантов страниц памяти (veliki foliji).
    • Oživljeno je delo na gonilniku ntfs3, ki ga razvija podjetje Paragon Software. Dodana je podpora za operacije z datotekami na osnovi iomap, implementirane so možnosti llseek SEEK_DATA/SEEK_HOLE, dodan je način delalloc za odloženo dodeljevanje blokov. Medtem je bilo na seznamu razprav razvijalcev jedra februarja odobreno vključitev nove implementacije NTFS v eno od prihodnjih različic jedra — ntfsplus, ki je bila razvita za zamenjavo ntfs3.
    • Privzeto pri gradnji je vključena različica protokola NFS 4.1 (CONFIG_NFS_V4_1). Zagotovljena je blokada izvoza prek NFS specializiranih pseudo-FS, kot sta pidfs in nsfs. V NFSD je bila uvedena eksperimentrna možnost uporabe POSIX ACL in je dodana podpora dinamični spremembi bazena niti (thread-pool) glede na obremenitev.
  • Pomnilnik in sistemske storitve
    • Urejena so uradna pravila za uporabo AI asistentov in vključitev v jedro samodejno generirane vsebine. Pri posredovanju generirane kode je predpisano, da se označi z oznako uporabljenega AI asistenta preko oznake Assisted-by. AI asistentom je prepovedano dodajati oznako Signed-off-by — oseba, ki posreduje popravek, velja za njegov avtor, nosi odgovornost za posredovano spremembo in jamči za njeno kakovost. Razvijalcem je predpisano, da izvedejo ročno recenzijo kode, pridobljene preko AI, in preverijo skladnost rezultata z licenčnimi zahtevami.

    • Podpora za Rust prevedeno je prešla iz eksperimentalnega v osnovne možnosti jedra.

    • Zaključeno je vključevanje mehanizma "Swap Table", ki omogoča povečanje zmogljivosti zamenjave. Pospešek se doseže s zmanjšanjem konkurence za dostop do predpomnilnika zamenjave, bolj učinkovitim iskanjem v predpomnilniku in zmanjšanjem fragmentacije. Backend na podlagi Swap Table je bil uporabljen za predpomnjenje zamenjave namesto backenda XArray in je omogočil v testu redis-benchmark s BGSAVE povečanje števila obdelanih zahtevkov za 22%.

    • Dodana je podpora za novo funkcijo v Clang 22 Analiza varnosti niti, ki omogoča odkrivanje potencialnih stanj dirke in napak, ki jih povzročajo nepravilne nastavitve zaklepov že v fazi zbiranja. Razširitev ponuja niz atributov, kot so GUARDED_BY(…), REQUIRES(…), RELEASE(…) in ACQUIRE(…), ki označujejo funkcije, zaščitene z zaklopi in ločujejo področja veljavnosti zaklepov (opredelitev konteksta). V fazi zbiranja se izvaja preverjanje pravilne uporabe sinhronizacijskih primitivov, kot so mutexi, na podlagi ocenjene aktivnosti ali neaktivnosti povezanega konteksta.

    • V sistemski klic open_tree dodano je uveden flag OPEN_TREE_NAMESPACE za poenostavitev nastavitve izoliranih kontejnerjev in pospešitev zagonov kontejnerjev na sistemih z veliko točkami montaže. Tako kot OPEN_TREE_CLONE novi flag kopira samo določeno drevo točk montaže (mount tree), vendar namesto lokalnega datotečnega deskriptorja vrne datotečni deskriptor v novem prostoru imen točk montaže, v katerem se kopirano drevo montira nad kopijo dejanskega korenskega FS. Flag OPEN_TREE_NAMESPACE je pomemben za opuščanje ločenega izvajanja operacij unshare(CLONE_NEWNS) in pivot_root(), ki se uporabljata pri ustvarjanju kontejnerjev.

    • V sistemski klic rseq dodano je mehanizem za širitev časovnih kvot (time slice), ki omogoča dodatno procesorsko časovno obdobje za neprekinjeno izvajanje kritične sekcije. Ideja je, da se izogne prekinitvi načrtovalnika nalog v kritični sekciji z nastavljeno blokado, kar vodi do prenosa nadzora drugim nitim, ki uporabljajo vir, na katerem ostane nastavljen zaklep. Širitev časovne kvote poteka brez dodatnih stroškov, vendar tudi brez strogih jamstev, ki jih zagotavlja popolno upravljanje prioritet.

    • Za arhitekture arm64, loongarch, powerpc, riscv, s390 in x86 je v načrtovalniku privzeto spremenjen iz PREEMPT_NONE v PREEMPT_LAZY. Število možnih načinov je zmanjšano od štiri do dveh – PREEMPT_FULL in PREEMPT_LAZY (način PREEMPT_NONE in PREEMPT_VOLUNTARY sta ohranjena le za arhitekture, ki ne podpirajo PREEMPT_FULL in PREEMPT_LAZY). Način PREEMPT_LAZY uporablja model popolnega izpodrivanja (PREEMPT_FULL) za realtime naloge (RR/FIFO/DEADLINE), a odloži izpodrivanje običajnih nalog (SCHED_NORMAL) do meje takta. Vzpostavljena zamuda vodi do zmanjšanja primerov izpodrivanja nosilcev zaklenitev, kar omogoča, da se zmogljivost približa konfiguracijam, ki uporabljajo model prostovoljnega izpodrivanja (voluntary preemption), torej PREEMPT_LAZY omogoča ohranjanje zmogljivosti popolnega izpodrivanja za realtime naloge, a hkrati minimizira padanje zmogljivosti za običajne naloge.

      Vklop PREEMPT_LAZY je povzročil resno regresijo, ki je zmanjšala zmogljivost PostgreSQL na sistemih ARM64 za polovico. Da bi odpravili padanje zmogljivosti, so razvijalci PostgreSQL je predlagan morali aktivirati možnost PR_RSEQ_SLICE_EXTENSION za zmanjšanje verjetnosti izpodrivanja nosilca zaklenitve.

    • Nadaljevanje prenos sprememb iz veje Rust-for-Linux, povezanih z uporabo jezika Rust kot drugega jezika za razvijanje gonilnikov in modulov jedra (podpora za Rust ni privzeta in ne povzroči, da Rust postane obvezna odvisnost od gradnje jedra). Zahvaljujoč prej integrirani knjižnici „syn (crates.io)“, ki poenostavi pisanje kompleksnih makrov, je bilo mogoče zmanjšati velikost Rust kode v jedru z poenostavitvijo definicij obstoječih proceduralnih makrov. Razširjene so zmogljivosti knjižnic kernel, macros in pin-init.

    • V sistem asinhonega vnosa/izdaje io_uring je dodana možnost za uporabo ne krožnih vrstic (non-circular submission queue), ki se učinkoviteje shranjujejo v situacijah, ko se dokončanje zahteve zgodi pred vrnitvijo iz sistemskega klica.

    • V podsystemu eBPF v mehanizmu BTF (BPF Type Format), ki zagotavlja informacije za preverjanje tipov v psevdokodu BPF, za iskanje debuggerskih informacij uporabljen je bil uporabljen binarni iskalni algoritem, kar je povečalo učinkovitost nalaganja BPF programov. V eBPF je dodana je podpora za implicitne argumente pri klicu kfunc (funkcije jedra, dostopne za uporabo v BPF programih), določene z zastavico KF_IMPLICIT_ARGS.

    • Odstranjeno koda za podporo začetnemu RAM disku (initrd) na osnovi linuxrc, ki se že dolgo šteje za zastarelo. Preostale implementacije initrd nameravajo odstraniti leta 2027. Namesto initrd je priporočljivo uporabljati initramfs (razlika je v tem, da initrd postavi začetno zagonsko okolje v diskovno sliko, medtem ko initramfs to naredi v datotečnem sistemu).

    • v bloku naprave zram, ki se uporablja za stiskano shranjevanje strani za zamenjavo v pomnilniku, spremenjena logika dela s stisnjenimi stranmi pomnilnika pri opcionalnem prenosu podatkov v trajno shrambo v primeru polnjenja razpoložljivega delovnega pomnilnika. Prej so se strani pomnilnika razpakirale pred zapisom na fizični nosilec, zdaj pa se shranjujejo v stisnjeni obliki, kar zmanjšuje obremenitev procesorja in prihrani energijo pri prenosnem delu.

    • V orodju timerlat, namenjenem merjenju zakasnitev pri delu načrtovalnika nalog, je dodana možnost —bpf-action za zagon BPF programov ob prekoračitvi določenega praga.

    • V sistem za sledenje ftrace je dodana nastavitev bitmask-list za prikaz bitnih mask v berljivi obliki (v obliki seznama bitov, ne pa šestnajstiške številke). V tracefs so dodane možnosti za revizijo filter in trigger. Dodana ukaz perf sched stats za zbiranje in prikaz statistik delovanja načrtovalnika nalog.

    • Dodani možnosti sestavljanja LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE in LOGO_LINUX_CLUT224_FILE za določitev datoteke s sliko logotipa, ki se bo prikazala med nalaganjem jedra namesto privzetega logotipa s pingvinom Tux.

  • Virtualizacija in varnost
    • V sistemu asinhronih vhodov/izhodov io_uring je bila uvedena možnost pripenjanja BPF programov s filtri, ki nadzorujejo, kaj lahko delajo določene SQE (Submission Queue Entry) operacije (podobno sistemskim klicem v io_uring). Dodana možnost je analog filtriranja sistemskih klicev. Filtri se povezujejo z določenimi nalogami in se dedujejo ob ustvarjanju drugih procesov po klicu fork(). Ob aktivnih filtrih lahko dodani filtri le dodajo dodatne omejitve, vendar ne morejo onemogočiti obstoječih. Uvedena možnost bo omogočila blokiranje metode prečkanja filtriranja sistemskih klicev v peskovniških okoljih, ki temeljijo na izvajanju operacij podobnih sistemskim klicem, ki jih zagotavlja io_uring.
    • V SELinux je dodana možnost upravljanja dostopa do BPF žetonov, ki omogočajo непривилегiranim procesima izvršavanje nekih privilegiranih operacija sa BPF-om, kao što su učitavanje BPF programa u jezgro i stvaranje map-struktura.
    • Dodana podrška algoritmu za generisanje digitalnih potpisa ML-DSA (CRYSTALS-Dilithium), zasnovan na teoriji rešetki i otporan na preuzimanje na kvantnom računaru. Dostavljena je mogućnost korišćenja ML-DSA za autentifikaciju modula jezgra.
    • Odstranjena mogućnost korišćenja shema za generisanje digitalnih potpisa sa algoritmom SHA-1 za verifikaciju modula jezgra (podrška za učitavanje potpisanih modula je sačuvana).
    • U evidenciji audita NETFILTER_PKT dodano polja sport i dport za inspekciju brojeva mrežnih portova, a ne samo IP adresa.
    • Za sisteme sa RISC-V arhitekturom je bila uvedena podrška za proširenja Zicfiss i Zicfilp, koja pružaju hardverske mogućnosti za primenu zaštite CFI (Control Flow Integrity), koja blokira kršenja normalnog redosleda izvršenja instrukcija (control flow) kao rezultat korišćenja eksplojtova koji menjaju pokazivače na funkcije koji se čuvaju u memoriji.
    • U hipervizoru KVM je bila uvedena mogućnost prenosa u gostujuće sisteme informacija o podršci procesora za proširenje ERAPS (Enhanced Return Address Predictor Security), što omogućava izbegavanje nekih operacija resetovanja stanja CPU pri vraćanju kontrole hostu od strane gostujućeg sistema. Pored toga, je dodana podrška za pridruživanje opreme gostujućim sistemima za praćenje performansi (PMU, Performance Monitoring Unit), što omogućava povećanje tačnosti profilisanja u poređenju sa korišćenjem emuliranih PMU.
    • U drajveru za hipervizor Hyper-V je dodana podrška za debugfs interfejs za pregled statistike rada hipervizora.
  • Mrežna podsistem
    • Dozvoljeno po defaultu proširenje AccECN (Accurate Explicit Congestion Notification), koje implementira poboljšanu verziju proširenja ECN (wikipedia.org), ki omogoča gostiteljem, da v primeru preobremenitve označujejo IP-pakete namesto njihovega zavrnitve, kar omogoča ugotavljanje začetne faze zastoja v komunikacijskih kanalih brez izgube paketov. Izvirna razširitev ECN ima omejitev, ki dovoljuje oddajo le enega signala o preobremenitvi v okviru enega cikla RTT (Round-Trip Time, pošiljanje zahteve in prejemanje odgovora). AccECN to omejitev odpravi in omogoča prejemniku, da pošiljatelju posreduje več kot eno oznako o preobremenitvi v TCP-paketnem glavi. Algoritmi za upravljanje z obremenitvijo lahko uporabljajo prejete informacije za natančnejše odzivanje na preobremenitve, brez drastičnega znižanja intenzivnosti pošiljanja paketov ob manjših preobremenitvah.
    • V implementaciji algoritma za upravljanje omrežnih čakalnih vrst Cake je dodana možnost obdelave več čakalnih vrst za razporeditev obremenitve na več CPU jeder. Algoritem CAKE se uporablja za zmanjšanje negativnega vpliva vmesnega shranjevanja paketov na robnem omrežnem opremi in je usmerjen v dosego največje možne propustnosti in minimalne zamude, tudi na počasnih komunikacijskih kanalih.
    • V vtičnike VSOCK, ki se uporabljajo za interakcijo z virtualnimi stroji, je dodana podpora za omrežne prostorske imena (network namespace).
    • Dodana začetna realizacija prihodnjega standarda WiFi 8 (802.11bn, Ultra High Reliability WiFi).
    • Dodani optimizacije, ki so omogočile povečanje zmogljivosti obdelave prihajajočih UDP-paketov za 12% med stresnimi testi v 100-gigabitski omrežju.
  • Oprema
    • V gonilniku AMDGPU je bila uvedena podpora IP-blokov, ki se uporabljajo v novih GPU AMD, kot so SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 in JPEG 5.3.
    • U Nouveau drajveru poboljšano je upravljanje frekvencijom na sistemima Tegra 186+.
    • V gonilniku i915 je dodana začetna podpora za zaslonski IP-blok Xe3p_LPD, uporabljen v procesorjih Intel Nova Lake-P.
    • Nadaljuje se delo na drm-gonilniku (Direct Rendering Manager) Xe za GPU na osnovi arhitekture Intel Xe, ki se uporablja v grafičnih karticah Intel družine Arc in integrirani grafiki, od procesorjev Tiger Lake naprej. Dodan način Multi Queue. Dodani komponente, potrebne za diagnostiko zamud GPU v Mesi. Dodana podpora mehanizmu MERT za upravljanje dostopa do GPU pomnilnika.
    • Nadaljuje se Integracija komponenti voznika Nova za GPU NVIDIA, opremljenih GSP firmverima, koji se koriste od serije NVIDIA GeForce RTX 2000 baziranih na mikroarhitekturi Turing. Vozač je napisan na jeziku Rust. U novoj verziji izvršena je priprema za implementaciju podrške za GPU zasnovane na mikroarhitekturi Turing i izvršene su različite interne izmene.
    • Dodana Podrška za kontrolere i perifernu opremu sa višekanalnim interfejsom SPI (Serijski periferni interfejs), koji omogućava prenos podataka u nekoliko paralelnih tokova.
    • Dodano Vozač za kombinovane konektore Type-C, korišćene na uređajima sa Apple Silicon čipovima i kombinujući interfejse USB3, DP-AltMode i Thunderbolt/USB4.
    • Dodata je podrška za zvučne pod-sisteme čipova Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S i Focusrite Forte.
    • Dodata je podrška za ARM platforme, SoC i uređaje: Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur,
    • Dodana je podpora za pametne telefone in tablice: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft surface pro 11.

Istovremeno latinskoamerička Fondacija slobodnog softvera je formirala varijantu potpuno slobodnog jezgra 7.0 – Linux-libre 7.0-gnu, očišćenog od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili delove koda čija je primena ograničena od strane proizvođača. U izdanju 7.0 izvršeno je čišćenje od blobova drajvera iwlwifi. Ažuriran je kod čišćenja u drajverima amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt. Izvršeno je čišćenje imena blob-ova u dts datotekama (devicetree) za ARM čipove.

Izvor: linux.org.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster