Izdaja jedra Linux 5.1

После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 5.1. Med med vsemi opaznimi novostmi: nov vmesnik za asinhrono vhodno/izhodno io_uring, možnost uporabe NVDIMM kot RAM, podpora deljene virtualne pomnilniške enote v Nouveau, podpora za razširljivo spremljanje zelo velikih FS preko fanotify, možnost prilagajanja ravni stiskanja Zstd v Btrfs, nova obdelovalna enota cpuidle TEO, implementacija sistemskih klicev za rešitev problema leta 2038, možnost zagona naprav z device-mapper brez initramfs, LSM-modul SafeSetID, podpora za kombinirane live popravke.

Glavne novosti:

  • Дисковая подсистема, ввод/вывод и файловые системы
    • Uveljavljen je nov vmesnik za asinhrono vhodno/izhodno — io_uring, ki se odlikuje s podporo za polnjenje vhodno/izhodnih podatkov in možnostjo delovanja tako s kot brez predpomnjenja. Spomnimo, da prej predlagani mehanizem asinhronega vhodno/izhodnega poslovanja 'aio' ni podpirala predpomnjenega vhodno/izhodnega informacij, deloval je samo v načinu O_DIRECT (brez predpomnjenja in obhod skozi predpomnilnik), imel je težave z blokadami zaradi čakanja na dostopnost metapodatkov in je prikazoval visoke stroške zaradi kopiranja podatkov v pomnilniku.

      V okviru API
      io_uring so se razvijalci trudili odpraviti pomanjkljivosti starega vmesnika aio. Po izvedbe io_uring je zelo blizu SPDK in bistveno presega libaio pri delu s polnjenjem. Za uporabo io_uring v končnih aplikacijah, ki delujejo v uporabniškem prostoru, je bila pripravljena knjižnica liburing, ki zagotavlja visoko raven obvijanja nad jedrskim vmesnikom;

    • V mehanizmu za sledenje dogodkom v sistemu fanotify() je dodana podpora za sledenje spremembam superblokov in strukturi dirent (dogodki ustvarjanja, odstranjevanja in premikanja map). Predstavljene možnosti pomagajo rešiti težave z razširljivostjo, ki se pojavijo pri ustvarjanju rekurzivnih sledi sprememb v zelo velikih FS s pomočjo mehanizma inotify (spremembe dirent je bilo prej mogoče slediti le preko inotify, vendar
      je bila učinkovitost v pogojih rekurzivnega sledenja velikim vgrajenim mapam nezadostna). Zdaj je takšno spremljanje mogoče učinkovito opraviti skozi fanotify;
    • V datotečnem sistemu Btrfs je dodana možnost nastavitve ravni stiskanja za algoritem zstd, ki ga je mogoče obravnavati kot optimalno ravnotežje med hitrim, a neučinkovitim lz4 in počasnim, a dobro stiskalnim xz. Tako kot je bilo prej mogoče nastaviti raven stiskanja pri uporabi zlib za zstd, je bila dodana podpora za montažno opcijo «-o compress=zstd:level». Pri testiranju je minimalna prva raven zagotovila stiskanje podatkov 2.658-krat pri hitrosti stiskanja 438.47 MB/s, hitrosti razpakiranja 910.51 MB/s in porabi pomnilnika 780 MB, največja 15. raven pa 3.126-krat, vendar pri hitrosti stiskanja 37.30 MB/s, razpakiranja 878.84 MB/s in porabi pomnilnika 2547 MB;
    • Dodana možnost zagona iz datotečnega sistema, nameščenega na napravi device-mapper, brez uporabe initramfs. Od trenutne različice jedra se naprava device-mapper lahko neposredno uporablja v procesu zagona, na primer kot particija z osnovnim FS. Nastavitev particije se opravi s pomočjo zagonskega parametra «dm-mod.create». Med dovoljenimi moduli za zagon device-mapper so: «crypt», «delay», «linear», «snapshot-origin» in «verity»;
    • V sistem datotek, usmerjen k Flash-nakupom F2FS, je dodana oznaka F2FS_NOCOW_FL, ki omogoča izklop načina copy-on-write za določeno datoteko;
    • Iz jedra je bila odstranjena datotečna sistem Exofs, ki predstavlja različico ext2, prilagojeno za delo s shranjevalnimi napravami OSD (Device Object-based Storage). Odstranjena je tudi podpora za SCSI protokol za podobne shranjevalne naprave;
  • Virtualizacija in varnost
    • V prctl() je bila dodana možnost PR_SPEC_DISABLE_NOEXEC za upravljanje spekulativne izvedbe navodil za izbrani proces. Nova možnost omogoča selektivno izklop spekulativne izvedbe za procese, ki so potencialno lahko napadeni z vrsto napada Spectre. Blokada velja do prvega klica exec();
    • Uveden je bil LSM-modul SafeSetID, ki sistemskim storitvam omogoča varno upravljanje uporabnikov brez povišanja privilegijev (CAP_SETUID) in brez pridobivanja pooblastil uporabnika root. Dodelitev privilegijev se izvede s definicijo v securityfs pravil na podlagi bele liste dovoljenih vezav (v obliki «UID1:UID2»);
    • Dodani so nizkonivojski spremembe, potrebne za strukturo nalaganja varnostnih modulov (LSM). Uvedena je nastavitev za nalaganje jedra 'lsm', ki omogoča upravljanje z nalaganjem in vrstnim redom nalaganja modulov.
    • V sistem za revizijo je bila dodana podpora za imenske prostore datotek.
    • Razširjena možnosti GCC-ključka structleak, ki omogoča preprečevanje morebitnih uhajanj vsebine pomnilnika. Zagotovljena je inicializacija vseh spremenljivk, ki se uporabljajo v kodi preko sklicevanja na kup.
  • Mrežna podsistem
    • Za sokete je bila uvedena nova možnost 'SO_BINDTOIFINDEX', ki je podobna
      'SO_BINDTODEVICE', vendar kot argument sprejema indeksno številko omrežnega vmesnika namesto imena vmesnika.
    • V skladišče mac80211 je bila dodana možnost dodelitve več BSSID (MAC-naslovov) enemu napravi. V okviru projekta za optimizacijo zmogljivosti WiFi je v skladišče mac80211 dodano upoštevanje razporeditve eterskega časa in možnost razporejanja eterskega časa med več postajami (pri delovanju v načinu dostopne točke se manj časa dodeli počasnim brezžičnim postajem, namesto da bi se eterski čas enakomerno razporedil med vse postaje).
    • Dodan je mehanizem 'devlink health' zagotavljajo obvestila ob težavah z omrežnim vmesnikom.
  • Pomnilnik in sistemske storitve
    • Implementirano varna dostava signalov, ob upoštevanju možnosti ponovne uporabe PID. Na primer, pri klicu kill je prej lahko prišlo do situacije, ko je bil cilj PID takoj po pošiljanju signala sproščen zaradi končnega dela procesa in zaseden z drugim procesom, kar je povzročilo, da je bil signal poslan drugemu procesu. Da bi se izognili takšnim situacijam, je bila dodana nova sistemska klicna funkcija pidfd_send_signal, ki uporablja datoteke iz /proc/pid za zagotavljanje stabilne povezave s procesom. Tudi če bo PID ponovno uporabljen med obdelavo sistemskega klica, se datotečni descriptor ne bo spremenil in ga je mogoče varno uporabiti za pošiljanje signala procesu.
    • Dodana možnost uporabe naprav trajne pomnilnosti (persistent-memory, na primer NVDIMM.) kot pomnilnik. Do sedaj so podobne naprave delovale kot naprave za shranjevanje, zdaj pa jih je mogoče uporabiti tudi kot dodatno operativno pomnilnik. Možnost je bila uvedena v odgovor na želje uporabnikov, ki so pripravljeni sprejeti manjšo zmogljivost in želijo uporabljati privzeti API za upravljanje pomnilnika jedra Linux namesto obstoječih sistemov za dodeljevanje pomnilnika v uporabniškem prostoru, ki delujejo nad mmap za dax-datoteko;
    • Dodana je nova obdelovalna enota za mirovanje CPU (cpuidle, ki odloča, kdaj lahko CPU preide v globoke načine varčevanja z energijo, globlji kot je način — večja je varčnost, a več časa potrebuje za izhod iz načina) — TEO (Governor usmerjen na časovne dogodke). Do sedaj sta bili na voljo dve obdelovalni enoti cpuidle — „menu“ in „ladder“, ki se razlikujeta po heuristikah. V obdelovalniku „menu“ obstajajo znane težave pri sprejemanju heurističnih odločitev, zaradi česar je bilo odločeno, da se pripravi nova obdelovalna enota. TEO se umešča kot alternativa obdelovalniku „menu“, ki omogoča višjo zmogljivost ob enaki ravni porabe energije.
      Novi obdelovalnik se lahko aktivira z zagonskim parametrom „cpuidle.governor=teo“;
    • V okviru dela na odpravi problema leta 2038., ki jo povzroča preliv 32-bitne vrste time_t, so bili dodani sistemski klici, ki ponujajo 64-bitne števce časa za 32-bitne arhitekture. Tako je zdaj mogoče uporabiti 64-bitno strukturo time_t na vseh arhitekturah. Podobne spremembe so bile izvedene tudi v omrežni podsistemu za možnosti timestamp omrežnih soketov;
    • V sistem je bila vključena funkcionalnost vročega uvajanja popravkov v jedro (live patching) je dodana možnost "Atomic Replace" za atomarno uporabo serije sprememb na eni funkciji. Omenjena možnost omogoča širjenje povzetkov popravkov, ki zajemajo več sprememb hkrati, namesto precej zapletenega postopka etapnega nalaganja live-popravkov v natančno določenem vrstnem redu. Če so morala predhodna vsaka naslednja sprememba izhajati iz stanja funkcije po prejšnji spremembi, je zdaj mogoče širiti več sprememb, povezanih z enim izhodiščnim stanjem (tj. podpore lahko vzdržujejo en povzetek popravka v zvezi z osnovnim jedrom namesto verige medsebojno odvisnih popravkov);
    • Objavljena je zastarela podpora formatu izvršnih datotek a.out in
      je uklonjen koda za oblikovanje core-datotek v formatu a.out, ki je v zapuščenem stanju. Format a.out se že dolgo ne uporablja na sistemih z Linuxom, generacija datotek a.out pa že dolgo ni podprta z vsemi sodobnimi orodji v privzetih konfiguracijah za Linux. Poleg tega je nalagalnik za datoteke a.out lahko v celoti implementiran v uporabniškem prostoru;
    • V mehanizem verifikacije BPF-programov je bila dodana možnost ugotavljanja in odstranjevanja neuporabljene kode. V jedro so vključeni tudi popravki s podporo spinlock za podsistem BPF, ki ponujajo dodatne možnosti za upravljanje s paralelnim izvajanjem BPF-programov;
  • Oprema
    • V gonilniku Nouveau je dodana podpora heterogene upravljanja pomnilnika, ki omogoča dostop CPU-jem in GPU-jem do skupnih sinhroniziranih področij pomnilnika. Sistem deljene virtualne pomnilnika (SVM, shared virtual memory) je implementiran na osnovi podsistema HMM (Heterogeneous memory management), ki omogoča uporabo naprav s svojimi enotami za upravljanje pomnilnika (MMU, memory management unit), ki lahko dostopajo do glavne pomnilnika. Med drugim lahko z HMM organiziramo skupni naslovni prostor med GPU in CPU, v katerem lahko GPU dostopa do glavne pomnilnika procesa. Podpora SVM je trenutno vključena le za GPU družine Pascal, čeprav je podpora zagotovljena tudi za GPU Volta in Turing. Poleg tega, v Nouveau dodano nov ioctl za upravljanje migracijo območij pomnilnika procesov v pomnilnik GPU;
    • V DRM-pogonu Intel za GPU Skylake in novejše (gen9+) vključen по умолчанию режим fastboot, который исключает ненужные переключения режимов во время загрузки. Dodani новые идентификаторы устройств на базе микроархитектур Coffelake и Ice Lake. Для чипов Coffelake je dodana поддержка GVT (виртуализация GPU). Для виртуальных GPU je bila uvedena поддержка VFIO EDID. Для LCD панелей MIPI/DSI je dodana поддержка элементов ACPI/PMIC. Realizirano новые TV-режимы 1080p30/50/60 TV;
    • В драйвер amdgpu добавлена поддержка GPU Vega10/20 BACO. Реализованы средства управления питанием для Vega 10/20 и таблицы управления кулером для Vega 10. Также добавлены новые PCI-идентификаторы устройств для GPU Picasso. Dodano интерфейс управления планируемыми зависимостями для исключения взаимных блокировок;
    • Dodano DRM/KMS-драйвер для ускорителей экранных операций ARM Komeda (Mali D71);
    • Добавлена поддержка экранных панелей Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 и Kingdisplay kd097d04;
    • Добавлена поддержка звуковых кодеков Rockchip RK3328, Cirrus Logic CS4341 и CS35L36, MediaTek MT6358, Qualcomm WCD9335 и Ingenic JZ4725B, а также звуковой платформы Mediatek MT8183;
    • Добавлена поддержка NAND-контроллеров Flash STMicroelectronics FMC2, Amlogic Meson;
    • Добавлена поддержка ускорителей для систем машинного обучения Habana AI;
    • Добавлена поддержка гигабитных Ethernet-контроллеров NXP ENETC и беспроводных интерфейсов MediaTek MT7603E (PCIe) и MT76x8.

Latinoameriški sklad prostega programske opreme je formirala
varijantu полностью свободное ядро 5.1 — Linux-libre 5.1-gnu, очищенное от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске отключена загрузка блобов в драйверах mt7603 и goya. Обновлён код очистки блобов в драйверах и подсистемах wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk и touchscreen_dmi. Прекращена очистка блобов в загрузчике прошивок lantiq xrx200 из-за его удаления из ядра.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster