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 FP1)、Mediatek MT8183 ( Acer Chromebook 314)、Mediatek MT7986a/b(用于 Wi-fi 路由器)、Broadcom BCM4908 (Netgear RAXE500)、Qualcomm SDX65、Samsung Exynos7885、Renesas R-Car S4-8、TI J721s2、TI SPEAr320s、NXP i.MX8 ULP8 、Aspeed AST2500/AST2600、Engicam i.Core STM32MP1、Allwinner Tanix TX6、Facebook Bletchley BMC、Goramo MultiLink、JOZ 接入点、Y Soft IOTA Crux/Crux+、t6000/t6001 MacBook Pro 14/16。
    • 添加了对 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 Source Display TST043015CMHX LCD 面板的支持。
    • 添加了对音频系统和编解码器 AMD Renoir ACP、Asahi Kasei Microdevices AKM4375、使用 NAU8825/MAX98390、Mediatek MT8915、nVidia Tegra20 S/PDIF、Qualcomm ALC5682I-VS、Texas Instruments TLV320ADC3xxx 的 Intel 系统的支持。 Tegra194 高清音频的问题已得到解决。 添加了对 CS35L41 编解码器的 HDA 支持。 改进了对联想和惠普笔记本电脑以及技嘉主板声音系统的支持。

来源: opennet.ru

添加评论