搜索
查看: 887|回复: 0
收起左侧

[虚拟机] Hyper直通网卡流程

[复制链接]
admin 发表于 2022-7-16 09:17:16 | 显示全部楼层 |阅读模式
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[0]
       $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。这个命令有概率不检查去重,会导致你的虚拟机无法启动。如果遇到这种情况,那么先把设备从虚拟机里移除,然后重新添加一次。


回复 论坛版权

使用道具 举报

ahome_bigavatar:guest
ahome_bigavatar:welcomelogin
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|首页 ( 冀ICP备2021005225号-1 ) |网站地图

GMT+8, 2024-6-13 02:27 , Processed in 0.555662 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 ELITE论坛【技术无价-分享快乐】

快速回复 返回顶部 返回列表