Linux 6.7 內核版本

經過兩個月的開發,Linus Torvalds 發布了 Linux 核心 6.7。最顯著的變化包括:Bcachefs 檔案系統的整合、停止對 Itanium 架構的支援、Nouvea 與 GSP-R 韌體配合使用的能力、NVMe-TCP 中對 TLS 加密的支援、在 BPF 中使用異常的能力、支持io_uring 中的futex、最佳化fq(公平佇列)調度程式效能)、支援TCP-AO 擴充功能(TCP 驗證選項)以及Landlock 安全機制中限制網路連線的能力、新增對使用者命名空間和io_uring 的存取控制透過AppArmor 。

新版本包含來自 18405 名開發人員的 2066 個修復,補丁大小為 72 MB(更改影響了 13467 個文件,新增了 906147 行程式碼,刪除了 341048 行)。最新版本有來自 15291 名開發人員的 2058 個修復,補丁大小為 39 MB。 45 中引入的所有變更中約6.7% 與裝置驅動程式相關,約14% 的變更與更新特定於硬體架構的程式碼相關,13% 與網路堆疊相關,5% 與檔案系統相關,3% 與檔案系統相關。與內部核心子系統相關。

內核 6.7 中的主要創新:

  • 磁盤子系統、I/O 和文件系統
    • 核心採用 Bcachefs 檔案系統程式碼,試圖實現 XFS 的效能、可靠性和可擴充性,並結合 Btrfs 和 ZFS 中的高階功能元素。例如,Bcachefs 支援在一個分區中包含多個設備、多層驅動器佈局(底層包含基於快速 SSD 的常用數據,頂層包含來自硬碟的較少使用數據)、複製(RAID)等功能。1/10) 、快取、透明資料壓縮(LZ4、gzip 和ZSTD 模式)、狀態切片(快照)、使用校驗和進行完整性驗證、儲存Reed-Solomon 糾錯碼(RAID 5/6) 的能力、將資訊儲存在加密形式(使用ChaCha20和Poly1305)。在效能方面,Bcachefs領先Btrfs和其他基於Copy-on-Write機制的檔案系統,並表現出接近Ext4和XFS的運作速度。
    • Btrfs 檔案系統引入了簡化的配額模式,可讓您透過僅追蹤建立它們的子分割區中的範圍來實現更高的效能,這顯著簡化了運算並提高了效能,但不允許您考慮在多個子分割區中共享的範圍。子分區。
    • Btrfs 新增了新的「條帶樹」資料結構,適用於實體映射跨裝置不匹配的情況下的邏輯磁碟區對應。該結構目前用於分區塊設備的 RAID0 和 RAID1 實作中。未來,他們計劃在更高層級的RAID中使用這種結構,這將解決當前實現中存在的一些問題。
    • Ceph 檔案系統實現了對已掛載檔案系統的使用者 ID 對映的支持,用於將已掛載的外部分割區上的特定使用者的檔案與目前系統上的另一個使用者進行比對。
    • 新增了在掛載到 efivarfs 時指定 uid 和 gid 的功能,以允許非 root 程序更改 UEFI 變數。
    • 新增了對 exFAT 的 ioctl 調用,用於讀取和更改 FS 屬性。新增了對零大小目錄的處理。
    • F2FS 實作了使用 16K 區塊的能力。
    • autofs 自動掛載機制已切換為使用新的分割區掛載 API。
    • OverlayFS 提供「lowerdir+」和「datadir+」掛載選項。新增了使用 xattrs 嵌套安裝 OverlayFS 的支援。
    • XFS 優化了即時區塊分配程式碼中的 CPU 負載。提供了同時執行讀取和 FICLONE 操作的能力。
    • EXT2 程式碼已轉換為使用頁面對開。
  • 內存和系統服務
    • 對英特爾安騰處理器中使用的 ia64 架構的支援已於 2021 年完全停止。安騰處理器由Intel於2001年推出,但ia64架構未能與AMD64競爭,主要是因為AMD64的效能更高,且從32位元x86處理器過渡更平滑。結果,英特爾的興趣轉向了 x86-64 處理器,而安騰的命運仍然是 HP Integrity 伺服器,該產品的訂單在三年前就被停止了。 ia64 支援的程式碼被從內核中刪除主要是因為該平台長期缺乏支持,而 Linus Torvalds 表示願意將 ia64 支援傳回內核,但前提是有一個能夠表現出高品質的維護者主內核之外對該平台的支持至少一年。
    • 新增了「ia32_emulation」核心行命令參數,該參數可讓您在引導階段啟用或停用為 x32-86 架構建置的核心中的 64 位元模式模擬支援。在實用方面,新選項可讓您建立支援 32 位元應用程式相容性的內核,但預設會停用此模式以減少對內核的攻擊向量,因為相容性 API 的測試少於主內核介面。
    • 繼續從 Rust-for-Linux 分支遷移與使用 Rust 語言作為開發驅動程式和核心模組的第二語言相關的變更(Rust 支援預設不處於活動狀態,並且不會導致將 Rust 包含在內核所需的程序集相依性)。新版本過渡到使用 Rust 1.73 版本,並提供了一組用於處理工作佇列的綁定。
    • 可以使用 binfmt_misc 機制在單獨的非特權命名空間中新增對新執行檔格式的支援(例如,執行已編譯的 Java 或 Python 應用程式)。
    • cgroup 控制器 cpuset 允許您在執行任務時控制 CPU 核心的使用,它提供了本地分區和遠端分區的劃分,其區別在於父 cgroup 是否是正確的根部分。新設定「cpuset.cpus.exclusive」和「cpuset.cpus.excluisve. effective」也已加入 cpuset 中,用於獨佔 CPU 綁定。
    • BPF 子系統實現了對異常的支持,異常被作為 BPF 程序的緊急出口進行處理,並能夠安全地展開堆疊幀。此外,BPF 程式允許使用與 CPU 相關的 kptr 指標。
    • io_uring 子系統增加了對 futex 操作的支持,並實現了新操作:IORING_OP_WAITID(waitid 的異步版本)、SOCKET_URING_OP_GETSOCKOPT(getsockoptand 選項)、SOCKET_URING_OP_SETKOPT(TotINGOKLKOPT(TotING)、未讀資料或未讀選項滿)。
    • 新增了輕量級單連接 FIFO 佇列的實現,僅在進程上下文中出隊時才需要自旋鎖,而在任何上下文中向佇列進行原子新增時都不需要自旋鎖。
    • 新增了一個環形緩衝區“objpool”,具有用於分配和返回物件的高效能佇列的可擴展實作。
    • 新增變更的初始部分是為了實現新的 futex2 API,該 API 在 NUMA 系統上具有更好的效能,支援 32 位元以外的大小,並且可以用來取代多路復用的 futex() 系統呼叫。
    • 對於 ARM32 和 S390x 架構,新增了對目前 BPF 指令集 (cpuv4) 的支援。
    • 對於 RISC-V 架構,可以使用 Clang 17 中提供的 Shadow-Call 堆疊檢查模式,該模式旨在防止在堆疊上發生緩衝區溢位時覆蓋函數的回傳位址。保護的本質是在將控制權轉移給函數之後將返回地址保存在單獨的“影子”堆疊中,並在退出函數之前檢索該地址。
    • 合併相同記憶體頁面的機制中新增了新的智慧記憶體頁面掃描模式(KSM:Kernel Samepage Merging),該模式可以追蹤未成功掃描的頁面並減少其重新掃描的強度。為了啟用新模式,新增了 /sys/kernel/mm/ksm/smart_scan 設定。
    • 新增了新的 ioctl 命令 PAGEMAP_SCAN,當與 userfaultfd() 一起使用時,該命令可讓您確定寫入特定記憶體範圍的事實。例如,新功能可用於系統中保存和恢復 CRIU 程序的狀態或遊戲反作弊系統。
    • 在組譯系統中,如果Clang編譯器可用,則預設啟用使用perf子系統編寫為BPF程式的範例的組譯。
    • 舊的 videobuf 層用於管理媒體子系統中的幀緩衝區,並在 10 多年前被新的 videobuf2 實作所取代,現已被刪除。
  • 虛擬化和安全
    • fscrypt 子系統中加入了對小於檔案系統中區塊大小的區塊中的資料進行加密的功能。這可能需要啟用僅支援小塊的硬體加密機制(例如,僅支援 4096 區塊大小的 UFS 控制器可以與具有 16K 區塊大小的檔案系統一起使用)。
    • 「iommufd」子系統可讓您透過使用者空間的檔案描述子來管理 IOMMU(I/O 記憶體管理單元)記憶體頁表,並新增了尚未從 DMA 快取(髒)刷新的資料的追蹤操作,這對於在在進程遷移期間確定具有未刷新資料的記憶體是必需的。
    • Landlock 機制中新增了 TCP 套接字定義存取控制規則的支持,它允許您限制一組進程與外部環境的互動。例如,您可以建立一條規則,僅允許存取網路連接埠 443 來建立 HTTPS 連線。
    • AppArmor 子系統新增了控制對 io_uring 機制的存取和建立使用者命名空間的功能,這允許您選擇性地僅允許某些進程存取這些功能。
    • 新增了虛擬機器證明 API 以驗證虛擬機器啟動過程的完整性。
    • LoongArch系統支援使用KVM管理程式的虛擬化。
    • 在 RISC-V 系統上使用 KVM hypervisor 時,出現了對 Smstateen 擴充功能的支持,它會阻止虛擬機器存取 hypervisor 未明確支援的 CPU 暫存器。還添加了在來賓系統中使用 Zicond 擴展的支持,該擴展允許使用一些條件整數運算。
    • 在 KVM 下運行的基於 x86 的來賓系統中,最多允許 4096 個虛擬 CPU。
  • 網絡子系統
    • NVMe-TCP (NVMe over TCP) 驅動程式可讓您使用 TCP 協定透過網路 (NVM Express over Fabrics) 存取 NVMe 驅動器,並新增了使用 TLS 加密資料傳輸通道的支援(使用 KTLS 和背景處理程序)在使用者空間tlshd中進行連線協商)。
    • fq(公平佇列)資料包調度程式的效能得到了最佳化,使得在tcp_rr(TCP 請求/回應)測試中的重負載下吞吐量提高了5%,在無限流量的UDP 資料包下吞吐量提高了13 %。
    • TCP 增加了可選的微秒精度時間戳 (TCP TS) 功能 (RFC 7323),可實現更準確的延遲估計和更先進的擁塞控制模組。要啟用它,您可以使用命令“ip route add 10/8 ... features tcp_usec_ts”。
    • TCP 堆疊添加了對TCP-AO 擴展(TCP 身份驗證選項,RFC 5925)的支持,這使得可以使用MAC 程式碼(訊息驗證程式碼)以及更現代的演算法HMAC-SHA1 和CMAC-AES 來驗證TCP 標頭。128 替代以前可用的基於舊 MD5 演算法的 TCP-MD5 選項。
    • 新增了一種新型虛擬網路設備“netkit”,其中的資料傳輸邏輯使用BPF程式設定。
    • KSMBD 是 SMB 伺服器的核心級實現,增加了對解析包含複合字元代理對的檔案名稱的支援。
    • NFS 透過 RPC 服務改進了執行緒的實作。新增了對寫入委託的支援(適用於 NFSv4.1+)。 NFSD 增加了對 rpc_status netlink 處理程序的支援。改進了重新匯出到 knfsd 時對 NFSv4.x 用戶端的支援。
  • Оборудование
    • Nouveau 核心模組已添加對 GSP-RM 韌體的初步支持,該模組用於 NVIDIA RTX 20+ GPU,將初始化和 GPU 控制操作移至單獨的 GSP 微控制器(GPU 系統處理器)一側。 GSP-RM 支援允許 Nouveau 驅動程式透過韌體呼叫來運作,而不是直接對硬體互動進行編程,透過使用預先建構的初始化和電源管理呼叫來添加對新 NVIDIA GPU 的支援變得更加容易。
    • AMDGPU 驅動程式支援 GC 11.5、NBIO 7.11、SMU 14、SMU 13.0 OD、DCN 3.5、VPE 6.1 和 DML2。改進了對無縫加載的支援(切換視訊模式時不閃爍)。
    • i915 驅動程式添加了對 Intel Meteor Lake 晶片的支持,並添加了 Intel LunarLake (Xe 2) 的初始實現。
    • 新增了對 USB4 v2 (120/40G) 規格中新增的非對稱傳輸通道的支援。
    • 增加了對 ARM SoC 的支援:Qualcomm Snapdragon 720G(用於小米智慧型手機)、AMD Pensando Elba、Renesas、R8A779F4(R-Car S4-8)、USRobotics USR8200(用於路由器和 NAS)。
    • 增加了對 Fairphone 5 智慧型手機和 ARM 板 Orange Pi 5、QuartzPro64、Turing RK1、Variscite MX6、BigTreeTech CB1、Freescale LX2162、Google Spherion、Google Hayato、Genio 1200 EVK、RK3566 Powkdy RGB30 的支援。
    • 增加了對 RISC-V 板 Milk-V Pioneer 和 Milk-V Duo 的支援。
    • 增加搭載 AMD CPU 的華為筆記型電腦聲音介面的支援。新增了對 Dell Oasis 13/14/16 筆記型電腦上安裝的其他揚聲器的支援。增加了對華碩 K6500ZC 內建揚聲器的支援。增加了對 HP 255 G8 和 G10 筆記型電腦上的靜音指示燈的支援。新增了對 acp6.3 音訊驅動程式的支援。新增了對 Focusrite Clarett+ 2Pre 和 4Pre 專業錄音介面的支援。

同時,拉丁美洲自由軟體基金會形成了完全自由的核心6.7版本——Linux-libre 6.7-gnu,清除了包含非自由元件或程式碼部分的韌體和驅動程式的元素,其範圍受到限制由製造商。在版本 6.7 中,斑點清理程式碼已在各種驅動程式和子系統中更新,例如,在 amdgpu、nouveau、adreno、mwifiex、mt7988、ath11k、avs 和 btqca 驅動程式中。用於清理 localtalk 和 rtl8192u 驅動程式的程式碼已被刪除,因為它們被排除在核心之外。刪除了先前錯誤添加的用於清理 xhci-pci、rtl8xxxu 和 rtw8822b 驅動程式的不必要元件。清理了 Aarch64 架構的 dts 檔案中的 blob 名稱。刪除了新驅動程式 mt7925、tps6598x、aw87390 和 aw88399 中的斑點。

來源: opennet.ru

添加評論