Izdanje kernela Linux 6.11

Nakon dva mjeseca razvoja, Linus Torvalds je objavio kernel. Linux 6.11. Među najznačajnijim promjenama: podrška za atomske operacije pisanja na nivou bloka, podrška za operacije bind() i listen() u io_uring, novi mehanizam za blokiranje softverskih rukovalaca prekidima, mogućnost pisanja u izvršne datoteke koje se zrcale u memoriji, podrška za pisanje drajvera blok uređaja u Rust jeziku, optimizacija poziva getrandom(), nova implementacija AES-GCM-a.

Nova verzija uključuje 15130 ispravki od 2078 programera, veličina zakrpe je 85 MB (promjene su uticale na 13282 fajla, dodano je 985857 linija koda, 268915 linija je obrisano). Posljednje izdanje je imalo 14564 popravka od 1989 programera, veličina zakrpe je bila 41 MB (pola veličine zakrpe kernela 6.11). Oko 46% svih promjena uvedenih u 6.11 odnosi se na drajvere uređaja, otprilike 17% promjena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 10% se odnosi na mrežni stog, 5% se odnosi na sistem datoteka i 3% odnose se na interne podsisteme kernela.

Ključne inovacije u kernelu 6.11:

  • Diskovni podsistem, I/O i sistemi datoteka
    • Implementirana je podrška za operacije atomskog pisanja na nivou bloka, u kojima se ili cijeli navedeni skup blokova ili nijedan blok ne upisuje na disk, što vam omogućava da se zaštitite od situacija u kojima nakon kvara hardvera samo dio blokova su upisani, dok u drugom dijelu ostaju stare informacije. Za omogućavanje atomskog načina pisanja, zastavica RWF_ATOMIC je dodana u sistemski poziv pwritev(). Informacije o podršci za atomsko pisanje (atomic_write_unit_min, atomic_write_unit_max i atomic_write_segments_max) u odnosu na pojedinačne datoteke mogu se dobiti pomoću funkcije statx().
    • Obezbeđena podrška za pisanje u izvršne datoteke povezane sa pokrenutim procesima. Ranije, kao iu drugim sistemima sličnim Unixu, kernel bi prikazivao grešku kada bi pokušao da upiše u izvršnu datoteku pokrenutog procesa. Ovo ograničenje je uklonjeno jer nema praktično značenje.
    • Implementirana je mogućnost razvoja drajvera blok uređaja na Rust jeziku. Kao primjer, rnull drajver je dodat kernelu, koji je analog null_blk drajvera, napisan u Rust jeziku.
    • U sistemu datoteka Btrfs, opcija montiranja “rescue=” implementira podršku za nove “ignoremetacsums” i “ignoresuperflags” modove, koji se mogu koristiti za premještanje nekih provjera u korisnički prostor prilikom vraćanja FS-a nakon neuspjeha. Implementacija operacije dinamički vraćajućih grupa blokova je redizajnirana kako bi se eliminisala pojava situacije nedostatka slobodnog prostora kada sistem datoteka nije u potpunosti pun.
    • Sistem datoteka ntfs3 podržava atribute „komprimovane” i „nepromenljive”, koji definišu komprimovane i nepromenljive datoteke.
    • U sistemima datoteka F2FS i Ext4, obrada imena datoteka neosjetljivih na velika i mala slova (razvoj velikih i malih slova) je pojednostavljena pohranjivanjem imena u obliku qstr nizova bez nepotrebnih konverzija velikih i malih slova.
    • U Ext4 FS, implementacija funkcije jbd2_transaction_committed je optimizirana za poboljšanje performansi na vrlo brzim diskovima (u testovima je zabilježeno povećanje obrađenih operacija u sekundi do 20%).
    • Sistemski poziv statx() dozvoljava prosljeđivanje NULL pokazivača umjesto praznog niza sa putanjom datoteke ako je postavljena zastavica AT_EMPTY_PATH.
    • Sistemski poziv open_by_handle_at() ima opuštene provjere dozvole datoteke u slučaju nedostatka ovlaštenja CAP_DAC_READ_SEARCH za pretraživanje početnog imenskog prostora. Ranije je potreba za ovlaštenjem CAP_DAC_READ_SEARCH na početnom imenskom prostoru spriječila da se sistemski poziv open_by_handle_at() koristi u kontejnerima.
    • Mogućnosti sistemskih poziva listmount() i statmount() su proširene. Dodata LISTMOUNT_REVERSE zastavica listimount() za prikaz sadržaja tabele tačaka montiranja obrnutim redosledom (najnoviji unosi na vrhu). statmount() implementira izlaz opcija postavljenih prilikom montiranja sistema datoteka. Oba sistemska poziva su dozvoljena za rad kada nema pristupa početnom imenskom prostoru (kada je dostupan samo pristup lokalnom ili eksternom imenskom prostoru).
    • Bcachefs FS implementira podršku za automatski transparentni oporavak problematičnih podataka pomoću kodova za oporavak od greške - ako dođe do I/O greške tokom čitanja ili se izračuna nepodudaranje kontrolne sume, problematični blok podataka se automatski prepisuje ako postoji redundantnost za oporavak.
  • Memorijski i sistemski servisi
    • Sastav uključuje zakrpe sa implementacijom novog mehanizma za blokiranje softverskih obrađivača prekida (BH, bottom-half), koji osigurava blokiranje korištenih struktura podataka, ali ne uzrokuje blokiranje paralelnog izvršavanja nepovezanog koda. Napominje se da je promjena omogućila ne samo smanjenje kašnjenja za jezgre koje rade u realnom vremenu, već i povećanje performansi konvencionalnih jezgri (na primjer, za neke vrste opterećenja došlo je do povećanja performansi mrežnog podsistema za 14.5%).
    • Asinhroni I/O podsistem io_uring je dodao podršku za operacije za implementaciju funkcija bind() i listen() koje se koriste za kreiranje mrežnih utičnica koje prihvataju veze.
    • Dodan skup ioctl operacija za NSFS pseudo-FS (NameSpace FS), koji se koristi za rad sa imenskim prostorima. Novi ioctl omogućavaju pretvaranje identifikatora procesa i grupa niti između različitih imenskih prostora identifikatora procesa (PID imenskog prostora). Slični ioctl, koji omogućavaju određivanje fajl deskriptora procesa u odvojenim prostorima imena na osnovu pidfd identifikatora, takođe su dodati pidfd pseudo-FS.
    • Za BPF programe, dodata je podrška za novi iterator za rad sa bit maskama, koji se može koristiti, na primjer, za ponavljanje pojedinačnih bitova u memorijskim područjima, kao što je cpumask. Dodan mehanizam za slanje obavještenja procesima u korisničkom prostoru da je objekt struct_ops odvojen (detach/unregister). Raspon tipova koji se mogu koristiti u nizovima je proširen (na primjer, možete deklarirati nizove koji imaju elemente sa tipovima kptr, bpf_rb_root i bpf_list_head). Predložen je pouzdaniji mehanizam Split BTF (BPF Type Format), koji se koristi za provjeru tipova u BPF pseudokodu.
    • Dodan je podsistem koji vam omogućava da organizirate napajanje uređaja po određenom redoslijedu, u slučaju da se jedan uređaj mora aktivirati prije drugog (na primjer, kada se aktiviraju bežični čipovi na Qualcomm platformama).
    • Dodan je modul “Sloppy logic analizator” koji vam omogućava da kreirate jednostavne analizatore logičkih signala koji koriste GPIO i rade na zasebnom CPU jezgru.
    • Dodata podrška za runtime konstante, koje se mogu koristiti umjesto varijabli koje se jednom inicijaliziraju. Na primjer, runtime konstante se mogu koristiti umjesto varijabli koje pohranjuju pokazivač i veličinu za dentry cache. Ove varijable se postavljaju prilikom pokretanja sistema i nikada se ne mijenjaju. Ideja je da se vrijednosti takvih varijabli zamijene direktno u instrukcije u kodu, eliminišući prekomjerne troškove povezane s manipulacijom pokazivača.
    • Nastavak migracije promjena iz Rust-for-branchLinux, vezano za korištenje Rusta kao drugog jezika za razvoj drajvera i kernel modula (podrška za Rust nije omogućena po defaultu i ne uključuje Rust kao obaveznu zavisnost pri izgradnji kernela). Dodana je podrška za Rust 1.80 (Rust 1.78 ostaje podržan kao minimalna verzija). Pored prethodno spomenutih alata za razvoj blokovnih drajvera, nova verzija dodaje apstrakcije za učitavanje firmvera, pristup korisničkom prostoru (uaccess) i rad sa strukturom "stranice".
    • Za x86-64 sisteme implementiran je novi sistemski poziv uretprobe() koji optimizira mehanizam praćenja uretprobe za praćenje povratnih vrijednosti funkcija u aplikacijama korisničkog prostora.
    • Dodane su opcije komandne linije kernela: "reserve_mem" za rezervisanje imenovane memorijske regije u vrijeme pokretanja i "ramoops.mem_name" za pohranjivanje memorijske regije kreirane putem reserve_mem.
    • U memorijskom kontroleru baziranom na cgroup, parametar "swappiness" je dodat datoteci memory.reclaim, kroz koju se određuju postavke povrata memorije, omogućavajući vam da promijenite ravnotežu između premještanja anonimnih memorijskih stranica u swap odjeljak i oslobađanja memorije stranice koje zauzima keš datoteka.
    • Dodano PROCMAP_QUERY ioctl interfejs za efikasniju pretragu za virtuelne memorijske oblasti u /proc/PID/maps.
    • Dodata je oznaka MAP_DROPPABLE u sistemski poziv mmap() da se zatraži memorija koja nikada neće biti bačena u swap particiju i može se ukloniti ako nema dovoljno memorije.
    • Za ARM64 arhitekturu, implementirana je podrška za hot plugging (prenos u online/offline modove) fizičkih i virtuelnih CPU-a na sistemima sa ACPI.
    • Za RISC-V arhitekturu, obezbeđena je podrška za vruće uključivanje memorije i dodata je podrška za GCC dodatak STACKLEAK (inicijalizuje sve varijable pohranjene na steku kako bi se spriječilo curenje informacija iz kernela kroz neinicijalizirane varijable koje mogu sadržavati ostatke prethodno pohranjenih podataka na stogu).
    • Mehanizam lažnog EFI mapiranja memorije tokom pokretanja sistema je uklonjen. Ovaj mehanizam nije korišten u praksi i ometao je razvoj u području povjerljivog izvršavanja. virtuelne mašine.
    • Podrška za PowerPC 40x platformu je ukinuta.
    • Zahtjevi za GNU Make verziju su povećani - najmanje je GNU Make izdanje objavljeno 2013. potrebno za izgradnju kernela.
  • Virtuelizacija i sigurnost
    • Integrisane zakrpe koje značajno (do 15 puta) ubrzavaju dobijanje slučajnih brojeva putem getrandom() sistemskog poziva. Optimizacija se zasniva na korišćenju mehanizma vDSO (virtuelni dinamički deljeni objekat), koji omogućava da se rukovalac sistemskim pozivima premesti iz kernela u korisnički prostor i izbegne promene konteksta. Učitavanje implementacije sistemskog poziva u adresni prostor procesa direktno od strane kernela.
    • Za x86-64 sisteme, uključena je nova implementacija algoritma za šifrovanje AES-GCM, koji podržava upotrebu VAES, VPCLMULQDQ i AVX512/AVX10 vektorskih instrukcija za brže računanje. U obavljenim testovima, povećanje performansi nakon prelaska na novu implementaciju dostiže 156%. Implementacija AES-GCM na asemblerskom jeziku je u potpunosti prepisana uzimajući u obzir ispravnost, performanse, veličinu i sveobuhvatnu dokumentaciju koda.
    • Implementirana je mogućnost pokretanja kernela kao gostujućeg sistema u virtualiziranim okruženjima korištenjem AMD SEV-SNP (Secure Nested Paging) procesorskog proširenja, dizajniranog za osiguranje sigurnog rada s ugniježđenim tabelama stranica memorije. SVSM modul se može koristiti za dodatnu izolaciju pristupa resursima iz virtuelnih mašina (Linux Modul za sigurne VM usluge). U hipervizoru KVM Dodata je početna podrška za pokretanje gostujućih sistema zaštićenih AMD SEV-SNP-om.
    • Dodan je poseban alokator pločastih ploča, omogućen preko CONFIG_SLAB_BUCKETS parametra i koji pruža zaštitu od napada korištenjem tehnike “raspršivanja na hrpu”.
    • Ioctl poziv je dodat u KVM hipervizor da proaktivno dodijeli memoriju gostujućem sistemu prije nego što se stvarno pokrene.
  • Mrežni podsistem
    • Dodan sysctl parametar net.tcp_rto_min_us, preko kojeg možete konfigurirati minimalno vrijeme retransmisije za TCP utičnice.
    • Mogućnost finog podešavanja konfiguracije rukovalaca prekidima za mrežna sučelja pomoću Net DIM interfejsa dodata je uslužnom programu ethtool.
  • Oprema
    • AMDGPU drajver uključuje početnu podršku za AMD RDNA4 (“GFX12”) GPU-ove. Dodata podrška za DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 i MMHUB 4.1 tehnologije.
    • Nastavljen je rad na Xe drm drajveru (Direct Rendering Manager) za GPU zasnovane na Intel Xe arhitekturi, koji se koristi u Intel Arc familiji video kartica i integrisane grafike, počevši od Tiger Lake procesora. Poboljšana podrška za GPU-ove bazirane na Battlemage, Arrow Lake i Lunar Lake mikroarhitekturama.
    • U DRM (Direct Rendering Manager) podsistemu, rukovalac za EDID (Prošireni prikaz identifikacionih podataka) parametara postavljenih od strane monitora je ponovo napisan.
    • i915 drajver dodaje podršku za Battlemage Xe2 GPU-ove i omogućava CMRR (Stopa osvježavanja sadržaja) mod po defaultu.
    • Podrška za SM7150 platformu i X185 i a505 GPU dodata je msm DRM drajveru (Qualcomm Adreno GPU).
    • Dodata podrška za Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8 Lincoln LCD tustech COM070H4P197 ekran paneli 35ULC ,AUO G3STN70, K&d kd104ne01-101ti.
    • Audio podsistem dodaje podršku za Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318 i RT1320 kod koda Realtek RT5242.
    • Posljednji krug izmjena napravljen je kako bi se osigurala podrška za ARM SoC Snapdragon X Elite, koji koristi Qualcommov vlastiti 12-jezgreni Oryon CPU i Qualcomm Adreno GPU. Čip je namijenjen za korištenje u prijenosnim i PC računarima, a ispred Apple M3 i Intel Core Ultra 155H čipova u mnogim testovima performansi. Promjene dodate kernelu 6.11 odnose se na Adreno X1-85 GPU podršku i upravljanje napajanjem. Među uređajima baziranim na Snapdragon X Elite SoC-u, najavljena je podrška za ASUS Vivobook S15 i Lenovo Yoga Slim7x laptopove.

Istovremeno, Latinoamerička fondacija za slobodni softver kreirala je verziju potpuno besplatnog kernela 6.11 - Linux-libre 6.10-gnu, očišćen od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili dijelove koda s ograničenim opsegom od strane proizvođača. Izdanje 6.11 uključuje ažurirani kod za čišćenje blobova u drajverima mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth i tas2781. Očišćeni su novi drajveri amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 i pcie-rcar-gen4. Nazivi blobova u dts datotekama (devicetree) za Aarch64 arhitekturu su očišćeni. Dodana je tiha verzija primitiva za učitavanje firmvera (nowait-nowarn). Dodan je kod za detekciju primitiva za učitavanje firmvera u Rust kodu.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster