Hyper直通网卡流程
1、步骤一:获取设备路径(Location Path)查询所有网卡的设备序号ID
#获取所有名称以Intel(R) Ethernet Controller开头的设备
$pnpdevs = Get-PnpDevice -PresentOnly | Where-Object {$_.FriendlyName -like "Intel(R) Ethernet Controller*"}
#输出LocationPath
foreach ($pnpdev in $pnpdevs) {
$locationpath = ($pnpdev | get-pnpdeviceproperty DEVPKEY_Device_LocationPaths).data
$pnpdev.FriendlyName + ": " + $locationpath
}
在我的机器上,可以得到下面的输出
eth0:Intel(R) Ethernet Controller (3) I225-LM: PCIROOT(0)#PCI(1C04)#PCI(0000)
eth1:Intel(R) Ethernet Controller (3) I225-LM #2: PCIROOT(0)#PCI(1C05)#PCI(0000)
eth2:Intel(R) Ethernet Controller (3) I225-LM #3: PCIROOT(0)#PCI(1C06)#PCI(0000)
eth3:Intel(R) Ethernet Controller (3) I225-LM #4: PCIROOT(0)#PCI(1C07)#PCI(0000)
步骤二:禁用设备
以直通eth0,eth1,eth2三个网卡为例
Windows设备管理器,找到想要直通的网卡,记住他的序号,和ID。然后右键禁用eth0,eth1,eth2三个网卡
步骤三:下线(Dismount)设备
——更准确的说应该叫做卸载(相对于挂载来说,相当于把这个设备从Windows中卸载,不让Windows对它占用)
以直通eth0,eth1,eth2三个网卡为例。
需要运行命令如下:
Dismount-VmHostAssignableDevice -locationpath "PCIROOT(0)#PCI(1C04)#PCI(0000)" -force
Dismount-VmHostAssignableDevice -locationpath "PCIROOT(0)#PCI(1C05)#PCI(0000)" -force
Dismount-VmHostAssignableDevice -locationpath "PCIROOT(0)#PCI(1C06)#PCI(0000)" -force
步骤四:分配设备
要想直通的网卡指派给指定的虚拟机,也就是直通给它独占使用了。
比如我想直通eth0和eth1给iKuai,分别作为WAN和LAN
直通eth2给OpenWRT
其他不费流量的走内部交换
#直通eth0给iKuai
Add-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(1C04)#PCI(0000)" -VMName iKuai
#直通eth1给iKuai
Add-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(1C05)#PCI(0000)" -VMName iKuai
#直通eth2给OpenWRT
Add-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(1C06)#PCI(0000)" -VMName OpenWRT
分配完成可输入命令检查是否成功:
Get-VMAssignableDevice -VMName iKuai
Get-VMAssignableDevice -VMName OpenWRT
看看输出内容里直通的网卡有没有成功加上,成功的会显示该直通网卡的ID
以上为Hyper-V直通网卡给指定虚拟机的流程,完成之后需要进入相应的虚拟机里对该网卡设置才可以使用。(比如iKuai里需要将直通网卡绑定WAN和LAN)
将设备从虚拟机里移除:
此处还是以iKuai和OpenWRT为例
iKuai
关闭虚拟机。然后运行:
# 将设备从虚拟机里移除
Remove-VMAssignableDevice -VMName iKuai -LocationPath "PCIROOT(0)#PCI(1C04)#PCI(0000)"
Remove-VMAssignableDevice -VMName iKuai -LocationPath "PCIROOT(0)#PCI(1C05)#PCI(0000)"
# 挂载设备回WinServer系统
Mount-VMHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(1C04)#PCI(0000)"
Mount-VMHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(1C05)#PCI(0000)"
然后在Win的设备管理器里重新启用设备。
OpenWRT
关闭虚拟机。然后运行:
# 将设备从虚拟机里移除
Remove-VMAssignableDevice -VMName OpenWRT -LocationPath "PCIROOT(0)#PCI(1C06)#PCI(0000)"
# 挂载设备回WinServer系统
Mount-VMHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(1C06)#PCI(0000)"
然后在Win的设备管理器里重新启用设备。
注意事项
同一个设备只需要跑一次 Add-VMAssignableDevice。这个命令有概率不检查去重,会导致你的虚拟机无法启动。如果遇到这种情况,那么先把设备从虚拟机里移除,然后重新添加一次。
页:
[1]