注意:看到有不少朋友问虚拟机之间不能访问,或者宿主和虚拟机不能互访。请仔细观看视频内的操作录屏:各个虚拟机设置中——网络适配器——高级设置里面需要勾选打开mac欺骗,打开它避免出现拨号不成功,或者没法互访的情况。视频中有手动安装i225网卡驱动的方法。
老高往期回顾:
上期咱们做了N5105在PVE和Hyper-V下多个系统的安装,发现N5105在PVE7.1-12下暂时不能直通核显给虚拟的Windows系统。分析了目前Linux内核平台暂时无法对11代及以上的核显直通的情况,另辟蹊径:通过安装WinServer2019,在intel的win平台核显驱动加持下,成功吃上emby等媒体服务器的全部硬解解码器,可以正常硬解、推流和转码。后发现令人遗憾的被intel和Microsoft 联手坑了一把,原本以为通过winserver系统可以打开隐藏属性打开新技能SR-IOV虚拟网卡技术,原来是个伪SR-IOV!?与其看着伪SR垂涎三尺,不如干脆搞一下Hyper-V下的网卡直通。下面我们开始了……
声明:爱折腾的老高视频及技术交流群仅供数码爱好者正规合法讨论技术交流。不涉及任何违法违规技术交流。请不要在评论或私聊中提及任何违法违规技术问题,一概不予回答谢谢合作。请各位朋友不在在群中讨论任何相关违法违规及风险问题,群规见群公告。所分享资源均来自互联网公开资源,均有其各自的作者和出处,尊重知识产权。相关设备和服务请购买正版。各厂商服务商请不要群内发广告、图片及二维码等。如有合作意向,敬请与老高联系:QQ 86549271
您的订阅关注点赞分享充电打赏(三连投币分享)是对老高最大的支持和鼓励!看完片子,加爱折腾的群和讨论组:https://diyforfun.565856.xyz/
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。这个命令有概率不检查去重,会导致你的虚拟机无法启动。如果遇到这种情况,那么先把设备从虚拟机里移除,然后重新添加一次。
您的订阅关注点赞分享充电打赏(三连投币分享)是对老高最大的支持和鼓励!看完片子,加爱折腾的群和讨论组:https://diyforfun.565856.xyz/