珂珂的个人博客 - 一个程序猿的个人网站

Hyper-V 安装OpenWRT

以前尝试过但是上不了网,今天又来尝试。

先用StarWind V2V Image Converter  把下载回来的OpenWRT img转成vhdx 文件,因为我是使用第二代虚拟机。

新建OpenWRT 虚拟机,选择这个转换后的vhdx,  关闭UEFI 的安全引导(取消勾选启用安全启动) 

操作完后启动虚拟机很快就好了,这个openwrt 默认用eh0 作为Lan ,eth1 做为wan  ,什么都不用管了。


不知为何Hyper-V没有 Esxi那样的直接操作PCIE设备直通,只能用powershell。

首先按网上说的直通网卡方法

先在设备管理器禁用网卡,然后找到网卡硬件位置

然后在以管理员powershell 执行

Dismount-VMHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(1303)#PCI(0000)" -Force  

Add-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(1303)#PCI(0000)" -VMName "OpenWRT"  

然后在Hyper-V虚拟机中设置中禁用掉检查点

自动停止操作改为关闭来宾操作系统,我这里因为虚拟机正在运行所以不能选。

做完这些启动虚拟机,我是弹出错误框,监控程序对于该用户不可用,无法启动虚拟机,不知是不是因为host是windows10 还是因为上面的操作不对。

将设备挂载回Host 的命令

Remove-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(1303)#PCI(0000)" -VMName "OpenWRT"  

Mount-VMHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(1303)#PCI(0000)"  


既然不能直通,那么就用虚拟网卡。首先在eth0 上新建外部交换机Switch0,允许操作系统共享此网络适配器,将该交换机分配给OpenWRT作为eth0  LAN口使用;

然后在eth1 上新建外部交换机,不勾选允许操作系统共享此网络适配器,该网络作为OpenWRT的 eth1  作为WAN 口使用。

然后把外网插到host的 eth1 上,  host的eth0接电脑,发现电脑能上网,再回到host 发现host也能上网。

然后把eth0上接的电脑拔掉,惊奇发现host 不能上网,这里就解释了为什么很久以前装的openwrt无法上网,也就是说eth0上必须有设备连接。。。这是什么操作。因为我的host是4网口的,还可以把物理机的eth0 和 eth3  用网线连接起来,这样也能上网.... 


2023.8.30 

        尝试在windows10 的hyper-v中添加一个内部交换机,放在eth0  宿主机可以获取到ip  ,再添加一个外部交换机eht2  (eth1已作为wlan)   发现eht2获取不到ip  ,后面删除内部交换机,添加外部交换机作为eth0  但不管勾不勾选允许操作系统共享此网络适配器,好像宿主机都不能获取到IP ,eth0换默认交换机仍然不行。更令人抓狂的是hyper-v操作缓慢,虚拟机列表都加载不出来了,起初以为docker什么的卸载了几个软件还是不行,而且操作系统感觉都无法正常关闭了。 又重装了win10 ltsc  ,仍然有上述问题。

        只好换操作系统windows server 2022  又发现dch核显驱动无法安装。windows server 2022的hyper-v 操作起来比较顺畅了不会出现之前win10加载虚拟机列表的情况,而且发现没有win10上删不掉的默认交换机,还多了个sriov的选项。另外发现好像仍然有上面eth顺序的问题,但没有上述eth0上必须接有设备宿主机才能上网的情况。然后发现windows server 上的hyper-v 用上述命令直通后可以启动不会报错,但出现新的问题 eth1 无法拨号了!折腾到好晚。。。



上一篇:个人代码全部开源

下一篇:centos stream 9部署strongswan


0 评论

查看所有评论

给个评论吧