Nakon dva mjeseca razvoja, Linus Torvalds izdanje jezgre . Među najistaknutijim promjenama su: radni način Ext4 bez obzira na veličinu slova, odvojeni sistemski pozivi za montiranje FSer, drajveri za GPU Mali 4xx/6xx/7xx, mogućnost obrade promjena vrijednosti sysctl u BPF programima, modul device-mapper dm-dust, zaštita od MDS napada, podrška za Sound Open Firmware za DSP, optimizacija performansi BFQ, te dovršavanje podsubsistema PSI (Pressure Stall Information) za korištenje u Androidu.
U novu verziju je unijeto 15100 ispravki od 1882 programera,
veličina zakrpe je 62 MB (promjene su obuhvatile 30889 datoteka, dodano je 625094 linija koda, uklonjeno 531864 linija). Oko 45% svih predloženih promjena u 5.2
odnosi se na drajvere uređaja, otprilike 21% promjena ima
veze s ažuriranjem specifičnog koda za hardverske arhitekture, 12%
se odnosi na mrežni stog, 3% na datotečne sisteme i 3% na unutarnje
podsubsisteme jezgre. 12.4% svih promjena pripremila je kompanija Intel, 6.3% Red Hat, 5.4% Google, 4.0% AMD, 3.1% SUSE, 3% IBM, 2.7% Huawei, 2.7% Linaro, 2.2% ARM, 1.6% Oracle.
:
- Sistem diska, ulaz/izlaz i datotečni sustavi
- Za Ext4 dodana je funkcionalnost rada bez obzira na veličinu slova u imenima datoteka, koja se aktivira samo za određene prazne direktorije uz pomoć novog atributa „+F“ (EXT4_CASEFOLD_FL). Kada se ovaj atribut postavi na direktorij, sve operacije s datotekama i poddirektorijima unutar njega će se izvoditi bez obzira na veličinu slova, uključujući ignoriranje veličine slova u operacijama pretraživanja i otvaranja datoteka (na primjer, datoteke Test.txt, test.txt i test.TXT u takvim direktorijima će se smatrati identičnima). Po defaultu, FS i dalje ostaje osjetljiv na veličinu slova, osim direktorija s atributom „chattr +F“;
- Ujednačene su funkcije obrade UTF-8 znakova u imenima datoteka koje se primjenjuju prilikom izvođenja operacija usporedbe i normizacije nizova;
- U XFS je dodana infrastruktura za praćenje stanja datotečnog sistema i novi ioctl za provjeru statusa funkcionalnosti. Implementirana je eksperimentalna mogućnost za provjeru na letu (online scrub) brojača superblokova.
- Dodan je novi modul device-mapper „“, koji omogućava simulaciju pojave bad-blokova na uređaju ili grešaka prilikom čitanja s diska. Modul olakšava otklanjanje problema i testiranje aplikacija i raznih sistema za pohranu u uvjetima mogućih kvarova;
- značajno optimizirano korištenje resursa od strane BFQ planera ulaza/izlaza. U uvjetima visoke opterećenosti ulaza/izlaza provedene su optimizacije do 80% skraćeno vrijeme takvih operacija kao što su pokretanje aplikacija;
- Dodana je serija sistemskih poziva za montiranje datotečnih sustava: , , , , i . Ovi sistemi poziva omogućuju odvojeno obrađivanje različitih faza montiranja (obrađivanje superbloka, dobivanje informacija o FS-u, montiranje, pričvršćivanje na montažnu točku), koje su se ranije izvodile putem zajedničkog sistemskog poziva mount(). Odvojeni pozivi omogućuju izvođenje složenijih scenarija montiranja i odvojeno obavljanje operacija kao što su ponovna konfiguracija superbloka, uključivanje opcija, promjena montažne točke i premještanje u drugi prostor imena. Osim toga, odvojena obrada omogućuje precizno određivanje uzroka grešaka i postavljanje više izvora za višeslojne FS-ove, kao što je overlayfs;
- U interfes za asinkrono ulaz/izlaz io_uring dodana je nova operacija IORING_OP_SYNC_FILE_RANGE, koja izvršava radnje ekvivalentne sistemskom pozivu , kao i implementirana mogućnost registracije eventfd s io_uring i dobivanja obavijesti o završetku operacija;
- Za CIFS datotečni sustav dodan je ioctl FIEMAP, koji omogućava učinkovito mapiranje ekstenata, kao i podršku za modove SEEK_DATA i SEEK_HOLE;
- U FUSE pod sustavu API za upravljanje keširanjem podataka;
- U Btrfs-u poboljšana je izvedba qgroups i povećana brzina izvršenja fsync-a za datoteke s više tvrdih poveznica. Poboljšan je kod za provjeru cjelovitosti podataka, koji sada uzima u obzir moguće oštećenje informacija u RAM-u prije nego što se podaci zapisu na disk;
- U CEPH dodana je podrška za izvoz snimaka putem NFS;
- Poboljšana je implementacija montiranja NFSv4 u 'soft' modu (za vrijeme pogreške pristupa serveru u 'soft' modu odmah se vraća kod greške, dok u 'hard' modu kontrola ne prelazi dok FS ne postane dostupna ili ne istekne vrijeme). U novom izdanju osigurana je preciznija obrada vremenskog ograničenja, ubrzano je obnavljanje nakon kvara i dodana je nova opcija montiranja 'softerr', koja omogućuje promjenu koda greške (ETIMEDOUT) koji se vraća kada dođe do vremenskog ograničenja;
- U API nfsdcld, namijenjenom praćenju stanja klijenata NFS, omogućeno je pravilno praćenje stanja klijenta od strane NFS poslužitelja prilikom ponovnog pokretanja. Na taj način, daemon nfsdcld sada može služiti kao obrtnik nfsdcltrack;
- Za AFS emulacija blokada bajtnih opsega u datotekama ();
- Virtualizacija i sigurnost
- Izvršen je rad na otklanjanju dijelova u jezgri koji dopuštaju izvršavanje koda iz dostupnih za pisanje predstavljene memorije, što omogućava blokiranje potencijalnih propusta koji se mogu iskoristiti tijekom napada;
- Dodana je nova opcija komandne linije jezgre «mitigations=», koja pruža pojednostavljeni način upravljanja uključivanjem određenih tehnika zaštite od ranjivosti povezanih sa spekulativnim izvršavanjem instrukcija u CPU-u. Prosljeđivanje «mitigations=off» isključuje sve dostupne metode, dok primjenjivani zadani način «mitigations=auto» uključuje zaštitu, ali ne utječe na korištenje Hyper Threading-a. Način «mitigations=auto,nosmt» dodatno isključuje Hyper Threading, ako to zahtijeva metoda zaštite.
- podrška za elektronički digitalni potpis prema ГОСТ Р 34.10-2012 (RFC 7091, ISO/IEC 14888-3), Vitalijem Čikunovim iz «Bazalt SPO». U ugrađenu implementaciju TLS dodana je podrška za AES128-CCM. U modul crypto_simd dodana je podrška za algoritme AEAD;
- U Kconfig odvojena sekcija «kernel hardening» s opcijama za jačanje zaštite jezgre. Trenutno su u novoj sekciji skupljene samo postavke za uključivanje jačanja provere GCC pluginova;
- Kod jezgre gotovo od neprekidnih izraza case u switch (bez return ili break nakon svakog bloka case). Preostaje ispraviti 32 od 2311 slučajeva takve upotrebe switch, nakon čega će pri gradnji jezgre moći primijeniti način «-Wimplicit-fallthrough»;
- Za arhitekturu PowerPC implementirana je podrška za hardverske mehanizme ograničavanja nepoželjnih putanja pristupa jezgre podacima u korisničkom prostoru;
- Dodavan kod za blokiranje klase MDS (Microarchitectural Data Sampling) u Intel procesorima. Provjeriti podložnost sustava ranjivosti moguće je putem SysFS varijable «/sys/devices/system/cpu/vulnerabilities/mds». Dva načina zaštite: potpuni, koji zahtijeva ažurirani mikrokod, i zaobilazni, koji ne jamči potpuno čišćenje CPU predmemorija prilikom prijenosa kontrole u korisnički prostor ili gostujući sustav. Za upravljanje načinima zaštite, u jezgru je dodana opcija „mds=“, koja može primiti vrijednosti „full“, „full,nosmt“ (+ onemogućavanje Hyper-Threadinga) i „off“;
- Na x86-64 sustavima, dodana je zaštita „stack guard-page“ za IRQ, mehanizme za debagiranje i obraditelje iznimki, čija je suština zamjena na granici sa stakom memorijskih stranica, čija upotreba generira iznimku (page-fault);
- Dodana je sysctl postavka vm.unprivileged_userfaultfd, koja upravlja mogućnošću korištenja sistemskog poziva userfaultfd() od strane procesâ bez privilegija;
- Mrežni subsistem
- Podrška za IPv6 gateway-e za IPv4 rute. Na primjer, sada je moguće odrediti pravila usmjeravanja u obliku „ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0“;
- Za ICMPv6 implementirani su ioctl pozivi icmp_echo_ignore_anycast i icmp_echo_ignore_multicast za ignoriranje ICMP ECHO za anycast i
multicast adrese. Mogućnost ograničavanja intenziteta obrade ICMPv6 paketa; - Za B.A.T.M.A.N. mesh protokol („Better Approach To Mobile Adhoc Networking“) koji omogućuje stvaranje decentraliziranih mreža, pri čemu je svaki čvor povezan s obližnjim čvorovima, podrška za pretvorbu iz multicast u unicast, kao i mogućnost upravljanja putem sysfs;
- U ethtool novi parametar Fast Link Down, koji omogućava smanjenje vremena primitka informacija o događaju isključivanja veze za 1000BaseT (u normalnim uvjetima, kašnjenje je do 750ms);
- Pojavila se vezivanje tunela Foo-Over-UDP za određenu adresu, mrežni interfejs ili soket (ranije se vezivanje radilo samo prema općoj masci);
- U bežičnom steku izvedba obraditelja
OWE (Opportunistic Wireless Encryption) u korisničkom prostoru; - U Netfilteru, u NAT lancima dodana je podrška za inet adresne prozore (na primjer, sada je moguće koristiti jedno pravilo prevođenja za obradu ipv4 i ipv6, bez razdvajanja pravila za ipv4 i ipv6);
- U netlink stroga provjera ispravnosti svih poruka i atributa, u kojoj se ne dozvoljava prekoračenje očekivane veličine atributa i zabranjeno je dodavanje dodatnih podataka na kraju poruka;
- Memorija i sistemske usluge
- U sistemski poziv clone() dodana je oznaka CLONE_PIDFD, pri čemu se roditeljskom procesu vraća datotečni deskriptor «pidfd», povezan s novokreiranim podprocesom. Ovaj datotečni deskriptor, na primjer, može se koristiti za slanje signala bez straha od stanja utrke (odmah nakon slanja signala, ciljni PID može biti oslobođen zbog završetka rada procesa i zauzet drugim procesom);
- Za drugu verziju cgroups dodana je funkcionalnost kontrolera freezer, preko kojeg se može zaustaviti rad unutar cgroup-a i privremeno osloboditi neke resurse (CPU, ulaz/izlaz i potencijalno čak i memoriju) za izvršenje drugih zadataka. Upravljanje se vrši preko upravljačkih datoteka cgroup.freeze i cgroup.events u stablu cgroup-a. Upis 1 u cgroup.freeze zamrzava procese u trenutnom cgroup-u i svim podgrupama. Budući da zamrzavanje zahtijeva malo vremena, dodatno je ponuđena datoteka cgroup.events preko koje se može saznati o završetku operacije;
- izvoz atributa memorije, povezanih s svakim čvorom u sysfs, što omogućuje iz korisničkog prostora određivanje načina obrade banki memorije u sustavima s heterogenom memorijom;
- Usavršena je podsustava PSI (Pressure Stall Information), koja omogućava analizu informacija o vremenu čekanja za dobivanje različitih resursa (CPU, memorija, ulaz/izlaz) za određene zadatke ili skupine procesa u cgroup-u. Pomoću PSI, korisnički procesori mogu preciznije ocijeniti razinu opterećenja sustava i prirodu usporavanja rada, u usporedbi s Load Average. U novoj verziji osigurana je podrška za podešavanje praga osjetljivosti i mogućnost korištenja poziva poll() za primanje obavijesti o aktiviranju postavljenih praga vrijednosti tijekom određenog vremenskog razdoblja. Ova mogućnost omogućava organizaciju praćenja nedostatka memorije u Androidu u ranijoj fazi, utvrđivanje izvora problema i završavanje nevažnih aplikacija, kako se ne bi došlo do očitih problema za korisnika. Tijekom stresnog testiranja, alati za praćenje potrošnje memorije na temelju PSI pokazali su 10 puta manje lažnih alarm than sa statistikama vmpressure;
- Optimizirana je provjera koda za BPF programe, što je za velike programe omogućilo do 20 puta bržu provjeru. Optimizacija je povećala limit veličine BPF programa s 4096 na milijun instrukcija;
- Za BPF programe omogućena je upotreba globalnih podataka, što omogućava definiranje globalnih varijabli i konstanti unutar programa;
- Dodano , što omogućava kontrolu promjena sysctl parametara iz BPF programa;
- Za MIPS32 arhitekturu implementiran je JIT kompilator za eBPF virtualnu mašinu;
- Za 32-bitnu PowerPC arhitekturu dodana je podrška za alat za ispravljanje grešaka KASan (Kernel Address Sanitizer), koji omogućava otkrivanje grešaka u radu s memorijom;
- Na x86-64 sustavima uklonjeno je ograničenje za smještaj dumpova stanja pri padu jezgre (crash-dump) u područjima memorije iznad 896MB;
- Za s390 arhitekturu implementirana je podrška za randomizaciju adresnog prostora jezgre (KASLR) i mogućnost verifikacije digitalnih potpisa pri učitavanju jezgre putem kexec_file_load();
- Za PA-RISC arhitekturu dodana je podrška za debager jezgre (KGDB), skok etiketa i kprobes;
- Oprema
- Uključen je drajver za GPU Mali 400/450, koji se koristi u mnogim starijim čipovima temeljenim na ARM arhitekturi. Za novije GPU Mali dodan je drajver Panfrost, koji podržava čipove zasnovane na mikroarhitekturama Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) i Bifrost (Mali G3x, G5x, G7x);
- Dodana je podrška za audio uređaje koji koriste otvorene firmvere (). Unatoč dostupnosti otvorenih drajvera, kod firmvera za zvučne čipove još uvijek je bio zatvoren i isporučivan u binarnom obliku. Projekt Sound Open Firmware razvijen je od strane Intela za stvaranje otvorenih firmvera za DSP čipove povezane s obradom zvuka (kasnije se razvoju pridružio i Google). Trenutno je u okviru projekta već pripremljen otvoreni firmver za zvučne čipove na Intel platformama Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake i IceLake;
- U Intel DRM drajveru (i915) dodana je podrška za čipove
Elkhartlake (Gen11). Dodani su PCI identifikatori za čipove Comet Lake (Gen9). Stabilizirana je podrška za čipove Icelake, za koje su također dodani dodatni PCI identifikatori uređaja.
način asinkronog prebacivanja između dva bafera u video memoriji (async flip) prilikom izvođenja operacija pisanja putem mmio, što je značajno povećalo performanse nekih 3D aplikacija (na primjer, performanse u testu 3DMark Ice Storm povećane su za 300-400%). Dodana podrška za tehnologiju (Zaštita digitalnog sadržaja visokog propusnog opsega) za šifriranje video signala prenesenog putem HDMI-a; - U drajveru amdgpu za GPU Vega20 podrška RAS (Reliability, Availability, Serviceability) i eksperimentalna podrška za podsklop SMU 11, koji je zamijenio tehnologiju Powerplay. Za GPU Vega12 podrška za BACO način (Bus Active, Chip Off). Dodana osnovna podrška za XGMI, visoko brzu sabirnicu (PCIe 4.0) za povezivanje GPU-a. U drajveru amdkfd dodani su nedostajući identifikatori kartica zasnovanih na GPU Polaris10;
- U drajveru Nouveau dodana je podrška za ploče temeljen na NVIDIA čipsetu Turing 117 (TU117, koristi se u GeForce GTX 1650). U
kconfig konfiguracija za isključivanje zastarjelih funkcija koje se više ne koriste u aktuelnim izdanjima libdrm; - U API-ju DRM i drajveru amdgpu dodana podrška za objekte sinhronizacije „timeline“, koji omogućuju izbjegavanje korištenja klasičnih brava.
- Iz grane staging prenesen je drajver vboxvideo za virtuelni GPU VirtualBox;
- Dodavan je drajver aspeed za GFX čip SoC ASPEED;
- Dodana podrška za ARM SoC i Intel Agilex ploče (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
ST Micro (stm32mp157a, stm32mp157c), NXP (
Eckelmann ci4x10 (i.MX6DL),i.MX8MM EVK (i.MX8MM),
ZII i.MX7 RPU2 (i.MX7),
ZII SPB4 (VF610),
Zii Ultra (i.MX8M),
TQ TQMa7S (i.MX7Solo),
TQ TQMa7D (i.MX7Dual),
Kobo Aura (i.MX50),
Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).
Istovremeno Latinskoamerička Zajednica slobodnog softvera
varijantu — , očišćenog od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili dijelove koda, čija je upotreba ograničena od strane proizvođača. U novom izdanju uključeno je učitavanje datoteka
Sound Open Firmware. Isključeno učitavanje blobova u drajverima
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp i ucsi_ccg. Ažuriran je kod za čišćenje blobova u drajverima i podsklopovima ixp4xx, imx-sdma, amdgpu, nouveau i goya, kao i u dokumentaciji o mikrokodu. Prekinuto je čišćenje blobova u drajveru r8822be zbog njegovog uklanjanja.
Izvor: opennet.ru
