首页 > 解决方案 > udev 不加载模块?

问题描述

我有一个基于 debian 的繁忙的基于盒子的自定义发行版。它使用较旧的 debian 版本(IIRC,它基于 Wheezy)中的 udev,作为 udev 初始化脚本的一部分启动 create_static_nodes。自定义发行版上的内核基于 4.19-686,因此它是最新的。

我正在尝试将 udev 更新到基于 Devaun-jessie 的较新版本,因为该 init 系统不依赖于 systemd。我将新文件从/etc/udev, /lib/udev,复制libudev到 /lib (还为旧的 libudev.so.0 创建了一个链接到依赖它的实用程序的新版本),udevadm(到 /sbin),udevd-systemd(到 /sbin as 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 自动加载的任何想法?

蒂亚!!

标签: linuxlinux-device-driverudev

解决方案


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


推荐阅读