centos网卡驱动如何弄
小樊
47
2025-12-23 14:34:39
CentOS 网卡驱动处理全流程
一、准备与诊断
- 确认网卡型号与当前驱动
- 查看网卡型号:lspci | grep -i ethernet
- 查看当前驱动与版本:ethtool -i <接口名>(如 eth0;接口名可用 ip link 查看)
- 准备编译环境(驱动源码安装时需要)
- 安装内核头文件与编译工具(版本需与当前运行内核一致):yum install -y gcc kernel-devel kernel-headers
- 确认版本匹配:uname -r 与已安装的 kernel-devel 版本一致
- 驱动获取途径
- 优先查厂商官网(如 Intel、Realtek)获取对应 Linux 驱动源码包(.tar.gz);若服务器无外网,可在其他机器下载后通过 U 盘/内网镜像拷贝到目标机。
二、安装或更新驱动(源码编译方式)
- 基本步骤
- 解压驱动包:tar xzf <驱动包>.tar.gz
- 进入源码目录(常见为 src/):cd <驱动包>/src
- 编译:make
- 安装:make install
- 更新模块依赖:depmod -a
- 加载新驱动:modprobe <驱动名>(如 modprobe e1000e;如为更新需先卸载旧模块:rmmod <旧驱动名>)
- 验证加载:lsmod | grep <驱动名>;查看接口:ip link;查看驱动信息:ethtool -i <接口名>
- 使配置持久化
- 开机自动加载:在 /etc/modules 中加入一行 <驱动名>(如 e1000e)
- 如为更新驱动,建议重启验证:reboot
- 常见报错与处理
- 报错“Kernel header files not in any of the expected locations”:安装匹配版本的 kernel-devel 与 gcc 后重试
- 接口名不是 eth0:这是 CentOS 7+ 的新命名(如 ens33/enp0s3),属正常;如需传统名可在 /etc/default/grub 添加 net.ifnames=0 biosdevname=0 后执行 grub2-mkconfig -o /boot/grub2/grub.cfg 并重启(修改前请评估业务影响)
三、常见厂商驱动示例
- Intel 系列(如 I219-V/I219-LM,驱动名 e1000e)
- 确认型号:lspci | grep -i ethernet 看到 I219 等字样
- 从 Intel 下载中心获取 e1000e 源码包(Linux 版)
- 按“源码编译方式”安装并加载:make && make install && depmod -a && modprobe e1000e
- 验证:lsmod | grep e1000e、ethtool -i <接口名>
- Realtek 系列(如 RTL8111/8168,常见驱动 r8168)
- 安装依赖:yum install -y gcc kernel-devel kernel-headers
- 获取 r8168 驱动源码,进入 src/ 目录
- 编译安装:make clean modules && make install
- 加载模块:depmod -a && insmod ./src/r8168.ko(或 modprobe r8168)
- 验证:lsmod | grep r8168、ethtool -i <接口名>
四、无法联网时的离线处理
- 在有网环境下载驱动包与所需 rpm(如 gcc、kernel-devel、kernel-headers),拷贝到目标机
- 使用 U 盘/内网 HTTP/NFS 安装 rpm 与驱动源码
- 完成编译安装与 modprobe 后,先 ip link 确认接口出现,再配置 IP(如 nmcli/ifcfg 文件)并测试连通性。