linux查找网卡模块及驱动信息

linux查找网卡模块及驱动信息

Linux内核模块文件命名方式一般<模块名称.ko>格式,Centos7系统内核模块集中存
在/lib/modules/`uname -r`/目录下。模块名称都在modules.*文件中。

#查看设备是否已经识别网卡:

[root@rc ~]# lspci | grep -i eth
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
02:05.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
02:06.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)

#查看网卡的驱动和模块:

[root@rc ~]# lspci -vv -s 02:01.0 | tail -n 3
        Kernel driver in use: e1000
        Kernel modules: e1000

[root@rc ~]# lspci -vv -s 02:05.0 | tail -n 3
        Kernel driver in use: e1000
        Kernel modules: e1000

[root@rc ~]# lspci -vv -s 02:06.0 | tail -n 3
        Kernel driver in use: e1000
        Kernel modules: e1000

或:

[root@rc ~]# lspci -k -s 02:01.0 
[root@rc ~]# lspci -k -s 02:05.0 
[root@rc ~]# lspci -k -s 02:06.0

#查找网卡的模块和查看模块信息:

[root@rc ~]# lsmod | grep e1000
e1000                 137624  0 
[root@rc ~]# modinfo e1000
filename:       /lib/modules/3.10.0-1062.9.1.el7.x86_64/kernel/drivers/net/ethernet/intel/e1000/e1000.ko.xz
version:        7.3.21-k8-NAPI
license:        GPL
description:    Intel(R) PRO/1000 Network Driver
author:         Intel Corporation, <linux.nics@intel.com>
retpoline:      Y
rhelversion:    7.7
srcversion:     BED5FAF40AE66C5A4A6AC4C
alias:          pci:v00008086d00002E6Esv*sd*bc*sc*i*
alias:          pci:v00008086d000010B5sv*sd*bc*sc*i*
alias:          pci:v00008086d00001099sv*sd*bc*sc*i*
alias:          pci:v00008086d0000108Asv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Csv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Asv*sd*bc*sc*i*
alias:          pci:v00008086d00001079sv*sd*bc*sc*i*
alias:          pci:v00008086d00001078sv*sd*bc*sc*i*
alias:          pci:v00008086d00001077sv*sd*bc*sc*i*
alias:          pci:v00008086d00001076sv*sd*bc*sc*i*
alias:          pci:v00008086d00001075sv*sd*bc*sc*i*
alias:          pci:v00008086d00001028sv*sd*bc*sc*i*
alias:          pci:v00008086d00001027sv*sd*bc*sc*i*
alias:          pci:v00008086d00001026sv*sd*bc*sc*i*
alias:          pci:v00008086d0000101Esv*sd*bc*sc*i*
alias:          pci:v00008086d0000101Dsv*sd*bc*sc*i*
alias:          pci:v00008086d0000101Asv*sd*bc*sc*i*
alias:          pci:v00008086d00001019sv*sd*bc*sc*i*
alias:          pci:v00008086d00001018sv*sd*bc*sc*i*
alias:          pci:v00008086d00001017sv*sd*bc*sc*i*
alias:          pci:v00008086d00001016sv*sd*bc*sc*i*
alias:          pci:v00008086d00001015sv*sd*bc*sc*i*
alias:          pci:v00008086d00001014sv*sd*bc*sc*i*
alias:          pci:v00008086d00001013sv*sd*bc*sc*i*
alias:          pci:v00008086d00001012sv*sd*bc*sc*i*
alias:          pci:v00008086d00001011sv*sd*bc*sc*i*
alias:          pci:v00008086d00001010sv*sd*bc*sc*i*
alias:          pci:v00008086d0000100Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000100Esv*sd*bc*sc*i*
alias:          pci:v00008086d0000100Dsv*sd*bc*sc*i*
alias:          pci:v00008086d0000100Csv*sd*bc*sc*i*
alias:          pci:v00008086d00001009sv*sd*bc*sc*i*
alias:          pci:v00008086d00001008sv*sd*bc*sc*i*
alias:          pci:v00008086d00001004sv*sd*bc*sc*i*
alias:          pci:v00008086d00001001sv*sd*bc*sc*i*
alias:          pci:v00008086d00001000sv*sd*bc*sc*i*
depends:        
intree:         Y
vermagic:       3.10.0-1062.9.1.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        9E:88:C8:DF:D4:52:91:8C:83:21:F5:1E:BB:C7:92:4B:49:8B:BD:5A
sig_hashalgo:   sha256
parm:           TxDescriptors:Number of transmit descriptors (array of int)
parm:           RxDescriptors:Number of receive descriptors (array of int)
parm:           Speed:Speed setting (array of int)
parm:           Duplex:Duplex setting (array of int)
parm:           AutoNeg:Advertised auto-negotiation setting (array of int)
parm:           FlowControl:Flow Control setting (array of int)
parm:           XsumRX:Disable or enable Receive Checksum offload (array of int)
parm:           TxIntDelay:Transmit Interrupt Delay (array of int)
parm:           TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
parm:           RxIntDelay:Receive Interrupt Delay (array of int)
parm:           RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm:           InterruptThrottleRate:Interrupt Throttling Rate (array of int)
parm:           SmartPowerDownEnable:Enable PHY smart power down (array of int)
parm:           copybreak:Maximum size of packet that is copied to a new buffer on receive (uint)
parm:           debug:Debug level (0=none,...,16=all) (int)
[root@rc ~]# 

#卸载模块和加载模块,非0状态的模块无法卸载:

[root@rc ~]# modprobe -r ast
[root@rc ~]# modprobe  ast

### Linux 网卡驱动模块开发教程 #### 一、基础知识概览 对于希望深入理解Linux网卡驱动模块开发的学习者而言,了解Linux的发展历程及其特性至关重要。Linux作为一个开源的操作系统,在网络通信方面提供了强大的支持功能[^2]。 #### 二、设备分类与基本概念 在Linux环境中,所有的硬件都被抽象成文件来处理,而这些所谓的“特殊文件”就是设备节点。根据不同的访问方式,Linux中的设备可以分为字符设备、块设备和网络设备三类。其中,网卡属于典型的网络设备类别之一。编写任何类型的设备驱动都需要熟悉一些通用的概念和技术细节,比如如何注册/注销设备、管理中断请求等。 #### 三、数据结构与接口函数解析 为了能够有效地控制物理层面上的网络适配器并完成数据包收发的任务,开发者需要熟练运用特定的数据结构(如`struct net_device`) 和一系列API 函数 (例如 `register_netdev()`, `unregister_netdev()` ) 来构建完整的驱动框架。这部分内容涉及到较为复杂的内核编程技巧,建议参考专业的书籍或文档进行系统化的学习[^1]。 #### 四、实例分析——Realtek RTL8139 PCI网卡驱动 以常见的RTL8139型号为例,该芯片组广泛应用于台式机主板上作为集成型快速以太网控制器使用。其对应的驱动源码不仅展示了标准PCI总线协议下的初始化过程,还包括了详细的寄存器映射关系说明以及具体的发送接收流程描述。通过阅读此类具体案例可以帮助初学者更快地上手实际项目开发工作。 #### 五、编译选项设置指南 当准备将自己的定制版驱动加入到现有发行版本之中时,则需利用`make menuconfig` 工具进入图形化配置向导界面,并依照提示逐步勾选所需的功能项以便于后续编译链接阶段顺利进行。特别是针对无线网卡系列(RTL81XX),应当注意查找对应条目将其设为可动态加载的形式(`M`)而非静态内置(`*`)[^3]。 ```bash # 进入内核源代码目录 cd /usr/src/linux-headers-$(uname -r) # 执行菜单配置命令 make menuconfig # 寻找WLAN设备支持 -> Realtek devices -> RTL81xx Wireless LAN driver ``` #### 六、调试技巧分享 除了上述理论知识点之外,掌握有效的故障排查手段同样重要。这通常意味着要学会解读日志信息(dmesg), 使用专门的日志记录宏定义(pr_info(), pr_err()) , 或借助GDB这样的外部辅助工具来进行单步跟踪测试等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zdl244

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值