温馨提示×

怎样查找linux drivers

小樊
44
2026-09-24 21:59:34
栏目: 智能运维

在 Linux 系统中,“查找 drivers(驱动)”常见于几种场景:查找内核已加载的驱动、查找内核源码中的驱动代码、查找某个硬件对应的驱动模块、或者查找系统中可用的驱动文件。下面按不同需求给你一套实用方法。


一、查看当前系统已加载的驱动(内核模块)

1. 查看所有已加载模块

lsmod

cat /proc/modules

2. 查看某个驱动是否加载(如 usbhid)

lsmod | grep usbhid

3. 查看模块详细信息

modinfo usbhid

可以看到:

  • 作者
  • 依赖
  • 文件路径(.ko 文件位置)

二、查找驱动对应的 .ko 文件(磁盘上的驱动)

Linux 驱动通常以内核模块(.ko)形式存在。

1. 默认驱动目录

/lib/modules/$(uname -r)/kernel/drivers/

2. 查找某个驱动文件

find /lib/modules/$(uname -r) -name "*usb*"

3. 按模块名反查文件

modinfo -n e1000

三、查看硬件使用的是哪个驱动

1. PCI 设备(网卡、显卡等)

lspci -k

示例输出中会有:

Kernel driver in use: i915
Kernel modules: i915

2. USB 设备

lsusb -t

usb-devices

3. 块设备(硬盘)

lsblk -d -o NAME,TRAN,KNAME,MODEL

四、查找 Linux 内核源码中的驱动代码

如果你在看 Linux 内核源码

1. 驱动源码位置

drivers/

例如:

  • drivers/net/
  • drivers/usb/
  • drivers/gpu/drm/

2. 按文件名查找

find drivers -name "*e1000*"

3. 按关键字查找(如设备名)

grep -r "DeviceName" drivers/

4. 使用 cscope / ctags(推荐)

make tags

然后用 Vim / VS Code 跳转定义。


五、查找某个设备树(Device Tree)对应的驱动

如果是 ARM / 嵌入式 Linux:

find arch/arm/boot/dts -name "*board*"

驱动匹配通常在:

compatible = "vendor,device";

六、动态加载 / 卸载驱动

sudo modprobe e1000      # 加载
sudo modprobe -r e1000   # 卸载

七、推荐组合命令(实战)

查找“我的网卡用了什么驱动”:

lspci -k | grep -A3 Ethernet

查找驱动文件位置:

modinfo -n <驱动名>

如果你能告诉我:

  • 桌面 Linux / 服务器 / 嵌入式
  • 想查 某个硬件驱动 还是 源码中的驱动
  • 是否有 内核源码

我可以给你更精确的命令或示例。

0