Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux 6.3 kernel kiadását. A legnagyobb változások között szerepel: a régi ARM platformok és grafikus meghajtók tisztítása, a Rust nyelv támogatásának folytatása, a hwnoise eszköz, red-black fa struktúrák támogatása a BPF-ben, BIG TCP mód IPv4-hez, beépített Dhrystone teljesítményteszt, a memfd végrehajtásának tilalma, HID meghajtók létrehozásának támogatása a BPF segítségével, a Btrfs-ben a blokk csoportok fragmentációjának csökkentésére irányuló módosítások eredményei.
Az új verzióba 15637 hibajavítást fogadtak el 2055 fejlesztőtől; a patch mérete 76 MB (a változások 14296 fájlt érintettek, 1023183 sor kódot adtak hozzá, 883103 sort töröltek). Összehasonlítva a korábbi verzióval, ahol 16843 hibajavítást javasoltak 2178 fejlesztőtől; a patch mérete 62 MB volt. A kernel 6.3 minden bemutatott változásának körülbelül 39%-a kapcsolódik az eszközmeghajtókhoz, körülbelül 15% a hardverarchitektúrákhoz specifikus kódfrissítésekkel, 10% a hálózati stackkel, 5% a fájlrendszerekkel és 3% a kernel belső alrendszereivel foglalkozik.
A Linux 6.3 kernel főbb újítása:
- Memória és rendszerszolgáltatások
- Jelentős kódtisztítást hajtottak végre a régi és nem használt ARM platformokkal kapcsolatban, amely 150 ezer sorral csökkentette a kernel forráskódjának méretét. Több mint 40 régi ARM platformot távolítottak el.
- Lehetővé vált HID (Human Interface Device) interfészű eszközmeghajtók létrehozása, amelyeket BPF programok formájában valósítanak meg.
- Folyik a Rust-for-Linux ágból a Rust nyelv használatához kapcsolódó további funkciók átadása, mint második nyelv a meghajtók és kernel modulok fejlesztésében. A Rust támogatás alapértelmezés szerint nem aktív, és nem vezet a Rust beépített függőségek közé a kernelben. A múltbeli kiadásokban javasolt funkciót bővítették az Arc (referenciaszámlálás megvalósítása), ScopeGuard (a hatókör kimenete esetén végrehajtott tisztítás) és ForeignOwnable (az éles mutatók mozgatása C és Rust kód között) típusok támogatásával. Az 'alloc' csomagból eltávolították a 'borrow' modult (a 'Cow' típus és a 'ToOwned' trait). Megjegyzik, hogy a Rust támogatása a kernelben már közel áll ahhoz, hogy elkezdjék elfogadni az első Rust nyelven írt modulokat a kernelbe.
- A User-mode Linux (kernel launch as a user process) on x86-64 systems supports code written in Rust. Support has been added for assembling User-mode Linux using clang with optimizations included at the linking stage (LTO).
- The hwnoise utility has been added to track delays caused by hardware characteristics. Deviations in execution time (jitter) are identified when interrupt processing is disabled, exceeding one microsecond over 10 minutes of computation.
- A kernel module implementing the Dhrystone performance test has been added, which can be used to assess CPU performance in configurations without user space components (for example, during porting for new SoCs, where only kernel boot is implemented).
- A kernel command line parameter 'cgroup.memory=nobpf' has been added to disable memory consumption tracking for BPF programs, which can be useful for systems with isolated containers.
- For BPF programs, a red-black tree data structure has been proposed, using kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) instead of adding a new mapping type.
- The mechanism for restartable sequences (rseq) has been enhanced to allow processes to pass identifiers for parallel execution (memory-map concurrency ID), associated with the CPU number. Rseq provides means for quick atomic execution of operations that, if interrupted by another thread, are cleared and re-attempted.
- ARM processors have gained support for SME 2 (Scalable Matrix Extension) instructions.
- Support for the 'BPF trampoline' mechanism has been implemented for s390x and RISC-V RV64 architectures, minimizing overhead during calls between the kernel and BPF programs.
- On systems with RISC-V architecture processors, instructions 'ZBB' are utilized to accelerate string operations.
- For systems based on the LoongArch instruction set architecture (used in Loongson 3 5000 processors, implementing a new RISC ISA similar to MIPS and RISC-V), support for kernel address space layout randomization (KASLR), kernel relocation in memory, hardware breakpoints, and the kprobe mechanism has been implemented.
- A DAMOS (Data Access Monitoring-alapú Műveleti Schemes) mechanizmusban, amely lehetővé teszi a memória felszabadítását a memória elérési gyakorisága alapján, implementálva van a szűrők támogatása, amelyek lehetővé teszik bizonyos memória területek feldolgozásból történő kiiktatását a DAMOS-ban.
- A Nolibc minimális szabványos C könyvtárában megvalósították az s390 architektúra és az Arm Thumb1 utasításkészlet támogatását (az ARM, AArch64, i386, x86_64, RISC-V és MIPS támogatása mellett).
- Az objtool optimalizálása megtörtént a kernel építésének felgyorsítása és a memória csúcsfogyasztás csökkentése érdekében (mostantól a kernel építése 'allyesconfig' módban problémák nélkül zajlik olyan rendszereken, ahol 32 GB RAM áll rendelkezésre).
- Lezárták az Intel ICC fordítóval történő kernel építésének támogatását, amely már hosszú ideje nem működött, és senki sem kívánta ezt javítani.
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- A tmpfs-ben megvalósították a csatolt fájlrendszerek felhasználói azonosítók térképezésének támogatását, amely lehetővé teszi a bizonyos felhasználó fájljainak egy más felhasználóhoz történő társítását a csatolt idegen partíción az aktuális rendszerben.
- A Btrfs-ben a blokkcsoportrészlegesség csökkentése érdekében a blokkok mérése szerinti kiterjedések szétválasztásával biztosították, azaz bármely blokkcsoportrészlet mostantól kis (128KB-ig), közepes (8 MB-ig) és nagy kiterjedésekkel korlátozott. Az raid56 megvalósításának refaktorálása megtörtént. A checksum ellenőrzésére vonatkozó kódot újraírták. Teljesítményoptimalizálásokat hajtottak végre, amelyek révén akár 10-szer gyorsabb lett a send művelet a mappák utime-ának gyorsítótárazása és a parancsok végrehajtása csak szükség esetén. A fiemap műveletek végrehajtása háromszorosára gyorsult az olyan közösen használt adatok (snapshotok) visszacsatolási ellenőrzéseinek kihagyásával. A metadatokkal végzett műveletek 10%-kal gyorsultak, a b-tree struktúrák kulcsainak keresésének optimalizálása által.
- Az ext4 fájlrendszer teljesítménye javult a közvetlen bemeneti/kimeneti műveletek párhuzamos végrehajtásának lehetősége révén több folyamat által a már lefoglalt blokkokban, inode közös zárolások használatával az exkluzív zárolás helyett.
- Az f2fs-ben a kód olvashatóságának javítása érdekében végeztek munkát. Fontos kérdéseket oldottak meg, amelyek az atomáris írással és az új kiterjedés gyorsítótárazásával kapcsolatosak.
- Az EROFS (Enhanced Read-Only File System) fájlrendszerben, amelyet a csak olvasható módú partíciókhoz terveztek, megvalósították a CPU-hoz kötött tömörített fájlok kicsomagolásának műveleteit, hogy csökkentsék az adat hozzáférésének késleltetését.
- A BFQ bemeneti/kimeneti ütemezőhöz hozzáadták az előrehaladott forgólemezes tárolók támogatását, mint például azok, amelyekben több külön-külön vezérelt fejegység található (Multi Actuator).
- Az NFS kliensbe és a szerver az NFS-be hozzáadták az AES-SHA2 algoritmuson alapuló adat titkosítási támogatását.
- A FUSE (Filesystems In User Space) alrendszerében hozzáadták a kérések bővítési mechanizmusának támogatását, amely lehetővé teszi kiegészítő információk elhelyezését a kérésben. E lehetőség alapján csoportazonosítók adhatók hozzá a FS kéréshez, amelyek szükségesek az engedélyezési jogok figyelembevételéhez objektumok létrehozásakor a FS-ben (create, mkdir, symlink, mknod).
- Virtualizáció és biztonság
- A KVM hipervezérlőhöz az x86 rendszerekhez hozzáadták a Hyper-V kiterjesztett hiperhívásainak támogatását, és biztosították azok átvitelét abba a kezelőbe, amely felhasználói térben működik a gazda környezetben. A változás lehetővé tette a Hyper-V hipervezérlő beágyazott indításának támogatását.
- A KVM-ben egyszerűsítették a vendég rendszer hozzáférésének korlátozását a teljesítménymonitor egységgel (PMU) kapcsolatos eseményekhez, amelyek a teljesítmény mérésével kapcsolatosak.
- A memfd mechanizmushoz, amely lehetővé teszi a memória terület azonosítását, az átadott fájl leírók között, hozzáadták a nem végrehajtható memfd (non-executable memfd) területek létrehozásának lehetőségét, ahol a kód végrehajtása tilos, és a jövőben nem lehet végrehajtási jogokat beállítani.
- Hozzáadtak egy új prctl műveletet, a PR_SET_MDWE-t, amely blokkolja a memóriához való hozzáférési jogok engedélyezésére irányuló kísérleteket, amely egyszerre engedélyezne írást és végrehajtást is.
- Hozzáadtak és alapértelmezettként engedélyezték a Spectre típusú támadások elleni védelmet, amelyet az AMD Zen 4 processzorokban javasolt automatikus IBRS (Enhanced Indirect Branch Restricted Speculation) üzemmód valósít meg, lehetővé téve a spekulatív utasítások végrehajtásának adaptív engedélyezését és tilalmát megszakítások, rendszerhívások és kontextusváltások feldolgozása során. A javasolt védelem kisebb költségeket eredményez, mint a Retpoline védelme.
- A sebezhetőséget, amely lehetővé tette a Spectre v2 támadások elleni védelem megkerülését a párhuzamos multithreading (SMT vagy Hyper-Threading) technológia alkalmazásakor, a STIBP (Single Thread Indirect Branch Predictors) mechanizmus letiltása okozta a IBRS védelem kiválasztásakor.
- ARM64 architektúrájú rendszerekhez új «virtconfig» build cél került hozzáadásra, amely lehetővé teszi csak a minimális, virtualizációs rendszerekhez szükséges komponensek betöltését.
- m68k architektúrához hozzáadva a rendszerhívások szűrésének támogatását a seccomp mechanizmus segítségével.
- Hozzáadva az AMD Ryzen processzorokban található CRB TPM2 (Command Response Buffer) eszközök támogatása, amelyek a Microsoft Pluton technológián alapulnak.
- Hálózati alrendszer
- Hozzáadva a netlink interfész a PLCA (Physical Layer Collision Avoidance) alréteg beállításához, amelyet az IEEE 802.3cg-2019 specifikáció határoz meg, és amelyet az Ethernet 802.3cg (10Base-T1S) hálózatokban használnak, optimalizálva az IoT eszközök és ipari rendszerek csatlakoztatásához. A PLCA alkalmazása javítja a teljesítményt a megosztott médiumú Ethernet hálózatokban.
- Megszüntették a WiFi 7 (802.11be) vezeték nélküli interfészek kezeléséhez használt «wireless extensions» API támogatását, mivel ez az API nem fedi le a szükséges beállításokat. Az API «wireless extensions» használatakor, amely továbbra is emulált rétegként támogatott, a legtöbb aktuális eszköz esetén mostantól figyelmeztetés fog megjelenni.
- Részletes dokumentáció készült a netlink API-ról (kernel fejlesztők és felhasználói térbeli alkalmazásfejlesztők számára). Megvalósult az ynl-gen-c eszköz C kód generálására a Netlink protokoll YAML specifikációi alapján.
- A hálózati socketekhez hozzáadva az IP_LOCAL_PORT_RANGE opció támogatása az outgoing kapcsolatokat egyszerűsíti a címfordítók használatán keresztül SNAT nélkül. Ha egyszeri IP address több hoszton az IP_LOCAL_PORT_RANGE lehetővé teszi, hogy minden hoszton a saját kimenő hálózati port tartományát használják, és a gateway a csomagokat a port számok alapján irányítja.
- Az MPTCP (MultiPath TCP) lehetőséget biztosít vegyes forgalom feldolgozására, amelyben IPv4 és IPv6 protokollok találhatók. Az MPTCP a TCP protokoll kiterjesztése, amely lehetővé teszi a TCP-kapcsolatok csomagok egyidejű szállítását több útvonalon, különböző hálózati interfészeken keresztül, amelyek különböző IP-címekhez vannak hozzárendelve.
- IPv4 esetében megvalósult a BIG TCP kiterjesztés, amely lehetővé teszi a maximális TCP-csomag méretének 4 GB-ra növelését a nagy sebességű belső adatközponti hálózatok optimalizálása érdekében. Az ilyen csomagméret-növelést a 16 bites fejlécmező méretével a "jumbo" csomagok megvalósításával érik el, ahol az IP-fejléc mérete 0-ra van állítva, míg a tényleges méret egy külön 32 bites mezőben található.
- Új sysctl paraméter került hozzáadásra, a default_rps_mask, amellyel megadható az alapértelmezett RPS (Receive Packet Steering) konfiguráció, amely felelős a bejövő forgalom CPU magok közötti elosztásáért az interrupt kezelők szintjén.
- A forgalom korlátozására vonatkozó queuing diszciplínák, mint a CBQ (class-based queuing), ATM (ATM virtual circuits), dsmark (differentiated service marker), tcindex (traffic-control index) és RSVP (resource reservation protocol) támogatása megszűnt. Ezek a diszciplínák hosszú ideig elhanyagolt állapotban voltak, és nem akadt senki, aki folytassa a karbantartásukat.
- Hardver
- Minden DRI1-alapú grafikus meghajtó eltávolításra került: i810 (régi Intel 8xx integrált grafikus kártyák), mga (Matrox GPU), r128 (ATI Rage 128 GPU, beleértve a Rage Fury, XPERT 99 és XPERT 128 kártyákat), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) és via (VIA IGP), amelyek 2016-ban elavultnak lettek nyilvánítva, és 2012 óta nem támogatottak a Mesában.
- Az elavult framebuffer (fbdev) meghajtók eltávolítva: omap1, s3c2410, tmiofb és w100fb.
- DRM meghajtó került hozzáadásra az Intel Meteor Lake (14. generáció) CPU-ba integrált VPU (Versatile Processing Unit) egységekhez, amelyeket a számítógépes látás és a gépi tanulás kapcsolatos műveleteinek gyorsítására terveztek. A meghajtó az 'accel' alrendszer felhasználásával készült, amely a számítási gyorsítók támogatásának biztosítására összpontosít, amelyek külön ASIC formájában vagy IP-blokk formájában találhatók a SoC-n és az GPU-n belül.
- Az i915 (Intel) meghajtóban bővült az Intel Arc (DG2/Alchemist) diszkret grafikus kártyák támogatása, előzetes támogatást kapott a Meteor Lake GPU-hoz, valamint az Intel Xe HP 4tile GPU-hoz is.
- Az amdgpu meghajtóba hozzáadódott az AdaptiveSync technológia támogatása és a Secure Display adatait védő mód használatának lehetősége több kijelző esetén. Frissült a DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x és DP 2.1 támogatása.
- A msm meghajtóban (Qualcomm Adreno GPU) hozzáadódott az SM8350, SM8450, SM8550, SDM845 és SC8280XP platformok támogatása.
- A Nouveau meghajtóban megszűnt a régi ioctl hívások támogatása.
- Az etnaviv meghajtóba hozzáadódott az NPU VerSilicon (VeriSilicon Neural Network Processor) kísérleti támogatása.
- Megvalósult a pata_parport meghajtó IDE meghajtók számára, amelyek párhuzamos porton csatlakoznak. Az újonnan hozzáadott meghajtó lehetővé tette a régi PARIDE meghajtó eltávolítását a kerneltől és az ATA alrendszer korszerűsítését. Az új meghajtó korlátozása, hogy nem lehet egyszerre nyomtatót és lemezt csatlakoztatni a párhuzamos porton.
- Hozzáadódott az ath12k meghajtó Qualcomm chipjein alapuló vezeték nélküli kártyákhoz, amelyek támogatják a Wi-Fi 7-et. Továbbá hozzáadódott a RealTek RTL8188EU chipjein alapuló vezeték nélküli kártyák támogatása is.
- Hozzáadódott 46 alaplap támogatása ARM64 architektúrájú processzorokkal, köztük a Samsung Galaxy Tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD, valamint a Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 és SDM632, Rockchip RK3128 TV box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 és RK3328, TI K3 (AM642/AM654/AM68/AM69) alapú eszközök.
Eközben a latin-amerikai Szabad Szoftver Alapítvány elkészítette a 6.3-as teljesen szabad kernelt — a Linux-libre 6.3-gnu-t, amely mentes az olyan firmware-ktől és meghajtóktól, amelyek nem szabad összetevőket vagy korlátozott kódterületeket tartalmaznak, amelyeket a gyártó korlátoz. A 6.3-as kiadásban megtisztították az ath12k, aw88395 és peb2466 új meghajtóinak blobjait, valamint a device tree új fájljait a qcom AArch64 architektúrájú eszközökhöz. Frissült a blobok tisztításának kódja az amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110 meghajtókban és alrendszerekben, valamint a DVB kártyák szoftveres dekódolásához és a előre lefordított BPF fájlokhoz. Megszűnt a blobok tisztítása az mga, r128, tm6000, cpia2 és r8188eu meghajtókban, mivel ezek eltávolításra kerültek a kerneltől. Fejlesztették a blobok tisztítását az i915 meghajtó esetében.
Forrás: opennet.ru
