Linux 5.11 內核版本

經過兩個月的開發,Linus Torvalds 發布了 Linux 核心 5.11。 最顯著的變化包括:對 Intel SGX enclaves 的支援、攔截系統呼叫的新機制、虛擬輔助匯流排、禁止在沒有 MODULE_LICENSE() 的情況下組裝模組、seccomp 中系統呼叫的快速過濾模式、終止對ia64 架構、將WiMAX 技術轉移到「staging」分支、將SCTP 封裝在UDP 中的能力。

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

主要創新:

  • 磁盤子系統、I/O 和文件系統
    • Btrfs 中新增了多個安裝選項,以便從損壞的檔案系統復原資料時使用:「rescue=ignorebadroots」用於安裝,儘管某些根樹(範圍、uuid、資料重新定位、裝置、csum、可用空間)已損壞,「 “rescue=ignoredatacsums”停用資料校驗和檢查,「rescue=all」同時啟用「ignorebadroots」、「ignoredatacsums」和「nologreplay」模式。 先前已棄用的「inode_cache」掛載選項已停止使用。 該程式碼已準備好實現對元資料和資料小於頁面大小 (PAGE_SIZE) 的區塊的支持,以及對分區空間分配模式的支持。 無緩衝(直接 IO)請求已移至 iomap 基礎架構。 多項操作性能優化,某些情況下加速可達百分之幾十。
    • XFS 實作了「needsrepair」標誌,該標誌表示需要修復。 設定此標誌後,在 xfs_repair 公用程式重設該標誌之前,無法掛載檔案系統。
    • Ext4 僅提供錯誤修復和最佳化以及程式碼清理。
    • 允許重新匯出透過 NFS 掛載的檔案系統(即透過 NFS 掛載的分區現在可以透過 NFS 匯出並用作中間快取)。
    • close_range() 系統呼叫允許進程一次關閉整個範圍的開啟檔案描述符,它新增了 CLOSE_RANGE_CLOEXEC 選項以在 close-on-exec 模式下關閉描述符。
    • F2FS 檔案系統新增了新的 ioctl() 調用,以允許用戶空間控制以壓縮形式儲存哪些檔案。 新增了“compress_mode =”掛載選項來選擇是將壓縮處理程序放置在核心端還是用戶空間。
    • 提供了非特權程序使用單獨的使用者命名空間掛載 Overlayfs 的能力。 為了驗證安全模型實施的合規性,進行了完整的程式碼審核。 Overlayfs 也透過選擇停用 UUID 檢查來新增使用檔案系統映像副本執行的功能。
    • Ceph檔案系統增加了對msgr2.1協定的支持,該協定允許在以加密形式傳輸資料時使用AES-GCM演算法。
    • dm-multipath 模組實現了在選擇 I/O 請求路由時考慮 CPU 親和性(「IO 親和性」)的能力。
  • 內存和系統服務
    • 基於 prctl() 新增了新的系統呼叫攔截機制,讓您在存取特定係統呼叫時從使用者空間產生異常並模擬其執行。 Wine 和 Proton 需要此功能來模擬 Windows 系統調用,這對於確保與繞過 Windows API 直接執行系統調用的遊戲和程式的兼容性是必要的(例如,防止未經授權的使用)。
    • userfaultfd() 系統呼叫旨在處理使用者空間中的頁面錯誤(存取未分配的記憶體頁面),現在能夠停用核心層級發生的異常處理,更難以利用某些漏洞。
    • BPF 子系統增加了對任務本地儲存的支持,該儲存提供到特定 BPF 處理程序的資料綁定。
    • BPF 程式的記憶體消耗核算已完全重新設計 - 已提出使用 cgroup 控制器取代 memlock rlimit 來管理 BPF 物件中的記憶體使用。
    • BTF(BPF Type Format)機制,以BPF偽代碼的形式提供類型檢查訊息,為核心模組提供支援。
    • 新增了對 io_uring 非同步 I/O 介面的 shutdown()、renameat2() 和 unlinkat() 系統呼叫的支援。 當呼叫 io_uring_enter() 時,新增了指定逾時的功能(您可以檢查對參數的支持,以使用 IORING_FEAT_EXT_ARG 標誌指定逾時)。
    • Intel Itanium 處理器中使用的 ia64 架構已移至孤立類別,這表示測試已停止。 惠普企業停止接受新安騰設備的訂單,英特爾去年也這麼做了。
    • 已停止支援基於 MicroBlaze 架構但不包含記憶體管理單元 (MMU) 的系統。 這樣的系統已經很久沒有出現在日常生活中了。
    • 對於 MIPS 架構,已使用 gcov 實用程式新增了對程式碼覆蓋率測試的支援。
    • 增加了對虛擬輔助總線的支持,用於與組合了需要不同驅動程式的功能的多功能設備連接(例如,支援乙太網路和 RDMA 的網路卡)。 在 MFD(多功能設備)子系統的使用出現問題的情況下,匯流排可用於將主驅動程式和輔助驅動程式指派給設備。
    • 對於RISC-V架構,增加了對CMA(連續記憶體分配器)記憶體分配系統的支持,該系統針對使用記憶體頁行動技術分配大的連續記憶體區域進行了最佳化。 對於 RISC-V,也實作了工具來限制對 /dev/mem 的存取並考慮中斷處理時間。
    • 對於 32 位元 ARM 系統,新增了對 KASan(核心位址清理程序)偵錯工具的支持,該工具有助於識別使用記憶體時的錯誤。 對於 64 位元 ARM,KASan 實作已轉換為使用 MTE 標籤 (MemTag)。
    • 新增了 epoll_pwait2() 系統呼叫以允許奈秒精度的逾時(epoll_wait 呼叫操作毫秒)。
    • 現在,當嘗試建立可載入核心模組(其中未使用 MODULE_LICENSE() 巨集定義程式碼許可證)時,建置系統會顯示錯誤。 從現在開始,對靜態函數使用 EXPORT_SYMBOL() 巨集也會導致建置錯誤。
    • 增加了對從用於 I/O 的記憶體映射 GEM 物件的支持,這使得在某些架構上加快幀緩衝區的工作速度成為可能。
    • Kconfig 已放棄 Qt4 的支援(同時保持對 Qt5、GTK 和 Ncurses 的支援)。
  • 虛擬化和安全
    • seccomp() 系統調用添加了對快速響應模式的支持,允許您根據附加到進程的常數操作位圖非常快速地確定是否允許或禁止某個系統調用,而無需運行BPF 處理程序。
    • 用於創建和管理基於 Intel SGX(軟體防護擴展)技術的整合核心元件,該技術允許應用程式在隔離的加密記憶體區域中執行程式碼,而係統的其餘部分對此的存取受到限制。
    • 作為限制從使用者空間存取 MSR(特定於模型的暫存器)的計畫的一部分,寫入 MSR_IA32_ENERGY_PERF_BIAS 暫存器,允許您更改處理器能源效率模式(「正常」、「效能」、「省電」) , 被禁止。
    • 禁止在 CPU 之間遷移高優先任務的功能已從即時系統的 kernel-rt 分支中移出。
    • 對於 ARM64 系統,新增了使用 MTE 標籤(MemTag,記憶體標記擴充)作為訊號處理程序記憶體位址的功能。 透過在 sigaction() 中指定 SA_EXPOSE_TAGBITS 選項來啟用 MTE,並允許您檢查指標的正確使用,以阻止因存取已釋放的記憶體區塊、緩衝區溢位、初始化先前的存取以及在外部使用而導致的漏洞。當前上下文。
    • 新增了「DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING」參數,該參數允許 dm-verity 子系統檢查放置在輔助金鑰環中的憑證的雜湊簽章。 實際上,該設定不僅允許您驗證核心內建的證書,還可以驗證運行期間載入的證書,這使得可以在不更新整個核心的情況下更新證書。
    • 使用者模式Linux新增了對掛起至空閒模式的支持,該模式可讓您凍結環境並使用SIGUSR1訊號從睡眠模式喚醒。
    • virtio-mem 機制允許您向虛擬機熱插拔和斷開內存,並添加了對大塊模式 (BBM) 的支持,這使得可以以大於內核內存大小的塊傳輸或獲取內存塊,這是優化QEMU中的VFIO 所必需的。
    • TLS 的核心實作中加入了對 CHACHA20-POLY1305 密碼的支援。
  • 網絡子系統
    • 對於802.1Q (VLAN),已經實現了連接故障管理機制(CFM,連接故障管理),它允許您透過虛擬橋接(虛擬橋接網路)來識別、驗證和隔離網路中的故障。 例如,CFM 可用於隔離跨多個獨立組織的網路中的問題,這些組織的員工只能存取自己的裝置。
    • 新增了將SCTP 協定封包封裝在UDP 封包中的支援(RFC 6951),這允許您在具有不直接支援SCTP 的較舊位址轉換器的網路上使用SCTP,以及在不提供直接存取IP 的系統上實施SCTP層。
    • WiMAX技術的實作已經轉移到階段,如果沒有使用者需要WiMAX,預計將來會被刪除。 WiMAX 已不再在公共網路中使用,並且在核心中唯一可以使用 WiMAX 的驅動程式是過時的 Intel 2400m 驅動程式。 NetworkManager 網路設定器於 2015 年停止支援 WiMAX。 目前,WiMax幾乎完全被LTE、HSPA+和Wi-Fi 802.11n等技術取代。
    • 我們已經完成了優化零拷貝模式下處理傳入 TCP 流量的效能的工作,即無需額外複製到新緩衝區。 對於中等規模的流量,覆蓋數十或數百KB的數據,使用zerocopy而不是recvmsg()明顯更有效。 例如,實施的變更使得使用 Zerocopy 時處理 32 KB 訊息的 RPC 式流量的效率提高了 60-70%。
    • 新增了新的 ioctl() 呼叫以建立跨越多個 PPP 連結的網橋。 所提出的功能允許訊框從一個通道移動到另一個通道,例如從 PPPoE 移動到 PPPoL2TP 會話。
    • 整合到 MPTCP(多路徑 TCP)的核心中,MPTCP 是 TCP 協定的擴展,用於組織 TCP 連線的操作,透過與不同 IP 位址關聯的不同網路介面沿著多條路由同時傳送封包。 新版本引入了對 ADD_ADDR 選項的支持,以通告在向現有 MPTCP 連接添加新流時可以連接的可用 IP 位址。
    • 新增了在超出連線輪詢預算(繁忙輪詢)時配置操作的功能。 先前可用的 SO_BUSY_POLL 模式表示當預算耗盡時切換到軟中斷。 對於需要繼續使用輪詢的應用程序,提出了一個新選項SO_PREFER_BUSY_POLL。
    • IPv6實現了對SRv6 End.DT4和End.DT6模式的支持,用於建立多用戶IPv4 L3 VPN和VRF(虛擬路由和轉送)設備。
    • Netfilter統一了集合表達式的實現,這使得為集合清單的每個元素指定多個表達式成為可能。
    • API 已新增至 802.11 無線堆疊中,用於配置 SAR 功率限制以及 AE PWE 和 HE MCS 參數。 Intel iwlwifi 驅動程式新增了對 6GHz(超高頻段)範圍的支援。 Qualcomm Ath11k 驅動程式增加了對 FILS(快速初始鏈路設置,標準化為 IEEE 802.11ai)技術的支持,該技術允許您在從一個接入點遷移到另一個接入點期間消除漫遊延遲。
  • Оборудование
    • amdgpu 驅動程式提供對AMD「Green Sardine」APU (Ryzen 5000) 和「Dimgrey Cavefish」GPU (Navi 2) 的支持,以及對具有Zen 2 核心和RDNA 2 GPU (Navi 2) 的AMD Van Gogh APU 的初步支持。 新增了對新 Renoir APU 識別碼的支援(基於 Zen 2 CPU 和 Vega GPU)。
    • Intel 顯示卡的 i915 驅動程式支援 IS(整數縮放)技術,透過實作濾鏡來增加縮放比例,同時考慮相鄰像素的狀態(最近鄰插值)來確定遺失像素的顏色。 擴展了對獨立 Intel DG1 卡的支援。 已經實現了對「Big Joiner」技術的支持,該技術自 Ice Lake / Gen11 晶片以來就已存在,並允許使用一個轉碼器處理兩個串流,例如透過一個 DisplayPort 輸出到 8K 螢幕。 新增了在視訊記憶體中的兩個緩衝區之間非同步切換的模式(非同步翻轉)。
    • nouveau 驅動程式增加了對基於 Ampere 微架構(GA100、GeForce RTX 30xx)的 NVIDIA GPU 的初步支持,到目前為止僅限於控制視訊模式的工具。
    • 新增了對 LCD 面板中使用的 3WIRE 協議的支援。 新增了對 novatek nt36672a、TDO tl070wsh30、Innolux N125HCE-GN1 和 ABT Y030XX067A 3.0 面板的支援。 另外,我們可以注意到對 OnePlus 6 和 6T 智慧型手機面板的支持,這使得可以組織在裝置上載入未修改的核心。
    • 增加了對英特爾首款獨立 USB4 主控制器 Maple Ridge 的支援。
    • 新增了對 Allwinner H6 I2S、Analog Devices ADAU1372、Intel Alderlake-S、GMediatek MT8192、NXP i.MX HDMI 和 XCVR、Realtek RT715 和 Qualcomm SM8250 音訊編解碼器的支援。
    • 增加了對ARM 主機板、裝置和平台的支援:Galaxy Note 10.1、Microsoft Lumia 950 XL、NanoPi R1、FriendlyArm ZeroPi、Elimo Initium SBC、Broadcom BCM4908、Mediatek MT8192/MT6779/MTStarvVton、MUSStar , Mikrotik 基於 Marvell Prestera 8167DX2,伺服器配備 Nuvoton NPCM730 BMC、Kontron i.MX382M Mini、Espressobin Ultra、「Trogdor」Chromebook、Kobol Helios98、Engicam PX3236.Core。
    • 內建支援基於 NVIDIA Tegra 3 的 Ouya 遊戲機。

同時,拉丁美洲自由軟體基金會形成了完全免費的5.11核心版本——Linux-libre 5.11-gnu,清除了包含非自由元件或程式碼部分的韌體和驅動程式的元素,其範圍受到限制由製造商。 新版本清理了 qat_4xxx(加密)、lt9611uxcm(dsi/hdmi 橋)、ccs/smia++(感測器)、ath11k_pci、nxp 音訊收發器和 mhi pci 控制器的驅動程式。 更新了驅動程式和子系統 amdgpu、btqca、btrtl、btusb、i915 csr 中的 blob 清理程式碼。 停用 m3 rproc、idt82p33 ptp 時脈和高通 arm64 中的新 blob。

來源: opennet.ru

添加評論