Release van Linux-kernel 5.7

Na twee maanden ontwikkeling heeft Linus Torvalds gepresenteerd de release van de kernel Linux 5.7. Onder de meest opvallende wijzigingen: een nieuwe implementatie van het exFAT-bestandssysteem, de bareudp-module voor het creƫren van UDP-tunnels, pointer-authenticatiebeveiliging voor ARM64, de mogelijkheid om BPF-programma's aan LSM-handlers te koppelen, een nieuwe implementatie van Curve25519, een 'split-lock' detector, BPF-compatibiliteit met PREEMPT_RT, het opheffen van de beperking van 80 tekens in de code, rekening houden met CPU-temperatuur in de taakplanner, de mogelijkheid om clone() te gebruiken voor het genereren van processen in een andere cgroup, en geheugenbescherming met behulp van userfaultfd.

In de nieuwe versie zijn 15033 correcties opgenomen van 1961 ontwikkelaars,
de patchgrootte bedraagt 39 MB (de wijzigingen hebben 11590 bestanden aangetast, er zijn 570560 regels code toegevoegd,
297401 regels verwijderd). Ongeveer 41% van alle wijzigingen in 5.7
hebben betrekking op apparaatstuurprogramma's, ongeveer 16% van de wijzigingen heeft
te maken met het bijwerken van hardware-architectuur specifieke code, 13%
betrekking op de netstack, 4% betreft bestandssystemen en 4% betreft interne
kernsubsystemen.

Belangrijkste vernieuwingen:

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • Er is een nieuwe implementatie van de exFAT-driver toegevoegd, gebaseerd op de meest actuele codebasis 'sdfat' (2.x), ontwikkeld door Samsung voor zijn Android-smartphones. De eerder aan de kernel toegevoegde driver was gebaseerd op verouderde code van Samsung (versie 1.2.9) en bleef ongeveer 10% achter op prestaties vergeleken met de nieuwe driver. Het is belangrijk op te merken dat de toevoeging van exFAT-ondersteuning aan de kernel mogelijk werd nadat Microsoft heeft gepubliceerd publieke specificaties beschikbaar had gesteld en toestemming had gegeven voor gratis gebruik van patenten op exFAT in Linux.
    • In Btrfs is een nieuwe ioctl()-opdracht geĆÆmplementeerd — BTRFS_IOC_SNAP_DESTROY_V2, waarmee een subvolume kan worden verwijderd op basis van zijn identificatie. Volledige ondersteuning voor het klonen van inline-extents is verzekerd. Het aantal herstelpunten voor herverdeling is uitgebreid, waardoor lange wachttijden bij het uitvoeren van de opdracht 'balance cancel' zijn verminderd. De identificatie van terugverwijzingen naar extents is versneld (bijvoorbeeld, de uitvoeringstijd van de test is verkort van een uur naar enkele minuten). Er is een mogelijkheid toegevoegd om aan elke inode van de bestandsextentboom een koppelpunt te hechten. De vergrendelingsstructuur die wordt gebruikt bij het schrijven naar subvolumes en bij het uitsluiten van NOCOW is herzien. De efficiĆ«ntie van het uitvoeren van fsync voor bereiken is verbeterd.
    • In XFS is improved metadata checking and fsck execution for active partitions. A library for reconstructing btree structures is proposed, which will be used in the future for reworking xfs_repair and implementing the ability to recover without unmounting the partition.
    • In CIFS, experimental support for placing swap partitions in SMB3 storages has been added. POSIX extensions in readdir, specified in the SMB3.1.1 specification, have been implemented. Write performance for pages sized 64KB has been enhanced when cache=strict mode is enabled and protocol versions 2.1+ are used.
    • The EXT4 file system has been migrated from bmap and iopoll to using iomap.
    • In F2FS, optional support for data compression using the zstd algorithm has been implemented. By default, the LZ4 algorithm is used for compression. Support for the "chattr -c commit" command has been added. Mount time display has been ensured. The ioctl F2FS_IOC_GET_COMPRESS_BLOCKS has been added to retrieve information about the number of compressed blocks. Compression data is now output through statx.
    • In the Ceph file system, the ability to locally execute file creation and deletion (unlink) operations without waiting for a server response (asynchronous operation) has been added. This change significantly improves performance when using the rsync utility.
    • In OVERLAYFS, the ability to use virtiofs as the upper-level file system has been added.
    • Rewritten the path traversal code in VFS, the symbolic link parsing code has been reworked, and mount point traversal has been unified.
    • In the scsi subsystem, unprivileged users is het toegestaan are allowed to execute ZBC commands.
    • In dm_writecache geĆÆmplementeerd the ability to gradually clear the cache based on the max_age parameter, which specifies the maximum lifetime of a block, has been added.
    • In dm_integrity, toegevoegd support for the "discard" operation has been added.
    • In null_blk, toegevoegd support for error injection to simulate failures during testing has been added.
    • Toegevoegd the ability to send udev notifications about block device size changes has been added.
  • Netwerk subsysteem
    • In Netfilter, wijzigingensignificantly speeding up the processing of large matching lists (nftables set), where subnet, network port, protocol, and MAC address combinations are required to be checked.
      Optimizations correcties en kleine verbeteringen aangebracht. In de module nft_set_pipapo (PIle PAcket POlicies), die de taak uitvoert van het vergelijken van de inhoud van een pakket met de in de filterregels toegepaste willekeurige reeksen van veldstatussen, zoals IP- en netpoortreeksen (nft_set_rbtree en nft_set_hash manipuleren de vergelijking van intervallen en directe reflectie van waarden). Een vectorized versie van pipapo, gebruikmakend van 256-bits AVX2-instructies op een systeem met een AMD Epyc 7402-processor, toonde een prestatieverbetering van 420% bij het parseren van 30.000 vermelde records, inclusief poort-protocol koppelingen. De verbetering bij het vergelijken van een subnet en poortnummer bij het parseren van 1000 records was 87% voor IPv4 en 128% voor IPv6.
    • Toegevoegd De bareudp-module, die de encapsulatie van verschillende L3-protocollen zoals MPLS, IP en NSH in een UDP-tunnel mogelijk maakt.
    • De integratie van MPTCP-componenten (MultiPath TCP) werd voortgezet, wat een uitbreiding is van het TCP-protocol voor het opzetten van een TCP-verbinding die paketten gelijktijdig over meerdere routes via verschillende netwerkinterfaces met verschillende IP-adressen aflevert.
    • Toegevoegd Ondersteuning voor mechanismen voor hardwareversnelling voor de encapsulatie van Ethernet-frames in 802.11 (Wi-Fi).
    • Bij het verplaatsen van een apparaat van de ene netwerknaamruimte (network namespace) naar de andere, zijn de toegangsrechten en eigenaar van de bijbehorende bestanden in sysfs correct aangepast.
    • De mogelijkheid om de SO_BINDTODEVICE-vlag te gebruiken is beschikbaar gesteld aan gebruikers zonder root-rechten.
    • De derde set patches is aangenomen die de ethtool-tool omzet van ioctl() naar het gebruik van de netlink-interface. Deze nieuwe interface vereenvoudigt het toevoegen van extensies, verbetert de foutafhandeling, maakt het mogelijk om meldingen te verzenden bij statuswijzigingen, vereenvoudigt de interactie tussen de kernel en de gebruikersruimte en vermindert het aantal te synchroniseren genummerde lijsten.
    • De mogelijkheid is toegevoegd om speciale hardwareversnellers te gebruiken voor het uitvoeren van verbindingstrackingoperaties.
    • In netfilter is toegevoegd een hook voor het aansluiten van classificatoren van uitgaande pakketten (egress), die de eerder aanwezige hook voor binnenkomende pakketten (ingress) aanvult.
  • Virtualisatie en beveiliging
    • Een hardware-implementatie van pointer-authenticatie is toegevoegd (Pointer Authentication), die gebruikmaakt van gespecialiseerde ARM64 CPU-instructies ter bescherming tegen aanvallen die gebruikmaken van return-oriented programming (ROP) technieken, waarbij de aanvaller geen eigen code in het geheugen probeert te plaatsen, maar al bestaande delen van machine-instructies in geladen bibliotheken gebruikt, eindigend met een return-instructie. De bescherming bestaat uit het gebruik van digitale handtekeningen om de terugkeeradressen op kernel-niveau te verifiĆ«ren. De handtekening wordt opgeslagen in de ongebruikte bovenste bits van de pointer zelf. In tegenstelling tot software-implementaties worden de creatie en verificatie van digitale handtekeningen uitgevoerd met speciale CPU-instructies.
    • Toegevoegd de mogelijkheid om geheugenareas tegen schrijven te beschermen door middel van de systeemaanroep userfaultfd(), bedoeld voor het afhandelen van page faults (toegang tot niet toegewezen geheugenspagina's) in de gebruikersruimte. Het idee is om userfaultfd() ook te gebruiken voor het volgen van toegangsschendingen naar pagina's die voor schrijven zijn beschermd, en een handler aan te roepen die kan reageren op dergelijke schrijfpogingen (bijvoorbeeld voor de afhandeling van wijzigingen tijdens het maken van live-snapshots van actieve processen, het vastleggen van de status bij het dumpen van geheugen naar de schijf, implementatie van gedeeld geheugen, het volgen van geheugenwijzigingen). Functionaliteit is gelijk aan het gebruik van mprotect() in combinatie met de SIGSEGV signaalhandler, maar werkt aanzienlijk sneller.
    • In SELinux is de parameter ā€˜checkreqprot’ verouderd, die het mogelijk maakte om de geheugenbescherming uit te schakelen bij het afhandelen van regels (het stond het gebruik van uitvoerbare geheugengebieden toe, ongeacht de voorschriften die binnen de regels waren vastgesteld). Symbolische links in kernfs is toegestaan om de context van ouderdirectories over te nemen.
    • In het pakket ingeschakeld module KRSI, wat het mogelijk maakt om BPF-programma's aan elk LSM-haak in de kernel te bevestigen. De wijziging staat toe om LSM-modules (Linux Security Module) in de vorm van BPF-programma's te creĆ«ren voor het oplossen van audit- en mandaattoegangskontroleproblemen.
    • Beoordeeld prestatie-optimalisatie van /dev/random door het batchgewijs verzenden van CRNG-waarden in plaats van individuele RNG-instructieaanroepen. Verbeterde werking van getrandom en /dev/random op ARM64-systemen die RNG-instructies aanbieden.
    • Implementatie van de elliptische kromme Curve25519 is vervangen op basis van de variant uit de bibliotheek HACL, waarvoor verstrekt wiskundig bewijs van formele verificatie van betrouwbaarheid.
    • Toegevoegd mechanisme voor het informeren over vrije geheugenpagina's. Met behulp van dit mechanisme kunnen gastsystemen de host-systeem informatie over pagina's die niet meer worden gebruikt, doorgeven, en deze pagina's kan de host terughalen.
    • In vfio/pci toegevoegd ondersteuning voor SR-IOV (Single-Root I/O Virtualization).
  • Geheugen en systeemdiensten
    • Van 80 tot 100 tekens is verhoogd beperking op de maximale lengte van een regel in de bronteksten. Desondanks wordt ontwikkelaars nog steeds aangeraden binnen de grenzen van 80 tekens per regel te blijven, maar dit is nu geen strikte limiet meer. Bovendien zal het overschrijden van de limiet voor de regelgrootte nu alleen een waarschuwing geven bij de compilatie als de tool checkpatch met de optie '—strict' wordt uitgevoerd. Deze wijziging zal ontwikkelaars de mogelijkheid geven om niet afgeleid te worden door manipulaties spaties en zich vrijer te voelen bij het uitlijnen van code, evenals voorkomt onnodige regelafbrekingen, die de waarneming van de code en het zoeken verstoren.
    • Toegevoegd ondersteuning voor een gemengd opstartmodus EFI, waardoor een 64-bits kernel zonder gebruik van een gespecialiseerde bootloader kan worden gestart vanuit een 32-bits firmware die op een 64-bits CPU draait.
    • Ingeschakeld systeem voor detectie en debugging van gesplitste locking ('split lock'), die ontstaan bij toegang tot ongealigneerde gegevens in het geheugen, omdat bij het uitvoeren van een atomische instructie de gegevens twee CPU-cachelijnen kruisen. Dergelijke lockproblemen leiden tot significante prestatieverliezen (tot 1000 cycli langzamer dan een atomische operatie met gegevens die in ƩƩn cachelijn vallen). Afhankelijk van de opstartparameter 'split_lock_detect' kan de kernel dergelijke lockproblemen in realtime detecteren en waarschuwingen geven of een SIGBUS-signaal naar de toepassing sturen die de locking heeft veroorzaakt.
    • In de taakplanner is er een monitoring van temperatuur sensorwaarden (Thermal Pressure) en is rekening gehouden met oververhitting bij het plaatsen van taken. Met behulp van de statistieken kan de temperatuurverwerker (thermal governor) de maximale CPU-frequentie aanpassen bij oververhitting, en de scheduler houdt nu rekening met het verminderde rekenvermogen dat voortvloeit uit een dergelijke frekwentiebeperking bij het plannen van taken (eerder reageerde de scheduler met een bepaalde vertraging op frequentiewijzigingen, waardoor beslissingen werden genomen op basis van overschattingen van beschikbare rekenbronnen).
    • In de taakscheduler zijn betrokken invariantwaarden voor last monitoring, waardoor een correcte beoordeling van de belasting mogelijk is, ongeacht de huidige frequente werking van de CPU. De wijziging maakt een nauwkeuriger voorspelling mogelijk van het gedrag van taken onder dynamische veranderingen in spanning en CPU-frequentie. Bijvoorbeeld, een taak die 1/3 van de CPU-bronnen verbruikte bij een frequentie van 1000 MHz, zal 2/3 van de bronnen verbruiken bij een verlaging van de frequentie naar 500 MHz, wat eerder leidde tot een valse veronderstelling van volledige capaciteit (d.w.z. taken voor de scheduler leken groter als gevolg van lagere frequentie, wat leidde tot verkeerde beslissingen in de schedutil cpufreq governor).
    • De Intel P-state-driver, verantwoordelijk voor het kiezen van prestatieniveaus, is overgeschakeld naar het gebruik van schedutil.
    • De mogelijkheid om het BPF-subsystem te gebruiken is geĆÆmplementeerd tijdens de werking van de kernel in de realtime modus (PREEMPT_RT). Voorheen werd bij het inschakelen van PREEMPT_RT voorgeschreven om BPF uit te schakelen.
    • Een nieuw type BPF-programma's is toegevoegd — BPF_MODIFY_RETURN, die aan functies in de kernel kunnen worden gekoppeld en de waarde die door deze functie wordt geretourneerd kunnen wijzigen.
    • Toegevoegd de mogelijkheid Het gebruik van de systeemaanroep clone3() voor het creĆ«ren van een proces in een cgroup, anders dan de ouderlijke cgroup, waardoor het ouderlijke proces beperkingen kan toepassen en accounting kan inschakelen direct na het voortbrengen van een nieuw proces of thread. Bijvoorbeeld, een servicemanager kan nieuwe diensten direct toewijzen aan aparte cgroups, en nieuwe processen die in 'bevroren' cgroups worden geplaatst, worden onmiddellijk gestopt.
    • in Kbuild toegevoegd ondersteuning voor de omgevingsvariabele 'LLVM=1' voor het overschakelen naar de Clang/LLVM-toolchain tijdens het bouwen van de kernel. De eisen voor de versie van binutils zijn verhoogd (2.23).
    • In debugfs is een sectie /sys/kernel/debug/kunit/ toegevoegd met de resultaten van de kunit-tests.
    • Er is een parameter voor het laden van de kernel pm_debug_messages toegevoegd (vergelijkbaar met /sys/power/pm_debug_messages), die debug-informatie over de werking van het energiebeheersysteem uitvoert (handig bij het debuggen van problemen met slaap- en wachttijd).
    • In de interface voor asynchrone invoer/uitvoer io_uring is ondersteuning toegevoegd voor splice() en atomair bufferselectie.
    • De profiling van cgroup is verbeterd met behulp van het perf-hulpmiddel. Eerder kon perf taken alleen binnen een specifieke cgroup profileren en kon het niet achterhalen tot welke cgroup de huidige monster behoort. Nu verkrijgt perf informatie over de cgroup voor elk monster, waardoor het mogelijk is om meer dan ƩƩn cgroup te profileren en te sorteren op
      cgroup in de rapporten.
    • In cgroupfs, het pseudo-bestandssysteem voor het beheren van cgroups, is ondersteuning voor uitgebreide attributen (xattrs) toegevoegd, waarmee bijvoorbeeld extra informatie voor gebruikersruimtesoftware kan worden achtergelaten.
    • In de cgroup-geheugencontroller is toegevoegdis ondersteuning toegevoegd voor de recursieve bescherming van de waarde 'memory.low', die de minimale hoeveelheid RAM regelt die aan groepsleden wordt toegewezen. Bij het mounten van een cgroup-hiĆ«rarchie met de optie 'memory_recursiveprot' zal de waarde 'memory.low', die is ingesteld voor lagere knooppunten, automatisch worden verdeeld over alle dochterknooppunten.
    • Toegevoegd de Uacce (Unified/User-space-access-intended Accelerator Framework) voor het delen van virtuele adressen (SVA, Shared Virtual Addressing) tussen CPU en randapparatuur, waardoor hardware-accelerators toegang krijgen tot gegevensstructuren in de hoofd-CPU.
  • Hardware-architecturen
    • Voor de ARM-architectuur is de mogelijkheid voor hot-swapping van geheugen geĆÆmplementeerd.
    • Voor de RISC-V-architectuur is ondersteuning toegevoegd voor hotplugging en hot-swapping van CPU's (CPU hotplug). Voor 32-bits RISC-V is een eBPF JIT geĆÆmplementeerd.
    • De mogelijkheid om 32-bits ARM-systemen te gebruiken voor het draaien van KVM-gastomgevingen is verwijderd.
    • De 'nep'-implementatie van NUMA voor de s390-architectuur is verwijderd, omdat er geen gebruikscenario's zijn gevonden die leiden tot prestatieverbeteringen.
    • Voor ARM64 is ondersteuning toegevoegd voor de AMU (Activity Monitors Unit) uitbreiding, gedefinieerd in ARMv8.4, en biedt prestatiemonitors die worden gebruikt voor de berekening van frequentieschaalcorrectiefactoren in de taakplanner.
  • Apparatuur
    • Toegevoegd ondersteuning voor vDPA-apparaten, die gebruikmaken van een gegevensuitwisselingskanaal dat voldoet aan de virtio-specificaties. vDPA-apparaten kunnen zowel fysiek verbonden hardware als geĆ«muleerde softwarematige virtuele apparaten zijn.
    • In de GPIO-subsystem in de testbuild Canary, en is onlangs overgebracht naar de release. Om het te activeren, moet u naar het gedeelte flags chrome://flags gaan, het vlag 'Filesystem API in Incognito' zoeken via de zoekfunctie en deze inschakelen. Na het opnieuw opstarten van de browser zal de incognito-modus volledig functioneren. een nieuw ioctl()-commando voor het monitoren van veranderingen, waarmee informatie naar het proces kan worden gestuurd over de wijziging van de status van elke GPIO-lijn. Als voorbeeld van het gebruik van het nieuwe commando aangeboden de gpio-watch-tool.
    • In de DRM-driver i915 voor Intel-grafische kaarten is ingeschakeld ondersteuning voor Tigerlake-chips ('Gen12') is standaard toegevoegd, evenals initiĆ«le ondersteuning voor de OLED-achtergrondverlichting. Verbeterde ondersteuning voor Ice Lake-, Elkhart Lake-, Baytrail- en Haswell-chips.
    • In de amdgpu-driver toegevoegd de mogelijkheid om firmware te laden in de USBC-chip voor ASIC. Verbeterde ondersteuning voor AMD Ryzen 4000 'Renoir'-chips. Ondersteuning voor OLED-panelen is toegevoegd. De status van de firmware wordt weergegeven in debugfs.
    • In de DRM-driver vmwgfx voor VMware-virtualisatiesystemen is de mogelijkheid toegevoegd om OpenGL 4 te gebruiken in gastsystemen (eerder werd alleen OpenGL 3.3 ondersteund).
    • Een nieuwe DRM-driver tidss is toegevoegd voor het displaysysteem van het TI Keystone-platform.
    • Drivers voor LCD-panelen zijn toegevoegd: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
    • In het energiebeheersysteem toegevoegd ondersteuning voor het Intel Jasper Lake (JSL) platform op basis van Atom.
    • Ondersteuning voor de Pinebook Pro laptop op basis van de Rockchip RK3399, de Pine64 PineTab tablet en een smartphone is toegevoegd PinePhone gebaseerd op Allwinner A64.
    • Ondersteuning voor nieuwe geluidscodecs en chips is toegevoegd:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.
    • Ondersteuning voor ARM-platen en het Qualcomm Snapdragon 865 (SM8250) platform, IPQ6018, NXP i.MX8M Plus, Kontron 'sl28', 11 varianten van de i.MX6 TechNexion Pico board, drie nieuwe varianten van de Toradex Colibri, Samsung S7710 Galaxy Xcover 2 gebaseerd op ST-Ericsson u8500, DH Electronics DHCOM SoM en PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster