Izdanje kernela Linux 5.11

Nakon dva mjeseca razvoja, Linus Torvalds je predstavio izdanje Linux kernela 5.11. Među najznačajnijim promjenama: podrška za Intel SGX enklave, novi mehanizam za presretanje sistemskih poziva, virtuelna pomoćna magistrala, zabrana sastavljanja modula bez MODULE_LICENSE(), način brzog filtriranja za sistemske pozive u seccomp-u, ukidanje podrške za ia64 arhitektura, transfer WiMAX tehnologije u granu "staging", mogućnost enkapsulacije SCTP-a u UDP.

Nova verzija uključuje 15480 popravki od 1991 programera, veličina zakrpe je 72 MB (promjene su uticale na 12090 datoteka, dodano je 868025 linija koda, 261456 linija je obrisano). Oko 46% svih promjena uvedenih u 5.11 odnosi se na drajvere uređaja, otprilike 16% promjena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 13% se odnosi na mrežni stog, 3% na sistem datoteka i 4% odnose se na interne podsisteme kernela.

Glavne inovacije:

  • Diskovni podsistem, I/O i sistemi datoteka
    • Nekoliko opcija montiranja je dodato u Btrfs za korištenje prilikom vraćanja podataka iz oštećenog sistema datoteka: “rescue=ignorebadroots” za montiranje, uprkos oštećenju nekih korijenskih stabala (extent, uuid, data reloc, device, csum, slobodni prostor), “ rescue=ignoredatacsums” da onemogućite provjeru kontrolne sume za podatke i “rescue=all” da istovremeno omogućite 'ignorebadroots', 'ignoredatacsums' i 'nologreplay' modove. Opcija montiranja "inode_cache", koja je ranije bila zastarjela, je ukinuta. Kod je pripremljen da implementira podršku za blokove sa metapodacima i podacima manjim od veličine stranice (PAGE_SIZE), kao i podršku za zonirani način raspodjele prostora. Zahtjevi bez međuspremnika (Direktni IO) su premješteni u iomap infrastrukturu. Izvedba niza operacija je optimizirana; u nekim slučajevima ubrzanje može doseći desetine posto.
    • XFS implementira oznaku "needsrepair", koja signalizira potrebu za popravkom. Kada je ova zastavica postavljena, sistem datoteka se ne može montirati dok zastavicu ne resetuje uslužni program xfs_repair.
    • Ext4 nudi samo ispravke grešaka i optimizacije, kao i čišćenje koda.
    • Dozvoljen je ponovni izvoz sistema datoteka montiranih preko NFS-a (tj. particija montirana preko NFS-a sada se može izvesti preko NFS-a i koristiti kao međukeš memorija).
    • Close_range() sistemski poziv, koji omogućava procesu da zatvori čitav niz otvorenih deskriptora fajlova odjednom, dodao je opciju CLOSE_RANGE_CLOEXEC za zatvaranje deskriptora u režimu zatvaranja na izvršavanje.
    • F2FS sistem datoteka dodaje nove ioctl() pozive kako bi omogućio kontrolu korisničkog prostora nad datotekama koje se pohranjuju u komprimiranom obliku. Dodata opcija montiranja "compress_mode=" za odabir da li da se rukovalac kompresije postavi na stranu kernela ili u korisnički prostor.
    • Pruža mogućnost montiranja Overlayf-ova od strane neprivilegiranih procesa koristeći poseban korisnički prostor imena. Da bi se provjerila usklađenost sa implementacijom sigurnosnog modela, izvršena je revizija punog koda. Overlayfs takođe dodaje mogućnost pokretanja pomoću kopija slika sistema datoteka opciono onemogućavajući UUID provjeru.
    • Ceph sistem datoteka je dodao podršku za msgr2.1 protokol, koji omogućava korištenje AES-GCM algoritma prilikom prijenosa podataka u šifriranom obliku.
    • Modul dm-multipath implementira mogućnost uzimanja u obzir afiniteta CPU-a (“IO afinitet”) prilikom odabira rute za I/O zahtjeve.
  • Memorijski i sistemski servisi
    • Dodan je novi mehanizam presretanja sistemskog poziva, zasnovan na prctl(), koji vam omogućava da generišete izuzetke iz korisničkog prostora kada pristupate određenom sistemskom pozivu i emulirate njegovo izvršenje. Ova funkcionalnost je potrebna u Wine i Proton-u za emulaciju Windows sistemskih poziva, što je neophodno kako bi se osigurala kompatibilnost sa igrama i programima koji direktno izvršavaju sistemske pozive zaobilazeći Windows API (na primjer, radi zaštite od neovlaštene upotrebe).
    • Sistemski poziv userfaultfd(), dizajniran za rukovanje greškama stranica (pristup nedodijeljenim memorijskim stranicama) u korisničkom prostoru, sada ima mogućnost da onemogući rukovanje iznimkama koje se dešava na nivou kernela kako bi se otežalo iskorištavanje određenih ranjivosti.
    • BPF podsistem ima dodatnu podršku za lokalnu pohranu zadataka, koja obezbjeđuje povezivanje podataka za određeni BPF rukovalac.
    • Obračun potrošnje memorije od strane BPF programa je potpuno redizajniran - umjesto memlock rlimit-a predložen je cgroup kontroler za upravljanje korištenjem memorije u BPF objektima.
    • Mehanizam BTF (BPF Type Format), koji pruža informacije o provjeri tipa u BPF pseudokodu, pruža podršku za module kernela.
    • Dodata podrška za shutdown(), renameat2() i unlinkat() sistemske pozive za io_uring asinhroni I/O interfejs. Prilikom pozivanja io_uring_enter(), dodana je mogućnost specificiranja vremenskog ograničenja (možete provjeriti podršku za argument za navođenje timeouta pomoću oznake IORING_FEAT_EXT_ARG).
    • Arhitektura ia64 koja se koristi u Intel Itanium procesorima prebačena je u kategoriju bez roditelja, što znači da je testiranje prestalo. Hewlett Packard Enterprise je prestao da prima narudžbe za novu Itanium opremu, a Intel je to učinio prošle godine.
    • Podrška za sisteme zasnovane na MicroBlaze arhitekturi koji ne uključuju jedinicu za upravljanje memorijom (MMU) je ukinuta. Ovakvi sistemi odavno nisu viđeni u svakodnevnom životu.
    • Za MIPS arhitekturu, dodata je podrška za testiranje pokrivenosti koda pomoću uslužnog programa gcov.
    • Dodata podrška za virtuelnu pomoćnu magistralu za povezivanje sa multifunkcionalnim uređajima koji kombinuju funkcionalnost koja zahteva različite drajvere (na primer, mrežne kartice sa podrškom za Ethernet i RDMA). Sabirnica se može koristiti za dodjelu primarnog i sekundarnog drajvera uređaju, u situacijama kada je korištenje MFD (Multi-Function Devices) podsistema problematično.
    • Za RISC-V arhitekturu, dodata je podrška za CMA (Contiguous Memory Allocator) sistem dodjeljivanja memorije, koji je optimiziran za dodjelu velikih susjednih memorijskih područja korištenjem tehnika kretanja memorijskih stranica. Za RISC-V, alati su takođe implementirani za ograničavanje pristupa /dev/mem i uzimanje u obzir vremena obrade prekida.
    • Za 32-bitne ARM sisteme, dodata je podrška za KASan (Kernel address sanitizer) alat za otklanjanje grešaka, koji pomaže u identifikaciji grešaka pri radu sa memorijom. Za 64-bitni ARM, KASan implementacija je konvertovana da koristi MTE oznake (MemTag).
    • Dodan sistemski poziv epoll_pwait2() kako bi se omogućilo vremensko ograničenje s preciznošću u nanosekundama (poziv epoll_wait manipulira milisekundama).
    • Sistem izgradnje sada prikazuje grešku kada pokušava izgraditi module kernela koji se mogu učitati u kojima licenca koda nije definirana pomoću makronaredbe MODULE_LICENSE(). Od sada, korištenje makroa EXPORT_SYMBOL() za statičke funkcije također će uzrokovati grešku u izgradnji.
    • Dodata podrška za mapiranje GEM objekata iz memorije koja se koristi za I/O, što je omogućilo da se ubrza rad sa framebufferom na nekim arhitekturama.
    • Kconfig je ukinuo podršku za Qt4 (dok je zadržao podršku za Qt5, GTK i Ncurses).
  • Virtuelizacija i sigurnost
    • Podrška za način brzog odgovora dodata je seccomp() sistemskom pozivu, koji vam omogućava da vrlo brzo odredite da li je određeni sistemski poziv dozvoljen ili zabranjen na osnovu bitmape konstantne akcije prikačene procesu, koji ne zahtijeva pokretanje BPF rukovalac.
    • Integrisane komponente kernela za kreiranje i upravljanje enklavama zasnovane na Intel SGX (Software Guard eXtensions) tehnologiji, koja omogućava aplikacijama da izvršavaju kod u izolovanim šifrovanim oblastima memorije, kojima ostatak sistema ima ograničen pristup.
    • Kao dio inicijative za ograničavanje pristupa iz korisničkog prostora MSR-u (registru specifičnom za model), upisivanje u registar MSR_IA32_ENERGY_PERF_BIAS, koji vam omogućava promjenu načina energetske efikasnosti procesora (“normal”, “performanse”, “powersave”) , je zabranjeno.
    • Mogućnost onemogućavanja migracije zadataka visokog prioriteta između CPU-a je premještena iz kernel-rt grane za sisteme u realnom vremenu.
    • Za ARM64 sisteme, dodata je mogućnost korišćenja MTE oznaka (MemTag, Memory Tagging Extension) za memorijske adrese rukovaoca signalom. Upotreba MTE-a je omogućena specificiranjem opcije SA_EXPOSE_TAGBITS u sigaction() i omogućava vam da provjerite ispravnu upotrebu pokazivača za blokiranje iskorištavanja ranjivosti uzrokovanih pristupom već oslobođenim memorijskim blokovima, prekoračenjem bafera, pristupima prije inicijalizacije i korištenjem izvan trenutni kontekst.
    • Dodan parametar "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING" koji omogućava dm-verity podsistemu da provjeri hash potpise certifikata smještenih u sekundarni prsten ključeva. U praksi, podešavanje vam omogućava da verifikujete ne samo sertifikate ugrađene u kernel, već i sertifikate učitane tokom rada, što omogućava ažuriranje sertifikata bez ažuriranja celog kernela.
    • Korisnički način rada Linux je dodao podršku za suspend-to-idle mod, koji vam omogućava da zamrznete okruženje i koristite signal SIGUSR1 za buđenje iz stanja mirovanja.
    • Mehanizam virtio-mem, koji vam omogućava vruće uključivanje i isključivanje memorije sa virtuelnih mašina, dodao je podršku za Big Block Mode (BBM), koji omogućava prijenos ili preuzimanje memorije u blokovima većim od veličine memorije kernela blok, koji je neophodan za optimizaciju VFIO u QEMU.
    • Podrška za CHACHA20-POLY1305 šifru je dodana implementaciji TLS-a jezgra.
  • Mrežni podsistem
    • Za 802.1Q (VLAN) implementiran je mehanizam za upravljanje greškama veze (CFM, Connectivity Fault Management), koji vam omogućava da identifikujete, verifikujete i izolujete kvarove u mrežama sa virtuelnim mostovima (Virtual Bridged Networks). Na primjer, CFM se može koristiti za izolaciju problema u mrežama koje pokrivaju više nezavisnih organizacija čiji zaposleni imaju pristup samo svojoj opremi.
    • Dodata podrška za inkapsuliranje paketa SCTP protokola u UDP pakete (RFC 6951), što vam omogućava da koristite SCTP na mrežama sa starijim prevodiocima adresa koji ne podržavaju direktno SCTP, kao i implementaciju SCTP na sisteme koji ne pružaju direktan pristup IP-u sloj.
    • Implementacija WiMAX tehnologije je prebačena u fazu i planirano je za uklanjanje u budućnosti ako nema korisnika kojima je potreban WiMAX. WiMAX se više ne koristi u javnim mrežama, a u kernelu jedini drajver sa kojim se WiMAX može koristiti je zastareli Intel 2400m drajver. Podrška za WiMAX je ukinuta u mrežnom konfiguratoru NetworkManager 2015. godine. Trenutno je WiMax gotovo u potpunosti zamijenjen tehnologijama kao što su LTE, HSPA+ i Wi-Fi 802.11n.
    • Radilo se na optimizaciji performansi obrade dolaznog TCP saobraćaja u zerocopy modu, tj. bez dodatnog kopiranja u nove bafere. Za saobraćaj srednje veličine, koji pokriva desetine ili nekoliko stotina kilobajta podataka, primetno je efikasnije korišćenje zerocopy umesto recvmsg(). Na primjer, implementirane promjene omogućile su povećanje efikasnosti obrade prometa u RPC stilu sa 32 KB porukama kada se koristi nulta kopija za 60-70%.
    • Dodani su novi ioctl() pozivi za kreiranje mrežnih mostova koji obuhvataju više PPP veza. Predložena mogućnost omogućava premeštanje okvira sa jednog kanala na drugi, na primer sa PPPoE na PPPoL2TP sesiju.
    • Integracija u jezgro MPTCP (MultiPath TCP), proširenje TCP protokola za organizovanje rada TCP veze sa isporukom paketa istovremeno duž nekoliko ruta kroz različite mrežne interfejse povezane sa različitim IP adresama. Novo izdanje uvodi podršku za opciju ADD_ADDR za oglašavanje dostupnih IP adresa na koje se mogu povezati prilikom dodavanja novih tokova u postojeću MPTCP vezu.
    • Dodata mogućnost konfigurisanja radnji kada je budžet za prozivanje veze prekoračen (zauzeto anketiranje). Ranije dostupan SO_BUSY_POLL mod je značio prebacivanje na softirq kada je budžet iscrpljen. Za aplikacije koje trebaju nastaviti koristiti prozivanje, predložena je nova opcija SO_PREFER_BUSY_POLL.
    • IPv6 implementira podršku za SRv6 End.DT4 i End.DT6 modove, koji se koriste za kreiranje višekorisničkih IPv4 L3 VPN-ova i VRF (Virtuelno usmjeravanje i prosljeđivanje) uređaja.
    • Netfilter je objedinio implementaciju skupova izraza, što je omogućilo specificiranje više izraza za svaki element liste skupova.
    • API-ji su dodani u 802.11 bežični stog za konfiguraciju SAR ograničenja snage, kao i AE PWE i HE MCS parametre. Intel iwlwifi drajver je dodao podršku za opseg od 6GHz (Ultra High Band). Qualcomm Ath11k drajver je dodao podršku za FILS (Fast Initial Link Setup, standardizovanu kao IEEE 802.11ai) tehnologiju, koja vam omogućava da se rešite kašnjenja u romingu tokom migracije sa jedne pristupne tačke na drugu.
  • Oprema
    • Amdgpu drajver pruža podršku za AMD "Green Sardine" APU (Ryzen 5000) i "Dimgrey Cavefish" GPU (Navi 2), kao i početnu podršku za AMD Van Gogh APU sa Zen 2 jezgrom i RDNA 2 GPU (Navi 2). Dodata podrška za nove Renoir APU identifikatore (bazirane na Zen 2 CPU-u i Vega GPU-u).
    • i915 drajver za Intel video kartice podržava IS (Integer scaling) tehnologiju sa implementacijom filtera za povećanje skale uzimajući u obzir stanje susjednih piksela (Interpolacija najbližeg susjeda) za određivanje boje nedostajućih piksela. Podrška za diskretne Intel DG1 kartice je proširena. Implementirana je podrška za “Big Joiner” tehnologiju, koja je prisutna od Ice Lake / Gen11 čipova i omogućava korištenje jednog transkodera za obradu dva toka, na primjer, za izlaz na 8K ekran preko jednog DisplayPort-a. Dodan mod za asinhrono prebacivanje između dva bafera u video memoriji (async flip).
    • Nouveau drajver je dodao početnu podršku za NVIDIA GPU zasnovane na Ampere mikroarhitekturi (GA100, GeForce RTX 30xx), do sada ograničenu na alate za kontrolu video modova.
    • Dodata podrška za 3WIRE protokol koji se koristi u LCD panelima. Dodata podrška za novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 i ABT Y030XX067A 3.0 panele. Odvojeno, možemo primijetiti podršku za panel OnePlus 6 i 6T pametnih telefona, što je omogućilo organiziranje učitavanja neizmijenjenog kernela na uređaje.
    • Dodata podrška za prvi Intelov diskretni USB4 host kontroler, Maple Ridge.
    • Dodata podrška za Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI i XCVR, Realtek RT715 i Qualcomm SM8250 audio kodeke.
    • Dodata podrška za ARM ploče, uređaje i platforme: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity​l, MStar Infinity2M730, NP 382CM ​Mikrotik baziran na Marvell Prestera 98DX3236, serveri sa Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, „Trogdor“ Chromebook, Kobol Helios64, Engicam PX30.Core.
    • Ugrađena podrška za Ouya igraću konzolu zasnovanu na NVIDIA Tegra 3.

Istovremeno, Latinoamerička fondacija za slobodni softver formirala je verziju potpuno besplatnog kernela 5.11 - Linux-libre 5.11-gnu, očišćenu od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili sekcije koda, čiji je opseg ograničen. od strane proizvođača. Novo izdanje čisti drajvere za qat_4xxx (kripto), lt9611uxcm (dsi/hdmi most), ccs/smia++ (senzor), ath11k_pci, nxp audio primopredajnik i mhi pci kontroler. Ažurirani kod za čišćenje mrlja u drajverima i podsistemima amdgpu, btqca, btrtl, btusb, i915 csr. Onemogućene nove blob-ove u m3 rpoc, idt82p33 ptp clock i qualcomm arm64.

izvor: opennet.ru

Dodajte komentar