温馨提示×

怎样找linux drivers源码

小樊
43
2026-09-12 12:29:38
栏目: 智能运维

在 Linux 下“找 drivers 源码”通常有几种场景,下面按最常见需求给你系统说明。


一、找你当前系统正在用的 driver 源码

1️⃣ 确认驱动对应模块

lsmod

或查看某个设备:

lspci -k
lsusb -t

例如:

lspci -k | grep -A3 -i net

会显示类似:

Kernel driver in use: e1000e

2️⃣ 找模块源码位置(内核源码中)

Linux 所有 driver 都在:

linux/
 └── drivers/

例如 e1000e

drivers/net/ethernet/intel/e1000e/

二、下载 Linux 内核源码(最标准方式)

方法 1:官方内核源码

git clone https://github.com/torvalds/linux.git

或指定版本:

git clone --depth 1 --branch v6.1 https://github.com/torvalds/linux.git

方法 2:发行版源码(推荐 Ubuntu / Debian)

apt source linux-image-$(uname -r)

或:

sudo apt install linux-source
cd /usr/src/linux-source-*

三、在当前内核源码里快速定位 driver

1️⃣ 按名字搜

grep -rl "e1000e" drivers/

2️⃣ 用 Makefile / Kconfig

find drivers -name Makefile | xargs grep e1000e

3️⃣ 看某个模块来自哪个文件

modinfo e1000e

输出中有:

filename: /lib/modules/.../e1000e.ko

四、只找“某个设备的 driver”

举例:网卡

drivers/net/

举例:USB

drivers/usb/

举例:GPU

drivers/gpu/drm/

五、在线浏览(不用下载)

  • 官方:https://elixir.bootlin.com/linux/latest/source/drivers
  • GitHub:https://github.com/torvalds/linux/tree/master/drivers

支持按函数、符号搜索,非常方便。


六、常见误区

❌ 驱动不在 /lib/modules/*.ko 的“源码”里
.ko 是编译结果,源码在内核 tree 的 drivers/

❌ 不是所有驱动都在内核
✅ 有些在:

  • 厂商仓库(NVIDIA、Broadcom)
  • 树外模块(DKMS)

七、如果你愿意,我可以更直接帮你

你可以告诉我:

  1. 什么设备(网卡 / 显卡 / USB / WiFi)
  2. 系统版本(uname -a
  3. 你是想读源码 / 改驱动 / 编译 / 调试

我可以直接告诉你源码路径 + 关键文件 + 入口函数

0