Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds utgÄvan av Linux-kÀrnan 5.13. Bland de mest anmÀrkningsvÀrda förÀndringarna finns: filsystemet EROFS, initialt stöd för Apple M1-chips, cgroup-kontrollern "misc", upphörande av stödet för /dev/kmem, stöd för nya GPU:er frÄn Intel och AMD, möjlighet att anropa kÀrnfunktioner direkt frÄn BPF-program, randomisering av kÀrnstacken för varje systemanrop, möjlighet att kompilera med Clang med CFI-skydd (Control Flow Integrity), LSM-modulen Landlock för ytterligare begrÀnsning av processer, ett virtuellt ljudkort baserat pÄ virtio och multi-shot-lÀget i io_uring.
I den nya versionen har 17189 korrigeringar accepterats frÄn 2150 utvecklare (det största i historien), storleken pÄ patchen Àr 60 MB (förÀndringarna berör 12996 filer, 794705 kodrader har lagts till, 399590 rader har tagits bort). Cirka 47% av alla förÀndringar som presenteras i 5.13 Àr relaterade till enhetsdrivrutiner, ungefÀr 14% av förÀndringarna rör uppdatering av hÄrdvaruspecifik kod, 13% Àr relaterade till nÀtverksstacken, 5% till filsystem och 4% till interna kÀrnsystem.
Huvudsakliga nyheter:
- Disksubsystem, in- och utmatning och filsystem
- Stöd för filsystemet EROFS (Enhanced Read-Only File System), föreslaget av Huawei för anvÀndning pÄ partitioner tillgÀngliga i read-only-lÀge, har lagts till. Det nya filsystemet stöder lagring av data i komprimerad form och visar, jÀmfört med Ext4, liknande prestanda vid sekventiell lÀsning, men övertrÀffar Ext4 mÄnga gÄnger vid slumpmÀssig datatillgÄng. Till exempel, vid en kompressionsnivÄ pÄ 4 och tester pÄ servern med hÄrddisken övertrÀffade EROFS filsystemet Ext4 vid slumpmÀssig lÀsning mer Àn sex gÄnger, och vid anvÀndning av en Android-smartphone med Flash nÀstan tre gÄnger. Som i andra read-only filsystem har EROFS:s struktur förenklats avsevÀrt genom att vissa omrÄden av metadata, sÄsom bitkartan för lediga block, har utelÀmnats.
- För filsystemet SMB3 har optionen för montering "rasize" implementerats, vilket möjliggör bestÀmning av storleken pÄ fönster för förhandslÀsning (readahead) för att öka prestandan för vissa typer av belastningar.
- I filsystemet ext4 har omskrivning av katalogobjekt vid borttagning av filer sÀkerstÀllts. I ext4 tillÄts ocksÄ samtidig anvÀndning av lÀge utan kÀnslighet för stora och smÄ bokstÀver och kryptering.
- I FS exFAT har stöd lagts till för ioctl-kommandot FITRIM (discard), för att informera lagringsenheten om oanvÀnda block i filsystemet.
- I FS XFS har möjligheten att Äterta plats frÄn den sista fördelningsgruppen lagts till, vilket blev det första steget i implementeringen av funktionen att minska storleken pÄ befintliga partitioner med FS XFS.
- En ny systemanrop quotactl_path har lagts till, som skiljer sig frÄn quotactl genom att det gör det möjligt att hantera kvoteringar utan att anvÀnda en specialenhetsfil, utan genom att ange sökvÀgen till monteringspunkten för filsystemet.
- Möjligheterna i fanotify-mekanismen har utvidgats för icke-privilegerade anvÀndare. Till exempel, i likhet med inotify kan man utan rÀttigheter SYS_CAP_ADMIN nu övervaka hÀndelser som OPEN, ACCESS, MODIFY och CLOSE för filer och kataloger.
- Minne och systemtjÀnster
- En ny cgroup-kontroller har lagts till â "Misc" (CONFIG_CGROUP_MISC), avsedd för begrĂ€nsning och övervakning av skalĂ€ra resurser som kan hanteras med hjĂ€lp av en enkel rĂ€knare och begrĂ€nsas genom att ange maximalt tillĂ„tna vĂ€rden. Som exempel pĂ„ anvĂ€ndningen av den nya cgroup-kontroller nĂ€mns hantering av adressrumets identifierare, som anvĂ€nds i mekanismen AMD SEV (Secure Encrypted Virtualization).
- I grÀnssnittet för asynkron in- och utmatning io_uring har ett "multi-shot"-lÀge implementerats för POLL-förfrÄgningar, dÀr POLL inte tas bort efter att en hÀndelse har genererats, utan förblir aktivt och kan generera flera hÀndelser.
- Kod som sÀkerstÀller hantering av programvarugenererade avbrott i kÀrntrÄdar har överförts frÄn realtime-grenen av kÀrnan, vilket gör att de kan övertrumfas av processer med högre prioritet.
- Ett internt bibliotek, netfs, har lagts till, dÀr typiska funktioner som anvÀnds i nÀtverksfilsystem har flyttats.
- För PowerPC-arkitekturen har stöd för tidsutrymmen (time namespaces) implementerats, vilket möjliggör att anvÀnda sin egen tid inom en container.
- För RISC-V-arkitekturen har stöd för kexec, crash dump, kprobe och körning av kÀrnan pÄ plats (execute-in-place) implementerats, vilket möjliggör exekvering direkt frÄn lagringsmedia utan kopiering till RAM.
- I BPF-program för spÄrning har möjligheten att anvÀnda uppgiftslokal lagring (task-local storage) lagts till, vilket ger högre prestanda genom att binda data till en specifik BPF-handler.
- En ny mekanism har implementerats för direkt anrop av kÀrnfunktioner frÄn BPF-program, vilket redan har anvÀnts i implementeringen av TCP-overloading-algoritmer. För att sÀkerstÀlla sÀkerheten mÄste de anropade funktionerna uttryckligen definieras i en vit lista.
- Funktionen ftrace har fÄtt en ny alternativ parameter func-no-repeats, som gör det möjligt att visa Äterkommande sekventiella funktionsanrop i form av en rÀknare.
- Den systemanropade userfaultfd(), avsedd för att hantera page faults (Ätkomst till icke-allokerade minnessidor) i anvÀndarens utrymme, har fÄtt möjligheten att hantera delvisa faults, dÀr den minnessidan Àr nÀrvarande men det inte finns nÄgon post i sidtabellen.
- Stödet för den speciella filen /dev/kmem, som medger Ätkomst till hela kÀrnans adressutrymme, har upphört. Denna fil har bedömts vara förÄldrad och orsakar sÀkerhetsproblem.
- En ny drivrutin för att hantera kylning har implementerats för Intel-chip, vilket möjliggör sÀnkning av processorfrekvensen vid risk för överhettning. Till skillnad frÄn den befintliga mekanismen för TCC (Thermal Control Circuit) aktiverar den nya drivrutinen relativt vÀrden, dvs. kan sÀnka frekvensen vid en tidig ökning av temperaturen utan att vÀnta pÄ att ett kritiskt tröskelvÀrde överskrids.
- Virtualisering och sÀkerhet
- LSM-modulen för applikationsisolering Landlock ingÄr, vilket gör det möjligt att begrÀnsa interaktionen med den externa miljön för en grupp processer. Den Àr utvecklad med hÀnsyn till isoleringsmekanismer som XNU Sandbox, FreeBSD Capsicum och OpenBSD Pledge/Unveil. à tkomstlogiken faststÀlls med hjÀlp av ett BPF-program, men i motsats till seccomp-bpf filtrerar Landlock inte systemanrop och deras argument, utan tillÄter begrÀnsningar av anvÀndningen av kÀrnobjekt, sÄsom filhierarkier. Genom att anvÀnda Landlock kan vilken process som helst, inklusive oprivilegierade, effektivt isolera sig sjÀlv och förhindra att isoleringen bryts vid upptÀckta sÄrbarheter eller skadliga förÀndringar i applikationen. Landlock möjliggör att processer skapar skyddade isolerade miljöer, implementerade som ett extra lager ovanpÄ befintliga systemkontrollmekanismer. Till exempel kan ett program förbjuda Ätkomst till filer utanför arbetskatalogen.
- Möjligheten att randomisera förskjutningar i kĂ€rnstacken vid hantering av systemanrop har lagts till för att försvĂ„ra stackattacker. KĂ€rnan i det föreslagna skyddet Ă€r valet av en slumpmĂ€ssig stackförskjutning vid varje systemanrop, vilket försvĂ„rar bestĂ€mningen av stacklayouten i minnet Ă€ven om information om adresser erhĂ„lls, eftersom den grundlĂ€ggande stackadressen Ă€ndras vid nĂ€sta systemanrop. För att aktivera randomisering föreslĂ„s kĂ€rnkommandoradsparametern "randomize_kstack_offset=on/off" och instĂ€llningen CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Ăverhettningen uppskattas till cirka 1% prestationsförlust.
- Stödet för att bygga kÀrnan med CFI (Control Flow Integrity) skyddsmekanism i Clang-kompilatorn har lagts till. CFI lÀgger till en kontroll före varje indirekt funktionsanrop för att identifiera vissa former av osÀker beteende som potentiellt kan leda till att det normala utförandeordningen (control flow) störs som ett resultat av exploateringar som Àndrar de minneslagrade funktionspekare. För att aktivera CFI föreslÄs instÀllningen CONFIG_CFI_CLANG.
- I den tillhandahÄllna kÀrnservicen för lagring av krypteringsnycklar (key ring) omfattar mekanismen för betrodda nycklar (Trusted Keys) nu inte bara nycklar frÄn TPM-moduler utan ocksÄ frÄn TEE-miljöer (Trusted Execution Environment). För att hantera kÀllan till de betrodda nycklarna har en bootparameter "trusted.source" föreslagits. Dessutom har möjligheten att hantera betrodda nycklar i ASN.1-format lagts till.
- En parameter har lagts till för förhandsladdning av listan över Äterkallade certifikat vid kÀrnstart. Problemet (CVE-2020-26541) med att ignorera certifikat i UEFI Secure Boot:s svartlista, som levererades i formatet EFI_CERT_X509_GUID, har ÄtgÀrdats, vilket gjorde att systemet kunde startas med ett Äterkallat certifikat.
- Stödet för verifiering av ECDSA-digitala signaturer baserade pÄ elliptiska kurvor har lagts till i kÀrnans kryptosystem.
- Möjligheten att verifiera SELinux-policyer med hjÀlp av IMA (Integrity Measurement Architecture) har implementerats, vilket sÀkerstÀller att en hashtabell upprÀtthÄlls för att kontrollera dataintegriteten.
- NĂ€tverkssystemet
- Stödet för WiMAX-teknologi har tagits bort, eftersom den inte lÀngre anvÀnds i offentliga nÀtverk, och den enda drivrutin som fortfarande kan anvÀnda WiMAX i kÀrnan Àr den förÄldrade drivrutinen Intel 2400m. Stödet för WiMAX i nÀtverkskonfiguratorn NetworkManager upphörde 2015. För nÀrvarande har WiMAX nÀstan helt ersatts av teknologier sÄsom LTE, HSPA+ och Wi-Fi 802.11n.
- En drivrutin för nÀtverksadaptern MANA (Microsoft Azure Network Adapter) har lagts till.
- Stödet för Qualcomm QCN9074 trÄdlösa moduler med stöd för 802.11ax har lagts till i drivrutinen ath11k.
- I drivrutinen iwlwifi har möjligheten för passiv skanning av kanaler i 6GHz-banden implementerats. För Ukraina har stöd för att aktivera/inaktivera IEEE 802.11ax baserat pÄ BIOS-instÀllningar lagts till.
- Optimering av XDP (eXpress Data Path) har genomförts, vilket möjliggör manipulation av nÀtverkspaket i steget före deras bearbetning av Linux-kÀrnans nÀtverksstack. Genomförda tester visar en prestandaförbÀttring av XDP pÄ 4-8%. För virtio-enheter kan prestandaförbÀttringen av programvaruimplementeringen av AF_XDP nÄ 33%.
- Stödet för utökade PROBE-meddelanden definierade i RFC 8335 har implementerats i ICMP.
- Integrationen i MPTCP (MultiPath TCP) har fortsatt, ett protokolltillÀgg för TCP som möjliggör att TCP-anslutningar levererar paket samtidigt över flera rutter via olika nÀtverksgrÀnssnitt som Àr kopplade till olika IP-adresser. I den nya versionen har stöd för sockopt lagts till för att ange typiska TCP-alternativ. Möjlighet att ÄterstÀlla enskilda subflöden har implementerats.
- I netfilter har stöd för resurskontroll lagts till genom en enhetlig hierarki av cgroups v2.
- I ethtool har ett grÀnssnitt implementerats för att lÀsa statistik frÄn IEEE MIB med stöd för mlx5 och bnxt. NÀtverksdrivrutiner fÄr lov att extrahera godtyckliga data frÄn SFP EEPROM genom att manipulera sidor i minnet istÀllet för att anvÀnda en koppling av offset+storlek.
- Utrustning
- Inledande stöd för Apples ARM-chip M1 har implementerats och omfattar avbrottskontroll, timer, UART, SMP, funktioner för in- och utdata samt MMIO. OmvÀnd ingenjörskonst av GPU:n Àr fortfarande inte fÀrdig, för att möjliggöra utdata finns stöd för framebuffer och konsol via en serieport.
- Rensningen av kÀrnan frÄn gamla drivrutiner har fortsatt, drivrutinerna "gasket" (Google ASIC), "sysace", "umem" samt flera gamla drivrutiner för seriekontakter har tagits bort.
- Efter 13 Är i staging-grenen har drivrutinen "comedi" stabiliserats och flyttats till huvuduppsÀttningen för att stödja datauppsamlingsenheter.
- En drivrutin för GUD (Generic USB Display) har lagts till med implementation av en grundlÀggande drivrutin för skÀrmar och TV-adaptrar anslutna via USB-grÀnssnittet. Drivrutinen tillhandahÄller DRM-egenskaper (Direct Rendering Manager) för bildrotationshantering, ljusstyrning, Ätkomst till EDID, instÀllning av videolÀgen och anslutning av TV som kan anvÀndas som grund för att skapa drivrutiner för specifika enheter.
- En ljuddrivrutin "virtio" har lagts till med implementation av en virtuell ljudenhet som kan anvÀndas i gÀstsystem för ljudutgÄng och inspelning utan att krÀva Ätkomst till ljudkortet och utan emulering.
- I drivrutinen amdgpu har stöd för GPU Aldebaran (gfx90a) lagts till. Inledande stöd för teknik för adaptiv synkronisering FreeSync för HDMI har aktiverats (tidigare tillgÀnglig för DisplayPort), vilket möjliggör justering av bildskÀrmsuppdateringsfrekvensen. Stöd för ASSR (Alternate Scrambler Seed Reset) har lagts till. En ioctl har lagts till för att begÀra funktioner relaterade till videokodning och avkodning. En CONFIG_DRM_AMD_SECURE_DISPLAY-mod har lagts till för att upptÀcka förÀndringar i skÀrmar som visar kritisk information. Stöd för energibesparingsmekanismen ASPM har lagts till.
- I drivrutinen i915 för Intel-grafikkort har stöd för Intel Alderlake-S-chips lagts till. Stöd för eDP MSO (Embedded DisplayPort Multi-SST Operation) har lagts till.
- Stöd för spelskontrollen Luna (Amazon) samt pekskÀrmarna Hycon HY46XX, ILITEK Lego Series och MStar MSG2638 har lagts till.
Samtidigt har den latinamerikanska stiftelsen för fri programvara skapat en helt fri version av kĂ€rna 5.11 â Linux-libre 5.11-gnu, rensad frĂ„n element av firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars tillĂ€mpning Ă€r begrĂ€nsad av tillverkaren. I den nya utgĂ„van har drivrutinen comedi stĂ€dats. StĂ€dningen av drivrutinerna cyclades, isicom tty och i2400m wimax har upphört, och dessa har tagits bort frĂ„n kĂ€rnan. Koden för stĂ€dning av blobbar i drivrutiner och subsystem som amdgpu, i915 csr, r8152 usb, mhi bus, x86 pekskĂ€rm och qualcomm arm64 har uppdaterats.
KĂ€lla: opennet.ru
