Linux 6.19

Linux 6.19

Na twee maanden ontwikkeling heeft Linus Torvalds gepresenteerd de release van de kernel Linux 6.19. Enkele van de meest opvallende veranderingen zijn: het Live Update Orchestrator-systeem, ondersteuning voor PCIe Link Encryption, de systeemoproep listns, de Zero-Copy Receive modus in io_uring, ondersteuning voor de ARM-uitbreiding MPAM, klp-build voor het genereren van live patches, ondersteuning voor de LoongArch32-architectuur, QoS voor s2idle, optimalisatie van het auditsysteem, Intel LASS ter bescherming tegen Spectre, ondersteuning voor SHA-3 en BLAKE2b-hashes, het Confidential VMBus-mechanisme, TX-optimalisaties in het netwerk subsysteem, en het CAN XL-protocol, evenals API voor hardwareversnelling van HDR-uitvoer.

In de aankondiging van de nieuwe versie vertelde Linus dat de volgende kernelrelease het nummer 7.0 zal krijgen, omdat er in de 6.x-tak genoeg uitgaven zijn verzameld voor een wijziging van het eerste cijfer in het versienummer (ten tijde van de release van 6.0 volgde deze op 5.19). De wijziging van de nummering gebeurt om esthetische redenen en is een formele stap die het ongemak door het aantal uitgaven in de serie wegneemt. Linus grapte dat hij in de war raakt door grote getallen waarvoor hij niet genoeg vingers heeft aan handen en voeten. Formeel is er echter wel een reden voor een aanzienlijke wijziging van het versienummer, aangezien we beginnen met de volgende release de ondersteuning voor Rust is besloten over te brengen van experimenten naar de kernfunctionaliteit.

De nieuwe versie bevat 15657 correcties van 2237 ontwikkelaars, de patchgrootte is 52 MB (de wijzigingen betreffen 13682 bestanden, met 794649 toegevoegde regels code en 335498 verwijderde regels). In de vorige release waren er 15035 correcties van 2217 ontwikkelaars, de patchgrootte was 45 MB. Ongeveer 40% van alle wijzigingen in 6.19 heeft betrekking op apparaatdrivers, ongeveer 13% van de wijzigingen hebben betrekking op de update van architectuurspecifieke code, 12% heeft betrekking op de netwerktechnologie, 5% op bestandssystemen en 3% op interne subsystems van de kernel.

De belangrijkste innovaties in kernel 6.19 (1, 2, 3):

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
  • Geheugen en systeemdiensten
    • is het subsysteem is ingeschakeld Live Update Orchestrator (LUO), waarmee de kernel volledig opnieuw kan worden opgestart en bijgewerkt zonder de werking te stoppen en geen systeem-, apparaat- en processtatus te verliezen. Het LUO-subsysteem is gebaseerd op het eerder aan de kernel toegevoegde mechanisme. (LUO), waarmee het mogelijk is om de kernel volledig te herstarten en bij te werken zonder de werking te onderbreken en zonder de status van het systeem, apparaten en processen te verliezen. De LUO-subsysteem is gebaseerd op een eerder aan de kernel toegevoegd mechanisme KHO (Kexec HandOver) en naast de mogelijkheid om een nieuwe kernel te starten vanuit een oude zonder verlies van systeemsamenhang, lost het ook problemen op zoals het behouden van de status van apparaten en RAM, evenals het waarborgen van de continuïteit van DMA- en interruptverwerkingsoperaties. De status wordt behouden tot het overschakelen naar de nieuwe kernel en wordt hersteld nadat de nieuwe kernel is ingeschakeld, zonder onderbreking van de continue operaties met apparaten die door het systeem en applicaties in de gebruikersruimte worden uitgevoerd.

    • Toegevoegd de systeemaanroep listns() voor het weergeven van een lijst van bestaande namespaces in het systeem zonder de noodzaak om /proc//ns/ voor alle processen te doorlopen.

    • In het io_uring systeem voor asynchrone I/O is ondersteuning toegevoegd voor verschillende groottes van elementen in de verzendwachtrij (SQE, Submission Queue Entry), vergelijkbaar met hoe in de vorige release het mengen van de grootte van de resultaatwachtrij (CQE, Completion Queue Event) was toegestaan. Voor deze wijziging moesten alle elementen in de wachtrij dezelfde grootte hebben, wat leidde tot onnodig geheugengebruik vanwege de noodzaak om de maximale grootte voor alle elementen in de wachtrij te gebruiken.

      In io_uring is ook ondersteuning toegevoegd voor het zcrx (Zero-Copy Receive) mechanisme voor het ontvangen van gegevens zonder kopiëren tussen de kernel en de gebruikersruimte. Ondersteuning voor geheugenindelingsrequests voor SQ (Submission Queue) en CQ (Completion Queue) is toegevoegd, waarmee informatie over de grootte van de ringbuffer kan worden verkregen, wat nodig is bij gebruikersgeheugenallocatie met de vlaggen IORING_SETUP_NO_MMAP en IORING_MEM_REGION_TYPE_USER.

    • Voor snelle stacktracering met behulp van hulpprogramma's zoals perf is ondersteuning toegevoegd voor het SFrame-formaat met informatie over de oproepstack (unwind). SFrame wordt al ondersteund in GCC en binutils, verlaagt de prestaties niet en bevat, in tegenstelling tot het DWARF-formaat, slechts een minimum aan informatie die nodig is voor stacktracering.

    • In het perf-hulpprogramma toegevoegd ondersteuning voor gestandaardiseerde beschrijvingen van statistieken en evenementen in JSON-indeling, evenals uitgestelde ontsluiting (deferred unwinding) van de oproepstack in de gebruikersruimte.

    • Voor AMD-processors is een mechanisme voor gegevensinvoeging in de cache geïmplementeerd, waarmee invoerapparaten gegevens rechtstreeks in de L3-cache van de CPU kunnen plaatsen zonder deze eerst in het RAM te plaatsen.

    • Ondersteuning toegevoegd voor MPAM (Memory System Resource Partitioning and Monitoring), uitbreidingen van de architectuur van de ARMv8-A instructieset voor het markeren van elke geheugenaanroep met een sectie-ID (PARTID, Partition ID) en een monitoringsgroep-ID (PMG, Monitoring Group ID). In combinatie met PARTID kan het gebruik van bronnen, zoals geheugendoorvoer of cache grootte, worden beperkt, zodat een groep taken niet alle bronnen gebruikt. In de context van monitoring kan de combinatie van PMG en PARTID worden gebruikt om het geheugenverbruik te volgen bij bepaalde soorten belasting.

    • In het geval van een crash van een proces na ontvangst van een signaal, kan een ander proces, dat de pidfd van het beëindigde proces heeft, nu het signaalnummer bepalen dat heeft geleid tot de beëindiging van het proces.

    • De implementatie van herstartbare sequenties (restartable sequences), die applicaties in staat stellen om pseudo-atomair niet-onderbroken uitvoeren van een groep instructies te organiseren (bij onderbreking door een andere thread, wordt een herhalingspoging gedaan om de sequentie uit te voeren). De nieuwe implementatie biedt een hogere prestatie.

    • Voor BPF-programma's zijn gerealiseerd BPF_JMP, BPF_X en BPF_JA instructies om indirecte sprongen naar een bepaalde positie in de sprongetabel te maken. Het concept van dynamische pointers (dynptr) is toegevoegd, waardoor het mogelijk is om gegevens uit gestructureerde bestanden te lezen. Toegevoegd de mogelijkheid om meerdere bytes met metadata aan netwerkpakketten te koppelen.

    • Modules geschreven in Python, gebruikt voor de verwerking van documentatie voor de kernel, zijn verplaatst naar afzonderlijke catalogi tools/lib/python.

    • De functie is toegevoegd mempool_alloc_bulk() voor een veilige allocatie van elementen uit een geheugenpool voor meerdere objecten tegelijk.

    • Voortgezet de wijzigingen uit de tak Rust-for-Linux, gerelateerd aan het gebruik van de programmeertaal Rust als tweede taal voor de ontwikkeling van stuurprogramma's en kernelmodules (ondersteuning voor Rust is niet standaard ingeschakeld en leidt niet tot Rust als verplichte bouwafhankelijkheid van de kernel). In de nieuwe versie bevat de kernel ingebouwd de bibliotheek "syn" met een parser voor Rust-code, die het schrijven van complexe macro's vereenvoudigt. De mogelijkheden van de kernel-, pin-init- en rbtree-bibliotheken zijn uitgebreid. Een nieuwe bibliotheek num met het type Integer is toegevoegd voor het manipuleren van gehele getallen. Ondersteuning voor gehele parameters is toegevoegd aan de macro module! Parameters kunnen nu worden opgegeven bij het laden van kernelmodules geschreven in Rust. Abstracties voor de subsystemen I2C en PWM (Pulse Width Modulation).

    • Toegevoegd de macro at_least (bijvoorbeeld, param[at_least 7], die aangeeft wat de minimale toegestane grootte van de array is die naar de functie wordt doorgegeven. Als er een array met minder elementen naar de functie wordt doorgegeven, geeft de compiler een waarschuwing.

    • In het pakket ingeschakeld het script klp-build voor het genereren van kernelmodules die wijzigingen aanbrengen in een werkende kernel (livepatch), op basis van een patchbestand. De utility objtool is aangepast met de nodige wijzigingen voor het creëren van live-patches.

    • In User-mode Linux (het draaien van de kernel als een gebruikersproces) heeft beperkte ondersteuning voor multiprocessors toegevoegd, maar threads binnen één proces kunnen nog niet tegelijk worden uitgevoerd. Begonnen de porting van User-mode Linux naar de bibliotheek nolibc.

    • Toegevoegd ondersteuning voor de architectuur LoongArch32 (LA32R, LA32S) naast LoongArch64.

    • Toegevoegd de mogelijkheid om QoS-limieten in te stellen voor de intensiteit van de CPU-wake-up in energiebesparingsmodus s2idle (Suspend-To-Idle), die de uitvoering van processen in de gebruikersruimte bevriest, maar sommige afhandelaars in de kernel actief laat.

    • Toegevoegd ondersteuning voor het beheren van geheugenpagina-tabellen voor IOMMU (Input-Output Memory Management Unit), die de translatie van virtuele adressen, zichtbaar voor de hardware, naar fysieke adressen uitvoert, met de mogelijkheid om DMA-bewerkingen te filteren op virtuele adressen, en om invoer- en uitvoeroperaties te beperken en isoleren.

    • In de tracking van systeemaanroepgebeurtenissen is de mogelijkheid geïmplementeerd om buffers uit de gebruikersruimte te lezen en hun inhoud (bijvoorbeeld bestandsnamen) op te nemen in het traceerresultaat.

    • **Bewakingspagina's van geheugen(( (guard page), die een uitzondering veroorzaken en het proces beëindigen (SIGSEGV), worden nu gemarkeerd met een speciale label in het bestand /proc/PID/smaps.

    • Toegevoegd de mogelijkheid voor het beheren van grote geheugenpagina's (transparent huge page) in het privégeheugen van gezoneerde apparaten.

    • In het apparaat zram, dat wordt gebruikt voor gecomprimeerde opslag van de swap-partitie in het geheugen, geïmplementeerd ondersteuning voor het uitplaatsen van meerdere 'bio' (Block I/O) structuren in batchmodus (writeback batching).

    • De set bevat het lettertype ‘Terminus 10×18’, dat de leesbaarheid van informatie op de console op laptops met een gemiddelde resolutie (1440×900) verbetert.

    • Beduidend geoptimaliseerd werk de auditsystemen — er is een halvering van de overheads gerapporteerd.

  • Virtualisatie en beveiliging
    • Ondersteuning toegevoegd voor de door Intel-processors geleverde mogelijkheid voor segmentatie lijnruimtescheiding (LASS, linear address-space separation), die hardwarematig de adressenruimten van de gebruikersruimte en de kernel scheidt ter verbetering van de beveiliging. De adressenruimte wordt gescheiden op basis van de hoogste bit van het adres - de helft van de adressenruimte met de hoogste bit ingesteld wordt gebruikt voor de kernel, terwijl de onderste voor de gebruikersruimte is. In een vroeg stadium van de uitvoering van instructies (in de fase vóór speculatieve uitvoering) wordt gecontroleerd of toegang vanuit de gebruikersruimte naar adressen met de hoge bit en omgekeerd is toegestaan. Dergelijke afscheiding blokkeert geheugenlekken van de kernel naar de gebruikersruimte via externe kanalen, zelfs tijdens speculatieve uitvoering van instructies, wat het mogelijk maakt om LASS te gebruiken ter bescherming tegen Meltdown en Spectre aanvallen, zonder grote overhead.
    • Er is een optie toegevoegd om in te schakelen uitbreidingen versterking van de beveiliging van de PCI Express-bus – PCIe Link Encryption en PCIe Device Authentication, die de authenticiteit bevestigen en de communicatie tussen het PCIe-apparaat en de virtuele machine versleutelen, beschermd door middel van Intel TDX (Trusted Domain Extensions) en AMD SEV-SNP (Secure Nested Paging) mechanismen. De geïmplementeerde technologieën maken het niet mogelijk om gegevens in de DMA-verkeer te onderscheppen, analyseren en in te voegen bij toegang tot het host-systeem of andere apparaten.
    • In de ingebouwde cryptografische bibliotheek toegevoegd ondersteuning voor de SHA-3-algoritmen (SHA3-224, SHA3-256, SHA3-384, SHA3-512) SHAKE128, SHAKE256 en BLAKE2b.
    • Voor LSM-modules (Linux Security Modules) en met name voor SELinux, geïmplementeerd de mogelijkheid om de creatie van memfd-descriptoren te volgen om beveiligingsbeleidsregels toe te passen op de bijbehorende objecten.
    • In de LSM-module IPE (Integrity Policy Enforcement), die het algemene integriteitsbeleid voor het gehele systeem definieert, is ondersteuning voor de vlag AT_EXECVE_CHECK in de functie execveat(), die de integriteit van het script controleert voordat het door de interpreter wordt uitgevoerd.
    • Primitieven scoped_user_read_access(), scoped_user_write_access en scoped_user_rw_access() zijn toegevoegd voor beperkte toegang tot gegevens in de gebruikersruimte met bescherming speculatieve aanvallen.
    • Toegevoegd ondersteuning voor het mechanisme Confidential VMBus, gebruikt in de HyperV-hypervisor voor beveiligde interactie tussen de gasten systeem, uitgevoerd in de vertrouwelijke modus (met geheugenversleuteling en isolatie van registers op basis van AMD SNP en Intel TDX-technologieën), en de paravisor die verantwoordelijk is voor het aanspreken van apparaten die vertrouwelijke gegevens verwerken.
    • Toegevoegd de mogelijkheid om informatie over een ongeplande beëindiging van een proces (voor het genereren van een coredump) te verzenden via het pidfd-mechanisme. De PIDFD-identificator is gekoppeld aan een specifiek proces en verandert niet, terwijl de PID kan worden toegewezen aan een ander proces nadat het huidige proces, dat aan deze PID is gekoppeld, is beëindigd. Het gebruik van pidfd maakt het blokkeren van En op deze vraag is er een oplossing – het is noodzakelijk om moderne filtersystemen te gebruiken en speciale programma's in te schakelen – dan is uw bron de vervanging van de ongepland beëindigde suid-proces met een ander proces mogelijk, waarbij een raceconditie wordt bereikt op het moment na het beginnen van de afhandeling door de kernel van de ongeplande beëindiging, maar vóór de controle door de handler in de gebruikersruimte van de procesparameters.
  • Netwerk subsysteem
    • In het netwerk subsysteem correcties en kleine verbeteringen aangebracht. optimalisaties voor het verbeteren van de efficiëntie van gegevensoverdracht (TX). Het vrijmaken van de functie __dev_queue_xmit() van spin-locks en het gebruik van een lock-free llist-structuur maakte het mogelijk de prestaties vier keer te verhogen bij hoge belasting en de intensiteit van het verzenden van pakketten te verdubbelen bij verminderde CPU-belasting.
    • Verstrekt de mogelijkheid uit te schakelen voor afzonderlijke netwerk-sockets systeemlimieten voor geheugengebruik (in dit geval worden de gezamenlijke geheugenlimieten gebruikt die zijn ingesteld voor afzonderlijke containers). Voor het beheren van het uitschakelen van limieten is de sysctl net.core.bypass_prot_mem en de vlag SK_BPF_BYPASS_PROT_MEM in de functie bpf_setsockopt voorgesteld.
    • Toegevoegd ondersteuning voor de extensie RFC 5837, dat gegevens over binnenkomende netwerkinterfaces toevoegt aan ICMP-berichten Time Exceeded, die worden geretourneerd wanneer de levensduur (TTL) van een pakket is verstreken, voor meer gedetailleerde informatie bij het traceren van routes met het hulpmiddel traceroute.
    • Toegevoegd ondersteuning voor continue actieve polling (busy polling) in een aparte kernelthread met als doel het extraheren van descriptors uit RX/TX-queues voor applicaties die minimale latentie vereisen.
    • Ondersteuning voor het protocol CAN XL (Controller Area Network eXtended Length), waarbij de grootte van het gegevensveld is vergroot tot 2048 bytes om integratie met TCP/IP-netwerken mogelijk te maken, is de mogelijkheid van het tunnelen van Ethernet-frames geïmplementeerd en is ondersteuning toegevoegd voor breedte-pulsgesteente, waarmee gegevens met snelheden van 20 Mbit/s en hoger kunnen worden verzonden.
    • Toegevoegd ondersteuning voor de structuur sockaddr_unsized, een variant van de sockaddr-structuur die een array met flexibele elementen in plaats van een array met een vaste grootte (sa_data[] in plaats van sa_data[14], dat in feite werd gebruikt om naar andere structuren van grotere grootte te verwijzen).
    • De functionaliteit van getsockname en getpeername is toegevoegd via de io_uring-substructuur.
    • Toegevoegd sysctl net.ipv4.tcp_rcvbuf_low_rtt en net.ipv4.tcp_comp_sack_rtt_percent voor optimalisatie van TCP.
    • Toegevoegd ondersteuning voor verbindingen met een bandbreedte van 1600 Gbps (1.6T).
  • Apparatuur
    • In de DRM (Direct Rendering Manager)-substructuur is een API toegevoegd voor het benutten van hardwarematig kleurconversiecapaciteiten, zodat dergelijke conversies niet meer via shaders of door CPU-verwerking hoeven te worden uitgevoerd. Voor de output van content op een HDR-monitor kunnen complexe kleurconversies nu worden uitgevoerd door de displayscontroller in de fase voor en na het mengen van lagen, in plaats van door softwarematig de inhoud in de eindbuffer te composeren. Naast het verlagen van overhead en energieverbruik bij het organiseren van de output in HDR, kan de voorgestelde functionaliteit worden gebruikt voor correcte kleurweergave in video- of afbeeldingsbewerkers.
    • Toegevoegd de ethosu-driver voor de Arm Ethos U65 en U85 NPU, bedoeld voor hardwareversnelling van AI-modellen.
    • Ondersteuning voor hardwarematige beeldversterking (Sharpening) toegevoegd in de i915-driver voor Lunar Lake GPU en nieuwere modellen.
    • Voortgezet werk aan de drm-driver (Direct Rendering Manager) Xe voor GPU's op basis van de Intel Xe-architectuur, die wordt gebruikt in Intel graphicskaarten van de Arc-familie en geïntegreerde graphics, beginnend met Tiger Lake-processoren. Initiële ondersteuning voor de Xe3P-architectuur, gebruikt in de Crescent Island GPU en de Nova Lake-geïntegreerde grafische processorfamilie, is toegevoegd.
    • In de AMDGPU-driver is volledige ondersteuning geïmplementeerd voor AMD graphicskaarten van de GCN 1.0 ‘Southern Island’ en 1.1 ‘Sea Islands’ series, waarvoor eerder de Radeon-driver werd gebruikt. De AMDGPU-driver is op pariteit gebracht met de mogelijkheden van de Radeon-driver en standaard ingeschakeld voor de genoemde GPU's. De GCN 1.x-kaarten zijn geproduceerd van 2012 tot 2019 en omvatten modellen zoals Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790/8870 en andere graphicskaarten uit de Radeon Rx 200/Rx 300-families. Naast vergroting de prestaties met gemiddeld 24% zijn verbeterd, de overstap naar AMDGPU heeft ondersteuning voor de Vulkan 1.3 grafische API voor deze GPU's mogelijk gemaakt. Bovendien is er ondersteuning voor analoge connectors en Video Coding Engine 1.0 aan AMDGPU toegevoegd, en is de DC (Display Core) stack standaard ingeschakeld voor GPU's op basis van de Bonaire microarchitectuur (Radeon HD 7790).
    • In de Nouveau driver geïmplementeerd ondersteuning voor de NVJPG hardwareversneller, die aanwezig is in SoC Tegra210.
    • In de Panthor driver toegevoegd ondersteuning voor de Mali-G1 GPU en de eerste ondersteuning voor de MediaTek MT8196 chip.
    • Toegevoegd ondersteuning voor de geluidsarchitectuur van de Intel Nova Lake S chips, HP laptops met HDA CS35L41, evenals de geluidsinterfaces CIX IPBLOQ HD en Onkyo SE-300PCIE.
    • De integratie van de Nova drivercomponenten voor NVIDIA GPU's, uitgerust met GSP-firmware, die vanaf de NVIDIA GeForce RTX 2000 serie op basis van de Turing microarchitectuur wordt gebruikt, is voortgezet. De driver is geschreven in Rust. In de nieuwe versie is begonnen met het werk aan RPC en afgerond. de implementatie van de opstart van de GSP (GPU System Processor) coproces.
    • Toegevoegd ondersteuning voor ARM-platforms, SoC's en apparaten: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 varianten van de Enclustra Mercury boards.
    • Ondersteuning voor smartphones en tablets op basis van de Mediatek MT6582 SoC (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) en Qualcomm MSM8939 (ASUS ZenFone 2) is toegevoegd. Ondersteuning voor laptops op basis van de Qualcomm sdm850 SoC, zoals de Huawei MateBook E 2019, is ook toegevoegd.
    • ondersteuning toegevoegd voor SoC en boards op basis van de RISC-V architectuur: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.

Tegelijkertijd Latijns-Amerikaanse Stichting voor Vrije Software gecreëerd optie volledig vrij 6.19 kernel — Linux-libre 6.19-gnu, ontdaan van elementen van firmware en drivers die niet-vrije componenten of code bevatten, waarvan de toepassing door de fabrikant is beperkt. In de release 6.19 is de code voor het laden van binaire firmware uit de SDCA geluidsarchitectuur verwijderd. De code voor het opschonen van blobs in de Intel XE, Nova-Core, Qualcomm Iris, Venus en Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 en TI tas2783 geluidscodecs is bijgewerkt. De blob-namen in dts-bestanden (devicetree) voor ARM-chips zijn opgeschoond. Het opschonen van de STM C8SECTPFE DVB driver, die uit de kernel is verwijderd, is gestopt.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster