Linux 5.17 內核版本

經過兩個月的開發,Linus Torvalds 發布了 Linux 核心 5.17。 最顯著的變化包括:AMD 處理器的新效能管理系統、在檔案系統中遞歸映射用戶ID 的能力、可移植編譯的BPF 程式的支援、偽隨機數產生器向BLAKE2s 演算法的過渡、RTLA 實用程式用於即時執行分析,用於快取網路檔案系統的新 fscache 後端,能夠將名稱附加到匿名 mmap 操作。

新版本包含來自 14203 名開發人員的 1995 個修復,補丁大小為 37 MB(更改影響了 11366 個文件,新增了 506043 行程式碼,刪除了 250954 行程式碼)。 44 中引入的所有變更中約5.17% 與裝置驅動程式相關,約16% 的變更與更新特定於硬體架構的程式碼相關,15% 與網路堆疊相關,4% 與檔案系統相關,4% 與檔案系統相關。與內部核心子系統相關。

內核 5.17 中的主要創新:

  • 磁盤子系統、I/O 和文件系統
    • 已經實現了已安裝檔案系統的使用者 ID 的嵌套映射的可能性,用於將已安裝的外部分割區上的特定使用者的檔案與目前系統上的另一個使用者進行比較。 新增的功能可讓您在已套用映射的檔案系統之上遞歸地使用映射。
    • fscache 子系統用於在本機檔案系統中組織透過網路檔案系統傳輸的資料的緩存,該子系統已完全重寫。 新實現的特點是程式碼的顯著簡化以及用更簡單的機制取代規劃和追蹤物件狀態的複雜操作。 CIFS 檔案系統中實作了對新 fscache 的支援。
    • fanotify FS 中的事件追蹤子系統實作了一個新的事件類型 FAN_RENAME,它允許您立即攔截重命名檔案或目錄的操作(先前使用兩個單獨的事件 FAN_MOVED_FROM 和 FAN_MOVED_TO 來處理重新命名)。
    • Btrfs 檔案系統優化了大型目錄的日誌記錄和 fsync 操作,透過僅複製索引鍵並減少記錄的元資料量來實現。 提供了對按可用空間記錄大小進行索引和搜尋的支持,這將延遲降低了約 30%,並減少了搜尋時間。 允許中斷碎片整理操作。 禁用驅動器之間的平衡時添加設備的能力,即使用skip_balance選項掛載檔案系統時。
    • 提出了一種用於掛載 Ceph 檔案系統的新語法,解決了與 IP 位址綁定相關的現有問題。 除了 IP 位址之外,您現在還可以使用叢集識別碼 (FSID) 來識別伺服器: mount -t ceph [電子郵件保護]_name=/[子目錄] mnt -o mon_addr=monip1[:連接埠][/monip2[:連接埠]]
    • Ext4 檔案系統已遷移到新的掛載 API,該 API 將掛載選項解析和超級區塊配置步驟分開。 我們已經放棄了對lazytime 和nolazytime 掛載選項的支持,這些選項是作為臨時更改添加的,以方便util-linux 過渡到使用MS_LAZYTIME 標誌。 新增了在 FS 中設定和讀取標籤的支援(ioctl FS_IOC_GETFSLABEL 和 FS_IOC_SETFSLABEL)。
    • NFSv4 新增了在檔案和目錄名稱中不區分大小寫的檔案系統中工作的支援。 NFSv4.1+ 新增了對定義聚合會話(中繼)的支援。
  • 內存和系統服務
    • 新增了 amd-pstate 驅動程式以提供動態頻率控制以獲得最佳效能。 此驅動程式支援從Zen 2世代開始的AMD CPU和APU,與Valve共同開發,旨在提高能源管理效率。 對於自適應頻率變化,採用了CPPC(協作處理器效能控制)機制,與先前使用的基於ACPI的P-state相比,它可以讓您更準確地改變指標(不限於三個效能等級)並更快地響應狀態變化驅動程式(CPUFreq)。
    • eBPF 子系統提供了一個 bpf_loop() 處理程序,它提供了另一種在 eBPF 程序中組織循環的方法,可以讓驗證者更快、更輕鬆地進行驗證。
    • 在核心層面,實作了CO-RE(Compile Once - Run Everywhere)機制,它允許您只編譯一次eBPF程式的程式碼,並使用特殊的通用載入器,使載入的程式適應當前的核心和BTF類型(BPF類型格式)。
    • 可以為私有匿名(透過 malloc 分配)記憶體區域分配名稱,這可以簡化應用程式中記憶體消耗的偵錯和最佳化。 名稱透過 PR_SET_VMA_ANON_NAME 標誌的 prctl 分配,並以「[anon: ]」。
    • 任務排程器在 /proc/PID/sched 中追蹤並顯示進程處於強制空閒狀態所花費的時間,例如,用於在處理器過熱時減少負載。
    • 新增gpio-sim模組,設計用於模擬GPIO晶片進行測試。
    • 在「perf ftrace」指令中新增了「latency」子指令,以產生包含延遲資訊的直方圖。
    • 新增了一組“RTLA”實用程序,用於即時分析工作。 它包括 osnoise(確定作業系統對任務執行的影響)和 timelat(更改與計時器相關的延遲)等實用程式。
    • 第二系列補丁已與頁面作品集概念的實現相集成,頁面作品集類似於複合頁面,但改進了語義和更清晰的工作組織。 使用 tomes 可以加快某些核心子系統中的記憶體管理速度。 提議的補丁完成了頁面快取到使用 tomes 的轉換,並在 XFS 檔案系統中添加了對 tomes 的初始支援。
    • 新增了「make mod2noconfig」建置模式,該模式會產生一個配置,以核心模組的形式收集所有已停用的子系統。
    • 可用於建置核心的 LLVM/Clang 版本的要求已提高。 現在建置至少需要 LLVM 11 版本。
  • 虛擬化和安全
    • 提出了偽隨機數產生器 RDRAND 的更新實現,負責 /dev/random 和 /dev/urandom 裝置的操作,值得注意的是過渡到使用 BLAKE2s 雜湊函數而不是 SHA1 進行熵混合操作。 此變更透過消除有問題的 SHA1 演算法並消除 RNG 初始化向量的覆蓋來提高偽隨機數產生器的安全性。 由於BLAKE2s演算法在效能上優於SHA1,因此它的使用也對效能產生了正面的影響。
    • 增加了對無條件向前跳轉操作後推測執行指令所導致的處理器漏洞的保護。 此問題的發生是由於搶佔式處理記憶體中緊接在分支指令之後的指令(SLS,直線推測)所致。 啟用保護需要使用目前測試版本的 GCC 12 進行建置。
    • 新增了追蹤引用計數(refcount、reference-count)的機制,旨在減少引用計數中導致記憶體釋放後存取的錯誤數量。 該機制目前僅限於網路子系統,但將來可以適應內核的其他部分。
    • 已對進程記憶體頁表中的新條目進行了擴展檢查,從而可以檢測某些類型的損壞並停止系統,從而在早期階段阻止攻擊。
    • 新增了直接由核心本身而不是由用戶空間中的處理程序解包核心模組的功能,這允許使用 LoadPin LSM 模組來確保核心模組從經過驗證的儲存裝置載入到記憶體中。
    • 提供帶有“-Wcast-function-type”標誌的程序集,該標誌啟用有關將函數指標強制轉換為不相容類型的警告。
    • 為 Xen 虛擬機器管理程式新增了虛擬主機驅動程式 pvUSB,提供對轉接到來賓系統的 USB 裝置的存取(允許來賓系統存取指派給來賓系統的實體 USB 裝置)。
    • 新增了一個模組,讓您可以透過Wi-Fi 與IME(英特爾管理引擎)子系統進行交互,該子系統出現在大多數採用英特爾處理器的現代主機板中,並作為獨立於CPU 運行的單獨微處理器實現。
    • 對於ARM64架構,已經實現了對KCSAN(Kernel Concurrency Sanitizer)調試工具的支持,該工具旨在動態檢測核心內的競爭條件。
    • 對於 32 位元 ARM 系統,新增了在使用記憶體時使用 KFENCE 機制偵測錯誤的功能。
    • KVM 虛擬機器管理程式增加了對即將推出的英特爾至強可擴展伺服器處理器中實現的 AMX(高級矩陣擴展)指令的支援。
  • 網絡子系統
    • 新增了與流量管理相關的卸載操作到網路設備側的支援。
    • 新增了透過序列設備使用 MCTP(管理組件傳輸協定)的功能。 MCTP 可用於管理控制器及其關聯設備(主機處理器、週邊等)之間的通訊。
    • TCP 堆疊已經過最佳化,例如,為了提高 recvmsg 呼叫的效能,實現了套接字緩衝區的延遲釋放。
    • 在CAP_NET_RAW權限級別,允許透過setsockopt函數設定SO_PRIORITY和SO_MARK模式。
    • 對於 IPv4,允許使用 IP_FREEBIND 和 IP_TRANSPARENT 選項將原始套接字綁定到非本機 IP 位址。
    • 新增了 sysctl arp_missed_max 以配置 ARP 監控檢查期間的失敗閾值,之後網路介面將置於停用狀態。
    • 提供了為網路命名空間配置單獨的 sysctl min_pmtu 和 mtu_expires 值的能力。
    • 新增了為 ethtool API 設定和確定傳入和傳出資料包緩衝區大小的功能。
    • Netfilter 新增了過濾網橋中傳輸 pppoe 流量的支援。
    • ksmbd 模組使用 SMB3 協定實現檔案伺服器,增加了對密鑰交換的支持,為 smbdirect 啟用了網路連接埠 445,並增加了對「smb2 maxcredit」參數的支援。
  • Оборудование
    • drm(直接渲染管理器)子系統和 i915 驅動程式中添加了對顯示機密資訊的螢幕的支持,例如,某些筆記型電腦配備的螢幕內建了機密檢視模式,導致從外部難以查看。 新增的變更可讓您連接此類畫面的專用驅動程序,並透過在常規 KMS 驅動程式中設定屬性來控制機密瀏覽模式。
    • amdgpu 驅動程式包括對 STB(智慧追蹤緩衝區)偵錯技術的支持,適用於所有支援該技術的 AMD GPU。 STB 透過在特殊的緩衝區中儲存有關上次故障之前執行的功能的信息,可以更輕鬆地分析故障並識別問題根源。
    • i915驅動增加了對Intel Raptor Lake S晶片的支持,並預設啟用對Intel Alder Lake P晶片圖形子系統的支持,可以透過VESA DPCD介面控制螢幕背光。
    • fbcon/fbdev 驅動程式中已傳回控制台中硬體滾動加速的支援。
    • 繼續整合變更以支援 Apple M1 晶片。 實現了在具有 Apple M1 晶片的系統上使用 simpledrm 驅動程式的功能,以便透過韌體提供的幀緩衝區進行輸出。
    • 新增了對 ARM SoС、裝置和主機板 Snapdragon 7c、845 和 888(Sony Xperia XZ2 / XZ2C / XZ3、Xperia 1 III / 5 III、Samsung J5、Microsoft Surface Duo 2)、Mediatek MT6589 (Fairphone Acer Chromebook 1)、Mediatek MT8183a/b(適用於Wi-fi 路由器)、Broadcom BCM314 (Netgear RAXE7986)、Qualcomm SDX4908、Samsung Exynos500、Renesas R-Car S65-7885、TI J4、 Exynos8、Renesas R-Car S721-2、TI J320 、Aspeed AST8/AST8、Engicam i.Core STM2500MP2600、Allwinner Tanix TX32、Facebook Bletchley BMC、Goramo MultiLink、JOZ 接入點、Y Soft IOTA Crux/Crux+、t1/t6 MacBook Pro 6000/6001OTA Crux/Crux+、t14/t16 MacBook Pro XNUMX/XNUMXOTA Crux/Crux+、tXNUMX/tXNUMX MacBook Pro XNUMX/XNUMX。
    • 增加了對 ARM Cortex-M55 和 Cortex-M33 處理器的支援。
    • 新增了對基於 CPU MIPS 的設備的支援:Linksys WRT320N v1、Netgear R6300 v1、Netgear WN2500RP v1/v2。
    • 新增了對基於RISC-V架構的StarFive JH7100 SoC的支援。
    • 增加了 lenovo-yogabook-wmi 驅動程序,用於控制鍵盤背光並存取 Lenovo Yoga Book 中的各種感測器。
    • 新增了 asus_wmi_sensors 驅動程式以存取基於 AMD Ryzen 處理器的華碩 X370、X470、B450、B550 和 X399 主機板上使用的感測器。
    • 為 Android 平台附帶的基於 x86 的平板電腦添加了 x86-android-tablets 驅動程式。
    • 新增了對 TrekStor SurfTab duo W1 觸控螢幕和 Chuwi Hi10 Plus 和 Pro 平板電腦電子筆的支援。
    • SoC Tegra 20/30 的驅動程式增加了對電源和電壓管理的支援。 允許在較舊的 32 位元 Tegra SoC 裝置上啟動,例如 ASUS Prime TF201、Pad TF701T、Pad TF300T、Infinity TF700T、EeePad TF101 和 Pad TF300TG。
    • 增加了西門子工業計算機的驅動程式。
    • 增加了對 Sony Tulip Truly NT35521、Vivax TPC-9150、Innolux G070Y2-T02、BOE BF060Y8M-AJ0、JDI R63452、Novatek NT35950、萬昌龍 W552946ABA 支援 Team 043015、萬昌龍 WXNUMXABA 的功能。
    • 新增了對音訊系統和編解碼器 AMD Renoir ACP、Asahi Kasei Microdevices AKM4375、使用 NAU8825/MAX98390、Mediatek MT8915、nVidia Tegra20 S/PDIF、Qualcomm ALC5682I-320、nVidia Tegra3 S/PDIF、Qualcomm ALC194I-VS、Texas 35xxx TLV41的 IntelVS、TexXNUMX XNUMXxLV的 IntelVS。 TegraXNUMX 高清音訊的問題已解決。 新增了對 CSXNUMXLXNUMX 編解碼器的 HDA 支援。 改進了對聯想和惠普筆記型電腦以及技嘉主機板聲音系統的支援。

來源: opennet.ru

添加評論