温馨提示×

如何找linux drivers源码

小樊
48
2026-09-27 19:04:25
栏目: 智能运维

在 Linux 下找 driver(驱动)源码,通常分几种场景:

  • 看 内核自带驱动
  • 找 某硬件对应的驱动文件
  • 找 第三方/厂商驱动

下面按最常用的方式一步步说。


一、Linux 内核自带驱动源码(最常见)

1️⃣ 驱动主要目录

Linux 驱动源码都在内核源码树里,核心目录是:

drivers/

例如:

  • 网卡:drivers/net/
  • USB:drivers/usb/
  • 显卡:drivers/gpu/
  • 输入设备:drivers/input/
  • I2C:drivers/i2c/
  • SPI:drivers/spi/

2️⃣ 获取内核源码

方法一:发行版提供(推荐)

# Ubuntu / Debian
apt-get source linux-image-$(uname -r)

# Fedora
dnf download --source kernel

# Arch
pacman -S asp
asp checkout linux

方法二:官方内核源码

git clone https://github.com/torvalds/linux.git
# 或
git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

3️⃣ 根据设备找驱动文件

✅ 方法 A:用 lspci / lsusb

lspci -k
lsusb -v

示例输出:

Ethernet controller: Intel Corporation I211
    Kernel driver in use: igb

→ 驱动名是 igb
→ 源码在:

drivers/net/ethernet/intel/igb/

✅ 方法 B:从 /sys 找

ls /sys/class/net/eth0/device/driver

或:

modinfo igb

会显示:

filename:       /lib/modules/.../igb.ko

✅ 方法 C:根据模块名找源码

find drivers -name "igb*"

二、找“当前正在用的驱动”源码

uname -r

然后:

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

这是 编译好的驱动(.ko 文件),不是源码。


三、设备树相关驱动(ARM / 嵌入式)

如果是嵌入式 Linux:

arch/arm/boot/dts/
arch/arm64/boot/dts/

驱动 + DTS 配合使用。


四、第三方 / 厂商驱动

常见位置:

  • GitHub(搜 xxx-linux-driver)
  • 厂商官网(Intel / NVIDIA / Realtek)
  • 开源项目(如 rtl8821cu, mt7601u)

示例:

github.com/torvalds/linux/tree/master/drivers/net/wireless

五、快速总结(速查表)

目的 做法
看所有驱动 drivers/
找某设备驱动 lspci -k / lsusb
看驱动源码 modinfo 驱动名
内核源码 git clone linux
嵌入式 arch/*/boot/dts

如果你愿意,可以告诉我:

  • 是什么硬件(网卡 / USB / 显卡 / 开发板)
  • 用的什么 Linux(Ubuntu / 树莓派 / 嵌入式)

我可以直接帮你 精确定位到源码文件。

0 踩