注释
是的,从 RT 5.10 内核开始的 Debian RT 内核补丁引入了上游 kernel.org 源中不存在的网络延迟。如果 Linuxcnc 与以太网连接上的设备实时通信并且延迟超过可接受的限制,则会生成“错误完成读取”并禁用设备。这个“砖块” Linuxcnc 使它变得无用。需要重新启动程序才能清除错误,但这并不能解决问题,而且会再次出现。我个人在 4-5 台 PC 上遇到过这个问题,许多其他有经验的早期采用者也受到了这个问题的影响。在寻求解决方案时,它让我在一个项目上停滞了好几个月。在许多情况下,更高版本的内核需要为受影响的 PC 提供驱动程序支持,因此继续使用 4.x 内核不是一个可行的选择。 一旦 Linuxcnc 推出 2.9 版,它将出现在 Bookworm 或 Bullseye 平台上。大量用户将受到影响,因为现有的工作 PC 硬件将无法运行更高版本的 Debian 内核。这将对该项目产生不良影响。 显然,如果在 Bookworm 发布时不采取任何行动,Linuxcnc 项目将受到重大影响。 谨慎的做法是 Linuxcnc 项目与 Debian linux-image-rt 开发人员一起处理这个上游问题,试图在即将到来的硬冻结之前解决它。 我没有审查内核补丁的技能。如果我要猜测这个问题,我会调查我认为是在 RT 内核 5.10 中引入的“惰性抢占”补丁。 |
我将其作为一个问题提出,但它实际上是一个上游的 Debian 问题
在此处参考论坛上的这个 22 页线程:
https
://forum.linuxcnc.org/27-driver-boards/46911-mesa-hm2-hm2-7i96s-0-error-finishing-read?start=0 这似乎对 Realtek 卡的影响比对其他 NIC 的影响更大,但这不是唯一的。我怀疑 Realtek 卡比 Intel NIC 慢。一位用户还报告了带有大量从站的 ethercat 上的超时错误。
已打补丁的 Debian 内核的延迟过长导致实时线程在伺服线程周期内没有足够的时间与 Mesa 卡通信。mesa 卡然后关闭并且操作被禁用直到重新启动。
除了我自己之外,各种用户的测试表明该问题是在 linux-image-rt (preempt_rt) 内核 5.10 (Bullseye) 中引入的,并且在内核 6.10 当前内核中仍然存在)
从上游 (kernel.org) 源代码编译一个 PREEMPT_RT 内核可以很清楚地解决这个问题,这是由于https://salsa.debian.org/kernel-team/linux/-/tree/master/debian/上的 Debian 补丁中的某些东西补丁-rt
为了协助审查这一点,我从这里的原始来源编译了 linux-headers 的 .deb 文件和内核版本 6.1 的 preempt_rt 内核https://drive.google.com/drive/folders/10uwGg5RvZDDlLtQ8BZhM3At_gODk16na
一些辅助文件概述了这些步骤我着手编译了这个内核。我在这里的论坛上贴了一个贴子:
https
://forum.linuxcnc.org/9-installing-linuxcnc/47696-installing-linuxcnc-and-debian-bookworm-on-problematic-hardware-eg-realtek-nic 一个数字的用户报告说这解决了他们的问题。
我确实在这里用 debian 重新提出了这个问题
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1022170
但当时,我并不完全理解这个问题。如果有更多权限的人可以将此作为针对 linux-image-rt(5.10 至 6.1)的问题提出,那就太好了
我提出这个问题是因为一旦 Bookworm 在短短几个月内成为 Debian 稳定分支,许多用户将受到这个问题的影响,这将对这个项目产生不好的影响。