核心版本 Linux 6.12 版本,支援即時功能

經過兩個月的開發,Linus Torvalds 發布了核心。 Linux 6.12. 其中最顯著的變化包括:啟用即時模式、透過 eBPF 建立 CPU 調度器的 sched_ext、緊急情況下的二維碼輸出、裝置記憶體 TCP 機制、SCHED_DEADLINE 伺服器資源預留機制、改進 EEVDF 任務調度器、用於設定完整性策略的 IPE 模組。

新版本包含來自 14607 名開發人員的 2167 個修復,補丁大小為 37 MB(更改影響了 13087 個文件,新增了 507913 行程式碼,刪除了 234083 行)。最新版本有來自 15130 名開發人員的 2078 個修復,補丁大小為 85 MB(在 6.10 核心中,補丁大小為 41 MB)。 45 中引入的所有變更中約6.12% 與裝置驅動程式相關,約12% 的變更與更新特定於硬體架構的程式碼相關,13% 與網路堆疊相關,6% 與檔案系統相關,3% 與檔案系統相關。

內核 6.12 中的主要創新:

  • 內存和系統服務
    • 現在無需額外補丁即可建立支援 PREEMPT_RT 選項的內核,實現即時操作。先前,內核缺少一項功能,即透過 printk 函數支援非阻塞原子輸出,而這項功能現在已包含在內核中,導致 PREEMPT_RT 模式無法啟用。 PREEMPT_RT 支援適用於 x86、x86_64、ARM64 和 RISC-V 架構。先前,PREEMPT_RT 模式的實現是透過外部補丁實現的,一些發行版(例如 RHEL、SUSE 等)也採用了這些補丁。 Ubuntu並創建了其產品的獨立即時版本,這些產品在金融系統、音訊和視訊處理設備、航空、醫療、機器人、電信和工業系統等領域都有需求,在這些領域,需要確保可預測的事件處理時間。
    • 新增的「sched_ext」(SCX)機制使得利用eBPF創建CPU調度器成為可能,這些調度器幾乎涵蓋了任務調度和CPU資源分配的所有方面。此類調度器可以在核心中動態載入和執行。 Linux в 虛擬機 eBPF 的 sched_ext 機制簡化了特定任務調度器的創建,支援對各種調度技術和策略進行實驗,並允許快速創建工作原型以及在生產基礎設施中動態替換調度器。例如,使用 sched_ext,您可以建立一個調度器,該調度器能夠考慮特定應用程式的特性,並根據系統狀態和其他因素動態地變更其調度策略。
    • 組成包含SCHED_DEADLINE伺服器機制運作所必需的補丁的剩餘部分,解決了CPU被高優先權(即時)任務獨佔時,普通任務對CPU資源利用不足的問題。為了防止 CPU 獨佔,核心之前使用了即時節流機制,試圖為低優先級任務保留 5% 的時間,而將 95% 的時間留給即時任務。這種機制還有很多不足之處,因為在許多情況下普通任務沒有獲得足夠的處理器時間。 SCHED_DEADLINE 伺服器實作了更有效率的資源預留機制。
    • EEVDF(最早合格虛擬截止時間優先)任務排程器的整合已完成,它取代了從核心 2.6.23 開始提供的 CFS(完全公平調度程序)調度程序。新的調度程序在選擇將執行轉移到的下一個進程時,會考慮尚未接收到足夠處理器資源或已接收到不公平的大量處理器時間的進程。在第一種情況下,控制權向進程的轉移是強制的,而在第二種情況下,控制權的轉移則相反,被推遲。舊的 CFS 調度程序使用啟發式和微調來識別需要特別關注的進程,而新的調度程序會更明確地追蹤它們,並且不需要微調。 EEVDF 有望減少 CFS 存在調度問題的任務的延遲。
    • 在核心緊急處理程序 - DRM Panic 中,它使用 DRM(直接渲染管理器)子系統以「藍屏死機」的方式顯示視覺化報告,能夠顯示帶有 kmsg 報告的徽標和 QR 程式碼添加了發生緊急情況時的螢幕.由於 QR 碼只能容納 2953 字節,因此提供了 DRM_PANIC_SCREEN_QR_CODE_URL 選項,其中使用 zlib 壓縮 kmsg 報告並將其作為參數附加到 URL,這允許透過 V40 QR 碼傳輸約 7500 位元組。當使用內核建置套件時,發行版可以為 URL 設定基本 URL,這將允許它們導航到報告問題的頁面。要選擇 QR 碼格式,提供了 DRM_PANIC_SCREEN_QR_VERSION 設定。
    • 新增了對 ARM POE(權限覆蓋擴展)的支持,可讓您設定對記憶體區域的存取權。使用此擴展,在具有 ARM64 處理器的系統上,可以實現記憶體保護金鑰機制,該機制用於在不更改記憶體頁表的情況下限制對記憶體頁的存取。
    • 對於Loongarch、ARM64、PowerPC和s390架構,移動了getrandom()系統呼叫的實現,並使用vDSO(虛擬動態共享物件)機制進行了最佳化,這使得可以將系統呼叫處理程序從核心移動到用戶空間並避免上下文切換。透過最佳化,您可以將隨機數的產生速度提高多達 15 倍。
    • io_uring 非同步輸入/輸出子系統中新增了使用絕對超時的功能(當系統時脈達到特定時間時觸發)(之前只能設定相對超時,即從操作開始的持續時間) )。
    • 新增了用於使用 SWIG 工具包產生 libcpupower 庫的綁定的文件,該工具包可讓您從各種程式語言的 C/C++ 程式碼產生綁定。綁定可讓您使用 Python 和其他語言建立腳本,並使用它們來擴展 libcpupower 庫的功能,該程式庫提供了用於從使用者空間管理 cpufreq 和驅動程式的 API。
    • cpuidle 公用程式顯示空閒狀態「駐留」的值,用於即時系統,並考慮處理器必須處於空閒狀態的最短時間,以證明轉換進入和退出此狀態的能源成本是合理的。
    • 增加了使用 Clang 編譯器建構標準 C 函式庫 nolibc 的功能,該函式庫包含在核心原始碼中。 Linux 並提供了一個對基本系統呼叫的封裝。在 Clang 中建立 nolibc 時,連結時最佳化 (LTO) 將會啟用。
    • 一些 cgroup1 介面已被棄用,例如 TCP 記帳、軟限製版本 XNUMX 和記憶體耗盡管理。目前對這些功能的支援仍然完整,並發出警告以研究繼續使用這些功能的用戶數量。
    • 新增了配置環形追蹤緩衝區以在重新引導後保存累積資料的功能,這將使您在核心崩潰時不會丟失累積的偵錯資訊。資料儲存在記憶體中。啟用是透過trace_instance核心命令列參數完成的,例如,設定「trace_instance=boot_map@0x285400000:12M」將在12x0處為「boot_map」緩衝區保留285400000MB內存,可以透過檔案/sys/kernelnel存取該緩衝區來追蹤/實例/boot_map。
    • 繼續從 Rust-for- 分支遷移更改Linux與使用 Rust 作為第二語言開發驅動程式和核心模組相關的功能(Rust 支援預設未啟用,核心的建置依賴項中也不包含 Rust)。新增了用於處理雙向鍊錶和紅黑搜尋樹的“list”和“rbtree”模組。擴充了「init」、「sync」、「types」和「error」模組的功能。新增了在建置核心時使用 Rust 程式碼的功能,該核心具有針對 Spectre 攻擊的保護(MITIGATION_{RETHUNK,RETPOLINE,SLS} 選項)、使用 KASAN 偵錯系統、kCFI(核心控制流程完整性)和 Shadow Call 保護機制,以及使用其他 GCC 插件的功能。新增了一個用 Rust 編寫的 Applied Micro QT2025 PHY 乙太網路控制器驅動程式。已建立單獨的文件網站:rust.docs.kernel.org。
    • xdrgen 工具已新增至核心原始碼中,用於將 XDR(外部資料表示)規格轉換為使用核心採用的 C 風格編寫的 XDR 編碼和解碼函數。 Linux.
    • 核心經過修改,實現了指標屏蔽機制,以減少 64 位元 copy_from_user() 函數中對barrier_nospec() 的緩慢呼叫次數,該函數用於將資料從用戶空間複製到核心中。使用屏蔽可將「per_thread_ops」測試速度提高 2.6%,該測試評估一個執行緒中可以執行的操作數量。
    • 新增了新的 USB 驅動程序,可讓您在透過 USB 安裝 9p 檔案系統時使用 9pfs 協定作為從 USB 裝置發送和接收資料的傳輸(例如,「mount -t 9p -o trans=usbg, aname=/路徑/到/ fs /mnt/9”)。使用新驅動程式的範例是在開發嵌入式裝置時使用它來取代 NFS 來組織根分割區的引導。
  • 磁盤子系統、I/O 和文件系統
    • VFS 子系統中加入了使用區塊大小大於系統中記憶體頁大小的儲存裝置的功能。在檔案系統中,目前僅 XFS 支援此功能。
    • FUSE 子系統可讓您建立在使用者空間中操作的檔案系統的實現,它新增了對已安裝檔案系統的使用者識別碼的支持,用於將已安裝的外部分割區上的特定使用者的檔案與目前外部分區上的另一個使用者進行比對。
    • 已實作新的 fcntl 操作 F_CREATED_QUERY,使應用程式能夠確定使用 O_CREAT 標誌開啟的檔案是否已建立或先前是否已存在。
    • 新增了在 name_to_handle_at() 系統呼叫中使用唯一 64 位元掛載點 ID 的功能,以避免解析 /proc/mountinfo 時的競爭條件。
    • 核心中「檔案」結構的大小已從 232 位元組減少到 184 位元組,這減少了主動處理檔案的系統的記憶體消耗。
    • 禁止將檔案系統掛載到 /proc 層次結構內的掛載點(例如 /proc/PID/fd),這會產生潛在的安全性問題。
    • 偽 FS NSFS(命名空間 FS)用於處理命名空間,提供有關掛載點命名空間的附加資訊。
    • EROFS(可擴充唯讀檔案系統)檔案系統專為在唯讀分割區上使用而設計,現在支援直接從儲存為檔案的磁碟映像掛載檔案系統。
    • 新的 ioctl 指令 XFS_IOC_START_COMMIT 和 XFS_IOC_COMMIT_RANGE 已新增至 XFS,用於在兩個檔案之間交換內容。
    • NFS 已新增對「LOCALIO」協定的支持,該協定可讓您確定客戶端和伺服器是否處於連線狀態。 服務器 在同一台主機上使用 NFS 以啟用相應的最佳化。
    • 在Btrfs檔案系統中,提出了效能最佳化,對程式碼進行了重構,減少了讀取操作時extent鎖定的區域,繼續將記憶體頁轉換為使用頁對開工作,並實現了自動記憶體釋放。實現。
    • 在 Ext4 檔案系統中,與區塊分配、範圍管理、快速提交和日誌記錄相關的錯誤已修復。
  • 虛擬化和安全
    • 新增了微軟開發的IPE(完整性策略執行)LSM模組,用於擴充現有的強制存取控制系統。此模組可讓您為整個系統定義通用完整性策略,指示允許哪些操作以及應如何驗證組件的真實性。例如,使用 IPE,您可以指定允許執行哪些可執行文件,同時考慮它們與使用 dm-verity 系統提供的加密雜湊的參考版本的合規性。
    • 在核心編譯階段,可以單獨啟用針對 CPU 中不同 Spectre 類別漏洞的可用保護方法。 Kconfig 提供了新參數:MITIGATE_MDS(針對微架構資料採樣漏洞的防護)、MITIGATE_TAA(針對TSX 非同步中止漏洞的防護)、MITIGATE_MMIO_STALE_DATA(針對MMIO 過時資料漏洞的防護終端)、MITIGATE_L1TF(針對L1 漏洞的防護終端) 、MITIGATE_RETBLEED (防止Retbleed 漏洞)、MITIGATE_SPECTRE_V1、MITIGATE_SPECTRE_V2(針對 Spectre 漏洞的防護)、MITIGATE_SRBDS(針對特殊緩衝區資料採樣漏洞的防護)、MITIGATE_SSB(針對推測儲存繞過漏洞的防護暫存器)。
    • 在 Kconfig 中新增了命令列選項 proc_mem.force_override 和一組組譯設定(PROC_MEM_FORCE_ALWAYS、PROC_MEM_FORCE_PTRACE 和 PROC_MEM_FORCE_NEVER),以防止透過 /proc/pid/mem 更改記憶體。
    • LSM子系統(Linux 安全模組)已切換為使用靜態調用,從而提高了安全性和效能。
    • 在運行於客戶環境中的環境中,能夠使用適用於 ARM64 架構的標準核心。 Android-採用修改後的KVM虛擬機器管理程式(受保護的KVM)的系統。
    • Landlock LSM 模組可讓您限制一組進程與外部環境的交互,它實現了「IPC 作用域」概念,以選擇性地限制使用 Unix 套接字和訊號與沙箱環境的交互。例如,您可以禁止使用 Unix 套接字從沙箱環境連線到未套用隔離的進程,但允許連接到相同範圍內的進程。
    • 在 KVM 虛擬機器管理程式中,已向來賓系統的 CPUID 新增了一個標誌,表示支援 AVX10.1 擴充。
  • 網絡子系統
    • 增加了Device Memory TCP機制,允許使用網路套接字直接透過網路發送外圍設備記憶體的內容(零拷貝模式),並將網路封包的內容直接放置在設備記憶體區域中接收方。以資料包形式傳輸的資料從網卡傳輸到外圍設備的內存,或從裝置內存繞過 CPU 直接傳輸到網卡,資料包標頭最終存放在常規核心緩衝區中。
    • 許多乙太網路和無線驅動程式的功能已擴展。例如,Intel iwlwifi 驅動程式添加了對將RLC/SMPS 操作移至固件端的支持,RealTek rtw89 驅動程式提高了性能並添加了對RTL8852BT/8852BE-VT (WiFi 6) 晶片的支持,microchip 以太網驅動程式添加了對IEEE 802.3 的支援bw (100BASE) 規範 -T1) 和 IEEE 802.3bp,改進的虛擬乙太網路實現Microsoft vNIC 和 IBM veth。新增了適用於 Realtek RTL9054、RTL9068、RTL9072、RTL9075、RTL9068、RTL9071 和 Microchip LAN8650/1 10BASE-T1S MAC-PHY 乙太網路晶片的新驅動程式。
    • MPTCP(多路徑 TCP)是 TCP 協定的擴展,用於組織透過不同網路介面沿著多條路由同時傳送 TCP 封包,路由中使用的權重大小從 8 位元增加到 16 位元。實現了對遺失(黑洞)流量的偵測,並暫停嘗試與導致流量遺失的系統建立連線一段時間。
    • 對於IPv6,實現了對PIO(前綴訊息選項)中「p」標誌的支持,該標誌在RA 通告(IPv6 路由器通告)中用於透過DHCPv6-PD(DHCPv6 前綴委派,RFC9663)選擇客戶端部署模型,而不是分配使用 SLAAC(無狀態位址自動配置)基於前綴的單獨位址。 IPv6 IOAM6 新增了對新的 tunsrc 封裝模式的支持,可實現更好的效能。
    • 改進了處理 IPsec 控制資料包的效能。
    • 改進了刷新大型 nftables 規則集的效能。 nfnetlink_queue 改進了對 SCTP 協定的支援。
    • ethtool API 新增了將多個網路卡綁定到一個網路介面的支援。
  • Оборудование
    • 在 AMDGPU 驅動程式中,我們繼續致力於實現對 AMD RDNA4(「GFX12」)GPU 的支援。新增了在不重置整個 GPU 的情況下重置單一任務佇列的功能。
    • 基於 Intel Xe 架構的 GPU 的 Xe drm 驅動程式(直接渲染管理器)的工作仍在繼續,該驅動程式用於 Intel Arc 系列顯示卡和整合顯示卡,從 Tiger Lake 處理器開始。新版本包括對基於 Battlemage 和 Lunar Lake 微架構的 GPU 的支援。引入了對 Xe2 CCS(顏色控製表面)修改器的支持,以控制整合和獨立 GPU 的參數。
    • i915 驅動程式實現了透過 HWMON 或 sysfs 介面(「fan1_input」屬性)輸出有關風扇速度的資訊的功能。 「i915.modeset」參數已被棄用;應使用「i915.nomodeset」參數取代「i0.modeset=915」。
    • msm DRM 驅動程式(Qualcomm Adreno GPU)增加了對 A615、A306 和 A621 GPU 的支援。
    • Nouveau 發球桿的內部結構經過重新設計和清潔。
    • intel_pstate 驅動程式控制採用Intel 處理器的系統上的功耗參數(P 狀態),增加了對具有非對稱(不同特性)CPU 的混合系統的支持,以及對基於Granite Rapids 和Sierra Forest 的處理器電源管理的支援微架構。在 intel_idle 驅動程式中新增了對 Xeon Granite Rapids CPU 的支援。 intel_rapl 驅動程式提供 AMD 1Ah 系列進程和 Intel ArrowLake-U 處理器的識別。
    • 繼續包含支援 ARM SoC Snapdragon X Elite 的更改,該 SoC 使用高通自己的 12 核心 Oryon CPU 和高通 Adreno GPU。該晶片針對筆記型電腦和PC使用,在多項性能測試中領先Apple M3和Intel Core Ultra 155H晶片。
    • 增加了對ARM 板、SoC 和裝置的支援:Broadcom bcm2712 (Raspberry Pi 5)、Renesas R9A09G057 (RZ/V2H)、Qualcomm Snapdragon 414 (MSM8929)、Lenovo/Pad T14faces Gen 6,Lvo/top A6000face A6010faces Gen 7faces Gen 35face A30face A4face A68face A433face、A2faces Gen 920 Anbernic RG2002XXSP , Firefly Core-PX5332-JD4、Lunzn Fastrhino R815S、Aspeed Riser、AGX Orin、瑞芯微Qnap-TS5、華山Pi、Meta Catalina、BeagleY-AI、NanoPi R35S Plus、ExynosAuto v11、SOPHGOGO93、高通 G6、XNUMX、高通hXNUMX)酷派CMXNUMX GenBook、Anbernic RGXNUMXXXSP、GameForce Ace、IBM PXNUMX、控創 i.MXXNUMX OSM-S、NanoPC-TXNUMX
    • 新增了對 Anbernic RG28XX、安達工業公司 KD50G21-40NT-A1、Innolux G070ACE-LH3、Melfas lmfbx101117480、Densitron DMT028VGHMCMIMI-1D、Microchip AC40T08A、A116新螢幕的螢幕面板。 B02.3XAN116、AOU B06.1XAT116、京東方 TV04.1WUM-LL101、京東方 NV2WUM-N140、京東方 NV41WUM-N133、京東方 NV63WHM-A116D、京東方 NE4W140G6G、CC116B-2G、CB116G2W601G、CC1B-4G、CB88577GXNUMXWXNUMXG、CCXNUMXB-XNUMXG、CBXNUMXGXNUMXWXNUMXG、CCXNUMXB-XNUMXG、CBXNUMXGXNUMXWXNUMXG、CBXNUMXG、CBXNUMXGXNUMXWXNUMXG、CXNUMXBB MNBXNUMXLSXNUMX-XNUMX,星空erXNUMX。
    • 音訊子系統增加了對晶片和編解碼器 RME Digiface USB、AMD ACP 7.1、Mediatek MT6367、MT8365、Realtek RTL1320、C-Media CM9825 的支援。 Intel ASoC 的舊聲音驅動程式已被宣布過時,建議改用 AVS 驅動程式。 SoundWire 驅動程式進行了許多改進。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster