udev 不加载模块?

udev not loading modules?

我有一个基于 debian 的基于 box 的自定义发行版。它使用来自较旧的 debian 版本(IIRC,它基于 Wheezy)的 udev,它作为 udev init 脚本的一部分启动 create_static_nodes。自定义发行版的内核基于 4.19-686,因此它是最新的。

我正在尝试将 udev 更新为基于 Devaun-jessie 的更新版本,因为该 init 系统不依赖于 systemd。我将新文件从 /etc/udev/lib/udevlibudev 复制到 /lib(还为旧的 libudev.so.0 创建了一个 link 到新的依赖于它的实用程序的版本),udevadm(到 /sbin),udevd-systemd(到 /sbin 作为 udevd),还有 /etc/init.d/udev 脚本(作为 /etc/rc.d/udev). init 是通过启动 /etc/rc.d/udev start.

的脚本完成的

问题是 udev 没有加载模块。 init 脚本运行 moddep -a 以确保最新,对一些可选项目进行一些手动 modprobe。这些手动项目显示在 /dev 中,而不是基于 module 的驱动程序。

作为测试,我手动 modprobe 一些驱动程序来调出 /dev/sr0,并且有效。只是有些东西没有触发负载。除了更新 udev 项目外,我没有做任何更改(我什至尝试保留一些基于 Devaun 的 udev 没有的规则)。 Devaun-jessie 在同一个 VMWare 播放器中 运行,所以知道它可以工作。如前所述,使用旧的 udev 项目启动我的发行版也可以,如果手动加载模块,一切正常。

关于如何找出模块没有自动加载新 udev 的原因的任何想法?

TIA!!

答案是 udevd 使用的 kmod 共享库不支持压缩模块(CONFIG 选项)。对于 kmod 本身,--version 显示 -XY -ZLIB 表示不支持,+XY +ZLIB 表示支持。