Linux驱动文件的存放位置与驱动的类型、加载方式以及系统配置密切相关,不同类型的驱动对应不同的存放目录,下面分场景详细介绍。

编译进内核的驱动存放位置
部分驱动在编译Linux内核时就被直接编译进内核镜像,这类驱动不会以独立文件的形式存放在文件系统中,而是和内核镜像融为一体。内核镜像通常存放在/boot目录下,文件名一般为vmlinuz-版本号或者bzImage,这类驱动随着内核启动直接加载,无法通过常规的文件路径单独找到对应的驱动文件。
动态加载的内核模块驱动存放位置
大部分驱动是以内核模块的形式存在的,这类驱动的默认存放目录是/lib/modules/内核版本号/,我们可以通过uname -r命令先获取当前系统的内核版本号,再进入对应目录查看驱动文件。
该目录下的子目录按照驱动的功能分类存放,常见的子目录如下:
kernel/drivers/:存放绝大多数硬件设备的驱动,比如显卡、网卡、存储设备等驱动都在这个目录下,下面还会细分net/、scsi/、usb/等子目录。kernel/fs/:存放文件系统相关的驱动,比如ext4、xfs等文件系统的驱动模块。kernel/net/:存放网络协议相关的驱动模块。
我们可以通过以下命令查看当前内核版本,并进入驱动目录:
# 查看当前内核版本 uname -r # 假设输出的内核版本是5.4.0-100-generic,进入对应驱动目录 cd /lib/modules/5.4.0-100-generic/kernel/drivers # 查看当前目录下的驱动文件,驱动模块文件后缀为.ko ls *.ko
第三方外置驱动的存放位置
部分第三方硬件厂商提供的闭源驱动,或者用户自己编译的测试驱动,可能不会放到默认的/lib/modules目录下,常见的存放位置有:
- 用户自定义的目录,比如
/opt/drivers/、/usr/local/drivers/等,这类驱动需要手动指定路径加载。 - 如果是通过包管理器安装的第三方驱动,可能会存放在
/usr/lib/或者/usr/share/下的对应厂商目录中。
如何快速查询指定驱动的路径
如果我们已经知道驱动的名称,可以通过以下命令快速查询驱动的存放路径:
使用modinfo命令查询
modinfo命令可以查看内核模块的详细信息,包括存放路径,前提是驱动已经被系统识别。
# 查询e1000网卡驱动的路径,e1000是驱动名称 modinfo e1000 # 输出中filename字段就是驱动文件的完整路径,类似/lib/modules/5.4.0-100-generic/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
使用find命令全局搜索
如果不知道驱动的准确名称,也可以使用find命令全局搜索驱动文件,驱动模块的后缀是.ko,可以基于此搜索。
# 从根目录开始搜索名为e1000.ko的驱动文件 find / -name "e1000.ko" 2>/dev/null # 2>/dev/null是为了忽略没有权限访问的目录的错误输出
驱动加载与路径的关系
当我们使用insmod命令加载驱动时,需要指定驱动的完整路径,比如加载/opt/drivers/test.ko驱动:
# 加载指定路径的驱动模块 insmod /opt/drivers/test.ko
如果使用modprobe命令加载驱动,系统会自动到/lib/modules/内核版本号/目录下查找对应的驱动文件,不需要指定完整路径:
# 加载e1000驱动,系统自动到默认目录查找 modprobe e1000
Linux驱动驱动路径内核模块/lib/modules驱动存放目录修改时间:2026-06-23 16:54:22