启动时加载的内核模块

启动时加载的内核模块

想知道系统启动时加载的内核模块的名称是否有特定的列表或位置。

lsmod类似或 之类的命令cat /proc/kallsyms仅显示已加载的命令。

想要确定哪些是已经手动加载的模块。

提前致谢!

答案1

可能有多个列表:一个列表用于在 initramfs 中加载的内核模块(即基本 I/O 和访问根文件系统所需的模块),另一个列表在挂载根文件系统后加载。

对于 Debian 和 Ubuntu 等相关 Linux 发行版,initramfs 中有要/etc/initramfs-tools/modules加载的模块(按列出的特定顺序),以及/etc/modules-load.d/用于指定在根文件系统可访问后要加载的模块的下拉目录。

对于使用dracutinitramfs 创建器的任何发行版,您可能需要查看/etc/dracut.conf和/或和/或行/etc/dracut.conf.d/*.conf的文件:这些将导致指定的模块被添加到 initramfs 中,并且在 的情况下,无论硬件检测如何,都会显式加载。add_driversforce_driversfilesystemsforce_drivers

除此之外,在现代系统上,许多模块通常是通过硬件自动检测来加载的:内核会将在任何具有自动检测功能的总线上检测到的硬件 ID 格式化为特定的模块别名,并且模块本身将包含与其硬件相匹配的通配符字符串。支持。如果找到匹配,则加载匹配的模块。每个驱动模块通常都会有更详细的硬件检测例程,可以进一步验证模块与硬件之间的兼容性。

在没有自动检测功能的系统总线的架构上(例如 RasPi 和各种嵌入式设备),“设备树”(.dtb附加到内核映像或由引导加载程序单独加载的文件)将描述系统硬件:它包括标识符用于兼容的“编程模型”,内核将使用它来形成模块别名字符串,以便自动加载适当的模块。

内核开发人员的目标是尽可能合理地自动加载内核模块。

相关内容