Izdanje jezgre Linuxa 5.6

Nakon dva mjeseca razvoja Linus Torvalds podnijeti izdanje jezgre Linux 5.6. Među najznačajnijim promjenama: integracija WireGuard VPN sučelja, podrška za USB4, prostori imena za vrijeme, mogućnost stvaranja TCP rukovatelja zagušenjem pomoću BPF-a, početna podrška za MultiPath TCP, oslobađanje kernela od problema 2038, mehanizam "bootconfig" , ZoneFS.

Nova verzija prihvatila je 13702 popravka od 1810 programera,
veličina zakrpe - 40 MB (promjene su zahvatile 11577 datoteka, dodano je 610012 linija koda,
294828 redaka uklonjeno). Oko 45% svih prikazanih u 5.6
promjene su povezane s upravljačkim programima uređaja, otprilike 15% promjena ima
stav prema ažuriranju koda specifičnog za hardverske arhitekture, 12%
povezano s mrežnim stogom, 4% s datotečnim sustavima i 3% s internim
podsustavi jezgre.

Glavni inovacije:

  • Mrežni podsustav
    • Dodano implementacija VPN sučelja WireGuard, koji je implementiran na temelju modernih 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že od OpenVPN-a u smislu propusnosti). WireGuard koristi koncept usmjeravanja ključeva za enkripciju, koji uključuje pripajanje privatnog ključa svakom mrežnom sučelju i njegovu upotrebu za vezanje javnih ključeva. Javni ključevi se razmjenjuju za uspostavljanje veze na sličan način kao SSH. Kriptografske primitive potrebne za rad WireGuarda bile preneseno iz knjižnice cink kao dio standardnog Crypto API-ja i uključeno u jezgru 5.5.
    • Autor integracija komponenti potrebnih za podršku MPTCP (MultiPath TCP), proširenje TCP protokola za organiziranje rada TCP veze s dostavom paketa istovremeno duž nekoliko ruta kroz različita mrežna sučelja povezana s različitim IP adresama. Za mrežne aplikacije, takva agregirana veza izgleda kao redovita TCP veza, a svu logiku razdvajanja protoka izvodi MPTCP. Multipath TCP se može koristiti za povećanje propusnosti i 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 poslužitelja pomoću nekoliko jeftinih veza umjesto jedne skupe.
    • Dodano podrška za disciplinu obrade mrežnog reda čekanja sch_ets (Poboljšani odabir prijenosa, IEEE 802.1Qaz), koji pruža mogućnost distribucije propusnosti između različitih klasa prometa. Ako je opterećenje određene klase prometa ispod dodijeljene propusnosti, tada ETS dopušta drugim klasama prometa korištenje dostupne (neiskorištene) propusnosti. Qdisc sch_ets je konfiguriran kao PRIO disciplina i koristi klase prometa za definiranje strogih i zajedničkih ograničenja propusnosti. ETS djeluje kao kombinacija disciplina PRIJE и DRR — ako postoje strogo ograničene klase prometa, koristi se PRIO, ali ako nema prometa u redu čekanja, radi kao DRR.
    • Dodan je novi tip BPF programa BPF_PROG_TYPE_STRUCT_OPS, koji vam omogućuje implementaciju rukovatelja funkcija jezgre kroz BPF. Trenutno se ova značajka već može koristiti za implementaciju TCP algoritama za kontrolu zagušenja u obliku BPF programa. Kao primjer zaprosio BPF program s implementacijom algoritma DCTCP.
    • Prihvaćen u srž promjena, alati za prevođenje etol s ioctl() za korištenje netlink sučelje. Novo sučelje olakšava dodavanje ekstenzija, poboljšava rukovanje pogreškama, omogućuje slanje obavijesti kada se stanje promijeni, pojednostavljuje interakciju između kernela i korisničkog prostora i smanjuje broj imenovanih popisa koje je potrebno sinkronizirati.
    • Dodana implementacija FQ-PIE (Flow Queue PIE) algoritma za upravljanje mrežnim redovima čekanja, usmjerenog na smanjenje negativnog utjecaja međuspremnika paketa na rubnu mrežnu opremu (bufferbloat). FQ-PIE pokazuje visoku učinkovitost kada se koristi u sustavima s kabelskim modemima.
  • Diskovni podsustav, I/O i datotečni sustavi
    • Za Btrfs datotečni sustav dodao asinkrona implementacija operacije DISCARD (označavanje oslobođenih blokova koje više nije potrebno fizički pohranjivati). U početku su se operacije ODBACI izvodile sinkrono, što je moglo dovesti do degradacije performansi zbog pogona koji su čekali da se odgovarajuće naredbe završe. Asinkrona implementacija omogućuje vam da ne čekate da pogon dovrši DISCARD i izvršite ovu operaciju u pozadini.
    • U XFS-u provedeno Čišćenje koda koji je koristio stare 32-bitne brojače vremena (tip time_t zamijenjen je time64_t), što je dovelo do problema 2038. Popravljene pogreš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 datotečni sustav uveden Optimizacije performansi koje se odnose na rukovanje zaključavanjem inoda tijekom operacija čitanja i pisanja. Poboljšana izvedba ponovnog pisanja u Direct I/O modu. Kako bi se pojednostavila dijagnoza problema, prvi i zadnji kod greške pohranjeni su u superbloku.
    • Na F2FS datotečnom sustavu implementiran sposobnost pohranjivanja podataka u komprimiranom obliku. Za pojedinačnu datoteku ili direktorij, kompresija se može omogućiti pomoću naredbe "chattr +c file" ili "chattr +c dir; dodirnite direktorij/datoteka". Za komprimiranje cijele particije, možete koristiti opciju “-o compress_extension=ext” u uslužnom programu za montiranje.
    • Kernel uključuje datotečni sustav ZoneFS, koji pojednostavljuje rad na niskoj razini s zonskim uređajima za pohranu. Zonski diskovi označavaju uređaje na tvrdim magnetskim diskovima ili NVMe SSD-ovima, u kojima je prostor za pohranu podijeljen u zone koje čine grupe blokova ili sektora, u koje je dopušteno samo sekvencijsko dodavanje podataka, ažurirajući cijelu grupu blokova. FS ZoneFS je razvio Western Digital i povezuje svaku zonu u pogonu s zasebnom datotekom koja se može koristiti za pohranu podataka u sirovom načinu rada bez manipulacije na razini sektora i bloka, tj. Omogućuje aplikacijama da koriste API datoteke umjesto izravnog pristupa blok uređaju pomoću ioctl.
    • U NFS-u je montiranje particija preko UDP-a onemogućeno prema zadanim postavkama. Dodana podrška za mogućnost izravnog kopiranja datoteka između poslužitelja, definirana u specifikaciji NFS 4.2. Dodana je nova opcija montiranja "softreval", koja omogućuje korištenje predmemoriranih vrijednosti atributa u slučaju kvara poslužitelja. Na primjer, kada navedete ovu opciju, nakon što je poslužitelj nedostupan, ostaje moguće kretati se stazama u NFS particiji i pristupati informacijama koje su se smjestile u predmemoriju.
    • Izvedeno optimizacija performansi mehanizma fs-verity, koji se koristi za nadzor integriteta i provjere autentičnosti pojedinačnih datoteka. Povećana sekvencijalna brzina čitanja zahvaljujući korištenju Merkleovog hash stabla. Izvedba FS_IOC_ENABLE_VERITY je optimizirana kada nema podataka u predmemoriji (primijenjeno je preventivno čitanje stranica s podacima).
  • Virtualizacija i sigurnost
    • Mogućnost onemogućavanja SELinux modula tijekom rada je zastarjela, a istovar već aktiviranog SELinuxa bit će zabranjen u budućnosti. Da biste onemogućili SELinux, morat ćete proslijediti parametar "selinux=0" na naredbenom retku jezgre.
    • Dodano podrška za prostore imena za vrijeme (prostori imena vremena), što vam omogućuje da povežete stanje sistemskog sata sa spremnikom (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), koristite vlastito vrijeme u spremniku i, kada premještate spremnik 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 stanja mirovanja ).

    • /dev/random blok za blokiranje je uklonjen. Ponašanje /dev/random slično je /dev/urandom u smislu sprječavanja blokiranja entropije nakon inicijalizacije bazena.
    • Jezgra jezgre uključuje upravljački program koji omogućuje sustavima za goste koji pokreću VirtualBox da montiraju direktorije koje je izvezlo okruženje domaćina (dijeljena mapa VirtualBox).
    • Skup zakrpa je dodan u BPF podsustav (BPF dispečer), kada koristite mehanizam Retpoline za zaštitu od napada klase Spectre V2, omogućuje vam povećanje učinkovitosti pozivanja BPF programa kada se dogode događaji povezani s njima (na primjer, omogućuje ubrzavanje pozivanja XDP rukovatelja kada stiže mrežni paket).
    • Dodan upravljački program za podršku TEE (Trusted Execution Environment) ugrađenom u AMD APU.
  • Memorija i usluge sustava
    • BPF je dodao podršku za globalne funkcije. Razvoj se provodi kao dio inicijative za dodavanje podrške za knjižnice funkcija koje se mogu uključiti u BPF programe. Sljedeći korak bit će podrška dinamičkim proširenjima koja omogućuju učitavanje globalnih funkcija, uključujući zamjenu postojećih globalnih funkcija dok su u upotrebi. BPF podsustav također dodaje podršku za varijantu operacije karte (koja se koristi za pohranjivanje trajnih podataka) koja podržava izvođenje u skupnom načinu rada.
    • dodano Uređaj “cpu_cooling” omogućuje hlađenje pregrijanog CPU-a stavljanjem u stanje mirovanja na kratko vrijeme.
    • Dodan sistemski poziv otvori2(), koji nudi skup dodatnih oznaka za ograničavanje rezolucije putanje datoteke (zabrana prelaska točaka montiranja, simboličke veze, čarobne veze (/proc/PID/fd), komponente “../”).
    • Za heterogene sustave temeljene na arhitekturi big.LITTLE, koji kombiniraju moćne i manje učinkovite energetski učinkovite CPU jezgre u jednom čipu, parametar uclamp_min postavlja se prilikom izvršavanja zadataka u stvarnom vremenu (pojavili u kernelu 5.3 postoji mehanizam za osiguranje opterećenja). Ovaj parametar osigurava da će planer postaviti zadatak na CPU jezgru koja ima dovoljnu izvedbu.
    • Kernel je oslobođen od problemi 2038. Zamijenjeni su posljednji preostali rukovatelji, koji su koristili 32-bitni (signed int) tip time_t za brojač epohalnog vremena, koji bi, uzimajući u obzir izvještaj iz 1970., trebao preliti 2038. godine.
    • Kontinuirano poboljšanje asinkronog I/O sučelja io_uring, pri čemu 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 datoteka),
      IORING_OP_FILES_UPDATE (dodavanje i uklanjanje datoteka s popisa za brzi pristup),
      IORING_OP_STATX (zahtjev za informacije o datoteci),
      IORING_OP_READ,
      IORING_OP_WRITE (pojednostavljeni analozi IORING_OP_READV i IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asinkrone varijante poziva posix_fadvise i madvise), IORING_OP_SEND,
      IORING_OP_RECV (slanje i primanje mrežnih podataka),
      IORING_OP_EPOLL_CTL (izvođenje operacija na epoll deskriptorima datoteka).

    • Dodan sistemski poziv pidfd_getfd(), dopuštajući procesu da dohvati deskriptor datoteke za otvorenu datoteku iz drugog procesa.
    • Provedeno mehanizam “bootconfig”, koji omogućuje, uz opcije naredbenog retka, određivanje parametara kernela putem datoteke postavki. Za dodavanje takvih datoteka initramfs slici predlaže se uslužni program bootconfig. Ova se značajka može koristiti, na primjer, za konfiguriranje kprobes tijekom podizanja sustava.
    • Redizajniran mehanizam za čekanje pisanja i čitanja podataka u neimenovanim cijevima. Promjena je omogućila ubrzanje zadataka kao što je paralelna montaža velikih projekata. Međutim, optimizacija može dovesti do stanja utrke u GNU make zbog greške u izdanju 4.2.1, koja je ispravljena u verziji 4.3.
    • Dodana je zastavica PR_SET_IO_FLUSHER u prctl(), koja se može koristiti za označavanje procesa bez memorije koji ne bi trebali podlijegati ograničenjima kada sustav nema dovoljno memorije.
    • Na temelju ION sustava distribucije memorije koji se koristi u Androidu, implementiran je podsustav dma-buf hrpe, koji vam omogućuje kontrolu dodjele DMA međuspremnika za dijeljenje memorijskih područja između upravljačkih programa, aplikacija i raznih podsustava.
  • Hardverske arhitekture
    • Dodana je podrška za ekstenziju E0PD, koja se pojavila u ARMv8.5 i omogućuje zaštitu od napada povezanih sa spekulativnim izvršavanjem instrukcija na CPU-u. Zaštita temeljena na E0PD-u rezultira nižim troškovima nego KPTI (Kernel Page Table Isolation) zaštita.
    • Za sustave koji se temelje na arhitekturi ARMv8.5, dodana je podrška za RNG instrukciju, koja omogućuje pristup hardverskom generatoru pseudoslučajnih brojeva. U jezgri, RNG instrukcija se koristi za generiranje entropije prilikom inicijalizacije generatora pseudoslučajnih brojeva koji je dao jezgra.
    • Uklonjena podrška za MPX (Memory Protection Extensions) dodana u kernel 3.19 i omogućuje 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 prevodiocima i uklonjena je iz GCC-a.
    • Za RISC-V arhitekturu implementirana je podrška za alat za otklanjanje pogrešaka KASan (Kernel address sanitizer), koji pomaže u prepoznavanju pogrešaka pri radu s memorijom.
  • Оборудование
    • Implementirana podrška za specifikacije USB 4.0, koji se temelji na Thunderbolt 3 protokolu i pruža propusnost do 40 Gbps, zadržavajući pritom kompatibilnost s USB 2.0 i USB 3.2. Po analogiji s Munja USB 4.0 sučelje omogućuje vam tuneliranje različitih protokola preko jednog kabela s 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 temelji na Thunderbolt driveru koji je već uključen u Linux kernel i prilagođava ga za rad s 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 stvaranje tunela za povezivanje više uređaja kroz jedan konektor.
    • U amdgpu upravljačkom programu dodao početna podrška za tehnologiju zaštite od kopiranja HDCP 2.x (High-bandwidth Digital Content Protection). Dodana podrška za AMD Pollock ASIC čip temeljen na Raven 2. Implementirana mogućnost resetiranja GPU-a za obitelji Renoir i Navi.
    • DRM drajver za Intel video kartice dodao DSI VDSC podrška za čipove temeljene na Ice Lake i Tiger Lake mikroarhitekturi, LMEM mmap (lokalna memorija uređaja) je implementirana, VBT (Video BIOS Table) parsiranje je poboljšano, HDCP 2.2 podrška je implementirana za Coffee Lake čipove.
    • Nastavljen je rad na objedinjavanju koda upravljačkog programa amdkfd (za diskretne GPU-ove, kao što su Fiji, Tonga, Polaris) s upravljačkim programom amdgpu.
    • K10temp upravljački program je prerađen, dodajući podršku za prikaz parametara napona i struje za AMD Zen CPU-e, kao i proširene informacije iz temperaturnih senzora koji se koriste u Zen i Zen 2 CPU-ima.
    • U vozaču nouveau dodao podrška za verificirani način učitavanja firmvera za NVIDIA GPU temeljene na Turing mikroarhitekturi (GeForce RTX 2000), što je omogućilo podršku za 3D ubrzanje za ove kartice (potrebno je preuzimanje službenog firmvera s NVIDIA digitalnim potpisom). Dodana podrška za TU10x grafički pogon. Problemi s HD zvukom su riješeni.
    • Dodana podrška za kompresiju podataka kada se prenose preko DisplayPort MST (Multi-Stream Transport).
    • Dodan novi upravljački program "ath11k» za Qualcomm bežične čipove koji podržavaju 802.11ax.
      Upravljački program temelji se na mac80211 stacku i podržava načine rada pristupne točke, radne stanice i mesh mrežnog čvora.

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

    • Dodano upravljački programi za LCD panele Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Sharp LS020B1DD01D.

    • Dodano podrška za ARM ploče i Gen1 platforme Amazon Echo (temeljen 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,
      Čitač e-knjiga Tolino Shine 3,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX i HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
      Rockchip Radxa Dalang Carrier, 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 SC9863A, Qualcomm SC7180. Dodana podrška za PCIe kontroler koji se koristi u Raspberry Pi 4.

Istodobno, Latinoamerička zaklada za slobodni softver formirana
opcija potpuno besplatna jezgra 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ćuje učitavanje blobova u upravljačke programe za AMD TEE, ATH11K i Mediatek SCP. Ažurirani kod za čišćenje mrlja u upravljačkim programima i podsustavima AMD PSP, amdgpu i nouveau.

Izvor: opennet.ru

Dodajte komentar