转载请注明来自"祁峰"的CSDN博客

因项目需要,将当前内核(2.6.32-220.el6.x86_64)升级到目标内核(2.6.33-110.el6.x86_64),但是编译的目标内核(2.6.33-110.el6.x86_64)的对应驱动程序并不一定支持当前系统的对应设备。本篇将详细讲述目标内核驱动无法支持当前网卡设备的处理步骤。

01、编译目标内核

请参考内核编译相关文档(省略)

02、显示所有网卡

由于一个系统可以支持多张网卡,可通过如下命显示当前系统的所有网卡及其基本信息:#ifconfig -a

em1 Link encap:Ethernet HWaddr EC:F4:BB:D0:0B:60

UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

em2 Link encap:Ethernet HWaddr EC:F4:BB:D0:0B:62

UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

em3 Link encap:Ethernet HWaddr EC:F4:BB:D0:0B:64

UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Memory:dbe80000-dbf00000

03、查看网卡所需驱动

使用ethtool命令可以查看指定网卡所依赖的网卡驱动信息:

#ethtool -i em3

driver: igb - 网卡em3依赖igb驱动

version: 3.0.6-k

firmware-version: 1.6-7

bus-info: 0000:08:00.0

注:igb 驱动程序支持所有基于 82575 、 82576 、 82580 和 I350 的千兆位网络连接。

04、查看网卡型号

通过③我们已经知道了网卡所依赖的驱动,但是还不知具体的网卡设备型号,此时可通过如下命令查询:

# lspci -nn | grep "Eth"

01:00.0 Ethernet controller [0200]: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)

01:00.1 Ethernet controller [0200]: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)

03:00.0 Ethernet controller [0200]: Intel Corporation 82599EB 10-Gigabit SFP+ Network Connection [8086:154d] (rev 01)

03:00.1 Ethernet controller [0200]: Intel Corporation 82599EB 10-Gigabit SFP+ Network Connection [8086:154d] (rev 01)

08:00.0 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)

08:00.1 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)

注:Gigabit为千兆 10-Gigabit为万兆

由④的操作可知当前内核(2.6.32-220.el6.x86_64)千兆网络驱动igb支持网卡型号[8086:1521],因此必须要求目标内核(2.6.33-110.el6.x86_64)对该型号网卡[8086:1521]的支持。

05、查看目标内核的网卡驱动是否支持当前型号网卡

可以通过modinfo命令查看*.ko对哪种设备型号的支持,目标内核(2.6.33-110.el6.x86_64)的相关驱动可在/lib/modules/2.6.33-110.el6.x86_64的目录中找到,如下所示:

#modinfo /lib/modules/2.6.33-110.el6.x86_64/kernel/drivers/net/igb/igb.ko

filename: igb.ko

version: 2.1.0-k2

license: GPL

description: Intel(R) Gigabit Ethernet Network Driver

author: Intel Corporation,

srcversion: 412D1CB4C85682CBF07976F

alias: pci:v00008086d000010D6sv*sd*bc*sc*i*

alias: pci:v00008086d000010A9sv*sd*bc*sc*i*

alias: pci:v00008086d000010A7sv*sd*bc*sc*i*

alias: pci:v00008086d000010E8sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Dsv*sd*bc*sc*i*

alias: pci:v00008086d000010E7sv*sd*bc*sc*i*

alias: pci:v00008086d000010E6sv*sd*bc*sc*i*

alias: pci:v00008086d00001518sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Asv*sd*bc*sc*i*

alias: pci:v00008086d000010C9sv*sd*bc*sc*i*

alias: pci:v00008086d00001516sv*sd*bc*sc*i*

alias: pci:v00008086d00001511sv*sd*bc*sc*i*

alias: pci:v00008086d00001510sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Fsv*sd*bc*sc*i*

alias: pci:v00008086d0000150Esv*sd*bc*sc*i*

depends:

vermagic: 2.6.33-110.el6.x86_64 SMP mod_unload modversions

从以上信息中找不到[8086:1521]的信息,因此,目标内核(2.6.33-110.el6.x86_64)网卡驱动不支持当前网卡!

06、到官网下载网卡驱动

既然已经明确了目标内核的网卡驱动并不支持当前的网卡设备,也就是说一旦启用新的内核,将导致系统无法正常使用网络功能。如果是英特尔的网卡设备,则可到:http://www.intel.cn/content/www/cn/zh/homepage.html 下载所需的驱动源码到本地。

07、编译网卡驱动

解压驱动源码后,按照以下命令格式编译驱动源码:

#make BUILD_KERNEL=2.6.33-110.el6.x86_64

以上命令将会生成网卡驱动igb.ko。其中BUILD_KERNEL指明需要为哪个内核编译驱动,默认是给当前正在运行的内核编译,在此我们设定为目标内核(2.6.33-110.el6.x86_64)。那么又该如何查看新生成的网卡驱动igb.ko是否支持当前的网卡设备呢?

08、检查网卡驱动是否支持当前网卡

步骤⑦将会生成网卡驱动igb.ko,这时可通过modinfo命令验证该驱动是否支持网卡设备[8086:1521],如下所示:

#modinfo igb.ko

filename: igb.ko

version: 5.2.9.4

license: GPL

description: Intel(R) Gigabit Ethernet Network Driver

author: Intel Corporation,

srcversion: E377200391EBF74638FEDA2

alias: pci:v00008086d000010D6sv*sd*bc*sc*i*

alias: pci:v00008086d000010A9sv*sd*bc*sc*i*

alias: pci:v00008086d000010A7sv*sd*bc*sc*i*

alias: pci:v00008086d000010E8sv*sd*bc*sc*i*

alias: pci:v00008086d00001526sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Dsv*sd*bc*sc*i*

alias: pci:v00008086d000010E7sv*sd*bc*sc*i*

alias: pci:v00008086d000010E6sv*sd*bc*sc*i*

alias: pci:v00008086d00001518sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Asv*sd*bc*sc*i*

alias: pci:v00008086d000010C9sv*sd*bc*sc*i*

alias: pci:v00008086d00000440sv*sd*bc*sc*i*

alias: pci:v00008086d0000043Csv*sd*bc*sc*i*

alias: pci:v00008086d0000043Asv*sd*bc*sc*i*

alias: pci:v00008086d00000438sv*sd*bc*sc*i*

alias: pci:v00008086d00001516sv*sd*bc*sc*i*

alias: pci:v00008086d00001511sv*sd*bc*sc*i*

alias: pci:v00008086d00001510sv*sd*bc*sc*i*

alias: pci:v00008086d00001527sv*sd*bc*sc*i*

alias: pci:v00008086d0000150Fsv*sd*bc*sc*i*

alias: pci:v00008086d0000150Esv*sd*bc*sc*i*

alias: pci:v00008086d00001524sv*sd*bc*sc*i*

alias: pci:v00008086d00001523sv*sd*bc*sc*i*

alias: pci:v00008086d00001522sv*sd*bc*sc*i*

alias: pci:v00008086d00001521sv*sd*bc*sc*i*

alias: pci:v00008086d00001539sv*sd*bc*sc*i*

alias: pci:v00008086d0000157Csv*sd*bc*sc*i*

alias: pci:v00008086d0000157Bsv*sd*bc*sc*i*

alias: pci:v00008086d00001538sv*sd*bc*sc*i*

alias: pci:v00008086d00001537sv*sd*bc*sc*i*

alias: pci:v00008086d00001536sv*sd*bc*sc*i*

alias: pci:v00008086d00001533sv*sd*bc*sc*i*

alias: pci:v00008086d00001F45sv*sd*bc*sc*i*

alias: pci:v00008086d00001F41sv*sd*bc*sc*i*

alias: pci:v00008086d00001F40sv*sd*bc*sc*i*

depends: hwmon

vermagic: 2.6.33-110.el6.x86_64 SMP mod_unload modversions

parm: InterruptThrottleRate:Maximum interrupts per second, per vector, (max 100000), default 3=adaptive (array of int)

parm: IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int)

parm: Node:set the starting node to allocate memory on, default -1 (array of int)

parm: LLIPort:Low Latency Interrupt TCP Port (0-65535), default 0=off (array of int)

parm: LLIPush:Low Latency Interrupt on TCP Push flag (0,1), default 0=off (array of int)

parm: LLISize:Low Latency Interrupt on Packet Size (0-1500), default 0=off (array of int)

parm: RSS:Number of Receive-Side Scaling Descriptor Queues (0-8), default 1, 0=number of cpus (array of int)

parm: VMDQ:Number of Virtual Machine Device Queues: 0-1 = disable, 2-8 enable, default 0 (array of int)

parm: max_vfs:Number of Virtual Functions: 0 = disable, 1-7 enable, default 0 (array of int)

parm: MDD:Malicious Driver Detection (0/1), default 1 = enabled. Only available when max_vfs is greater than 0 (array of int)

parm: QueuePairs:Enable Tx/Rx queue pairs for interrupt handling (0,1), default 1=on (array of int)

parm: EEE:Enable/disable on parts that support the feature (array of int)

parm: DMAC:Disable or set latency for DMA Coalescing ((0=off, 1000-10000(msec), 250, 500 (usec)) (array of int)

parm: LRO:Large Receive Offload (0,1), default 0=off (array of int)

parm: debug:Debug level (0=none, ..., 16=all) (int)

终于在显示的信息中找到了[8086:1521]信息,说明新生成的驱动文件能够支持当前网卡型号。那么如何让目标内核(2.6.33-110.el6.x86_64)能够载入新驱动呢?

09、更新目标内核驱动

首先,将新驱动igb.ko拷贝到目标内核/lib/modules/2.6.33-110.el6.x86_64下的指定目录

#cp igb.ko /lib/modules/2.6.33-110.el6.x86_64/kernel/drivers/net/igb/

其次,使用depmod更新目标内核(2.6.33-110.el6.x86_64)模块的依赖关系

#depmod -a 2.6.33-110.el6.x86_64

10、以上工作完成后,可以重启系统了!

linux网卡驱动内核文件目录,LINUX内核升级更新网卡驱动相关推荐

  1. win11怎么升级更新显卡驱动

    现在很多用户都安装了最新的Win11系统,很多时候我们需要更新升级显卡驱动才能正常使用,那么win11怎么升级更新显卡驱动,我们一起来看看win11升级更新显卡驱动的方法吧. 工具/原料: 系统版本: ...

  2. Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令

    ls 显示文件和目录列表 -l 列出文件的详细信息 -a 列出当前目录所有文件,包含隐藏文件 mkdir 创建目录 -p 父目录不存在情况下先生成父目录 cd 切换目录 touch 生成一个空文件 e ...

  3. 蓝牙开关消失修复记录(win10 技嘉WiFi主板):更新蓝牙驱动不行的话,试一下更新WiFi驱动

    前几天 蓝牙开关 又突然 消失 了,如下图 在网上找了很多方法,都不行: 更新蓝牙驱动,重启电脑. 结果:失败 win+R,输入services.msc,重启蓝牙服务,重启电脑.结果:失败 卸载蓝牙驱 ...

  4. R710后台更新网卡驱动

    dell的服务器网卡Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet在负载高的情况下会出现无故中断,重启网卡就好了,必须要更新网卡驱 ...

  5. linux 内核 网卡驱动 移植,Linux内核移植步骤_添加DM9000网卡驱动(设备树).docx

    Linux内核移植步骤_添加DM9000网卡驱动(设备树) Linux内核移植步骤2015年05月13日星期三上午 11:05往设备树中添加网卡驱动:1.选平台,指定交叉编译工具链:(1).在Make ...

  6. linux 编译3g驱动_linux重新编译内核

    1.内容简介 linux内核简介 linux内核版本号 linux为什么重新编译内核 linux内核编译模式 linux内核功能划分 linux内核编译步骤 2linux内核简介 内核,是一个操作系统 ...

  7. linux内核源码合并升级,Linux内核升级

    Linux内核升级 发布时间:2007-09-19 09:31:02来源:红联作者:fortemedia 自己想升级一下linux的内核,原来的版本是linux-2.6.18,下载的内核源码版本是li ...

  8. linux内核网络协议栈--数据包的网卡缓冲区(二十四)

    程序员可能关心的基本网卡知识 网卡相关介绍:http://www.linuxidc.com/Linux/2012-12/77132.htm 一.什么是网卡? 它是主机的网络设备,本身是LAN(局域网) ...

  9. 显示驱动包含在Linux内核层,驱动程序层(上) - Linux内核--网络栈实现分析_Linux编程_Linux公社-Linux系统门户网站...

    经过前面两篇博文的分析,已经对Linux的内核网络栈的结构有了一个模糊的认识,这里我们开始从底层开始详细分析Linux内核网络栈的实现.由于这是早期版本,代码的层次隔离做的还不是很好,这里说是从底层分 ...

最新文章

  1. innodb和myisam的区别
  2. 前阿里资深运营王殿进:SaaS产品经理所面临的苦恼
  3. 使用TensorFlow进行鬼写
  4. linux php自动执行_linux下实现定时执行php脚本
  5. arch linux简体中文,User-mode Linux (简体中文)
  6. php 正则匹配 %3e,在shell脚本中使用正则表达式
  7. linux下boost库链接动态库失败
  8. mc有什么红石机器人_我的世界:mc玩家与非mc玩家眼中的世界,测一测你mc中毒有多深...
  9. SendMessageTimeOut函数使用方法
  10. 配置 Ubuntu 字符界面启动
  11. linux 清除安装失败的文件夹,恢复Linux误删除文件系列之foremost安装工具使用方法...
  12. 地理空间数据可视分析综述笔记
  13. 前端基础之HTML5音视频标签(video/audio)讲解
  14. android 天气类应用,一周天气预报!7款另类Android天气应用
  15. 某个个人公众号阅读量和点赞数分析
  16. catia利用宏批量改名的方法_CATIA批量改名功能大揭秘
  17. 《饥荒》利用LUA脚本点亮全地图,没有黑夜
  18. 利器解读——Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术
  19. 数据库设计之实施与维护
  20. 博通Broadcom SDK源码学习与开发3——Cable Modem Docsis3.0

热门文章

  1. [渗透]缓慢的HTTP拒绝服务攻击原理、利用和防范
  2. 关于Android studio Translation插件提示“更新 TKK 失败,请检查网络连接”问题
  3. 基于vc的freetype字体轮廓解析_字体术语集
  4. PL-PS 接口说明
  5. java后端实现集成支付宝APP支付(沙箱环境)
  6. 购物页面点叉号二维码隐藏的做法
  7. matlab保存nii_Matlab实现NIfTI(ANALYZE)核磁共振图像读写
  8. 大健康产业B2B2C多用户电商平台开发,开启数字化消费新蓝海
  9. python excel条件格式_关于python调用Excel“条件格式”——二探openpyxl
  10. 冷库设计安装前有哪些检查工作