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/MT8167、MStar Infinity2M、Nuvoton NPCM730、Marvell Armada 382、​ ​Mikrotik 基于 Marvell Prestera 98DX3236,服务器采用 Nuvoton NPCM750 BMC、Kontron i.MX8M Mini、Espressobin Ultra、“Trogdor”Chromebook、Kobol Helios64、Engicam PX30.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

添加评论