SlÀpp av Linux-kÀrnan 5.8

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds Är kÀrnlansering Linux 5.8. Bland de mest anmÀrkningsvÀrda förÀndringarna finns KCSAN race condition detector, en universell mekanism för att leverera meddelanden till anvÀndarutrymmet, stöd för hÄrdvara för inline-kryptering, utökade skyddsmekanismer för ARM64, stöd för den ryska processorn Baikal-T1, möjlighet till separat montering av procfs-exemplar, och implementering av skyddsmekanismer som Shadow Call Stack och BTI för ARM64.

KÀrna 5.8 Àr den största i antalet förÀndringar av alla kÀrnor under hela projektets existens. FörÀndringarna Àr inte kopplade till nÄgot enskilt delsystem, utan omfattar olika delar av kÀrnan och Àr frÀmst relaterade till interna omarbetningar och stÀdning. De största förÀndringarna Äterfinns i drivrutinerna. Den nya versionen inkluderar 17606 rÀttningar frÄn 2081 utvecklare, vilket berör ungefÀr 20 % av alla filer i kÀrnans kodförrÄd. Storleken pÄ patchen Àr 65 MB (förÀndringarna pÄverkar 16180 filer, 1043240 kodrader har lagts till, och 489854 kodrader har tagits bort). För jÀmförelse gjordes 15033 rÀttningar i 5.7-versionen, och patchens storlek var 39 MB. UngefÀr 37 % av alla förÀndringar i 5.8 Àr relaterade till enhetsdrivrutiner, ungefÀr 16 % hÀnför sig till uppdatering av kod specifik för hÄrdvaruarkitekturer, 11 % Àr relaterade till nÀtverksstacken, 3 % till filsystem och 4 % till interna delsystem i kÀrnan.

Huvud nyheter:

  • Virtualisering och sĂ€kerhet
    • Laddning av kĂ€rnmoduler som har kodsektioner med bĂ„de exekverings- och skrivbehörighetsbitar har blokkerats. FörĂ€ndringen Ă€r genomförd inom ramen för ett större projekt för att eliminera kĂ€rnan frĂ„n anvĂ€ndningen av minnessidor som tillĂ„ter bĂ„de exekvering och skrivning.
    • Det har blivit möjligt att skapa separata instanser av procfs, vilket gör det möjligt att anvĂ€nda flera monteringspunkter för procfs monterade med olika alternativ, men som speglar ett enda namnrum för processidentifierare (pid-namnrum). Tidigare speglade alla monteringspunkter för procfs endast en intern representation, och varje förĂ€ndring av monteringsparametrar pĂ„verkade alla andra monteringspunkter kopplade till samma namnrum för processidentifierare. OmrĂ„den dĂ€r monteringar med olika alternativ kan vara efterfrĂ„gade inkluderar genomförandet av lĂ€ttviktsisolering för inbyggda system med möjlighet att dölja vissa typer av processer och informationsnoder i procfs.
    • Stöd för mekanismen
      Shadow-Call Stack, som tillhandahÄlls av Clang-kompilatorn för att skydda mot överskrivning av returadress frÄn funktionen vid stacköverflöd. Skyddets kÀrna Àr att efter överlÀmnande av kontrollen till funktionen spara returadressen i en separat "skugga"-stack och hÀmta denna adress före utgÄngen frÄn funktionen.
    • Stöd för instruktioner ARMv8.5-BTI (Branch Target Indicator) har lagts till för att skydda körning av instruktionsuppsĂ€ttningar dĂ€r det inte bör göras hopp vid förgrening. Blockering av hopp till godtyckliga kodavsnitt har genomförts för att motverka skapandet av gadgets i exploateringar som anvĂ€nder tekniker för returorienterad programmering (ROP – Return-Oriented Programming, dĂ€r angriparen inte försöker placera sin egen kod i minnet utan arbetar med redan existerande bitar av maskininstruktioner som avslutas med en returinstruktion, frĂ„n vilka en kedja av anrop konstrueras för att uppnĂ„ önskad funktionalitet).
    • Stöd för hĂ„rdvara för inline-kryptering av blockenheter har lagts till (Inline Encryption). Inline-krypteringsenheter Ă€r vanligtvis inbyggda i lagringsenheten, men logiskt placerade mellan systemminnet och disken, vilket möjliggör transparent kryptering och avkryptering av in- och utdata baserat pĂ„ nycklar och krypteringsalgoritmer som anges av kĂ€rnan.
    • En kĂ€rnans kommandoradsparameter "initrdmem" har lagts till, vilket gör det möjligt att ange den fysiska adressen för placeringen av initrd i minnet vid placering av den initiala nedladdningsbilden i RAM.
    • Nya kapabiliteter har lagts till: CAP_PERFMON för Ă„tkomst till perf-subsystemet och utförande av prestandaövervakning. CAP_BPF, vilket möjliggör utförande av vissa operationer med BPF (t.ex. laddning av BPF-program) som tidigare krĂ€vde rĂ€ttigheter för CAP_SYS_ADMIN (nu Ă€r rĂ€ttigheterna för CAP_SYS_ADMIN uppdelade i en kombination av CAP_BPF, CAP_PERFMON och CAP_NET_ADMIN).
    • TillĂ€gg en ny virtio-mem-enhet, som möjliggör varmkoppling och frakoppling av minne till gĂ€stsystem.
    • Möjligheten att Ă„terkalla mappingoperationer i /dev/mem har implementerats, om enheten anvĂ€nder överlappande minnesomrĂ„den.
    • Skydd mot sĂ„rbarhet CROSSTalk/SRBDS, vilket gör det möjligt att Ă„terstĂ€lla resultaten av vissa instruktioner som körs pĂ„ en annan CPU-kĂ€rna.
  • Minne och systemtjĂ€nster
    • I dokumentet som definierar regler för kodmodellering, antogs rekommendationer för anvĂ€ndning av inkluderande terminologi. Utvecklare rekommenderas att undvika begreppen 'master/slave' och 'blacklist/whitelist', liksom ordet 'slave'. Rekommendationerna gĂ€ller endast ny anvĂ€ndning av dessa termer. Redan existerande nĂ€mningar i kĂ€rnan av de angivna orden förblir oförĂ€ndrade. I ny kod tillĂ„ts anvĂ€ndning av de markerade termerna om det krĂ€vs för att stödja det som ges ut i anvĂ€ndarutrymmet (API och ABI), samt vid koduppdateringar för att stödja befintlig hĂ„rdvara eller protokoll vars specifikationer föreskriver anvĂ€ndning av vissa termer.
    • En debugger-verktyg har lagts till KCSAN (Kernel Concurrency Sanitizer), avsedd för dynamisk upptĂ€ckte av race conditions inom kĂ€rnan. AnvĂ€ndning av KCSAN stöds vid kompilering med GCC och Clang, och krĂ€ver att speciella modifieringar görs under kompileringen för att spĂ„ra minĂ„tkomst (det anvĂ€nds brytpunkter som aktiveras vid lĂ€sning eller Ă€ndring av minne). Huvudfokus vid utvecklingen av KCSAN har varit att förhindra falska positiva resultat, skalbarhet och anvĂ€ndarvĂ€nlighet.
    • Tillagd ett universellt mekanism leverans av meddelanden frĂ„n kĂ€rnan till anvĂ€ndarutrymmet. Mekanismen Ă€r baserad pĂ„ den inbyggda pipe-drivern och möjliggör effektiv fördelning av meddelanden frĂ„n kĂ€rnan över kanaler som Ă€r öppna i anvĂ€ndarutrymmet. Mottagningspunkterna för meddelanden Ă€r pipes som öppnas i ett speciellt lĂ€ge och tillĂ„ter ackumulering av de meddelanden som kommer frĂ„n kĂ€rnan i en ringbuffert. LĂ€sning utförs med hjĂ€lp av den vanliga funktionen read(). Ägaren av kanalen bestĂ€mmer vilka kĂ€llor i kĂ€rnan som ska övervakas och kan stĂ€lla in ett filter för att ignorera meddelanden och hĂ€ndelser av viss typ. För tillfĂ€llet stöds endast hĂ€ndelser relaterade till nycklar, sĂ„som att lĂ€gga till/tar bort nycklar och Ă€ndra deras attribut. Dessa hĂ€ndelser planeras att anvĂ€ndas i GNOME.
    • Utvecklingen av funktionen 'pidfd' har fortsatt, vilket hjĂ€lper till att hantera situationer med Ă„teranvĂ€ndning av PID (pidfd kopplas till en specifik process och förĂ€ndras inte, medan PID kan kopplas till en annan process efter att den aktuella processen kopplad till detta PID har avslutats). Den nya versionen har lagt till stöd för att anvĂ€nda pidfd för att koppla en process till namnrymder (att ange pidfd finns nu tillgĂ€ngligt vid utförande av systemanropet setns). AnvĂ€ndningen av pidfd gör att en enda anrop kan hantera kopplingen av en process till flera typer av namnrymder, vilket vĂ€sentligt minskar antalet nödvĂ€ndiga systemanrop och möjliggör en atomĂ€r koppling (om det uppstĂ„r ett fel vid kopplingen till en av namnrymderna, kommer andra inte att kopplas).
    • Ett nytt systemanrop faccessat2() har lagts till, vilket skiljer sig frĂ„n
      faccessat() med en extra argument med flaggor som motsvarar POSIX-rekommendationerna (tidigare emulerades dessa flaggor i C-biblioteket, men den nya faccessat2 gör det möjligt att implementera dem i kÀrnan).
    • I Cgroup har lagts till instĂ€llningen memory.swap.high, som kan anvĂ€ndas för att bromsa uppgifter som tar upp för mycket utrymme pĂ„ vĂ€xlingspartitionen.
    • I grĂ€nssnittet för asynkron in-/utmatning io_uring har stöd för systemanropet tee() lagts till.
    • En mekanism för 'BPF iterator', avsedd för att skriva ut innehĂ„llet i kĂ€rnans strukturer till anvĂ€ndarutrymmet.
    • TillhandahĂ„llet möjlighet att anvĂ€nda ringbuffert för datakommunikation mellan BPF-program.
    • I mekanismen padata, avsedd för att möjliggöra parallell exekvering av uppgifter i kĂ€rnan, har stöd för flertrĂ„diga uppgifter med belastningsbalansering lagts till.
    • Till mekanismen pstore, som gör det möjligt att spara felsökningsinformation om kraschanledningen i minnesomrĂ„det, utan förlust mellan omstarter, tillagd en backend för lagring av information pĂ„ blockenheter.
    • FrĂ„n kĂ€rnans PREEMPT_RT-gren har flyttats implementering av lokala lĂ„s.
    • Tillagd en ny API för bufferallokering (AF_XDP), avsedd att förenkla skrivandet av nĂ€tverksdrivrutiner med stöd för XDP (eXpress Data Path).
    • För RISC-V-arkitektur har stöd för felsökning av kĂ€rnkomponenter implementerats med hjĂ€lp av KGDB.
    • Innan version 4.8 har kraven pĂ„ versionen av GCC, som kan anvĂ€ndas för att bygga kĂ€rnan, höjts. I en av nĂ€sta utgĂ„van planeras det att höja nivĂ„erna till GCC 4.9.
  • Disksubsystem, in- och utmatning och filsystem
    • I Device Mapper tillagd har en ny dm-ebs-hanterare (emulate block size) införts, som kan anvĂ€ndas för att emulera en mindre logisk blockstorlek (till exempel för att emulera 512-byte-sektorer pĂ„ 4K-sector-diskar).
    • I filsystemet F2FS har stöd för komprimering med LZO-RLE-algoritmen lagts till.
    • I dm-crypt har lagts till stöd för krypterade nycklar.
    • I Btrfs har hanteringen av lĂ€soperationer i direkt I/O-lĂ€ge förbĂ€ttrats. Vid montering har pĂ„skyndats kontrollen av borttagna underavdelningar och kataloger som saknar förĂ€lder.
    • I CIFS har parametern 'nodelete' lagts till, vilket tillĂ„ter normala behörighetskontroller pĂ„ servern, men förhindrar klienten att ta bort filer eller kataloger.
    • I Ext4 har hanteringen av felet ENOSPC vid anvĂ€ndning av flertrĂ„dning förbĂ€ttrats. I xattr har stöd för namnrymd gnu.*, som anvĂ€nds i GNU Hurd, lagts till.
    • För Ext4 och XFS har stöd för DAX-operationer (direkt Ă„tkomst till FS utan att anvĂ€nda sidcache-nivĂ„n) kopplats till specifika filer och kataloger.
    • I systemanropet statx() har en flagga lagts till STATX_ATTR_DAX, vilken nĂ€r den anges hĂ€mtar information med hjĂ€lp av DAX-mekanismen.
    • I EXFAT har lagts till stöd för verifiering av startomrĂ„det.
    • I FAT har förbĂ€ttrats förladdning av FS-element. Test av en lĂ„ngsam 2TB USB-enhet visade en minskning av testtiden frĂ„n 383 till 51 sekunder.
  • NĂ€tverkssystemet
    • I kodhanteringen av nĂ€tverksbryggor har lagts till stöd för protokollet MRP (Media Redundancy Protocol), som möjliggör redundans och cirkulation av flera Ethernet-switchar.
    • I trafikhanteringssystemet (Tc) har lagts till ny Ă„tgĂ€rd "gate" som möjliggör att definiera tidsintervall för bearbetning och avvisning av vissa paket.
    • Stöd för testfunktioner av ansluten nĂ€tverkskabel och sjĂ€lvdiagnos av nĂ€tverksenheter har lagts till i kĂ€rnan och verktyget ethtool.
    • Stöd för MPLS-algoritmen (Multiprotocol Label Switching) för paketrouting med hjĂ€lp av multiprotokollkommutering via etiketter har lagts till i IPv6-stacken (MPLS för IPv4 har tidigare haft stöd).
    • Stöd för överföring av paket IKE (Internet Key Exchange) och IPSec över TCPRFC 8229för att kringgĂ„ möjliga blockeringar av UDP.
    • TillĂ€gg nĂ€tverksblockenhet rnbd som möjliggör fjĂ€rrĂ„tkomst till blockenheten via RDMA (InfiniBand, RoCE, iWARP) och protokollet RTRS.
    • I TCP-stack har lagts till stöd för komprimering av intervall i svar pĂ„ selektiv bekrĂ€ftelse (selective acknowledgment, SACK).
    • För IPv6 har möjligheten stöd för TCP-LD (RFC 6069, Long Connectivity Disruptions).
  • Utrustning
    • I DRM-drivrutinen i915 för Intel-grafikkort aktiverades stöd för Intel Tiger Lake (GEN12) chips som standard, för vilka det ocksĂ„ har möjligheten möjliggör anvĂ€ndning av SAGV-systemet (System Agent Geyserville) för dynamisk anpassning av frekvens och spĂ€nning beroende pĂ„ krav pĂ„ energiförbrukning eller prestanda.
    • I drivrutinen amdgpu lagts stöd för pixelformatet FP16 till, och möjligheten att arbeta med krypterade buffertar i videominnet (TMZ, Trusted Memory Zone) har implementerats.
    • Stöd för energiförbrukningssensorer för AMD Zen och Zen2-processorer, samt temperaturgivare för AMD Ryzen 4000 Renoir har lagts till. För AMD Zen och Zen2 sĂ€kerstĂ€lls stöd för att extrahera energiförbrukningsinformation genom grĂ€nssnittet RAPL (Running Average Power Limit).
    • I drivrutinen Nouveau har stöd för NVIDIA:s modifieringsformat lagts till. För gv100 har möjligheten att anvĂ€nda vĂ€xelvis skanning lagts till. Identifiering av vGPU har lagts till.
    • I MSM-drivrutinen (Qualcomm) har stöd för GPU Adreno A405, A640 och A650 lagts till.
    • Tillagd inre ramverk för hantering av resurser i DRM (Direct Rendering Manager).
    • Stöd för smartphones Xiaomi Redmi Note 7 och Samsung Galaxy S2, samt bĂ€rbara datorer Elm/Hana Chromebook har lagts till.
    • Drivrutiner för LCD-paneler har lagts till: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Stöd för ARM-plattformar och Renesas-plattformar "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-eMMC, Check Point L-50,
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.
    • Stödet för MIPS-processorn Loongson-2K (kortad Loongson64) har lagts till. Stöd för virtualisering med hjĂ€lp av hypervisorn KVM har lagts till för CPU Loongson 3.
    • Tillagd
      stöd för den ryska processorn Baikal-T1 och det system som Àr baserat pÄ den BE-T1000. Processorn Baikal-T1 innehÄller tvÄ superskalÀra kÀrnor P5600 MIPS 32 r5 som arbetar vid en frekvens pÄ 1,2 GHz. Chippet innehÄller L2-cache (1 MB), DDR3-1600 ECC-minneskontroller, 1 port 10Gb Ethernet, 2 portar 1Gb Ethernet, PCIe Gen.3 x4-kontroller, 2 portar SATA 3.0, USB 2.0, GPIO, UART, SPI och I2C. Processorn ger hÄrdvarustöd för virtualisering, SIMD-instruktioner och en integrerad hÄrdvaruaccelerator för kryptografiska operationer som stöder GOST 28147-89. Chippet har utvecklats med en licensierad processoravdelning frÄn Imagination Technologies, MIPS32 P5600 Warrior.

Samtidigt har den Latinamerikanska stiftelsen för fri programvara skapat
en variant ett helt fritt kĂ€rna 5.8 — Linux-libre 5.8-gnu, som har rensats frĂ„n firmware- och drivrutinskomponenter som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndningsomrĂ„de Ă€r begrĂ€nsat av tillverkaren. I den nya utgĂ„van har laddningen av blobbar i drivrutinerna för Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Enhanced Asynchronous Sample Rate Converter, Maxim Integrated MAX98390 Speaker Amplifier, Microsemi ZL38060 Connected Home Audio Processor och I2C EEPROM Slave stĂ€ngts av. Koden för rengöring av blobbar i drivrutiner och delsystem för Adreno GPU, HabanaLabs Goya, x86 pekskĂ€rm, vt6656 och btbcm har uppdaterats.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster