去年双十一的时候我新组了个台式机, 因为Win11才能发挥出大小核的性能所以被迫装了Win11, 结果发现现在的Win11比之前强多了, 已经基本上可用了. 正巧前段时间接了个外包, 需要开发ios端, 另外crp也需要适配macos和ios, 所以需要装个黑苹果虚拟机. 之前在旧电脑上我装过一个vmware的黑苹果虚拟机, 本来想直接拷过来然后关下hyperv就能用, 结果不知道因为是新平台还是新系统, 加了一大堆安全功能, 怎么关都关不掉, google了两天两夜才解决, 踩了不少坑, 考虑到网上根本搜不到我的经历, 所以很有必要记录一下.
1. 关闭内存完整性(不知道需不需要关)
Windows安全中心 - 设备安全性 - 内核隔离 - 内存完整性 - 关
其实我也不知道需不需要关, 反正网上都说要关, 那就关掉吧(逃
2. 创建关闭hyperv的启动项
根据我在旧电脑上关hyperv的经验, 接下来只需要在启动项里将hypervisorlaunchtype设为Off即可. 但因为我同时还想用wsl2和docker, 所以选择新建一个关闭hyperv的启动项, 这样在开机的时候就可以选择是用vmware还是wsl2了, 具体步骤可以参考我之前写的文章: https://dawncraft.cc/2021/04/85/ 的第8条, 别忘了把Windows 10改成Windows 11, 当然不改也行, 11就是10换皮(doge
3. 啊嘞, 怎么不行嘞
重启, 选择关闭了hyperv的启动项, 然后进系统, 打开vmware发现还是报错, 而且看msinfo32里hyperv并没有关掉, 再打开命令提示符, 敲bcdedit看hyperv确实是关的啊, 直接给我干蒙蔽了
上google搜了一圈(一天一夜), 原来是因为需要关掉DG(Device Guard)和VBS(Visual Basic ScriptVirtualization Based Security, 基于虚拟化的安全),其中DG不知道需不需要关, 网上说要关我就关了, 懒得测是不是真的需要关了, VBS是必须要关的
PS: 泥萌造缩写星人不造缩写是会死吗, 我不搜完全看不出来VBS是什么意思, 还以为是VB呢, 还有DG, 不知道的还以为是DiskGenius呢(
4. 关闭Device Guard
网上有n种方法去关, 看哪个好使用哪个, 我都贴出来, 但是实测只有脚本好使, 剩下的组策略和注册表都不好使, 不知道微软一天天都在改点啥呢
方法一(不好使): 去组策略关, 计算机配置 - 管理模板 - 系统 - Device Guard - 打开基于虚拟化的安全
, 设置为已禁用
方法二(不好使): 去注册表关, 打开注册表编辑器, 进入路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard
, 找到名为Enable Virtualization Based Security
的项, 将其值设置为0
方法三(好使, 把整个DG全关掉): 从 Microsoft 下载中心下载 Device Guard and Credential Guard hardware readiness tool, 然后用有管理员权限的PowerShell执行这个脚本, 命令如下:
.\DG_Readiness_Tool_v3.6.ps1 -Disable
然后重启电脑, 如果不出意外会进入两个uefi界面, 一个是按F3禁用Device Guard, 另一个是禁用Credential Guard, 实测下来只需要禁用DG
但是意外永远先来到, 重启之后直接进系统了, 没有进这个uefi界面, 研究了一晚上发现是因为我是在禁用了hyperv的启动项里运行的脚本, 然后默认启动项是启用了hyperv的, 这样的话在换启动项会写efi分区,把配置给覆盖掉了. 解决方案也很简单, 暂时把禁用hyperv的启动项设成默认启动项就好了, 全配完再改回来(毕竟我用vmware是少数, 大部分情况下是用wsl2的)
然后就可以关了, 界面如下图所示(这个是CG的我没关, 后面是DG的关了, 界面差不多我就没拍照):
参考资料: 为你的电脑关闭 Device/Credential Guard – Windows11,windows 10,虚拟机,VM虚拟机 – 远景论坛 – 前沿科技与智慧生态的极客社区 –
5. 关闭基于虚拟化的安全
然后重启, 卧槽, 还是不行, vmware打不开, msinfo32里看基于虚拟化的安全性也还是正在运行. 然后再google一顿狂搜, 发现VBS也是需要单独关的, 替大家试了一大堆办法, 都不好使, 就不贴出来浪费大家时间了.
最后试了半天, 唯一好用的是一个华为的脚本🤣🤣🤣, 但是这个脚本会顺便把hyperv相关的东西都卸载, 我还想用hyperv, 所以就改了下脚本, 把那些都注释掉了, 大家可以在这里下载: disable vbs
然后以管理员权限运行这个脚本(注意事项和上一条一样, 要保证在默认启动的启动项下执行脚本才行), 然后重启, 会进入一个让你关闭VBS的uefi界面, 按F3关闭即可
终于搞定了… tmd坑死老子了
6. 其他黑苹果虚拟机小寄巧
台式机用的是4k屏, 全屏之后虚拟机的分辨率会变成4k, 字特别小以至于根本看不清, 于是我想找找mac有没有缩放比例之类的设置, 结果没找到, 只找到了个hidpi, 但是虚拟机的分辨率疑似被vmware tools接管了, 不能设置, 于是尝试用命令强制开启:
sudo defaults write /Library/Preferences/com.apple.windowserver.plist DisplayResolutionEnabled -bool true sudo defaults delete /Library/Preferences/com.apple.windowserver.plist DisplayResolutionDisabled
然鹅并不行, 所以又去github上找了一个脚本和一个工具:
https://github.com/xzhih/one-key-hidpi
https://github.com/waydabber/BetterDisplay/discussions/1747#discussioncomment-5571790
还是不行, 最后我放弃了, 用vmware tools改成1080p分辨率凑合得了…
sudo /Library/Application\ Support/VMware\ Tools/vmware-resolutionSet 1920 1080