經過兩個月的開發,Linus Torvalds 發布了核心。 Linux 6.10. 其中最顯著的變化之一是:帶有同步原語的ntsync驅動程式 Windows NT、DRM Panic 元件用於實現「藍屏死機」模擬、停止支援較舊的 Alpha CPU、驗證基於 FUSE 的檔案系統完整性的能力、透過 Landlock 機制限制對 ioctl 的存取、用於分析記憶體分配操作的子系統、mseal() 系統呼叫、加密與 TPM 裝置的資料交換的能力、對階段 dm-cry 的工作程式所支援的高位優先權,以及對 GPU Mptor 的能力、對 GPU Mptor 的高代。
新版本包含來自 14564 名開發人員的 1989 個修復,補丁大小為 41 MB(更改影響了 12509 個文件,新增了 547663 行程式碼,刪除了 312464 行)。最新版本有來自 15680 名開發人員的 2106 個修復,補丁大小為 54 MB。 41 中引入的所有變更中約6.10% 與裝置驅動程式相關,約15% 的變更與更新特定於硬體架構的程式碼相關,13% 與網路堆疊相關,5% 與檔案系統相關,4% 與檔案系統相關。
內核 6.10 中的主要創新:
- 磁盤子系統、I/O 和文件系統
- 新增了新的 fcntl 操作 F_DUPFD_QUERY,允許進程確定兩個不同的檔案描述符引用相同檔案。與 kcmp() 系統呼叫提供的類似功能不同,F_DUPFD_QUERY 不會洩露不必要的信息,並且可以在禁用 kcmp() 的系統上工作。
- FUSE子系統,用於實現使用者空間的檔案系統,實作了使用fs-verity機制來驗證檔案的完整性和真實性的能力。
- 用於對區塊裝置進行加密的 dm-crypt 模組已更新為「high_priority」選項,允許使用高優先權工作佇列來提高高效能機器的效能。 伺服器此模式預設為停用狀態,因為它可能會導致普通 PC 在執行與加密無關的任務(例如音訊處理)時延遲增加。
- 新增了基於 netlink 的協議,用於在核心中管理 NFS 伺服器。在用戶空間中,nfsdctl實用程式是基於該協定編寫的。預設會停用對 NFS v2 掛載的支援(在 mount.nfs 公用程式中,對 NFS v2 的支援已於 2021 年停止)。
- 在 XFS 檔案系統中,我們正在繼續努力實現使用 fsck 實用程式線上檢查和修正已識別問題的功能,而無需卸載檔案系統。新增了 ioctl XFS_IOC_EXCHANGE_RANGE 以在原子模式下在兩個檔案之間交換位元組範圍。
- Btrfs 提供對縮小未固定範圍映射的支持,這對於在系統記憶體不足時減少記憶體消耗非常有用。資料壓縮程式碼和 put_file_data() 函數已轉換為使用頁頁。執行寫回操作時鎖定盤區的機制已重新設計。
- Ext4 FS 增加了對 ioctl FS_IOC_GETFSSYSFSPATH 的支持,以確定 /sys/fs 層次結構中給定安裝的 FS 的位置。
- OPENPROMFS、ISOFS、QNX6、NILFS2、MINIX 和 FREEVXFS 檔案系統已轉換為使用新的分區安裝 API。
- EROFS(可擴展唯讀檔案系統)檔案系統專為唯讀分割區而設計,現在支援 Zstandard 壓縮演算法。
- Bcachefs已準備好執行fsck而無需卸載分割區(線上檢查)。添加了更改和修復以提高可靠性。已實現在「nochanges」模式下更新和回滾 FS 格式的功能,該模式會停用記錄並僅將元資料儲存在記憶體中。
- 新增了使用 O_TMPFILE 選項向 OverlayFS 檔案系統建立臨時檔案的支援。
- 對限制區塊設備吞吐量的機制「CONFIG_BLK_DEV_THROTTLING_LOW」的支援已停止,該機制自 2017 年以來一直保持實驗狀態,尚未在實踐中廣泛應用,並且導致區塊設備子系統的維護變得困難。
- 內存和系統服務
- 已新增但在彙編過程中停用 ntsync 驅動程序,該驅動程式實現了 /dev/ntsync 字元裝置以及核心中使用的一組同步原語。 Windows NT。在核心層級實現此類原語可以顯著提高效能。 Windows使用 Wine 啟動的遊戲。透過消除在用戶空間使用 RPC 帶來的開銷,可以提高效能。創建單獨的內核驅動程式 Linux 這是由於在核心現有原語之上正確實作 NT 同步 API 本身就存在問題所致。
- 新增了一個用於分析核心記憶體分配操作的子系統。 Linux此子系統能夠偵測內核記憶體洩漏並簡化記憶體優化。它開銷低,因此不僅適用於調試內核構建,也適用於生產系統。
- 新增了核心緊急處理程序的初始實作 - DRM Panic,它使用 DRM(直接渲染管理器)子系統以「藍屏死機」的風格顯示視覺色彩報告。在下一個版本中,計劃添加在發生緊急情況時在螢幕上顯示徽標和二維碼的功能。
- 繼續從 Rust-for- 分支遷移更改Linux與使用 Rust 作為第二語言開發驅動程式和核心模組相關(Rust 支援預設未啟用,且 Rust 並非核心建置的強制依賴項)。 Rust 版本已升級至 1.78,從而可以使用標準的 alloc 庫,而無需使用自訂分支。核心中新增了時間操作的抽象層(ktime_t 結構的封裝)。此外,還增加了在 RISC-V 系統上使用 Rust 核心元件的支援。
- BPF 程式實作了在核心中使用等待佇列的能力。新增了函數 bpf_preempt_disable 和 bpf_preempt_enable,讓您可以建立不被任務排程器中斷的程式碼段。為 BPF 程式提供存取核心加密函數(crypto)的能力。已實現在具有 32 位元 ARCv2 處理器的系統上支援 BPF 程式的 JIT 編譯。
- 對於 32 位元 ARM 系統,已支援使用啟用了 CFI(控制流完整性)保護模式的 Clang 編譯器來組裝內核,該模式可阻止由於使用更改儲存在記憶體中的函數指標的漏洞。
- 增加了透過 mmap() 直接鏡像循環追蹤緩衝區的功能,以將其內容傳輸到用戶空間,而無需額外複製。
- 新增了“mseal”系統調用,以允許進程鎖定更改其位址空間的某些部分。在實踐中,新的系統呼叫計劃在Chrome瀏覽器中使用,以增強沙箱隔離。
- 對於x32子架構,它提供了混合x86_64 ABI,允許在64位元系統上使用32位元記憶體定址模型(處理器以64位元模式運行,但使用32位元指標和算術運算),新增支援影子堆疊機制,允許您阻止許多漏洞利用的操作,使用英特爾處理器的硬體功能來防止在堆疊上發生緩衝區溢位時覆蓋函數的返回位址。
- 在採用 ARM64 架構的系統上,userfaultfd() 系統呼叫可以建立用於存取使用者空間中未分配記憶體頁面(頁面錯誤)的處理程序,並實作與記憶體區域和記憶體頁表元素的寫入保護相關的功能。
- 支援 Alpha 21164 (EV5) 及更早處理器(自 1995 年起發布)的程式碼已移除。由於這些處理器缺乏字節級記憶體訪問,維護其程式碼十分複雜。 Alpha 是該核心移植到的第一個架構。 Linux最初僅適用於 x86 系統。
- 虛擬化和安全
- 新增了對與 TPM(可信任平台模組)裝置的加密資料交換和交易完整性驗證的支援。
- Landlock LSM 模組可讓您限制一組進程與外部環境的交互,並新增了應用規則來限制對 ioctl() 呼叫的存取的功能。
- 已提出在引導階段設定的選項 init_mlocked_on_free ,該選項可確保在未通過調用解鎖而釋放此內存的情況下,通過調用 mlock() 來防止被逐出到交換分區的內存內容被重置。 )。使用此選項可以防止在使用金鑰的應用程式緊急終止時將金鑰保留在記憶體中。
- 加密子系統在採用支援 VAES、AVX86、VPCLMULQDQ、AVX64 或 AVX2 擴充的 Intel 和 AMD 處理器的 x10_512 系統上使用 AES-XTS 演算法加速磁碟加密操作。
- 收集有關內核加密子系統 (CONFIG_CRYPTO_STATS) 使用情況的統計資料的功能已被刪除。該功能並未在實踐中使用,導致生產力顯著下降,同時也給維護人員帶來了顯著的額外負擔。
- 網絡子系統
- 使用io_uring子系統時零拷貝模式下資料傳送操作的效能得到了顯著提升。新增了組合(「捆綁」)多個緩衝區以進行傳送和接收資料操作的功能。
- 重寫了使用 SCM_RIGHTS 訊息透過 Unix 套接字傳送檔案描述符時使用的垃圾收集代碼。這項變更解決了循環引用計數器累積的問題。
- 新增了為 4G 和 5G 網路中使用的 PFCP(資料包轉發控制協定)協定設定過濾器的功能。
- 新增了對網路套接字選項SO_PEEK_OFF 的支持,該選項與Unix 套接字的相同選項類似,允許您在指定MSG_PEEK 標誌時確定recv 系統呼叫使用的佇列中的資料偏移量(標記資料未讀,它將下次調用recv 時再次發出)。
- io_uring 子系統增加了對 IORING_CQE_F_SOCK_NONEMPTY 操作的支持,該操作可讓您確定網路套接字是否有待處理的連線要求。
- 基於先前可用的支援 PoDL(數據線供電)的程式碼,提出了 PoE(乙太網路供電)技術的實現,並與 Microchip PD692x0 和 TI TPS23881 PoE 控制器相容。
- 對於TCP、DCCP和MPTC協議,增加了對rstreason機制的支持,該機制可讓您確定發送RST封包的原因(例如NO_SOCKET)。
- Оборудование
- 包含針對第十代GPU Mali(G310、G510、G710)的panthor驅動,該驅動採用CSF(Command Stream Frontend)技術,將部分驅動功能轉移到韌體端,以減輕CPU的負載,並提供新的模型用於組織GPU 上的工作。 Mesa 也採用了支援新驅動程式的更改,並將其包含在用於 Mali GPU 的 panfrost Gallium 驅動程式中。
- 新的獨立 Intel Arc 顯示卡 (DG915/Alchemist) 的 PCI 識別碼已新增至 i2 驅動程式。
- 基於 Intel Xe 架構的 GPU 的 Xe drm 驅動程式(直接渲染管理器)的工作仍在繼續,該驅動程式用於 Intel Arc 系列顯示卡和整合顯示卡,從 Tiger Lake 處理器開始。新增了對 Arrow Lake H CPU 的支援 繼續實現對 Lunar Lake 處理器的支援。新增了對 SR-IOV(單根 I/O 虛擬化)機制的初始支援。
- AMDGPU 驅動程式增加了對 SMU 14.0(系統管理單元)的支援。增加了在具有 RISC-V 架構的系統上使用新 AMD GPU 的能力。
- 增加了 Tegra 安全引擎加密加速器的驅動程序,可用於加速 AES 和各種哈希演算法。
- 新增了對LG SW43408、Innolux G121XCE-L01 LVDS、RK3326 GameForce Chi、Crystal Clear CMT430B19N00、POWERTIP PH128800T006-ZHC01、Startek KD050HDFIA020-CV020-ZHC3、Startek KD050HDFIA2-C69380 116AiumP. 44 的支持,京東方NT116WHM-N1, CMN N120BCA -EA01.0和友達BXNUMXXANXNUMX。
- 增加了對 Lenovo Thinkbook 13x Gen 4、Lenovo Thinkbook 16P Gen 5、Lenovo Thinkbook 13X 和 ASUS Zenbook 2024 HN7306W 筆記型電腦的音訊子系統的支援。增加了對外部音效卡 Vocaster One 和 Vocaster Two 的支援。新增了新唐科技 NAU8325 擴大機的驅動程式。
- HID-Steam 驅動程式增加了對 Steam Deck 遊戲控制器的 IMU(慣性測量單元)的支持,允許使用單獨的 evdev 節點存取陀螺儀和加速計資料。
- 其中包括支援 Snapdragon X Elite ARM SoC 的更改,該 SoC 使用高通自己的 12 核心 Oryon CPU 和高通 Adreno GPU。該晶片針對筆記型電腦和PC使用,在多項性能測試中領先Apple M3和Intel Core Ultra 155H晶片。
- 新增了對ARM 板、SoC 和裝置的支援:PocketBook 614 Plus、Sony Xperia Z3、Xperia 1 V、Samsung Galaxy S5 China、Motorola Moto G、RK3326 GameForce Chi、Anbernic RG35XX (Plus/H/2024)、Airoha EN7581、 Radxa ROCK 3C、ArmSom Sige7、Tanix TX1、Toradex Colibri iMX8DX、瑞薩RZ/V2H、Forlinx OK3588-C、Protonic MECSBC、Emcraft Systems NavQ+、NXP S32G3、Wolfvision pf5、Amlogic ART/ACUS -AC4、華擎 E5C3200D5300I、IBM system3 BMC、Meta Harma BMC(AST256)、華擎 X4D1U BMC、Au-Zone Maivin AI Vision 入門套件。
- 增加了對使用基於 RISC-V 架構的 Star Five JH7110 SoC 的 Milk-V Mars 板的支援。
同時,拉丁美洲自由軟體基金會創建了一個完全自由的核心版本 6.10 - Linux-libre 6.10-gnu 版本已清理韌體和驅動程式中包含的非自由元件或製造商限制範圍的程式碼片段。 6.10 版本更新了 Intel i915、rtl8xxxu、qla2xxx 和 QCAI sahara 驅動程式中的 blob 清理程式碼。 Aarch64 架構的 dts 檔案(裝置樹)中的 blob 名稱已清理。 Adreno、Intel IPU3 和 PRUEth 驅動程式中新增的檔案已清理 blob。 Panthor、Intel IPU6、PRUEth SR1、rtw8703b、tps23881、air_en8811h、Intel ISH HID 和 pcm6240 的新驅動程式已清理。 Prism2.5/3 USB 驅動程式的清理工作已停止,並已從核心中移除。
來源: opennet.ru
