linux - 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 自动加载的任何想法?
蒂亚!!
解决方案
答案是 udevd 使用的 kmod 共享库不支持压缩模块(CONFIG 选项)。对于 kmod 本身,--version
显示-XY
-ZLIB
表示不支持,+XY
+ZLIB
表示支持已启用。
推荐阅读
- ios - 停止 UI 警报控制器返回上一个视图
- netlogo - 如何比较代码中 2 个海龟的大小?
- c - 无法从 C 中的 txt 文件中读取所有数字
- email - POP3 Download and Keep 不是和 IMAP 类似吗
- c# - 使用 textBox_TextChanged 在 dataGridView 中搜索
- python - 从大型语料库中提取词频列表
- angular - Angular 动画创建了太多元素
- python - 使用一系列数组的内容扩展数据框
- c# - 从第一个集线器中使用第二个集线器时应用程序挂起
- kubernetes - 单集群 Kube POD 上的 CockroachDB 因 CrashLoopBackOff 而失败