modprobe 搜索路径
在Linux中,modprobe是一个命令行工具,用来加载内核模块。在使用modprobe命令时,内核模块需要在指定的路径中才能被找到并加载。那么对于modprobe来说,这些路径在哪里?如何查看这些路径?本篇文章将带你了解modprobe搜索路径相关的知识。
modprobe的搜索路径
在Linux中,modprobe命令会在以下几个路径中搜索可加载的内核模块:
- /lib/modules/
uname -r
/kernel(内核模块所在的默认目录) - /lib/modules/
uname -r
/extra/(用户自行编译的内核模块所在的目录,一般不需要担心) - /lib/modules/(常见的内核模块目录,一般也不需要担心)
其中,uname -r
为当前系统所使用的内核版本。
当我们使用modprobe命令加载一个内核模块时,系统首先会在以上三个路径中搜索是否存在该模块,若存在,系统会将其加载到内存中。若以上三个路径都没有找到该模块,则系统会返回“找不到该模块”的错误。
我们可以通过以下命令查看当前系统的内核版本:
uname -r
运行以上命令后,我们会得到当前系统使用的内核版本。例如:
5.8.0-55-generic
因此,我们可以得知当前系统加载的内核模块就在以下路径中:
/lib/modules/5.8.0-55-generic/kernel
当我们需要查看内核模块的具体位置时,也可以使用以下命令:
modinfo 模块名
以上命令可以列出指定模块的详细信息,包括模块所在路径、模块版本、模块作者等。例如,我们想查看“usbcore”模块的路径,可以执行以下命令:
modinfo usbcore
执行以上命令后,我们可以看到该模块的路径为:
filename: /lib/modules/5.8.0-55-generic/kernel/drivers/usb/core/usbcore.ko
modprobe配置文件
我们也可以通过modprobe配置文件来设置搜索路径。Linux中modprobe的配置文件为/etc/modprobe.conf和/etc/modprobe.d/,其中/etc/modprobe.conf为全局配置文件,而/etc/modprobe.d/为目录,其中存放的是单独的模块配置文件。
我们可以使用以下命令来编辑配置文件:
sudo vi /etc/modprobe.conf
在打开的modprobe.conf文件中,我们可以设定模块搜索路径,例如:
install 模块名 /lib/modules/内核版本/extra/
以上配置表明,在搜索模块时,优先在该路径下搜索该模块。例如:
install sound-slot-0 /lib/modules/`uname -r`/kernel/sound/soundcore.ko
这条配置的含义是,在搜索snd-card-0模块时,优先在以下路径中查找:/lib/modules/uname -r
/kernel/sound/soundcore.ko。
总结
通过本篇文章的介绍,我们了解了modprobe命令的搜索路径。同时,我们也了解到了如何通过modprobe配置文件来设置搜索路径。在平时的使用中,这些知识都有助于我们更好地了解和使用modprobe命令。