在 Proxmox VE 中,我们经常会将某块物理网卡 PCI 直通给虚拟机(例如 iKuai、OpenWRT 等软路由),但一旦直通后,该网卡会被系统挂载到 vfio-pci
驱动中,宿主机无法再直接使用这块网卡。
本文介绍如何将已直通的网卡(如 enp4s0
)解绑 VFIO 并绑定回原生驱动,从而让 PVE 宿主机再次识别并使用。
1️⃣ 查看当前网卡绑定状态
lspci -nnk | grep -A3 -i ethernet
示例输出:
04:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller I226-V [8086:125c] (rev 04)
Subsystem: Intel Corporation Ethernet Controller I226-V [8086:0000]
Kernel driver in use: vfio-pci
Kernel modules: igc
说明该网卡目前仍然在 vfio-pci 直通状态。
2️⃣ 解绑 VFIO 驱动
执行以下命令将设备从 vfio 中解绑:
echo 0000:04:00.0 > /sys/bus/pci/drivers/vfio-pci/unbind
其中0000:04:00.0
是该网卡的 PCI 地址,可从lspci
命令中获取。
3️⃣ 绑定回宿主机原生驱动(igc)
该设备是 Intel I226-V 网卡,使用的是 igc
驱动。执行绑定:
echo 0000:04:00.0 > /sys/bus/pci/drivers/igc/bind
4️⃣ 验证绑定状态
再次运行:
lspci -nnk | grep -A3 04:00.0
期望输出应为:
Kernel driver in use: igc
5️⃣ 查看设备是否重新出现
ip link
你应该能看到 enp4s0
已经回归并可用于网络配置。
6️⃣ 重载网络配置
ifreload -a
或者单独启用 bridge:
ifup vmbr1
🧹 可选清理:取消开机自动直通
如果你不再打算将该网卡用于 PCI 直通,建议清除模块绑定配置:
编辑模块配置文件(如存在):
nano /etc/modprobe.d/vfio.conf
注释掉以下内容:
options vfio-pci ids=8086:125c
然后更新 initramfs:
update-initramfs -u
✅ 总结
操作步骤 | 命令 | |
---|---|---|
查看驱动绑定状态 | `lspci -nnk | grep -A3 -i ethernet` |
解绑 vfio 驱动 | echo 0000:04:00.0 > /sys/bus/pci/drivers/vfio-pci/unbind | |
绑定 igc 驱动 | echo 0000:04:00.0 > /sys/bus/pci/drivers/igc/bind | |
检查是否回归系统 | ip link | |
重载网络配置 | ifreload -a 或 ifup vmbr1 |
现在,enp4s0
已可正常用于 Proxmox 的网络桥接(如 vmbr1
),可以继续用于虚拟机内网或管理用途。
评论 (0)