释放 PCI 直通网卡 enp4s0 并恢复给宿主机使用

moonjerx
2025-06-13 / 0 评论 / 2 阅读 / 正在检测是否收录...

在 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 -nnkgrep -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 -aifup vmbr1

现在,enp4s0 已可正常用于 Proxmox 的网络桥接(如 vmbr1),可以继续用于虚拟机内网或管理用途。


0

评论 (0)

取消

您的IP: