在Linux系统中,“卸载网卡”通常指从内核中移除网卡驱动模块或禁用网卡设备,这常用于硬件调试、驱动更新或解决网络冲突,以下是详细操作指南,需root权限,操作不当可能导致网络中断,请谨慎执行。
临时禁用网卡(不卸载驱动)
适用于临时关闭网络连接,重启后自动恢复。
# 或使用传统 ifconfig sudo ifconfig eth0 down
效果:网卡停止工作,但驱动仍加载在内核中。
完全卸载网卡驱动模块
这是彻底移除驱动的核心方法,需先确认网卡对应的内核模块。
步骤 1:查找网卡驱动模块名
# 通过网卡名查询(如 eth0) ethtool -i eth0 | grep driver # 输出示例:driver: e1000e # 或通过 lspci 查找(适用于PCI网卡) lspci -v | grep -i ethernet -A 10 # 找到模块名(Kernel modules: xxx)
步骤 2:卸载驱动模块
# 先禁用网卡(避免依赖冲突) sudo ip link set dev eth0 down # 卸载模块(自动处理依赖) sudo modprobe -r e1000e # 替换为你的模块名 # 验证是否卸载 lsmod | grep e1000e # 无输出表示成功
常见问题解决:
-
模块被占用:
若提示modprobe: FATAL: Module e1000e is in use
,表示有进程依赖该模块。
解决:- 关闭相关进程:
sudo killall dhclient
(释放DHCP) - 强制卸载:
sudo rmmod -f e1000e
(不推荐,可能导致系统不稳定)。
- 关闭相关进程:
-
模块有依赖:
使用modprobe -r
而非rmmod
,前者会自动卸载依赖模块。
物理移除PCIe网卡(热插拔)
适用于服务器或支持热插拔的设备。
步骤:
- 查找网卡PCI地址:
lspci | grep Ethernet # 记录设备ID(如 0000:03:00.0)
- 移除设备:
echo 1 | sudo tee /sys/bus/pci/devices/0000:03:00.0/remove
- 重新扫描PCI总线(插回网卡时):
echo 1 | sudo tee /sys/bus/pci/rescan
永久禁用网卡(重启有效)
通过内核参数阻止驱动加载:
- 编辑配置文件:
sudo nano /etc/modprobe.d/blacklist.conf
- 添加禁用规则:
blacklist e1000e # 替换为你的模块名 options e1000e max_vfs=0 # 可选:设置驱动参数为0
- 更新 initramfs:
sudo update-initramfs -u
- 重启生效。
注意事项
- 风险提示:卸载驱动会导致网络中断,SSH连接会断开,建议在本地控制台操作。
- 依赖关系:使用
modprobe -r
比rmmod
更安全,可自动处理依赖模块。 - 恢复网卡:
- 重新加载驱动:
sudo modprobe e1000e
- 启用网卡:
sudo ip link set dev eth0 up
- 重新加载驱动:
- 虚拟机环境:卸载网卡可能导致虚拟机失联,需通过管理控制台恢复。
引用说明
- Linux 内核文档:
模块管理
PCI 热插拔 - 工具手册:
man modprobe
,man lspci
,man ethtool
重要提示:操作前请备份数据,生产环境建议在专业运维人员指导下进行。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8409.html