Izdanje jezgre Linuxa 5.8

Nakon dva mjeseca razvoja Linus Torvalds podnijeti izdanje jezgre Linux 5.8. Među najznačajnijim promjenama: KCSAN detektor stanja utrke, univerzalni mehanizam za isporuku obavijesti u korisnički prostor, hardverska podrška za inline enkripciju, poboljšani sigurnosni mehanizmi za ARM64, podrška za ruski Baikal-T1 procesor, mogućnost zasebnog montiranja procfs instanci , implementacija Shadow sigurnosnih mehanizama za ARM64 Call Stack i BTI.

Kernel 5.8 postao je najveći u smislu broja promjena svih kernela tijekom cijelog postojanja projekta. Štoviše, promjene se ne odnose ni na jedan podsustav, već pokrivaju različite dijelove kernela i uglavnom su povezane s internim preradama i čišćenjem. Najveće promjene vidljive su kod vozača. Nova verzija uključivala je 17606 popravaka od 2081 programera, koji su utjecali na približno 20% svih datoteka u repozitoriju koda kernela. Veličina zakrpe je 65 MB (promjene su zahvatile 16180 datoteka, dodano je 1043240 redaka koda, izbrisano je 489854 redaka). Usporedbe radi, ogranak 5.7 imao je 15033 popravka i veličinu zakrpe od 39 MB. Oko 37% svih promjena uvedenih u 5.8 odnosi se na upravljačke programe uređaja, približno 16% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 11% se odnosi na mrežni stog, 3% se odnosi na sustav datoteka, a 4% povezani su s unutarnjim podsustavima jezgre.

Glavni inovacije:

  • Virtualizacija i sigurnost
    • Omogućeno je učitavanje modula kernela koji imaju sekcije s kodom u kojima su istovremeno postavljeni bitovi koji omogućuju izvođenje i pisanje. Promjena je implementirana kao dio većeg projekta za oslobađanje kernela od upotrebe memorijskih stranica koje omogućuju istovremeno izvođenje i pisanje.
    • Sada je moguće stvoriti zasebne procfs instance, dopuštajući korištenje više procfs točaka montiranja, montiranih s različitim opcijama, ali odražavajući isti prostor imena identifikatora procesa (pid imenski prostor). Prethodno su sve procfs točke montiranja odražavale samo jedan interni prikaz, a svaka promjena parametara montiranja utjecala je na sve druge točke montiranja povezane s istim prostorom imena ID-a procesa. Među područjima u kojima bi montaža s različitim opcijama mogla biti tražena je implementacija lagane izolacije za ugrađene sustave s mogućnošću skrivanja određenih vrsta procesa i informacijskih čvorova u procf-ovima.
    • Podrška za mehanizam je implementirana za ARM64 platformu
      Shadow-Call Stack, koje osigurava Clang kompajler za zaštitu od prepisivanja povratne adrese funkcije u slučaju prekoračenja međuspremnika stoga. Bit zaštite je spremiti povratnu adresu u zasebnu "sjenu" stog nakon prijenosa kontrole na funkciju i dohvaćanje te adrese prije izlaska iz funkcije.

    • Dodana je podrška za upute za ARM64 platformu ARMv8.5-BTI (Branch Target Indicator) za zaštitu izvršenja skupova instrukcija na koje se ne bi trebalo granati. Blokiranje prijelaza na proizvoljne dijelove koda implementirano je kako bi se spriječilo stvaranje gadgeta u eksploatacijama koje koriste tehnike povratno orijentiranog programiranja (ROP - Return-Oriented Programming; napadač ne pokušava svoj kod smjestiti u memoriju, već djeluje na već postojeće dijelove strojnih instrukcija koje završavaju povratnom kontrolnom instrukcijom, od koje se gradi lanac poziva za dobivanje željene funkcionalnosti).
    • Dodana hardverska podrška za inline enkripciju blok uređaja (Inline enkripcija). Inlinep uređaji za šifriranje obično su ugrađeni u pogon, ali su logično smješteni između sistemske memorije i diska, transparentno šifrirajući i dešifrirajući I/O na temelju ključeva određenih kernelom i algoritma šifriranja.
    • Dodana je opcija naredbenog retka jezgre "initrdmem" koja vam omogućuje da navedete adresu fizičke memorije initrd-a prilikom postavljanja početne slike za pokretanje u RAM.
    • Dodana nova mogućnost: CAP_PERFMON za pristup perf podsustavu i praćenje performansi. CAP_BPF, koji dopušta određene BPF operacije (kao što je učitavanje BPF programa) za koje su prethodno bila potrebna CAP_SYS_ADMIN prava (CAP_SYS_ADMIN prava sada su podijeljena u kombinaciju CAP_BPF, CAP_PERFMON i CAP_NET_ADMIN).
    • dodano novi virtio-mem uređaj koji vam omogućuje hot-plug i hot-plug memorije u sustave za goste.
    • Implementirano ponovno pozivanje operacija mapiranja u /dev/mem ako upravljački program uređaja koristi memorijska područja koja se preklapaju.
    • Dodana zaštita od ranjivosti CROSSTalk/SRBDS, koji vam omogućuje vraćanje rezultata određenih instrukcija izvršenih na drugoj CPU jezgri.
  • Memorija i usluge sustava
    • U dokumentu koji definira pravila za formatiranje koda, prihvaćeno preporuke za korištenje inkluzivne terminologije. Programerima se ne preporuča zasebno koristiti kombinacije 'master/slave' i 'blacklist/whitelist', kao ni riječ 'slave'. Preporuke se odnose samo na nove upotrebe ovih izraza. Spominjanje navedenih riječi koje već postoje u jezgri ostat će netaknuto. U novom kodu dopuštena je upotreba označenih izraza ako je potrebno za podršku API-ja i ABI-ja izloženih u korisničkom prostoru, kao i prilikom ažuriranja koda za podršku postojećeg hardvera ili protokola čije specifikacije zahtijevaju upotrebu određenih termina.
    • Alat za otklanjanje pogrešaka uključen KCSAN (Kernel Concurrency Sanitizer), dizajniran za dinamičko otkrivanje uvjeti utrke unutar jezgre. Korištenje KCSAN-a podržano je pri izgradnji u GCC-u i Clangu i zahtijeva posebne izmjene u vrijeme kompajliranja za praćenje pristupa memoriji (koriste se prijelomne točke koje se pokreću kada se memorija čita ili modificira). Razvoj KCSAN-a usmjeren je na prevenciju lažnih pozitivnih rezultata, skalabilnost i jednostavnost korištenja.
    • Dodano univerzalni mehanizam isporuku obavijesti iz kernela u korisnički prostor. Mehanizam se temelji na standardnom upravljačkom programu cijevi i omogućuje vam učinkovitu distribuciju obavijesti iz kernela preko kanala otvorenih u korisničkom prostoru. Točke primanja obavijesti su cijevi koje se otvaraju u posebnom načinu rada i omogućuju da se poruke primljene od kernela akumuliraju u međuspremniku prstena. Čitanje se izvodi uobičajenom funkcijom read(). Vlasnik kanala određuje koje izvore u kernelu treba nadzirati i može definirati filtar za ignoriranje određenih vrsta poruka i događaja. Od događaja trenutno su podržane samo operacije s ključevima, poput dodavanja/uklanjanja ključeva i mijenjanja njihovih atributa. Ovi se događaji planiraju koristiti u GNOME-u.
    • Kontinuirani razvoj funkcionalnosti 'pidfd' za pomoć u rješavanju situacija ponovne upotrebe PID-a (pidfd je povezan s određenim procesom i ne mijenja se, dok se PID može povezati s drugim procesom nakon što trenutni proces povezan s tim PID-om završi). Nova verzija dodaje podršku za korištenje pidfd-a za pripajanje procesa imenskim prostorima (dopuštajući da se pidfd navede prilikom izvršavanja sistemskog poziva setns). Korištenje pidfd-a omogućuje vam kontrolu privitka procesa na nekoliko tipova imenskih prostora jednim pozivom, značajno smanjujući broj potrebnih sistemskih poziva i implementirajući privitak u atomskom načinu (ako privitak jednom od imenskih prostora ne uspije, ostali se neće povezati) .
    • Dodan novi sistemski poziv facesat2(), različit od
      facesat() dodatni argument sa zastavicama koje su u skladu s preporukama POSIX-a (prije su te zastavice bile emulirane u C biblioteci, a novi faccessat2 omogućuje njihovu implementaciju u kernelu).

    • U grupi C dodao postavka memory.swap.high koja se može koristiti za usporavanje zadataka koji zauzimaju previše swap prostora.
    • Na asinkrono I/O sučelje io_uring dodana podrška za tee() sistemski poziv.
    • Dodani mehanizam "BPF iterator, dizajniran za ispis sadržaja struktura jezgre u korisnički prostor.
    • Pod uvjetom mogućnost korištenja prstenastog međuspremnika za razmjenu podataka između BPF programa.
    • U mehanizam padata, osmišljen za organiziranje paralelnog izvršavanja zadataka u jezgri, dodana podrška za višenitne zadatke s uravnoteženjem opterećenja.
    • U mehanizmu pstore, koji vam omogućuje spremanje informacija o otklanjanju pogrešaka o uzroku pada u memorijska područja koja se ne gube između ponovnih pokretanja, dodano pozadina za spremanje informacija na blok uređaje.
    • Iz grane kernela PREEMPT_RT pomaknuto implementacija lokalnih brava.
    • Dodano novi API za dodjelu međuspremnika (AF_XDP), usmjeren na pojednostavljenje pisanja mrežnih upravljačkih programa s podrškom za XDP (eXpress Data Path).
    • Za RISC-V arhitekturu implementirana je podrška za otklanjanje pogrešaka u komponentama kernela pomoću KGDB-a.
    • Prije izdanja 4.8, zahtjevi za verziju GCC-a koja se može koristiti za izgradnju kernela su povećani. U jednom od sljedećih izdanja planira se podići ljestvicu na GCC 4.9.
  • Diskovni podsustav, I/O i datotečni sustavi
    • U Device Mapperu dodano novi rukovatelj dm-ebs (emulate block size), koji se može koristiti za emulaciju manje veličine logičkog bloka (na primjer, za emulaciju sektora od 512 bajta na diskovima veličine sektora 4K).
    • Datotečni sustav F2FS sada podržava kompresiju pomoću LZO-RLE algoritma.
    • U dm-kripti dodao podrška za šifrirane ključeve.
    • Btrfs je poboljšao rukovanje operacijama čitanja u načinu izravnog I/O. Prilikom montaže ubrzano provjera izbrisanih pododjeljaka i direktorija koji su ostali bez roditelja.
    • Parametar "nodelete" dodan je u CIFS, dopuštajući normalne provjere dopuštenja na poslužitelju, ali zabranjujući klijentu brisanje datoteka ili direktorija.
    • Ext4 ima poboljšano rukovanje greškama ENOSPC pri korištenju višenitnosti. xattr je dodao podršku za prostor imena gnu.* koji se koristi u GNU Hurdu.
    • Za Ext4 i XFS omogućena je podrška za DAX operacije (izravan pristup datotečnom sustavu, zaobilaženje predmemorije stranice bez korištenja razine blok uređaja) u odnosu na pojedinačne datoteke i direktorije.
    • U pozivu sustava statx() zastava dodana STATX_ATTR_DAX, koji kada je naveden, dohvaća informacije pomoću DAX mehanizma.
    • EXTAL dodao podrška za provjeru područja pokretanja.
    • U FAT-u poboljšana proaktivno učitavanje FS elemenata. Testiranje sporog USB pogona od 2 TB pokazalo je smanjenje vremena završetka testa s 383 na 51 sekundu.
  • Mrežni podsustav
    • U kodu za upravljanje radom mrežnih mostova dodao podrška protokolu MRP (Media Redundancy Protocol), koji omogućuje toleranciju grešaka petljom višestrukih Ethernet sklopki.
    • Na sustav kontrole prometa (Tc) dodano nova “gate” akcija, koja omogućuje definiranje vremenskih intervala za obradu i odbacivanje određenih paketa.
    • Podrška za testiranje spojenog mrežnog kabela i samodijagnostiku mrežnih uređaja dodana je kernelu i uslužnom programu ethtool.
    • Podrška za MPLS (Multiprotocol Label Switching) algoritam je dodana u IPv6 stog za usmjeravanje paketa korištenjem multiprotocol label switching (MPLS je prethodno bio podržan za IPv4).
    • Dodana podrška za prijenos IKE (Internet Key Exchange) i IPSec paketa preko TCP-a (RFC 8229) za zaobilaženje mogućeg blokiranja UDP-a.
    • dodano mrežni blok uređaj rnbd, koji vam omogućuje organiziranje daljinskog pristupa blok uređaju korištenjem RDMA prijenosa (InfiniBand, RoCE, iWARP) i RTRS protokola.
    • U TCP stogu dodao podrška za kompresiju raspona u odgovorima selektivne potvrde (SACK).
    • Za IPv6 implementiran TCP-LD podrška (RFC 6069, dugi prekidi povezivanja).
  • Оборудование
    • I915 DRM upravljački program za Intelove video kartice uključuje podršku za Intel Tiger Lake (GEN12) čipove prema zadanim postavkama, za koje implementiran mogućnost korištenja SAGV (System Agent Geyserville) sustava za dinamičku prilagodbu frekvencije i napona ovisno o potrošnji energije ili zahtjevima performansi.
    • Upravljački program amdgpu dodao je podršku za format piksela FP16 i mogućnost rada s šifriranim međuspremnicima u video memoriji (TMZ, Trusted Memory Zone).
    • Dodana podrška za senzore snage za procesore AMD Zen i Zen2, kao i senzore temperature za AMD Ryzen 4000 Renoir. Podrška za dohvaćanje informacija o potrošnji energije putem sučelja dostupna je za AMD Zen i Zen2 RAPL (Ograničenje tekuće prosječne snage).
    • Nouveau upravljačkom programu dodana je podrška za NVIDIA format modifikatora. Za gv100 implementirana je mogućnost korištenja isprepletenih načina skeniranja. Dodana vGPU definicija.
    • Dodana je podrška za Adreno A405, A640 i A650 GPU-ove MSM (Qualcomm) upravljačkom programu.
    • Dodano interni okvir za upravljanje DRM (Direct Rendering Manager) resursima.
    • Dodana podrška za pametne telefone Xiaomi Redmi Note 7 i Samsung Galaxy S2, kao i Elm/Hana Chromebook prijenosna računala.
    • Dodani upravljački programi za LCD panele: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Dodana podrška za ARM ploče i platforme Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-eMMC, Check Point L-50,
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.

    • Dodana podrška za MIPS procesor Loongson-2K (skraćeno Loongson64). Za CPU Loongson 3 dodana je podrška za virtualizaciju pomoću KVM hipervizora.
    • Dodano
      podrška za ruski Baikal-T1 procesor i sustav na čipu temeljen na njemu BE-T1000. Procesor Baikal-T1 sadrži dvije superskalarne jezgre P5600 MIPS 32 r5 koje rade na 1.2 GHz. Čip sadrži L2 cache (1 MB), DDR3-1600 ECC memorijski kontroler, 1 10Gb Ethernet port, 2 1Gb Ethernet porta, PCIe Gen.3 x4 kontroler, 2 SATA 3.0 porta, USB 2.0, GPIO, UART, SPI, I2C. Procesor pruža hardversku podršku za virtualizaciju, SIMD upute i integrirani hardverski kriptografski akcelerator koji podržava GOST 28147-89. Čip je razvijen korištenjem jezgre procesora MIPS32 P5600 Warrior licenciranog od Imagination Technologies.

Istodobno, Latinoamerička zaklada za slobodni softver formirana
opcija potpuno besplatna jezgra 5.8 - linux-libre 5.8-gnu, očišćen od firmvera i elemenata upravljačkog programa koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničen od strane proizvođača. Novo izdanje onemogućuje učitavanje blobova u upravljačke programe za Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Enhanced Asynchronous Sample Rate Converter, Maxim Integrated MAX98390 Speaker Amplifier, Microsemi ZL38060 Connected Home Audio Processor, i I2C EEPROM Slave. Ažurirani kod za čišćenje mrlja u Adreno GPU-u, HabanaLabs Goya, x86 dodirnom zaslonu, vt6656 i btbcm upravljačkim programima i podsustavima.

Izvor: opennet.ru

Dodajte komentar