Izdaja jedra Linuxa 5.6

Po dveh mesecih razvoja, Linus Torvalds uveden izdaja jedra Linux 5.6. Med najbolj opaznimi spremembami: integracija vmesnika WireGuard VPN, podpora za USB4, imenski prostori za čas, možnost ustvarjanja upravljavcev zastojev TCP z uporabo BPF, začetna podpora za MultiPath TCP, osvoboditev jedra težave 2038, mehanizem »bootconfig«. , ZoneFS.

Nova različica vključuje 13702 popravkov 1810 razvijalcev,
velikost popravka - 40 MB (spremembe so vplivale na 11577 datotek, dodanih je bilo 610012 vrstic kode,
294828 vrstic odstranjenih). Približno 45 % vseh predstavljenih v 5.6
spremembe so povezane z gonilniki naprav, približno 15 % sprememb je
odnos do posodabljanja kode, specifične za arhitekture strojne opreme, 12 %
povezanih z omrežnim skladom, 4 % z datotečnimi sistemi in 3 % z notranjimi
podsistemi jedra.

Glavni inovacije:

  • Omrežni podsistem
    • Dodano izvedba vmesnika VPN WireGuard, ki je implementiran na podlagi sodobnih metod šifriranja (ChaCha20, Poly1305, Curve25519, BLAKE2s), je enostaven za uporabo, brez zapletov, se je izkazal v številnih velikih implementacijah in zagotavlja zelo visoko zmogljivost (3,9-krat hitrejša od OpenVPN v smislu prepustnosti). WireGuard uporablja koncept usmerjanja šifrirnega ključa, ki vključuje pripenjanje zasebnega ključa vsakemu omrežnemu vmesniku in njegovo uporabo za vezavo javnih ključev. Javni ključi se izmenjujejo za vzpostavitev povezave na podoben način kot SSH. Kriptografski primitivi, potrebni za delovanje WireGuard so bili preneseno iz knjižnice cink kot del standardnega Crypto API in vključeno v jedro 5.5.
    • Začetek integracija komponent, potrebnih za podporo MPTCP (MultiPath TCP), razširitev protokola TCP za organizacijo delovanja povezave TCP z dostavo paketov hkrati po več poteh prek različnih omrežnih vmesnikov, povezanih z različnimi naslovi IP. Za omrežne aplikacije je takšna združena povezava videti kot običajna povezava TCP, vso logiko ločevanja tokov pa izvaja MPTCP. Multipath TCP se lahko uporablja za povečanje prepustnosti in zanesljivosti. Na primer, MPTCP se lahko uporablja za organizacijo prenosa podatkov na pametnem telefonu z uporabo povezav WiFi in 4G hkrati ali za zmanjšanje stroškov s povezovanjem strežnika z uporabo več poceni povezav namesto ene drage.
    • Dodano podpora za disciplino obdelave omrežne čakalne vrste sch_ets (Izboljšana izbira prenosa, IEEE 802.1Qaz), ki zagotavlja možnost porazdelitve pasovne širine med različnimi razredi prometa. Če je obremenitev določenega prometnega razreda pod dodeljeno pasovno širino, potem ETS dovoljuje drugim prometnim razredom uporabo razpoložljive (neuporabljene) pasovne širine. Qdisc sch_ets je konfiguriran kot disciplina PRIO in uporablja prometne razrede za definiranje strogih in deljenih omejitev pasovne širine. ETS deluje kot kombinacija disciplin PREJ и DRR — če so prometni razredi strogo omejeni, se uporablja PRIO, če pa v čakalni vrsti ni prometa, deluje kot DRR.
    • Dodana nova vrsta programov BPF BPF_PROG_TYPE_STRUCT_OPS, ki vam omogoča implementacijo obdelovalcev funkcij jedra prek BPF. Trenutno je to funkcijo že mogoče uporabiti za implementacijo algoritmov za nadzor prezasedenosti TCP v obliki programov BPF. Kot primer predlagano BPF program z implementacijo algoritma DCTCP.
    • Sprejeto v jedro Spremembe, orodja za prevajanje ettool z ioctl() za uporabo netlink vmesnik. Novi vmesnik olajša dodajanje razširitev, izboljša obravnavo napak, omogoča pošiljanje obvestil, ko se stanje spremeni, poenostavi interakcijo med jedrom in uporabniškim prostorom ter zmanjša število poimenovanih seznamov, ki jih je treba sinhronizirati.
    • Dodana izvedba algoritma za upravljanje omrežne čakalne vrste FQ-PIE (Flow Queue PIE), katerega namen je zmanjšati negativni vpliv medpomnilnika vmesnih paketov na robno omrežno opremo (bufferbloat). FQ-PIE dokazuje visoko učinkovitost pri uporabi v sistemih s kabelskimi modemi.
  • Diskovni podsistem, V/I in datotečni sistemi
    • Za datotečni sistem Btrfs dodano asinhrona izvedba operacije DISCARD (označevanje sproščenih blokov, ki jih ni več treba fizično shranjevati). Sprva so se operacije DISCARD izvajale sinhrono, kar bi lahko povzročilo poslabšanje zmogljivosti zaradi čakanja pogonov na dokončanje ustreznih ukazov. Asinhrona izvedba vam omogoča, da ne čakate, da pogon dokonča DISCARD, in to operacijo izvedete v ozadju.
    • V XFS izvede Čiščenje kode, ki je uporabljala stare 32-bitne časovne števce (vrsta time_t je bila nadomeščena s time64_t), kar je povzročilo težavo 2038. Popravljene napake in poškodbe pomnilnika, do katerih je prišlo na 32-bitnih platformah. Koda je bila predelana za delo z razširjenimi atributi.
    • V datotečni sistem ext4 narejeno Optimizacije zmogljivosti, povezane z obravnavanjem zaklepanja inode med operacijami branja in pisanja. Izboljšana zmogljivost ponovnega pisanja v načinu Direct I/O. Za poenostavitev diagnoze težav sta prva in zadnja koda napak shranjeni v superbloku.
    • V datotečnem sistemu F2FS izvajati sposobnost shranjevanja podatkov v stisnjeni obliki. Za posamezno datoteko ali imenik lahko omogočite stiskanje z ukazom "chattr +c file" ali "chattr +c dir; dotaknite se imenika/datoteke". Če želite stisniti celotno particijo, lahko uporabite možnost »-o compress_extension=ext« v pripomočku za priklop.
    • Jedro vključuje datotečni sistem ZoneFS, ki poenostavlja nizkonivojsko delo z območnimi pomnilniškimi napravami. Zonski diski pomenijo naprave na trdih magnetnih diskih ali NVMe SSD, katerih pomnilniški prostor je razdeljen na cone, ki sestavljajo skupine blokov ali sektorjev, v katere je dovoljeno samo zaporedno dodajanje podatkov, pri čemer se posodablja celotna skupina blokov. FS ZoneFS je razvil Western Digital in povezuje vsako cono v pogonu z ločeno datoteko, ki se lahko uporablja za shranjevanje podatkov v neobdelanem načinu brez manipulacije na ravni sektorja in bloka, tj. Programom omogoča uporabo datotečnega API-ja namesto neposrednega dostopa do blokovne naprave z ioctl.
    • V NFS je namestitev particij prek UDP privzeto onemogočena. Dodana podpora za možnost neposrednega kopiranja datotek med strežniki, opredeljeno v specifikaciji NFS 4.2. Dodana je nova možnost namestitve "softreval", ki omogoča uporabo predpomnjenih vrednosti atributov v primeru okvare strežnika. Na primer, ko določite to možnost, potem ko strežnik ni na voljo, se še vedno lahko premikate po poteh v particiji NFS in dostopate do informacij, ki so se naselile v predpomnilniku.
    • Izvede optimizacija delovanja mehanizma fs-verity, ki se uporablja za spremljanje celovitosti in avtentikacije posameznih datotek. Povečana hitrost zaporednega branja zahvaljujoč uporabi Merklovega zgoščenega drevesa. Delovanje FS_IOC_ENABLE_VERITY je bilo optimizirano, ko v predpomnilniku ni podatkov (uporabljeno je bilo preventivno branje strani s podatki).
  • Virtualizacija in varnost
    • Možnost onemogočanja modula SELinux med delovanjem je bila opuščena, razkladanje že aktiviranega SELinuxa pa bo v prihodnje prepovedano. Če želite onemogočiti SELinux, boste morali posredovati parameter "selinux=0" v ukazni vrstici jedra.
    • Dodano podpora za imenske prostore za čas (časovni imenski prostori), ki vam omogoča, da povežete stanje sistemske ure z vsebnikom (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), uporabite svoj čas v vsebniku in pri selitvi vsebnika na drugega gostitelja zagotovite, da ostanejo odčitki CLOCK_MONOTONIC in CLOCK_BOOTTIME nespremenjeni (upoštevajte čas po nalaganju, z ali brez upoštevanja stanja mirovanja ).

    • Področje blokiranja /dev/random je bilo odstranjeno. Vedenje /dev/random je podobno kot /dev/urandom v smislu preprečevanja blokiranja entropije po inicializaciji bazena.
    • Jedro jedra vključuje gonilnik, ki gostujočim sistemom, ki izvajajo VirtualBox, omogoča pripenjanje imenikov, ki jih izvozi gostiteljsko okolje (mapa v skupni rabi VirtualBox).
    • V podsistem BPF je bil dodan nabor popravkov (BPF dispečer), pri uporabi mehanizma Retpoline za zaščito pred napadi razreda Spectre V2 vam omogoča, da povečate učinkovitost klicanja programov BPF, ko pride do dogodkov, povezanih z njimi (omogoča na primer pospešitev klicanja upravljavcev XDP, ko prispe omrežni paket).
    • Dodan gonilnik za podporo TEE (Trusted Execution Environment), ki je vgrajen v AMD APU.
  • Pomnilniške in sistemske storitve
    • BPF je dodal podporo za globalne funkcije. Razvoj se izvaja kot del pobude za dodajanje podpore za knjižnice funkcij, ki jih je mogoče vključiti v programe BPF. Naslednji korak bo podpora dinamičnih razširitev, ki omogočajo nalaganje globalnih funkcij, vključno z zamenjavo obstoječih globalnih funkcij, medtem ko so v uporabi. Podsistem BPF dodaja tudi podporo za različico operacije zemljevida (ki se uporablja za shranjevanje trajnih podatkov), ki podpira izvajanje v paketnem načinu.
    • Dodana Naprava “cpu_cooling” vam omogoča, da ohladite pregret CPE tako, da ga postavite v stanje mirovanja za kratek čas.
    • Dodan sistemski klic odpri2(), ki ponuja niz dodatnih zastavic za omejitev ločljivosti poti datoteke (prepoved prečkanja točk priklopa, simbolne povezave, čarobne povezave (/proc/PID/fd), komponente “../”).
    • Za heterogene sisteme, ki temeljijo na arhitekturi big.LITTLE, ki združuje zmogljiva in manj učinkovita energijsko učinkovita jedra CPE v enem čipu, se parameter uclamp_min nastavi pri izvajanju nalog v realnem času (pojavil v jedru 5.3 obstaja mehanizem za zavarovanje obremenitve). Ta parameter zagotavlja, da bo razporejevalnik nalogo postavil v jedro CPE z zadostno zmogljivostjo.
    • Jedro je osvobojeno težave leta 2038. Zamenjali zadnje preostale obdelovalce, ki so za epohalni števec časa uporabljali 32-bitni (signed int) tip time_t, ki naj bi se ob upoštevanju poročila iz leta 1970 leta 2038 prelil.
    • Nadaljnje izboljšave asinhronega V/I vmesnika io_uringv katerem zavarovano podpora za nove operacije: IORING_OP_FALLOCATE (rezervacija praznih območij), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (odpiranje in zapiranje datotek),
      IORING_OP_FILES_UPDATE (dodajanje in odstranjevanje datotek s seznama za hitri dostop),
      IORING_OP_STATX (zahteva za informacije o datoteki),
      IORING_OP_READ,
      IORING_OP_WRITE (poenostavljeni analogi IORING_OP_READV in IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asinhroni različici klicev posix_fadvise in madvise), IORING_OP_SEND,
      IORING_OP_RECV (pošiljanje in prejemanje omrežnih podatkov),
      IORING_OP_EPOLL_CTL (izvaja operacije na deskriptorjih datotek epoll).

    • Dodan sistemski klic pidfd_getfd(), ki omogoča procesu, da pridobi deskriptor datoteke za odprto datoteko iz drugega procesa.
    • Izvedeno mehanizem “bootconfig”, ki poleg možnosti ukazne vrstice omogoča določitev parametrov jedra prek nastavitvene datoteke. Za dodajanje takšnih datotek v sliko initramfs je predlagan pripomoček bootconfig. To funkcijo lahko uporabite na primer za konfiguracijo kprobes ob zagonu.
    • Predelano mehanizem za čakanje na pisanje in branje podatkov v neimenovanih ceveh. Sprememba je omogočila pospešitev opravil, kot je vzporedno sestavljanje velikih projektov. Vendar pa lahko optimizacija pri GNU make zaradi napake v izdaji 4.2.1, ki je bila odpravljena v različici 4.3, povzroči dirkalno stanje.
    • Dodana je zastavica PR_SET_IO_FLUSHER v prctl(), ki se lahko uporablja za označevanje procesov brez pomnilnika, za katere ne bi smele veljati omejitve, ko sistemu primanjkuje pomnilnika.
    • Na podlagi sistema distribucije pomnilnika ION, ki se uporablja v sistemu Android, je bil implementiran podsistem dma-buf kopice, ki omogoča nadzor dodeljevanja medpomnilnikov DMA za skupno rabo pomnilniških območij med gonilniki, aplikacijami in različnimi podsistemi.
  • Arhitekture strojne opreme
    • Dodana podpora za razširitev E0PD, ki se je pojavila v ARMv8.5 in omogoča zaščito pred napadi, povezanimi s špekulativnim izvajanjem navodil na CPE. Zaščita, ki temelji na E0PD, povzroči nižje stroške kot zaščita KPTI (Kernel Page Table Isolation).
    • Za sisteme, ki temeljijo na arhitekturi ARMv8.5, je bila dodana podpora za ukaz RNG, ki omogoča dostop do strojnega generatorja psevdonaključnih števil. V jedru se navodilo RNG uporablja za ustvarjanje entropije pri inicializaciji generatorja psevdonaključnih števil, ki ga zagotavlja jedro.
    • Odstranjena podpora za MPX (razširitve zaščite pomnilnika), dodana v jedro 3.19 in vam omogoča, da organizirate preverjanje kazalcev, da zagotovite spoštovanje meja pomnilniških območij. Ta tehnologija ni bila pogosto uporabljena v prevajalnikih in je bila odstranjena iz GCC.
    • Za arhitekturo RISC-V je implementirana podpora za orodje za odpravljanje napak KASan (Kernel address sanitizer), ki pomaga prepoznati napake pri delu s pomnilnikom.
  • Оборудование
    • Implementirana podpora za specifikacije USB 4.0, ki temelji na protokolu Thunderbolt 3 in zagotavlja prepustnost do 40 Gbps, hkrati pa ohranja povratno združljivost z USB 2.0 in USB 3.2. Po analogiji z Thunderbolt Vmesnik USB 4.0 omogoča tuneliranje različnih protokolov prek enega kabla s konektorjem Tip-C, vključno s PCIe, Display Port in USB 3.x, kot tudi programske izvedbe protokolov, na primer za organiziranje omrežnih povezav med gostitelji. Izvedba temelji na gonilniku Thunderbolt, ki je že vključen v jedro Linuxa, in ga prilagaja delovanju z gostitelji in napravami, združljivimi z USB4. Spremembe prav tako dodajajo podporo za naprave Thunderbolt 3 programski izvedbi Connection Managerja, ki je odgovoren za ustvarjanje tunelov za povezovanje več naprav prek enega konektorja.
    • V gonilniku amdgpu dodano začetna podpora za tehnologijo zaščite pred kopiranjem HDCP 2.x (High-bandwidth Digital Content Protection). Dodana podpora za čip AMD Pollock ASIC, ki temelji na Raven 2. Implementirana možnost ponastavitve GPE za družini Renoir in Navi.
    • Gonilnik DRM za grafične kartice Intel dodano Podpora DSI VDSC za čipe, ki temeljijo na mikroarhitekturi Ice Lake in Tiger Lake, implementiran je LMEM mmap (lokalni pomnilnik naprave), izboljšano je razčlenjevanje VBT (Video BIOS Table), za čipe Coffee Lake je implementirana podpora HDCP 2.2.
    • Nadaljevalo se je delo pri poenotenju kode gonilnika amdkfd (za ločene grafične procesorje, kot so Fiji, Tonga, Polaris) z gonilnikom amdgpu.
    • Gonilnik k10temp je bil predelan in je dodal podporo za prikaz parametrov napetosti in toka za procesorje AMD Zen, kot tudi razširjene informacije iz temperaturnih senzorjev, ki se uporabljajo v procesorjih Zen in Zen 2.
    • V vozniku nouveau dodano podpora za preverjeni način nalaganja vdelane programske opreme za grafične procesorje NVIDIA, ki temeljijo na mikroarhitekturi Turing (GeForce RTX 2000), kar je omogočilo podporo za 3D pospeševanje za te kartice (potreben je prenos uradne vdelane programske opreme z digitalnim podpisom NVIDIA). Dodana podpora za grafični motor TU10x. Težave z zvokom HD so bile odpravljene.
    • Dodana podpora za stiskanje podatkov pri prenosu prek DisplayPort MST (Multi-Stream Transport).
    • Dodan nov gonilnik "ath11k» za brezžične čipe Qualcomm, ki podpirajo 802.11ax.
      Gonilnik temelji na skladu mac80211 in podpira načine dostopne točke, delovne postaje in mrežnega vozlišča.

    • Preko sysfs je omogočen dostop do berljivih odčitkov temperaturnih senzorjev, ki se uporabljajo na sodobnih trdih diskih in SSD-jih.
    • Oddano bistvene spremembe zvočnega sistema ALSA, katerih cilj je odpraviti kodo težave leta 2038 (izogibanje uporabi 32-bitnega tipa time_t v vmesnikih snd_pcm_mmap_status in snd_pcm_mmap_control). Dodana podpora za nove zvočne kodeke
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Dodano gonilniki 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 podpora za plošče ARM in platforme Gen1 Amazon Echo (na osnovi 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,
      bralnik e-knjig Tolino Shine 3,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX in 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 podpora za krmilnik PCIe, ki se uporablja v Raspberry Pi 4.

Istočasno Latinskoameriška fundacija za prosto programsko opremo oblikovana
možnost popolnoma brezplačno jedro 5.6 - Linux-libre 5.6-gnu, očiščen elementov vdelane programske opreme in gonilnikov, ki vsebujejo neproste komponente ali odseke kode, katerih obseg omejuje proizvajalec. Nova izdaja onemogoči nalaganje blob v gonilnike za AMD TEE, ATH11K in Mediatek SCP. Posodobljena koda za čiščenje madežev v gonilnikih in podsistemih AMD PSP, amdgpu in nouveau.

Vir: opennet.ru

Dodaj komentar