50-udev-default.rules:未知的内置命令:net_driver,丢失互联网连接

50-udev-default.rules:未知的内置命令:net_driver,丢失互联网连接

我正在运行一个基于 Arch 的发行版,在进行重大更新后丢失了我的互联网连接(wifi 和以太网)。我能够回滚所有更改并将其恢复,但显然希望能够找到问题的根源。无论如何,该发行版的其他用户似乎没有遇到同样的问题。

更新后,jounalctl -p 3 -xb给我:

systemd-udevd[750]: /usr/lib/udev/rules.d/50-udev-default.rules:29 Unknown builtin command: net_driver
(udev-worker)[2083754]:  event14: Failed to call EVIOSKEYCODE with scan code 0x7c, and key code 190: Invalid argument
systemd-udevd[750]: /usr/lib/udev/rules.d/50-udev-default.rules:29 Unknown builtin command: net_driver
(sd-pam)[2107125]: pam_systemd(login:session): Failed to release session: Access denied
(sd-pam)[2107144]: pam_systemd(login:session): Failed to release session: Access denied

/usr/lib/udev/rules.d/50-udev-default.rules:29是这行代码:

SUBSYSTEM=="net", IMPORT{builtin}="net_driver"

这是有道理的,因为一个不明的net_driver命令似乎是问题的根源。

systemctl NetworkManager 读取我已连接到互联网(并且该连接未标记为“非托管”),并nmcli显示它。根本没有连接 - ping100% 失败,包括ping 1.1.1.1,所以这不仅仅是 DNS 问题,而且显然不会加载任何站点。

这是我第一次需要udev自己深入研究,我很难弄清楚我在看什么。我想我有两种前进的方法:

  1. 忽略问题,隔离有问题的包,不要更新它们,并更新其他所有内容,并希望能够立即修复,以便我在将来的某个时候更新它们
  2. 发现根本问题并解决它

我不确定如何实现其中任何一个。首先,我假设我正在寻找驱动程序或启动更新,并且grub列表中有更新。话虽这么说,我不确定如何隔离,甚至不知道如何真正缩小它可能是哪些包。 (更新中有超过 100 个。)

对于第二种方法,我不确定udev规则的更新方式是否破坏了所有内容,或者问题是否出在其他地方。在当前的语法中,50-udev-default.rules它显然期望net_driver在其他地方定义(或者至少在当前第 29 行之前);那会是哪里?这是一种人们甚至会搞乱的事情吗?或者,用 Boromir 的话说,人们不只是“搞乱”udev 吗?

如果我可以提供其他信息来帮助解决这个问题,请告诉我。谢谢!

答案1

我最终采纳了 @don_crissti 的建议并回滚了 systemd 更改。 (我有鲷鱼,所以就像回滚到更新之前的快照一样简单。)这足以使互联网连接正常运行。大约一周后我能够再次更新,没有出现任何问题。

我认为这更像是一个占位符答案,因为它实际上并没有触及问题的核心,而更像是一种解决方法。因此,它不太可能帮助那些使用该规则已存在更长时间的发行版的人。

相关内容