systemd如何自动插入内核模块?

时间:2017-09-05 08:06:45

标签: kernel-module archlinux systemd udev

我试图找出内核模块是如何自动插入的。我使用的是Arch Linux,所以基本上我正在使用systemd

经过一些研究,我知道至少有两种插入内核模块的方法:

  1. systemd有一个名为systemd-modules-load.service的单元,它读取/etc/modules-load.d/*.conf中的内核模块名称(以及/run/usr/lib中的内核模块名称)( systemd documentation)。

  2. udev可以在检测到设备时自动处理内核模块(Arch Linux wiki page)。

  3. 然而,我没有看到这些是如何工作的:

    1. 我的系统中/etc/modules-load.d/*.conf(或/run/usr/lib中的配置文件)中没有配置文件。因此,systemd-modules-load.service无法加载。

    2. modprobe中有一些/usr/lib/udev/rules.d个命令,但我在lsmod中看不到所有内核模块。

    3. 例如,我在xfs的输出中有一个lsmod内核模块,但我找不到插入它的触发点。我的文件系统都没有xfs挂载(cat /proc/mounts | grep xfs没有显示任何内容)。

      有没有关于这一切是如何运作的介绍或教程?

1 个答案:

答案 0 :(得分:1)

我找到了一个关于这个主题的非常有用的介绍:https://wiki.archlinux.org/index.php/Modalias

简而言之,秘诀是udev中的MODALIAS/lib/modules/$(uname -r)/modules.alias之间的映射。