systemd 如何自动插入内核模块?
How are kernel modules automatically inserted by systemd?
我想知道内核模块是如何自动插入的。我正在使用 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
.
中没有要加载的内容
/usr/lib/udev/rules.d
中有一些modprobe
命令,但不是我在lsmod
中看到的所有内核模块。
比如我在lsmod
的输出中有一个xfs
内核模块,但是我找不到插入它的触发点。 None 我的文件系统挂载了 xfs
(cat /proc/mounts | grep xfs
什么也没显示)。
是否有关于所有这些工作原理的介绍或教程?
我找到了关于这个主题的非常有用的介绍:https://wiki.archlinux.org/index.php/Modalias
简而言之,秘密就是udev中MODALIAS
和/lib/modules/$(uname -r)/modules.alias
之间的映射。
我想知道内核模块是如何自动插入的。我正在使用 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
. 中没有要加载的内容
/usr/lib/udev/rules.d
中有一些modprobe
命令,但不是我在lsmod
中看到的所有内核模块。
比如我在lsmod
的输出中有一个xfs
内核模块,但是我找不到插入它的触发点。 None 我的文件系统挂载了 xfs
(cat /proc/mounts | grep xfs
什么也没显示)。
是否有关于所有这些工作原理的介绍或教程?
我找到了关于这个主题的非常有用的介绍:https://wiki.archlinux.org/index.php/Modalias
简而言之,秘密就是udev中MODALIAS
和/lib/modules/$(uname -r)/modules.alias
之间的映射。