在 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/bind4️⃣ 验证绑定状态
再次运行:
lspci -nnk | grep -A3 04:00.0期望输出应为:
Kernel driver in use: igc5️⃣ 查看设备是否重新出现
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)