在linux系统中突然找不到网卡设备会让机器无法接入网络,这种现象常发生在重装系统、内核升级或迁移虚拟机之后。排查时应从硬件识别、驱动加载和系统配置三个层面入手。

如何确认网卡是否被系统识别
首先使用以下命令查看pci总线上的网络设备:
lspci | grep -i ethernet lspci | grep -i network
如果命令有输出,说明硬件已被识别,问题多在驱动或配置。若没有任何结果,应检查物理连接、bios中是否禁用网卡,或虚拟机是否正确挂载了网卡。
查看内核是否加载了网卡驱动
通过ip和ethtool确认设备节点是否存在:
ip link show ls /sys/class/net/
若看不到eth0、ens33等接口,用如下命令检查对应模块:
lspci -k | grep -A 3 Ethernet modprobe e1000 dmesg | tail
常见修复方式
- 安装缺失的固件或驱动包,如linux-firmware
- 在/etc/network/interfaces或NetworkManager中启用网卡
- 禁用网卡后重新启用:ip link set ens33 up
使用配置文件固定网卡
以ubuntu为例,可在netplan中写明:
network:
version: 2
ethernets:
ens33:
dhcp4: true应用配置:
netplan apply
当设备彻底不显示时
若为虚拟机,确认网卡类型选为e1000或virtio,并在宿主机上检查网桥。物理机可进bios开启Onboard LAN,或在linux下用lspci -vv查看设备是否报错。
注意:修改内核模块前请备份initramfs,避免重启后无法进入系统。
按照上述步骤基本能解决linux找不到网卡设备的问题,核心是确认硬件在、驱动活、配置对。