Izdanje kernela Linux 5.6

Nakon dva mjeseca razvoja, Linus Torvalds uveo izdanje kernela Linux 5.6. Među najznačajnijim promjenama: integracija WireGuard VPN sučelja, podrška za USB4, prostori imena za vrijeme, mogućnost kreiranja TCP rukovatelja zagušenjima koristeći BPF, početna podrška za MultiPath TCP, oslobađanje kernela od problema iz 2038., mehanizam “bootconfig” , ZoneFS.

Nova verzija uključuje 13702 popravki od 1810 programera,
veličina zakrpe - 40 MB (promjene su zahvatile 11577 datoteka, dodano je 610012 linija koda,
294828 red je uklonjen). Oko 45% svih predstavljenih u 5.6
promjene se odnose na drajvere uređaja, otprilike 15% promjena je
stav prema ažuriranju koda specifičnog za hardverske arhitekture, 12%
povezano sa mrežnim stekom, 4% sa sistemima datoteka i 3% sa internim
podsistemi kernela.

Glavni inovacije:

  • Mrežni podsistem
    • Dodano implementacija VPN interfejsa WireGuard, koji je implementiran na osnovu savremenih metoda enkripcije (ChaCha20, Poly1305, Curve25519, BLAKE2s), jednostavan je za korištenje, bez komplikacija, dokazao se u nizu velikih implementacija i pruža vrlo visoke performanse (3,9 puta brži od OpenVPN-a u smislu propusnosti). WireGuard koristi koncept rutiranja ključeva za šifriranje, koji uključuje priključivanje privatnog ključa na svaki mrežni interfejs i njegovo korištenje za povezivanje javnih ključeva. Javni ključevi se razmjenjuju kako bi se uspostavila veza na sličan način kao SSH. Kriptografski primitivi potrebni da bi WireGuard radio to je bio preneseno iz biblioteke cink kao dio standardnog Crypto API-ja i uključeno u jezgro 5.5.
    • Započeo integracija komponenti neophodnih za podršku 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. Za mrežne aplikacije, takva agregirana veza izgleda kao obična TCP veza, a svu logiku razdvajanja toka izvodi MPTCP. Multipath TCP se može koristiti i za povećanje propusnosti i za povećanje pouzdanosti. Na primjer, MPTCP se može koristiti za organiziranje prijenosa podataka na pametnom telefonu koristeći WiFi i 4G veze istovremeno, ili za smanjenje troškova povezivanjem servera koristeći nekoliko jeftinih linkova umjesto jednog skupog.
    • Dodano podrška za disciplinu obrade mrežnog reda čekanja sch_ets (Poboljšani izbor mjenjača, IEEE 802.1Qaz), koji pruža mogućnost distribucije propusnog opsega između različitih klasa saobraćaja. Ako je opterećenje određene klase saobraćaja ispod dodijeljene propusnosti, tada ETS dozvoljava drugim klasama prometa da koriste dostupnu (neiskorištenu) propusnost. Qdisc sch_ets je konfiguriran kao PRIO disciplina i koristi klase prometa za definiranje strogih i zajedničkih ograničenja propusnog opsega. ETS djeluje kao kombinacija disciplina PRIO и DRR — ako postoje strogo ograničene klase saobraćaja, koristi se PRIO, ali ako nema saobraćaja u redu, radi kao DRR.
    • Dodan je novi tip BPF programa BPF_PROG_TYPE_STRUCT_OPS, koji vam omogućava da implementirate rukovaoce funkcijama kernela kroz BPF. Trenutno, ova karakteristika se već može koristiti za implementaciju TCP algoritama za kontrolu zagušenja u obliku BPF programa. Kao primjer predložio BPF program sa implementacijom algoritma DCTCP.
    • Prihvaćeno u srž promjena, alati za prevođenje ettool sa ioctl() za korištenje netlink interfejs. Novo sučelje olakšava dodavanje ekstenzija, poboljšava rukovanje greškama, omogućava slanje obavijesti kada se stanje promijeni, pojednostavljuje interakciju između kernela i korisničkog prostora i smanjuje broj imenovanih lista koje treba sinkronizirati.
    • Dodata implementacija FQ-PIE (Flow Queue PIE) algoritma za upravljanje mrežnim redovima, čiji je cilj smanjenje negativnog uticaja međubaferovanja paketa na rubnu mrežnu opremu (bufferbloat). FQ-PIE pokazuje visoku efikasnost kada se koristi u sistemima sa kablovskim modemima.
  • Diskovni podsistem, I/O i sistemi datoteka
    • Za Btrfs sistem datoteka dodano asinhrona implementacija operacije DISCARD (označavanje oslobođenih blokova koji više ne moraju biti fizički pohranjeni). U početku su se operacije DISCARD izvodile sinhrono, što je moglo dovesti do degradacije performansi zbog pogona koji čekaju da se dovrše odgovarajuće komande. Asinhrona implementacija vam omogućava da ne čekate da pogon završi DISCARD i da izvršite ovu operaciju u pozadini.
    • U XFS sprovedeno Čišćenje koda koji je koristio stare 32-bitne brojače vremena (tip time_t je zamijenjen time64_t), što je dovelo do problema iz 2038. godine. Ispravljene greške i oštećenje memorije do kojih je došlo na 32-bitnim platformama. Kod je prerađen za rad s proširenim atributima.
    • Na ext4 sistem datoteka predstavljen Optimizacije performansi koje se odnose na rukovanje zaključavanjem inode tokom operacija čitanja i pisanja. Poboljšane performanse ponovnog pisanja u Direct I/O modu. Da bi se pojednostavila dijagnoza problema, prvi i posljednji kodovi greške su pohranjeni u superbloku.
    • Na sistemu datoteka F2FS implementirano mogućnost pohranjivanja podataka u komprimiranom obliku. Za pojedinačnu datoteku ili direktorij, kompresiju se može omogućiti pomoću naredbe "chattr +c file" ili "chattr +c dir; dodirnite dir/file". Za komprimiranje cijele particije možete koristiti opciju “-o compress_extension=ext” u uslužnom programu za montiranje.
    • Kernel uključuje sistem datoteka ZoneFS, što pojednostavljuje rad na niskom nivou sa zoniranim uređajima za skladištenje podataka. Zonirani diskovi označavaju uređaje na tvrdim magnetnim diskovima ili NVMe SSD-ovima, prostor za pohranu u kojima je podijeljen na zone koje čine grupe blokova ili sektora, u koje je dozvoljeno samo sekvencijalno dodavanje podataka, ažuriranje cijele grupe blokova. FS ZoneFS je razvio Western Digital i povezuje svaku zonu u drajvu sa posebnom datotekom koja se može koristiti za skladištenje podataka u sirovom modu bez manipulacije na nivou sektora i bloka, tj. Dozvoljava aplikacijama da koriste API datoteke umjesto direktnog pristupa blok uređaju pomoću ioctl.
    • U NFS-u, montiranje particija preko UDP-a je onemogućeno po defaultu. Dodata podrška za mogućnost direktnog kopiranja datoteka između servera, definisana u NFS 4.2 specifikaciji. Dodana je nova opcija montiranja "softreval", koja omogućava korištenje keširanih vrijednosti atributa u slučaju kvara servera. Na primjer, kada navedete ovu opciju, nakon što server nije dostupan, ostaje moguće kretati se po putanjama u NFS particiji i pristupiti informacijama koje su se smjestile u keš memoriju.
    • Izvršeno optimizacija performansi fs-verity mehanizma, koji se koristi za praćenje integriteta i autentifikaciju pojedinačnih datoteka. Povećana brzina sekvencijalnog čitanja zahvaljujući upotrebi Merkle hash stabla. Performanse FS_IOC_ENABLE_VERITY su optimizirane kada nema podataka u kešu (primijenjeno je preventivno čitanje stranica sa podacima).
  • Virtuelizacija i sigurnost
    • Mogućnost onemogućavanja SELinux modula dok radi je zastarjela, a istovar već aktiviranog SELinuxa će biti zabranjeno u budućnosti. Da biste onemogućili SELinux, morat ćete proslijediti parametar "selinux=0" na komandnoj liniji kernela.
    • Dodano podrška za prostore imena za vrijeme (vremenski imenski prostori), omogućavajući vam da povežete stanje sistemskog sata sa kontejnerom (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), koristite svoje vrijeme u kontejneru i, prilikom migracije kontejnera na drugi host, osigurajte da očitanja CLOCK_MONOTONIC i CLOCK_BOOTTIME ostanu nepromijenjena (uzmite u obzir vrijeme nakon učitavanja, sa ili bez uzimanja u obzir da ste u stanju mirovanja ).

    • /dev/random blok za blokiranje je uklonjen. Ponašanje /dev/random je slično /dev/urandom u smislu sprečavanja entropijskog blokiranja nakon inicijalizacije bazena.
    • Jezgro jezgra uključuje drajver koji omogućava gostujućim sistemima koji koriste VirtualBox da montiraju direktorije koje izvozi okruženje domaćina (VirtualBox Shared Folder).
    • Set zakrpa je dodat u BPF podsistem (BPF dispečer), kada koristite mehanizam Retpoline za zaštitu od napada klase Spectre V2, omogućava vam da povećate efikasnost pozivanja BPF programa kada se događaju povezani s njima (na primjer, omogućava ubrzavanje pozivanja XDP rukovatelja kada stiže mrežni paket).
    • Dodan drajver za podršku TEE (Trusted Execution Environment) ugrađen u AMD APU.
  • Memorijski i sistemski servisi
    • BPF je dodao podršku za globalne funkcije. Razvoj se odvija kao dio inicijative za dodavanje podrške za biblioteke funkcija koje se mogu uključiti u BPF programe. Sljedeći korak će biti podrška dinamičkim ekstenzijama koje omogućavaju učitavanje globalnih funkcija, uključujući zamjenu postojećih globalnih funkcija dok su u upotrebi. BPF podsistem takođe dodaje podršku za varijantu operacije mape (koja se koristi za skladištenje trajnih podataka), koja podržava izvršenje u grupnom režimu.
    • Dodano Uređaj “cpu_cooling” vam omogućava da ohladite pregrijani CPU tako što ga stavljate u stanje mirovanja na kraće vremenske periode.
    • Dodan sistemski poziv openat2(), koji nudi skup dodatnih oznaka za ograničavanje rezolucije putanje datoteke (zabrana ukrštanja tačaka montiranja, simboličkih veza, magičnih veza (/proc/PID/fd), “../” komponenti).
    • Za heterogene sisteme zasnovane na big.LITTLE arhitekturi, kombinujući moćna i manje efikasna energetski efikasna CPU jezgra u jednom čipu, parametar uclamp_min se postavlja prilikom izvršavanja zadataka u realnom vremenu (pojavio se u kernelu 5.3 postoji mehanizam za osiguranje opterećenja). Ovaj parametar osigurava da će zadatak biti postavljen od strane planera na CPU jezgro koje ima dovoljne performanse.
    • Kernel je oslobođen problemi 2038. Zamijenjeni su posljednji preostali rukovatelji, koji su koristili 32-bitni (potpisani int) tip time_t za epohalni brojač vremena, koji bi, uzimajući u obzir izvještaj iz 1970. godine, trebao preliti 2038. godine.
    • Kontinuirano poboljšanje asinhronog I/O interfejsa io_uring, u kojem osiguran podrška za nove operacije: IORING_OP_FALLOCATE (rezervacija praznih područja), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (otvaranje i zatvaranje fajlova),
      IORING_OP_FILES_UPDATE (dodavanje i uklanjanje fajlova sa liste za brzi pristup),
      IORING_OP_STATX (zahtjev za informacije o fajlu),
      IORING_OP_READ,
      IORING_OP_WRITE (pojednostavljeni analozi IORING_OP_READV i IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asinhrone varijante poziva posix_fadvise i madvise), IORING_OP_SEND,
      IORING_OP_RECV (slanje i primanje mrežnih podataka),
      IORING_OP_EPOLL_CTL (izvodi operacije na deskriptorima epoll datoteka).

    • Dodan sistemski poziv pidfd_getfd(), omogućavajući procesu da preuzme deskriptor datoteke za otvorenu datoteku iz drugog procesa.
    • Implementirano mehanizam “bootconfig”, koji omogućava, pored opcija komandne linije, da se odrede parametri kernela kroz datoteku postavki. Da biste dodali takve datoteke u initramfs sliku, predlaže se uslužni program bootconfig. Ova funkcija se može koristiti, na primjer, za konfiguriranje kprobes u vrijeme pokretanja.
    • Prerađeno mehanizam za čekanje za pisanje i čitanje podataka u neimenovanim cijevima. Promjena je omogućila da se ubrzaju zadaci kao što je paralelno sklapanje velikih projekata. Međutim, optimizacija može dovesti do stanja trke u GNU make-u zbog greške u izdanju 4.2.1, koja je ispravljena u verziji 4.3.
    • Dodata PR_SET_IO_FLUSHER zastavica u prctl(), koja se može koristiti za označavanje procesa bez memorije koji ne bi trebali biti podložni ograničenjima kada sistemu nema dovoljno memorije.
    • Na osnovu ION sistema distribucije memorije koji se koristi u Androidu, implementiran je podsistem dma-buf hrpe, koji vam omogućava da kontrolišete dodelu DMA bafera za deljenje memorijskih područja između drajvera, aplikacija i različitih podsistema.
  • Hardverske arhitekture
    • Dodata podrška za E0PD ekstenziju, koja se pojavila u ARMv8.5 i omogućava zaštitu od napada povezanih sa spekulativnim izvršavanjem instrukcija na CPU-u. Zaštita zasnovana na E0PD rezultira nižim troškovima nego KPTI (Kernel Page Table Isolation) zaštita.
    • Za sisteme bazirane na ARMv8.5 arhitekturi, dodata je podrška za RNG instrukciju, koja omogućava pristup hardverskom generatoru pseudo-slučajnih brojeva. U kernelu, RNG instrukcija se koristi za generisanje entropije prilikom inicijalizacije generatora pseudo-slučajnih brojeva koji obezbeđuje kernel.
    • Uklonjena podrška za MPX (Memory Protection Extensions) dodana u kernel 3.19 i omogućava vam da organizirate provjeru pokazivača kako biste osigurali da se poštuju granice memorijskih područja. Ova tehnologija nije bila široko korištena u kompajlerima i uklonjena je iz GCC-a.
    • Za RISC-V arhitekturu, implementirana je podrška za KASan (Kernel address sanitizer) alat za otklanjanje grešaka, koji pomaže u identifikaciji grešaka pri radu sa memorijom.
  • Oprema
    • Implementirana podrška specifikacijama USB 4.0, koji je baziran na Thunderbolt 3 protokolu i pruža propusnost do 40 Gbps, uz zadržavanje kompatibilnosti unatrag sa USB 2.0 i USB 3.2. Po analogiji sa munja USB 4.0 interfejs vam omogućava da tunelirate različite protokole preko jednog kabla sa konektorom Tip-C, uključujući PCIe, Display Port i USB 3.x, kao i softverske implementacije protokola, na primjer, za organiziranje mrežnih veza između hostova. Implementacija se zasniva na Thunderbolt drajveru koji je već uključen u Linux kernel i prilagođava ga za rad sa USB4 kompatibilnim hostovima i uređajima. Promjene također dodaju podršku za Thunderbolt 3 uređaje softverskoj implementaciji Connection Managera, koji je odgovoran za kreiranje tunela za povezivanje više uređaja preko jednog konektora.
    • U drajveru amdgpu dodano početna podrška za HDCP 2.x (High-bandwidth Digital Content Protection) tehnologiju zaštite od kopiranja. Dodata podrška za AMD Pollock ASIC čip baziran na Raven 2. Implementirana mogućnost resetovanja GPU-a za porodice Renoir i Navi.
    • DRM drajver za Intel video kartice dodano DSI VDSC podrška za čipove bazirane na mikroarhitekturi Ice Lake i Tiger Lake, implementiran je LMEM mmap (lokalna memorija uređaja), poboljšana je VBT (Video BIOS Table) analiza, implementirana je HDCP 2.2 podrška za Coffee Lake čipove.
    • Nastavljen je rad na objedinjavanju koda drajvera amdkfd (za diskretne GPU-ove, kao što su Fiji, Tonga, Polaris) sa amdgpu drajverom.
    • K10temp drajver je prerađen, dodajući podršku za prikaz parametara napona i struje za AMD Zen CPU, kao i proširene informacije sa temperaturnih senzora koji se koriste u Zen i Zen 2 CPU-ima.
    • U novom vozaču dodano podrška za verifikovani režim učitavanja firmvera za NVIDIA GPU-ove zasnovane na Turing mikroarhitekturi (GeForce RTX 2000), što je omogućilo da se omogući podrška za 3D ubrzanje za ove kartice (potrebno je preuzimanje zvaničnog firmvera sa NVIDIA digitalnim potpisom). Dodata podrška za grafički motor TU10x. Problemi sa HD Audiom su riješeni.
    • Dodata podrška za kompresiju podataka kada se prenose preko DisplayPort MST (Multi-Stream Transport).
    • Dodan novi drajver "ath11k» za Qualcommove bežične čipove koji podržavaju 802.11ax.
      Drajver je baziran na mac80211 steku i podržava režime pristupne tačke, radne stanice i mrežnog čvora.

    • Putem sysfs-a omogućen je pristup čitljivim očitanjima temperaturnih senzora koji se koriste na modernim tvrdim diskovima i SSD-ovima.
    • Poslano značajne promjene u ALSA zvučnom sistemu, s ciljem da se oslobode koda problemi 2038 (izbjegavanje upotrebe 32-bitnog tipa time_t u interfejsima snd_pcm_mmap_status i snd_pcm_mmap_control). Dodata podrška za nove audio kodeke
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Dodano drajveri za LCD panele Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus940 GPM0
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Sharp LS020B1DD01D.

    • Dodano podrška za ARM ploče i Gen1 platforme Amazon Echo (bazirano na OMAP3630), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
      Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
      Tolino Shine 3 čitač e-knjiga,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX i HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
      Rockchip Radxa Dalang nosač, Radxa Rock Pi N10, VMARC RK3399Pro SOM
      ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863m. Dodata podrška za PCIe kontroler koji se koristi u Raspberry Pi 7180.

Istovremeno, Latinoamerička fondacija za slobodni softver formirana
opcija potpuno besplatan kernel 5.6 - Linux-libre 5.6-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ćava blob učitavanje u drajverima za AMD TEE, ATH11K i Mediatek SCP. Ažuriran kod za čišćenje mrlja u AMD PSP, amdgpu i nouveau drajverima i podsistemima.

izvor: opennet.ru

Dodajte komentar