lspci -nn | grep -i -e net -e ethernet # PCI 設備列表,確認硬件存在
ip link show # 內核是否創建網卡接口
dmesg -T | grep -i -e eth -e enp -e rtl -e igb -e bnx2 # 內核驅動探測日誌
若 lspci 看到設備但 ip link 無對應接口,基本確認為「驅動缺失」或「驅動未綁定」。
lspci -nnk | grep -A3 -i ethernet
# 輸出示例:
# 03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 [10ec:8168]
# Kernel driver in use: r8169
# Kernel modules: r8169, r8168
記下 PCI ID (10ec:8168)、當前驅動、可用模組。常見映射:
| 廠商/晶片 | 主線驅動 | 廠商增強驅動 | 適用場景 |
|---|---|---|---|
| Realtek RTL8111/8168/8125/8126 | r8169 | r8168 (Realtek 官方)、r8125, r8126 | r8169 功耗管理/喚醒/2.5G/5G 協商常有 Bug,建議用廠商驅動 |
| Intel I219/I225/I350/X550 | e1000e / igc / ice | Intel 官方 e1000e/igc/ice (源碼同主線) | 主線通常足夠,新晶片需新內核 |
| Broadcom BCM5719/5720/574xx | bnxt_en / tg3 | Broadcom 官方同源 | 需 firmware 文件 (linux-firmware 包) |
| Mellanox ConnectX-4/5/6 | mlx5_core | OFED 堆疊 | RDMA/RoCE 需用戶態庫 |
# Ubuntu: 安裝 HWE 內核
sudo apt install linux-generic-hwe-22.04
# Fedora/RHEL: 更新至最新內核
sudo dnf update kernel
# Debian: backports 內核
sudo apt -t bookworm-backports install linux-image-amd64
# Ubuntu/Debian
sudo apt install dkms build-essential linux-headers-$(uname -r)
# 下載 Realtek 官方 r8168/r8125/r8126 源碼壓縮包
tar xf r8168-8.052.00.tar.bz2
cd r8168-8.052.00
sudo ./autorun.sh # 自動編譯、安裝、註冊 DKMS、更新 initramfs
# 或使用第三方 PPA (Ubuntu)
sudo add-apt-repository ppa:kelebek333/kernel-ppa
sudo apt update && sudo apt install r8168-dkms
make clean
make -j$(nproc)
sudo make install
sudo depmod -a
sudo modprobe r8168 # 或對應模組名
# 禁用舊驅動
echo "blacklist r8169" | sudo tee /etc/modprobe.d/blacklist-r8169.conf
sudo update-initramfs -u
ip link show dev enp3s0 # 接口出現
ethtool -i enp3s0 # driver: r8168, version: 8.052.00
nmcli device status # NetworkManager 識別
systemctl restart NetworkManager # 重新載入
# 寫入 /etc/modules-load.d/ 確保開機自動加載
echo "r8168" | sudo tee /etc/modules-load.d/r8168.conf
部分網卡(尤其是 Broadcom、Mellanox、Intel 某些新晶片)需要二進制固件文件:
dmesg -T | grep -i firmware
# 輸出:Direct firmware load for bnxt/bnxt-1.10.0.fw failed with error -2
sudo apt install linux-firmware # Debian/Ubuntu
sudo dnf install linux-firmware # Fedora/RHEL
# 或從 linux-firmware.git 手動放入 /lib/firmware/
virtio_net、virtio_pci,現代發行版默認包含。vmxnet3 模組,安裝 open-vm-tools。hv_netvsc,安裝 linux-tools-virtual / hyperv-daemons。lspci -nn 確認硬件存在並獲取 PCI ID。lspci -nnk 查看當前驅動與可用模組。linux-firmware 包是否安裝。ethtool -i。按此流程,99% 「Linux 識別不到網卡」問題可在 10 分鐘內解決。