Etter to måneder med utvikling ga Linus Torvalds ut kjernen. Linux 5.11. Blant de mest bemerkelsesverdige endringene: støtte for Intel SGX-enklaver, en ny mekanisme for avlytting av systemkall, en virtuell hjelpebuss, et forbud mot å bygge moduler uten MODULE_LICENSE(), en rask filtreringsmodus for systemkall i seccomp, slutt på støtte for ia64-arkitekturen, overføring av WiMAX-teknologi til "staging"-grenen og muligheten til å innkapsle SCTP i UDP.
Den nye versjonen inneholder 15 480 rettelser fra 1 991 utviklere, og oppdateringsstørrelsen er 72 MB (endringene påvirket 12 090 filer, 868 025 linjer med kode ble lagt til og 261 456 linjer ble fjernet). Omtrent 46 % av alle endringene i 5.11 er relatert til enhetsdrivere, omtrent 16 % er relatert til oppdateringer av maskinvarespesifikk kode, 13 % er relatert til nettverksstakken, 3 % er relatert til filsystemer og 4 % er relatert til interne kjerneundersystemer.
Hovedinnovasjoner:
- Diskundersystem, I/O og filsystemer
- Btrfs har nå flere monteringsalternativer for bruk ved gjenoppretting av data fra et skadet filsystem: "rescue=ignorebadroots" for montering til tross for skade på noen rottrær (extent, uuid, data reloc, device, csum, free space), "rescue=ignoredatacsums" for å deaktivere sjekksumverifisering for data, og "rescue=all" for samtidig å aktivere modusene 'ignorebadroots', 'ignoredatacsums' og 'nologreplay'. Det tidligere utdaterte monteringsalternativet "inode_cache" er avviklet. Kode er utarbeidet for å støtte blokker med metadata og data mindre enn en side (PAGE_SIZE), samt støtte for sonert plassallokering. Ubufrede (Direct IO) forespørsler er migrert til iomap-infrastrukturen. Ytelsen til en rekke operasjoner er optimalisert, med hastighetsøkninger på opptil titalls prosent i noen tilfeller.
- XFS implementerer flagget «needsrepair», som signaliserer behovet for reparasjon. Når dette flagget er satt, kan ikke filsystemet monteres før det er fjernet ved hjelp av xfs_repair-verktøyet.
- Ext4 tilbyr kun feilrettinger og optimaliseringer, samt kodeopprydding.
- Re-eksport av NFS-monterte filsystemer er nå tillatt (dvs. en partisjon montert via NFS kan nå eksporteres via NFS og brukes som en mellomliggende hurtigbuffer).
- Systemkallet close_range(), som lar en prosess lukke et helt område med åpne filbeskrivelser samtidig, har nå et CLOSE_RANGE_CLOEXEC-alternativ for å lukke beskrivelser i close-on-exec-modus.
- F2FS-filsystemet har blitt oppdatert med nye ioctl()-kall, som gir brukerområdet kontroll over hvilke filer som lagres i komprimert form. Et monteringsalternativ "compress_mode=" har blitt lagt til for å velge om komprimeringshåndtereren er plassert i kjernen eller i brukerområdet.
- Overlayfs støtter nå montering av uprivilegerte prosesser som bruker et separat brukernavneområde. En fullstendig koderevisjon ble utført for å sikre at implementeringen er i samsvar med sikkerhetsmodellen. Overlayfs støtter nå også kjøring fra filsystembildekopier ved å eventuelt deaktivere UUID-sjekk.
- Ceph-filsystemet støtter nå msgr2.1-protokollen, som muliggjør bruk av AES-GCM-algoritmen ved overføring av krypterte data.
- dm-multipath-modulen tar nå hensyn til CPU-tilhørighet når den velger en I/O-forespørselsrute.
- Minne- og systemtjenester
- En ny mekanisme for systemkallavskjæring basert på prctl() er lagt til, som lar brukerområdet generere unntak når de åpner et spesifikt systemkall og emulere utførelsen av det. Denne funksjonaliteten er nødvendig i Wine og Proton for systemkallsemulering. Windows, som er nødvendig for å sikre kompatibilitet med spill og programmer som direkte utfører systemkall ved å omgå Windows API (f.eks. for å beskytte mot uautorisert bruk).
- Systemkallet userfaultfd(), som er utformet for å håndtere sidefeil (tilgang til ikke-allokerte minnesider) i brukerområdet, har nå muligheten til å deaktivere håndteringen av unntak som oppstår på kjernenivå, noe som gjør det vanskeligere å utnytte visse sårbarheter.
- BPF-delsystemet støtter nå oppgavelokal lagring, som tillater at data bindes til en bestemt BPF-håndterer.
- Måten BPF-programmer tar hensyn til minneforbruk har blitt fullstendig redesignet: cgroup-kontrolleren har blitt introdusert for å administrere minnebruk i BPF-objekter i stedet for memlock rlimit.
- BTF-mekanismen (BPF Type Format), som gir typekontrollinformasjon i BPF-pseudokode, implementerer støtte for kjernemoduler.
- Det asynkrone I/O-grensesnittet io_uring har blitt oppdatert for å støtte systemkallene shutdown(), renameat2() og unlinkat(). Muligheten til å spesifisere en timeout er nå tilgjengelig når du kaller io_uring_enter() (sjekk for støtte for timeout-argumentet ved å bruke IORING_FEAT_EXT_ARG-flagget).
- IA64-arkitekturen som brukes i Intels Itanium-prosessorer er blitt foreldreløs, noe som betyr at testingen har opphørt. Hewlett Packard Enterprise har sluttet å ta imot bestillinger på ny Itanium-maskinvare, mens Intel gjorde det samme i fjor.
- Støtte for MicroBlaze-baserte systemer uten minnehåndteringsenhet (MMU) er avviklet. Slike systemer er ikke lenger i vanlig bruk.
- For MIPS-arkitekturen er det lagt til støtte for testing av kodedekning ved hjelp av gcov-verktøyet.
- Støtte for en virtuell hjelpebuss er lagt til for samhandling med multifunksjonelle enheter som kombinerer funksjonalitet som krever forskjellige drivere (f.eks. nettverkskort med Ethernet- og RDMA-støtte). Bussen kan brukes til å tilordne en primær og sekundær driver til en enhet i situasjoner der bruk av MFD-undersystemet (Multifunksjonsenheter).
- Støtte for minneallokeringssystemet Contiguous Memory Allocator (CMA) er lagt til i RISC-V-arkitekturen. Det er optimalisert for å allokere store sammenhengende minneområder ved hjelp av sideflyttingsteknikker. RISC-V implementerer også tilgangskontroll til /dev/mem og sporing av avbruddsbehandlingstid.
- Støtte for feilsøkingsverktøyet KASan (Kernel Address Sanitizer), som muliggjør deteksjon av minnefeil, er lagt til for 32-bits ARM-systemer. For 64-bits ARM-systemer er KASan-implementeringen migrert til å bruke MTE (MemTag)-tagger.
- La til systemkallet epoll_pwait2(), som tillater tidsavbrudd med nanosekundspresisjon (epoll_wait-kallet manipulerer millisekunder).
- Byggesystemet returnerer nå en feil når det forsøkes å bygge lastbare kjernemoduler som ikke spesifiserer en kodelisens ved hjelp av makroen MODULE_LICENSE(). Bruk av makroen EXPORT_SYMBOL() for statiske funksjoner vil nå også forårsake en byggefeil.
- La til støtte for å kartlegge GEM-objekter fra I/O-minne, noe som muliggjorde raskere framebuffer-ytelse på noen arkitekturer.
- Kconfig har sluttet å støtte Qt4 (den støtter fortsatt Qt5, GTK og Ncurses).
- Virtualisering og sikkerhet
- Systemkallet seccomp() støtter nå en rask responsmodus som tillater svært rask avgjørelse av om et bestemt systemkall er tillatt eller avvist basert på en prosesstilkoblet konstant-handling-bitmap, uten at det kreves at en BPF-håndterer startes.
- Integrerte kjernekomponenter for å opprette og administrere enklaver basert på Intel SGX (Software Guard eXtensions)-teknologi, som lar applikasjoner kjøre kode i isolerte krypterte minneområder som er begrenset fra tilgang av resten av systemet.
- Som en del av initiativet for å begrense brukertilgang til modellspesifikke registre (MSR-er), er det forbudt å skrive til MSR_IA32_ENERGY_PERF_BIAS-registeret, som tillater endring av prosessorens strømeffektivitetsmodus ("normal", "ytelse", "strømsparing").
- Muligheten til å deaktivere migrering av høyprioriterte oppgaver mellom CPU-er er flyttet fra kernel-rt-grenen for sanntidssystemer.
- For ARM64-systemer er muligheten til å bruke MTE-tagger (Memory Tagging Extension) for minneadresser i signalbehandlere lagt til. MTE-bruk aktiveres ved å spesifisere SA_EXPOSE_TAGBITS-alternativet i sigaction() og muliggjør korrekte pekerbrukskontroller for å forhindre utnyttelse av sårbarheter forårsaket av tilgang til allerede frigjorte minneblokker, bufferoverløp, tilgang før initialisering og bruk utenfor gjeldende kontekst.
- Parameteren «DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING» er lagt til. Denne parameteren lar dm-verity-undersystemet verifisere hash-signaturene til sertifikater lagret i den sekundære nøkkelringen. I praksis tillater denne innstillingen verifisering ikke bare av sertifikater som er innebygd i kjernen, men også sertifikater som lastes inn under kjøretid, noe som gjør det mulig å oppdatere sertifikater uten å oppdatere hele kjernen.
- I brukermodus Linux La til støtte for hvilemodus, som lar deg fryse miljøet og bruke SIGUSR1-signalet til å våkne fra hvilemodus.
- Virtio-mem-mekanismen, som tillater hot-plugging og frakobling av minne i virtuelle maskiner, har blitt oppdatert for å støtte Big Block Mode (BBM), som tillater at minne overføres eller tas i blokker som er større enn kjerneminneblokkstørrelsen, noe som er nødvendig for å optimalisere VFIO i QEMU.
- Støtte for CHACHA20-POLY1305-krypteringen er lagt til i TLS-implementeringen på kjernenivå.
- Nettverksundersystem
- Connectivity Fault Management (CFM) er implementert for 802.1Q (VLAN), noe som muliggjør deteksjon, verifisering og isolering av feil i virtuelle brokoblede nettverk. CFM kan for eksempel brukes til å isolere problemer i nettverk som strekker seg over flere uavhengige organisasjoner, der ansatte bare har tilgang til sitt eget utstyr.
- La til støtte for innkapsling av SCTP-protokollpakker i UDP-pakker (RFC 6951), som tillater bruk av SCTP i nettverk med eldre adresseoversettere som ikke direkte støtter SCTP, samt implementering av SCTP på systemer som ikke gir direkte tilgang til IP-laget.
- Implementeringen av WiMAX-teknologien er flyttet til staging og er planlagt for fremtidig fjerning hvis ingen brukere trenger den. WiMAX brukes ikke lenger i offentlige nettverk, og den eneste driveren i kjernen som støtter WiMAX er den utdaterte Intel 2400m-driveren. WiMAX-støtte ble avviklet i NetworkManager-nettverkskonfiguratoren i 2015. WiMAX er nå nesten fullstendig erstattet av teknologier som LTE, HSPA+ og Wi-Fi 802.11n.
- Det er utført arbeid for å optimalisere ytelsen til innkommende TCP-trafikkbehandling i nullkopimodus, dvs. uten ytterligere kopiering til nye buffere. For mellomstor trafikk, som dekker titalls eller hundrevis av kilobyte med data, er det betydelig mer effektivt å bruke nullkopi i stedet for recvmsg(). For eksempel økte de implementerte endringene effektiviteten til behandling av RPC-lignende trafikk med 32 KB-meldinger ved bruk av nullkopi med 60–70 %.
- Nye ioctl()-kall er lagt til for å opprette nettverksbroer som spenner over flere PPP-kanaler. Denne funksjonen lar rammer flyttes fra én kanal til en annen, for eksempel fra en PPPoE-økt til en PPPoL2TP-økt.
- Integreringen av MPTCP-kjerne (MultiPath TCP) har fortsatt. Dette er en TCP-protokollutvidelse for å organisere TCP-tilkoblinger med samtidig pakkelevering langs flere ruter gjennom forskjellige nettverksgrensesnitt bundet til forskjellige IP-adresser. Den nye utgivelsen inkluderer også støtte for ADD_ADDR-alternativet for å annonsere tilgjengelige tilkoblinger. IP-adresser som kan kobles til når man legger til nye strømmer i en eksisterende MPTCP-tilkobling.
- La til muligheten til å konfigurere handlinger når budsjettet for tilkoblingsavstemning (busy polling) overskrides. Den tidligere tilgjengelige SO_BUSY_POLL-modusen innebar å bytte til softirq når budsjettet var oppbrukt. For applikasjoner som trenger å fortsette å bruke avstemning, er et nytt alternativ, SO_PREFER_BUSY_POLL, tilgjengelig.
- IPv6 støtter nå SRv6 End.DT4- og End.DT6-modusene, som brukes til å opprette IPv4 L3 med flere leietakere VPN og VRF-enheter (virtuell ruting og videresending).
- Netfilter har forent implementeringen av settuttrykk, slik at flere uttrykk kan spesifiseres for hvert element i en settliste.
- Den trådløse 802.11-stakken har blitt oppdatert med API-er for konfigurering av SAR-strømgrenser, samt AE PWE- og HE MCS-parametere. Intel iwlwifi-driveren støtter nå 6 GHz-båndet (Ultra High Band). Qualcomm Ath11k-driveren støtter nå FILS (Fast Initial Link Setup, standardisert som IEEE 802.11ai), en teknologi for rask tilkoblingsoppsett som eliminerer roamingforsinkelser ved migrering fra ett tilgangspunkt til et annet.
- Оборудование
- amdgpu-driveren implementerer støtte for AMD "Green Sardine" (Ryzen 5000) APU og "Dimgrey Cavefish" (Navi 2) GPU, samt initial støtte for AMD Van Gogh APU med Zen 2-kjerne og RDNA 2 (Navi 2) GPU. Støtte for de nye Renoir APU-ID-ene (basert på Zen 2 CPU og Vega GPU) er lagt til.
- i915-driveren for Intel-grafikkort støtter nå IS-teknologi (Integer Scaling), og implementerer et filter for oppskalering basert på tilstanden til nærliggende piksler (Nearest-Neighbor Interpolation) for å bestemme fargen på manglende piksler. Støtte for separate Intel DG1-grafikkort er utvidet. Støtte for Big Joiner-teknologi, som har vært tilgjengelig siden Ice Lake/Gen11-brikkene, støttes nå. Denne teknologien lar en enkelt transkoder behandle to strømmer, for eksempel for utgang til en 8K-skjerm via en enkelt DisplayPort. Asynkron bytte mellom to videominnebuffere (async flip) er lagt til.
- Nouveau-driveren legger til innledende støtte for NVIDIA GPU-er basert på Ampere-mikroarkitekturen (GA100, GeForce RTX 30xx), som for øyeblikket er begrenset til håndtering av videomoduser.
- Støtte for 3WIRE-protokollen som brukes i LCD-paneler er lagt til. Støtte for Novatek NT36672A, TDO TL070WSH30, Innolux N125HCE-GN1 og ABT Y030XX067A 3.0-panelene er lagt til. Spesiell omtale bør gjøres av støtten for smarttelefonpaneler på OnePlus 6 og 6T, som tillater oppstart i en umodifisert kjerne på disse enhetene.
- La til støtte for Intels første separate USB4-vertskontroller, Maple Ridge.
- La til støtte for følgende lydkodeker: Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI og XCVR, Realtek RT715 og Qualcomm SM8250.
- La til støtte for følgende ARM-kort, enheter og plattformer: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, Mikrotik basert på Marvell Prestera 98DX3236, servere med Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, Trogdor Chromebook, Kobol Helios64, Engicam PX30.Core.
- Innebygd støtte for Ouya-spillkonsollen drevet av NVIDIA Tegra 3.
Samtidig laget Latin American Free Software Foundation en versjon av den helt gratis kjernen 5.11 - Linux-libre 5.11-gnu, renset for fastvare- og driverelementer som inneholder ikke-frie komponenter eller kodeseksjoner med begrenset omfang. Denne nye utgivelsen inkluderer driveropprydding for qat_4xxx (krypto), lt9611uxcm (dsi/hdmi-bro), ccs/smia++ (sensor), ath11k_pci, nxp lydtransceiver og mhi pci-kontroller. Blob-oppryddingskoden er oppdatert for amdgpu-, btqca-, btrtl-, btusb- og i915 csr-driverne og undersystemene. Nye blob-er er deaktivert i m3 rproc, idt82p33 ptp clock og qualcomm arm64.
Kilde: opennet.ru
