Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds kÀrnlansering . 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.
:
- 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
, 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 (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-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. , 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).
- 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 , 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, 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 (Kernel Concurrency Sanitizer), avsedd för dynamisk upptÀckte 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 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
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 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 har stöd för systemanropet tee() lagts till.
- En mekanism för '', avsedd för att skriva ut innehÄllet i kÀrnans strukturer till anvÀndarutrymmet.
- möjlighet att anvÀnda ringbuffert för datakommunikation mellan BPF-program.
- I mekanismen , 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, en backend för lagring av information pÄ blockenheter.
- FrÄn kÀrnans PREEMPT_RT-gren implementering av lokala lÄs.
- 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 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 stöd för krypterade nycklar.
- I Btrfs har hanteringen av lÀsoperationer i direkt I/O-lÀge förbÀttrats. Vid montering 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 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 har en flagga lagts till , vilken nÀr den anges hÀmtar information med hjÀlp av DAX-mekanismen.
- I EXFAT stöd för verifiering av startomrÄdet.
- I FAT 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 stöd för protokollet (Media Redundancy Protocol), som möjliggör redundans och cirkulation av flera Ethernet-switchar.
- I trafikhanteringssystemet (Tc) 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 TCPför att kringgÄ möjliga blockeringar av UDP.
- nÀtverksblockenhet rnbd som möjliggör fjÀrrÄtkomst till blockenheten via RDMA (InfiniBand, RoCE, iWARP) och protokollet RTRS.
- I TCP-stack stöd för komprimering av intervall i svar pÄ selektiv bekrÀftelse (selective acknowledgment, SACK).
- För IPv6 stöd för TCP-LD (, 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Ä 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 (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.
- 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.
-
stöd för den ryska processorn Baikal-T1 och det system som Àr baserat pÄ den . 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
en variant â , 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
