Etter to måneder med utvikling presenterte Linus Torvalds utgivelsen av Linux-kjerne 5.13. Blant de mest merkbare endringene er: filsystemet EROFS, tidlig støtte for Apple M1-brikker, cgroup-kontrolleren «misc», opphør av støtte for /dev/kmem, støtte for nye GPU-er fra Intel og AMD, muligheten for direkte kall av kjernens funksjoner fra BPF-programmer, tilfeldighet i kjernens stakk for hver systemanrop, mulighet for bygging i Clang med CFI-beskyttelse (Control Flow Integrity), LSM-modulen Landlock for ytterligere begrensning av prosesser, et virtuelt lydenhet basert på virtio, multi-shot-modus i io_uring.
I den nye versjonen er det akseptert 17189 feilrettinger fra 2150 utviklere (den største i historien), størrelsen på patchen er 60 MB (endringer berørte 12996 filer, 794705 linjer med kode ble lagt til, 399590 linjer ble fjernet). Omtrent 47 % av alle endringene i 5.13 er relatert til enhetstrekkere, omtrent 14 % av endringene har å gjøre med oppdatering av kode spesifikk for maskinvarearkitekturer, 13 % gjelder nettverksstakken, 5 % - filsystemer og 4 % for interne kjernesubsystemer.
Hovudnyhende:
- Disk subsystem, I/O og filsystemer
- Støtte for filsystemet EROFS (Enhanced Read-Only File System), foreslått av Huawei for bruk på partitioner tilgjengelige i skrivebeskyttet modus, er lagt til. Det nye filsystemet støtter lagring av data i komprimert form og viser lignende ytelse som Ext4 ved sekvensielle leseoperasjoner, men overgår Ext4 mange ganger ved tilfeldig datatilgang. For eksempel, med et kompresjonsnivå på 4 og testing på serveren harddisk overgikk EROFS filsystemet Ext4 i tilfeldig leseoperasjoner mer enn seks ganger, mens bruken av en Android-smarttelefon med Flash nesten tredoblet ytelsen. Som hos andre skrivebeskyttede filsystemer er strukturen til EROFS vesentlig forenklet ved å utelate visse metadataområder, som bitkartet for frie blokker, under implementeringen.
- For SMB3-filsystemet er det implementert et monteringsalternativ «rasize», som gjør det mulig å bestemme vindusstørrelsen for forhåndslesing (readahead) for å øke ytelsen til visse typer belastninger.
- I ext4-filsystemet er det sikret at elementer i kataloger overskrives ved sletting av filer. I ext4 er det også tillatt å bruke modus for case-insensitive drift samtidig med kryptering.
- I FS exFAT er det lagt til støtte for ioctl-kommandoen FITRIM (discard) for å informere lagringsenheten om ubrukt plass i FS-blokker.
- I FS XFS er det lagt til mulighet for å frigi plass fra den siste distribusjonsgruppen i FS, noe som har blitt det første leddet i implementeringen av funksjonen for å redusere størrelsen på eksisterende partisjoner med FS XFS.
- Det er lagt til et nytt systemanrop quotactl_path, som skiller seg fra quotactl ved å tillate administrasjon av kvoter ikke gjennom en spesialfil, men ved å angi stien til monteringspunktet for FS.
- I fanotify-mekanismen er mulighetene for ikke-privilegerte brukere utvidet. For eksempel, analogt med inotify, kan man nå spore hendelser som OPEN, ACCESS, MODIFY og CLOSE for filer og kataloger uten SYS_CAP_ADMIN-rettigheter.
- Minne og systemtjenester
- Det er lagt til en ny cgroup-kontroller – «Misc» (CONFIG_CGROUP_MISC), som er ment for å begrense og spore skalarressurser, som kan administreres med en enkel teller og begrenses ved å angi maksimale verdier. Et eksempel på bruken av den nye cgroup-kontrolleren er forvaltning av adresserom-identifikatorer som brukes i AMD SEV (Secure Encrypted Virtualization).
- I grensesnittet for asynkron input/output io_uring er det implementert en «multi-shot» modus for POLL-forespørsler, der POLL ikke slettes etter at en hendelse er generert, men forblir aktiv og kan generere flere hendelser.
- Kode fra realtime-grenen av kjernen er overført, som sikrer behandling av programmatisk genererte avbrudd i kjerne-tråder, noe som tillater å erstatte dem med mer prioriterte prosesser.
- Det er lagt til et internt bibliotek netfs, der typiske funksjoner brukt i nettverksfilsystemer er flyttet.
- For PowerPC-arkitekturen er det implementert støtte for tidsrom (time namespaces) som lar containere ha sin egen tid.
- For RISC-V-arkitekturen er det implementert støtte for kexec, crash dump, kprobe og kjøring av kjerne på stedet (execute-in-place, utførelse fra det opprinnelige mediet, uten kopiering til RAM).
- I BPF-sporingsprogrammer har det blitt mulig å bruke oppgave-lokalt datalager (task-local storage), som gir høyere ytelse ved å knytte data til en spesifikk BPF-håndterer.
- En ny mekanisme for direkte kall av kjernens funksjoner fra BPF-programmer er implementert, og den er allerede brukt i implementeringen av TCP-overbelastningsalgoritmer. For å sikre sikkerhet må de kallte funksjonene tydelig defineres i en whitelist.
- Systemet for sporingsfunksjoner ftrace har fått alternativet func-no-repeats, som gjør det mulig å reflektere gjentatte sekvensielle kall av funksjoner i form av en teller.
- I systemanropet userfaultfd(), som er ment for å håndtere page faults (tilgang til ikke-allokerte minnesider) i brukermodus, er det lagt til mulighet for å styre delvise faults, hvor minnesiden eksisterer, men det ikke finnes noen oppføring i minnesidetabellen.
- Støtte for spesialfilen /dev/kmem, som gir tilgang til hele kjernens adresseområde, er stoppet. Denne filen er ansett som foreldet og skaper sikkerhetsproblemer.
- For Intel-brikker er det implementert en ny driver for kjørestyring, som gjør det mulig å redusere prosessorfrekvensen ved fare for overoppheting. I motsetning til den eksisterende mekanismen for aktivering av TCC (Thermal Control Circuit), manipulerer den nye driveren relative verdier, det vil si at den kan redusere frekvensen når temperaturen begynner å stige betydelig, men uten å vente på at den overskrider en kritisk terskel.
- Virtualisering og sikkerhet
- LM-modulen for applikasjonsisolasjon Landlock er inkludert, som begrenser interaksjonen med det ytre miljøet for en gruppe prosesser og er utviklet med tanke på isolasjonsmekanismer som XNU Sandbox, FreeBSD Capsicum og OpenBSD Pledge/Unveil. Tilgangslogikken bestemmes av en BPF-program, men i motsetning til seccomp-bpf, filtrerer ikke Landlock systemanrop og deres argumenter, men tillater begrensning av bruken av kjernens objekter, slik som filhierarkier. Ved hjelp av Landlock kan enhver prosess, inkludert mindre privilegerte, effektivt isolere seg selv og hindre omgåelse av isolasjonen dersom sårbarheter eller ondsinnede endringer oppdages i applikasjonen. Landlock gir prosessen mulighet til å lage beskyttede isolerte miljøer, realisert som et ekstra lag over eksisterende systemmekanismer for tilgangskontroll. For eksempel kan et program forby tilgang til filer utenfor arbeidskatalogen.
- Mulighet for tilfeldig forskyvning av stakken ved behandling av systemkall er lagt til for å komplisere angrep på stakken. Essensen av det foreslåtte beskyttelseslaget er å velge en tilfeldig stakkoffset ved hvert systemkall, noe som vanskeliggjør fastsettelsen av stakkoppsettet i minnet selv om informasjon om adresser er tilgjengelig, ettersom den grunnleggende stakkadressen endres ved neste systemkall. For å aktivere tilfeldig forskyvning foreslås kjernekommandoen «randomize_kstack_offset=on/off» og innstillingen CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Kostnadene anslås til omtrent 1% tap i ytelse.
- Støtte for å kompilere kjernen med CFI (Control Flow Integrity) mekanisme i Clang-kompilatoren er lagt til, som legger til en sjekk før hver indirekte funksjonskall for å oppdage noen former for udefinert oppførsel som potensielt kan føre til brudd på den normale kontrollflyten på grunn av utnyttelse som endrer funksjonspekere i minnet. For å aktivere CFI foreslås innstillingen CONFIG_CFI_CLANG.
- I kjernens leverte nøkkeloppbevaringsservice (key ring) dekker mekanismen for betrodde nøkler (Trusted Keys) nå ikke bare nøkler fra TPM-moduler, men også fra TEE (Trusted Execution Environment). For å administrere kilden til betrodde nøkler foreslås oppstartsparameteren «trusted.source». I tillegg er det lagt til mulighet for behandling av betrodde nøkler i ASN.1-format.
- Et parameter for forsiktig lasting av listen over tilbakekalte sertifikater under oppstart av kjernen er lagt til. Problemet (CVE-2020-26541) med ignorering av UEFI Secure Boot-sertifikater i svartelisten som leveres i EFI_CERT_X509_GUID-format er løst, noe som tillot systemet å starte med et tilbakekalt sertifikat.
- Støtte for ECDSA digitale signaturer basert på elliptiske kurver er lagt til i kjernens kryptosystem.
- Muligheten for verifisering av SELinux-politikker ved hjelp av IMA (Integrity Measurement Architecture) subsystemet, som sikrer opprettholdelse av en hashbase for dataintegritetssjekk, er implementert.
- Nettverks subsystem
- Støtten for WiMAX-teknologi er fjernet, da den ikke lenger brukes i offentlige nettverk, og i kjernen er den eneste driveren som fortsatt kan bruke WiMAX den utdaterte driveren Intel 2400m. I nettverkskonfiguratoren NetworkManager ble støtten for WiMAX stoppet i 2015. For øyeblikket har WiMax nesten helt blitt erstattet av teknologier som LTE, HSPA+ og Wi-Fi 802.11n.
- En driver for nettverksadapteren MANA (Microsoft Azure Network Adapter) er lagt til.
- I driveren ath11k er støtten for Qualcomm QCN9074 trådløse moduler med støtte for 802.11ax lagt til.
- I driveren iwlwifi er det implementert mulighet for passiv skanning av kanaler i 6 GHz-båndet. For Ukraina er det lagt til støtte for å slå IEEE 802.11ax av og på basert på parametre i BIOS.
- Optimaliseringen av XDP (eXpress Data Path) har blitt utført, som muliggjør manipulering av nettverkspakker før de behandles av Linux-kjernens nettverksstakk. Testene viser en økning i XDP-ytelsen på 4-8%. For virtio-enheter kan ytelsesgevinsten ved programvarestyrt behandling av AF_XDP nå 33%.
- Det er implementert støtte for utvidede PROBE-meldinger i ICMP, definert i RFC 8335.
- Integrasjonen med MPTCP-kjernen (MultiPath TCP) fortsetter, en utvidelse av TCP-protokollen for å organisere TCP-forbindelser med levering av pakker samtidig over flere ruter gjennom ulike nettverksgrensesnitt knyttet til forskjellige IP-adresser. I den nye utgaven er det lagt til støtte for sockopt for å angi standard TCP-alternativer. Det er mulig å tilbakestille individuelle undersubstrømmer (subflow).
- I netfilter er det lagt til støtte for ressursadministrasjon gjennom en forent hierarki av cgroups v2.
- I ethtool er det implementert et grensesnitt for å lese statistikk fra IEEE MIB med støtte for mlx5 og bnxt. Nettverksdrivere har fått tillatelse til å trekke ut vilkårlige data fra SFP EEPROM, ved å manipulere med sidestørrelse + størrelse, men ved hjelp av minnesider.
- Utstyr
- Det er implementert første støtte for ARM-brikken Apple M1, som dekker avbruddsstyringssystemet, timer, UART, SMP, funksjoner for inn- og utdata samt MMIO. Tilbakeanalyse av GPU er fortsatt ufullført, og det tilbys støtte for rammebuffer og konsoll gjennom seriell port for utdata.
- Rengjøringen av kjernen for gamle drivere har blitt fortsatt, og driverne "gasket" (Google ASIC), "sysace", "umem" samt flere gamle drivere for serielle porter er fjernet.
- Etter 13 år i staging-grenen er driveren "comedi" for støtte av datainnsamlingsenheter stabilisert og flyttet til hovedsettet.
- GUD (Generic USB Display) driver has been added with the implementation of a basic driver for screens and TV adapters connected via the USB interface. The driver provides DRM properties (Direct Rendering Manager) for image rotation, brightness control, access to EDID, video mode settings, and connecting TVs, which can be used as a basis for creating drivers for specific devices.
- The 'virtio' sound driver has been added with the implementation of a virtual sound device that can be used in guest systems for sound output and recording without passthrough access to the sound card and without emulation.
- Initial support for the Aldebaran (gfx90a) GPU has been added to the amdgpu driver. Initial support for FreeSync adaptive synchronization technology for HDMI has been included (previously available for DisplayPort), allowing the refresh rate on the screen to be adjusted. Support for ASSR (Alternate Scrambler Seed Reset) has been added. An ioctl has been added to request capabilities related to video encoding and decoding. The CONFIG_DRM_AMD_SECURE_DISPLAY mode has been added to detect changes in displays showing critical information. Support for the ASPM power-saving mechanism has been introduced.
- The i915 driver for Intel graphics cards has included support for Intel Alderlake-S chips. Support for eDP MSO (Embedded DisplayPort Multi-SST Operation) has been added.
- Support for the Luna game controller (Amazon), as well as for the Hycon HY46XX touch screens, ILITEK Lego Series, and MStar MSG2638 has been added.
At the same time, the Latin American Free Software Foundation has released a fully free version of the kernel 5.11 — Linux-libre 5.11-gnu, cleared of firmware and driver elements containing non-free components or code areas restricted by the manufacturer. In the new release, the comedi driver has been cleaned. Cleaning of the cyclades, isicom tty, and i2400m wimax drivers, which have been removed from the kernel, has been discontinued. The blob cleaning code in the amdgpu, i915 csr, r8152 usb, mhi bus, x86 touchscreen, and qualcomm arm64 drivers and subsystems has been updated.
Kilde: opennet.ru
