我试图找出内核模块是如何自动插入的。我使用的是Arch Linux,所以基本上我正在使用systemd
。
经过一些研究,我知道至少有两种插入内核模块的方法:
systemd
有一个名为systemd-modules-load.service
的单元,它读取/etc/modules-load.d/*.conf
中的内核模块名称(以及/run
和/usr/lib
中的内核模块名称)( systemd documentation)。
udev
可以在检测到设备时自动处理内核模块(Arch Linux wiki page)。
然而,我没有看到这些是如何工作的:
我的系统中/etc/modules-load.d/*.conf
(或/run
或/usr/lib
中的配置文件)中没有配置文件。因此,systemd-modules-load.service
无法加载。
modprobe
中有一些/usr/lib/udev/rules.d
个命令,但我在lsmod
中看不到所有内核模块。
例如,我在xfs
的输出中有一个lsmod
内核模块,但我找不到插入它的触发点。我的文件系统都没有xfs
挂载(cat /proc/mounts | grep xfs
没有显示任何内容)。
有没有关于这一切是如何运作的介绍或教程?
答案 0 :(得分:1)
我找到了一个关于这个主题的非常有用的介绍:https://wiki.archlinux.org/index.php/Modalias
简而言之,秘诀是udev中的MODALIAS
与/lib/modules/$(uname -r)/modules.alias
之间的映射。