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

joh*_*inp 4 udev kernel-module archlinux systemd

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

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

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

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

但是,我没能看到它们是如何工作的:

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

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

例如,我xfs在 的输出中有一个内核模块lsmod,但我找不到插入它的触发点。我的文件系统都没有安装xfscat /proc/mounts | grep xfs什么也不显示)。

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

joh*_*inp 7

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

简而言之,秘密在于MODALIASudev 和/lib/modules/$(uname -r)/modules.alias.