Udgivelse af Linux-kernen 5.1

Efter to måneders udvikling præsenterede Linus Torvalds den kerneudgivelse Linux 5.1. Blandt de mest bemærkelsesværdige ændringer er: et nyt interface til asynkron input/output io_uring, muligheden for at bruge NVDIMM som RAM, understøttelse af delte virtuelle hukommelser i Nouveau, understøttelse af skalerbart overvågningssystem for meget store FS via fanotify, muligheden for at indstille komprimeringsniveauer Zstd i Btrfs, en ny cpuidle TEO-håndterer, implementering af systemkald for at løse 2038-problemet, mulighed for opstart fra enheder device-mapper uden initramfs, LSM-modul SafeSetID, understøttelse af kombinerede live-patcher.

Vigtige nyheder:

  • DiskSubsystem, input/output og filsystemer
    • Et nyt interface til asynkron input/output er blevet implementeret — io_uring, hvilket er bemærkelsesværdigt ved at støtte polling af input/output og muligheden for at arbejde både med og uden buffering. Lad os huske, at det tidligere foreslåede mekanisme for asynkron input/output "aio" ikke støttede buffered input/output, kunne kun fungere i O_DIRECT-tilstand (uden buffering og uden cache), havde problemer med at opnå døde låse på grund af ventetid på metadata og viste store overhead ved data kopiering i hukommelsen.

      Inden for API'et
      io_uring har udviklerne forsøgt at rette de mangler, som det gamle aio-interface havde. I forhold til ydelse er io_uring meget tæt på SPDK og overgår betydeligt libaio ved aktiv polling. For at bruge io_uring i slutapplikationer, der kører i brugerens rum, er der blevet forberedt et bibliotek liburing, som giver et højere niveau af indpakning over kernel-interface;

    • I mekanismen til overvågning af begivenheder i FS fanotify() tilføjet understøttelse af overvågning af situationer med ændring af superblokken og strukturen dirent (begivenheder ved oprettelse, sletning og flytning af kataloger). De præsenterede muligheder hjælper med at løse problemer med skalerbarhed, der opstår ved at oprette rekursive opfølgningsændringer i meget store FS via mekanismen inotify (ændringer af dirent kunne tidligere kun følges via inotify, men
      ydelsen ved rekursiv overvågning af store indlejrede kataloger efterlod meget at ønske). Nu kan sådan overvågning udføres effektivt via fanotify;
    • I filsystemet Btrfs tilføjet Mulighed for at justere komprimeringsniveauet for algoritmen zstd, som kan betragtes som et optimalt kompromis mellem den hurtige, men ineffektive lz4 og den langsomme, men effektivt komprimerende xz. Ligesom man tidligere kunne indstille komprimeringsniveauet ved anvendelse af zlib, er der tilføjet support for monteringsmuligheden «-o compress=zstd:level». Under testning gav det minimale første niveau en datakompression på 2,658 gange med en komprimeringshastighed på 438,47 MB/s, en udpakningshastighed på 910,51 MB/s, og et hukommelsesforbrug på 780 MB, mens det maksimale niveau 15 gav en kompression på 3,126 gange, men med en komprimeringshastighed på 37,30 MB/s, en udpakningshastighed på 878,84 MB/s og et hukommelsesforbrug på 2547 MB;
    • Tilføjet Mulighed for at starte op fra et filsystem placeret på en device-mapper enhed uden brug af initramfs. Fra den nuværende version af kerne kan device-mapper anvendes direkte under opstarten, for eksempel som en partition med rodfilsystemet. Opsætningen af partitionen sker ved hjælp af bootparameteren «dm-mod.create». Blandt de tilladte opstartsmuligheder for device-mapper-modulerne er: «crypt», «delay», «linear», «snapshot-origin» og «verity»;
    • I det Flash-drevoptimerede filsystem F2FS er der tilføjet en flag F2FS_NOCOW_FL, som gør det muligt at deaktivere copy-on-write-tilstand for en given fil;
    • Filssystemet er blevet fjernet fra kernen Exofs, som er en variant af ext2, tilpasset til at arbejde med objektbaserede lagringsenheder OSD (Object-based Storage Device). Der er også fjernet støtte for SCSI-protokollen for sådanne objektlagringsenheder;
  • Virtualisering og sikkerhed
    • Der er tilføjet en mulighed PR_SPEC_DISABLE_NOEXEC til prctl() for at styre spekulativ udførelse af instruktioner for den valgte proces. Den nye mulighed gør det muligt selektivt at deaktivere spekulativ udførelse for processer, der potentielt kan være sårbare over for en type angreb kaldet Spectre. Blokeringen gælder indtil den første exec()-kald;
    • Implementeret LSM-modul SafeSetID, som gør det muligt for systemtjenester at administrere brugere sikkert uden at få forhøjede privilegier (CAP_SETUID) og uden at få root-brugerens beføjelser. Tildeling af privilegier sker gennem definition i securityfs af regler baseret på en hvidliste over tilladte bindinger (i formen «UID1:UID2»);
    • Tilføjet lavniveauændringer, der er nødvendige for stakorganisation af sikkerhedsmoduler (LSM). Introduceret en kernel boot parameter 'lsm', som gør det muligt at styre, hvilke moduler der indlæses og i hvilken rækkefølge;
    • Under auditsystemet er der tilføjet support for filnamespace;
    • Udvidet funktionaliteten af GCC-pluginet structleak, der muliggør blokering af potentielle hukommelseslækager. Sørget for initialisering af alle variable, der bruges i koden via referenceadgang i stakken;
  • Netværkssubsystem
    • For sockets er implementeret er der en ny mulighed 'SO_BINDTOIFINDEX', som ligner
      'SO_BINDTODEVICE', men som accepterer interfaceindekset som argument i stedet for interface-navnet;
    • I mac80211-stakken er der tilføjet mulighed for at tildele en enhed flere BSSID'er (MAC-adresser). Som en del af projektet til performanceoptimering af WiFi er der i mac80211-stakken tilføjet hensyntagen til fordelingen af lufttid og mulighed for at fordele lufttid mellem flere stationer (ved drift i adgangspunkttilstand tildeles mindre tid til at transmittere til langsomme trådløse stationer i stedet for at fordele tiden jævnt mellem alle stationer);
    • Tilføjet mekanismen 'devlink health', der giver meddelelser ved problemer med netværksgrænsefladen;
  • Hukommelse og systemtjenester
    • Implementeret sikker levering af signaler, der tager højde for mulighed for genanvendelse af PID. For eksempel kunne der ved anvendelse af kaldet kill tidligere opstå en situation, hvor det målrettede PID straks kunne være blevet frigivet på grund af procesafslutning og optaget af en anden proces, hvilket resulterede i, at signalet blev sendt til en anden proces. For at undgå sådanne situationer er der tilføjet et nyt systemkald pidfd_send_signal, der bruger filbeskrivelser fra /proc/pid for at sikre stabil binding til processen. Selvom PID'en genanvendes under behandlingen af systemkaldet, ændres filbeskrivelsen ikke, og den kan trygt bruges til at sende signal til processen;
    • Tilføjet muligheden for at bruge vedholdende hukommelses-enheder (persistent-memory, f.eks. NVDIMM) som RAM. Tidligere blev lignende enheder supportet som lagringsenheder, men nu kan de også anvendes som ekstra RAM. Muligheden er blevet implementeret som svar på brugerønsker, som er villige til at acceptere et performanceefterslæb og ønsker at bruge den indbyggede Linux kerne hukommelsesstyrings-API i stedet for at anvende eksisterende brugerplads hukommelsesfordelingssystemer, der fungerer over mmap for dax-filer;
    • En ny CPU dvaletilstandshåndterer (cpuidle, som bestemmer hvornår CPU’en kan sættes i dybe energibesparende tilstande, jo dybere tilstand — jo større besparelse, men også mere tid kræves for at komme ud af tilstanden) er blevet tilføjet — TEO (Timer Events Oriented Governor). Tidligere blev der tilbudt to cpuidle-handlere — "menu" og "ladder", som adskiller sig i deres heuristik. Menu-handlingen har kendte problemer med at træffe heuristiske beslutninger, hvilket har ført til udviklingen af en ny handler. TEO præsenteres som et alternativ til "menu" handleren, som muliggør højere ydeevne med samme energiforbrug.
      Den nye handler kan aktiveres ved hjælp af opstartparameteren "cpuidle.governor=teo";
    • Som led i arbejdet med at afhjælpe problemet i 2038, forårsaget af overflow i den 32-bit type time_t, er der inkluderet systemopkald, der tilbyder 64-bit tidsstællere for 32-bit arkitekturer. Som resultat kan den 64-bit time_t struktur nu anvendes på alle arkitekturer. Lignende ændringer er også implementeret i det netværksmæssige subsystem for mulighederne timestamp netværkssokler;
    • I systemet til live patching af kernen tilføjet Muligheden for 'Atomic Replace' til atomar brug af en serie ændringer i én funktion. Denne mulighed gør det muligt at distribuere samlet patch, der dækker flere ændringer på én gang, i stedet for den ret komplekse proces med trinvis anvendelse af live-patches i en strengt defineret rækkefølge. Tidligere skulle hver efterfølgende ændring tage udgangspunkt i tilstanden af funktionen efter den forrige ændring, men nu er det muligt at distribuere flere ændringer knyttet til én grundlæggende tilstand (dvs. vedligeholdere kan støtte én samlet patch mod den grundlæggende kerne i stedet for en kæde af afhængige patches);
    • Annonceret forældet support for a.out-udførselsformatet og
      fjernet koden til generering af core-filer i a.out-formatet, som er blevet forladt. a.out-formatet anvendes længe ikke mere på systemer med Linux, og genereringen af a.out-filer understøttes ikke længere af moderne værktøjer i standardkonfigurationer til Linux. Desuden kan en loader til a.out-filer være helt implementeret i brugerrum;
    • Muligheden for at bestemme og fjerne ubrugelig kode er tilføjet mekanismen til verifikation af BPF-programmer. Kernen indeholder også patches med spinlock-support til BPF-subsystemet, som giver yderligere muligheder for at administrere parallel udførelse af BPF-programmer;
  • Udstyr
    • I Nouveau-driveren tilføjet support for heterogen hukommelsesstyring, der muliggør adgang for CPU og GPU til delte, synkroniserede hukommelsesområder. Systemet for delt virtuel hukommelse (SVM, shared virtual memory) er implementeret på basis af HMM-subsystemet (Heterogeneous memory management), som gør det muligt at bruge enheder med egne hukommelsesstyringsenheder (MMU, memory management unit), der kan få adgang til den primære hukommelse. Desuden kan HMM organisere et fælles adresserum mellem GPU og CPU, hvor GPU kan få adgang til den primære hukommelse fra processen. SVM-support er i øjeblikket kun aktiveret for Pascal-familien af GPU'er, selvom support også er tilvejebragt for GPU'er fra Volta og Turing. Desuden i Nouveau tilføjet ny ioctl til at styre migration af hukommelsesområder mellem processerne og GPU-hukommelsen;
    • I DRM-driveren til Intel for GPU Skylake og nyere (gen9+) aktiveret Som standard er fastboot-tilstanden aktiveret, hvilket udelukker unødvendige ændringer af tilstande under opstart. Tilføjet nye enheds-ID'er baseret på mikroarkitekturerne Coffelake og Ice Lake. For Coffelake-chips tilføjet understøttelse af GVT (GPU-virtualisering). For virtuelle GPU'er er implementeret understøttelse af VFIO EDID. Til MIPI/DSI LCD-paneler tilføjet understøttelse af ACPI/PMIC-elementer. Implementeret nye tv-tilstande 1080p30/50/60 tv;
    • I amdgpu-driveren er der tilføjet understøttelse af GPU Vega10/20 BACO. Strømstyringsfunktioner til Vega 10/20 og køleskabsstyringstabeller til Vega 10 er implementeret. Nye PCI-enheds-ID'er for GPU Picasso er tilføjet. Tilføjet styringsgrænseflade til planlagte afhængigheder for at undgå døde låse;
    • Tilføjet DRM/KMS-driver til accelererede skærmoperationer ARM Komeda (Mali D71);
    • Understøttelse af skærmpaneler Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 og Kingdisplay kd097d04 er tilføjet;
    • Understøttelse af lydkodere Rockchip RK3328, Cirrus Logic CS4341 og CS35L36, MediaTek MT6358, Qualcomm WCD9335 og Ingenic JZ4725B, samt lydplatformen Mediatek MT8183 er tilføjet;
    • Understøttelse af NAND-kontrollere Flash STMicroelectronics FMC2, Amlogic Meson er tilføjet;
    • Understøttelse af accelererede systemer til maskinlæring Habana AI er tilføjet;
    • Understøttelse af gigabit Ethernet-controllere NXP ENETC og trådløse grænseflader MediaTek MT7603E (PCIe) og MT76x8 er tilføjet.

Samtidig Latinamerikansk Fond for fri software skabte
variant fuldstændigt frit kerne 5.1 — Linux-libre 5.1-gnu, renset for firmware og driverkomponenter, der indeholder ikke-frie elementer eller kodelinjer, hvis anvendelse er begrænset af producenten. I den nye udgave er indlæsning af blobs i driverne mt7603 og goya blevet deaktiveret. Koden til rensning af blobs i driverne og subsystemerne wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk og touchscreen_dmi er blevet opdateret. Rensningen af blobs i firmwaren bootloader lantiq xrx200 er stoppet på grund af dens fjernelse fra kernen.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster