摘要
随着 Linux 7.1 的到来,长期游离在主线之外的 32位 ARM 架构(非 ARM64) 终于获得了完整的 PREEMPT_RT(实时抢占) 支持。这意味着构建 ARM 实时内核将不再依赖 out-of-tree(树外)补丁,而可直接基于主线源码完成。这不仅是一个架构支持列表的扩展,更是 Linux 实时化进程的重要里程碑。因为在嵌入式、工业控制、音频处理与机器人领域,32位 ARM 依旧广泛存在。本文将深入解析 Linux 7.1 为何能够完成这一步、关键补丁解决了什么问题,以及 PREEMPT_RT 在 ARM 平台落地后对整个实时生态的意义。
一场持续二十年的工程:Linux 实时内核终于补齐 ARM 版图
With Linux 7.1 The Mainline Kernel Now Supports Real-Time "RT" On ARM
Linux 实时化(Real-Time)不是新鲜话题,但真正做到“主线可构建、无需外挂补丁”,却走了二十年。
Linux 6.12 起,主线已支持:
Linux 6.13 增加:
而到了 Linux 7.1,最后一个长期缺席的重要成员终于补位:
32位 ARM(ARMv7 / older SoCs)
这意味着——
老旧 ARM SoC 也能直接编译主线 PREEMPT_RT 内核,无需额外补丁。
这一步对工业设备、嵌入式控制器和传统 ARM 平台意义重大。
什么是 PREEMPT_RT?为什么它如此重要?
2.1 PREEMPT_RT 的本质
PREEMPT_RT(Preemptible Real-Time) 是 Linux 内核的一套实时抢占模型。
它的目标不是让系统“更快”,而是让响应时间更确定、可预测。
普通 Linux:
高优先级任务可能被低优先级内核路径阻塞
PREEMPT_RT:
尽可能缩短不可抢占区间,让关键任务在可控时间内获得 CPU
2.2 核心机制
- • Priority Inheritance Mutex(优先级继承互斥锁)
- • Preemptible Spinlocks(可抢占锁替换)
2.3 延迟改善示意
普通内核:IRQ → HardIRQ → SoftIRQ → Scheduler → TaskRT 内核:IRQ → IRQ Thread → Scheduler → High-Priority Task
本质是把“硬中断霸权”变成“可调度实体”。
二十年积累后的主线化成果
PREEMPT_RT 最早自 2005 年开始推进,由 Thomas Gleixner、Ingo Molnár 等人主导。
长期以来,它以 patchset 形式存在:
Mainline Kernel + RT Patch = Real-Time Linux
直到 Linux 6.12,主线才首次原生支持实时配置。
为什么 ARM 一直落后?
3.1 ARM 的问题不在调度器,而在架构细节
32位 ARM 与 ARM64 最大不同是:
- • Fault handling(故障处理)不够 RT-friendly
这些细节让 PREEMPT_RT 难以完全主线化。
3.2 树外补丁长期存在
过去 ARM RT 支持依赖少量 out-of-tree patch:
Mainline ARM Kernel +ARM-specific RT patches =Usable RT Kernel
问题是:
这也是许多嵌入式厂商长期维护私有分支的原因。
Linux 7.1 做了什么?
4.1 最后障碍:ARM Fault Handling 清理
Linux 7.1-rc1 前完成的一次关键 merge,重构了 ARM 故障处理路径。
它直接解决了 PREEMPT_RT 在 ARM 上的最后阻塞点。
4.2 技术意义
旧实现中,某些 fault handler 运行在不适合 RT 的上下文中。
而 RT 需要:
因此必须清理异常处理流程。
4.3 架构要求映射
根据内核文档,支持 PREEMPT_RT 的架构必须满足:
ARM 过去缺的,正是这些细节适配。
RT Patch Queue 还剩什么?
根据 v7.1-rc1-rt1 说明:
ARM patches are gone — everything required is in Linux 7.1-rc1.
也就是说:
ARM 已完全主线化。
剩余树外补丁主要集中在:
1. Intel i915 DRM 驱动修复
图形栈中的锁与上下文处理仍需优化。
2. /sys/kernel/realtime
新增 sysfs 节点标识当前是否为 RT 内核。
cat /sys/kernel/realtime
输出:
1
用于用户空间快速识别。
3. PowerPC 支持
目前仍有未主线化补丁。
也就是说,PowerPC 是下一个目标。
功能框架图:Linux RT 主线化演进路径
2005 ───── PREEMPT_RT patchset 启动 ↓2024 ───── Linux 6.12 主线支持 x86/ARM64/RISC-V ↓2025 ───── Linux 6.13 增加 LoongArch ↓2026 ───── Linux 7.1 增加 32-bit ARM ↓未来 ───── PowerPC 收尾
应用场景:谁最受益?
工业控制
PLC、机器人、数控设备要求确定性响应。
音频处理
低延迟监听、数字乐器实时反馈。
Reddit 用户总结得很直白:
没有 RT,音频会“慢半拍”。
医疗设备
实时数据采集与控制必须有时间保证。
边缘 AI 与嵌入式系统
很多 ARMv7 设备仍在服役。Linux 7.1 让它们进入主线 RT 生态。
总结:Linux 不只是支持 ARM RT,而是完成了实时生态闭环
Linux 7.1 对 ARM 的支持,不只是多了一项配置。它代表:
PREEMPT_RT 从“补丁项目”真正变成主线能力。
而 ARM 的加入,则补齐了嵌入式世界最重要的一块拼图。真正难的不是实现一个 RT 内核。而是让它在所有主流架构上都能被统一维护。这次 ARM 的完成说明:Linux 实时化已从“技术实验”进入“工程成熟期”。未来讨论的重点,将不再是“能不能用 RT”。而是:
哪些场景值得默认启用 RT,以及如何平衡实时性与吞吐性能。
这才是实时 Linux 的下一个阶段。