问题表现形式
登陆时输入正确的账户和密码,界面一直在loading状态,输入错误的密码会提示密码错误。
与此同时,在网页上可以成功登陆苹果开发者网站,说明不是网络或与服务器连接上出现问题。
出现问题的原因
在登陆app atore 或添加Xcode账户的时候,需要验证apple id。苹果在验证时会检查机器的smbios 信息,如果不是 mac 机器,就不让登录,虚拟机也不行。
进入虚拟机后,点击左上角-关于本机 可查看虚拟机固件情况。
如果是未经修饰的虚拟机,下面序列号等信息都为空
解决办法
在VirtualBox的配置文件中有“ExtraData”部分,可以通过修改配置文件的方法,伪造出虚假的smbios信息。
如何获得虚假的smbios信息
可以通过下载Chameleon-Wizard 软件或者Clover Configurator软件进行配置。
配置方法比较傻瓜,选一个想要的型号,就会自动生成。最后保存为一个plist文件,需要的信息都在里面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <ExtraDataItem name="GUI/InformationWindowGeometry" value="0,45,1440,800,max"/> <ExtraDataItem name="GUI/LastCloseAction" value="PowerOff"/> <ExtraDataItem name="GUI/LastNormalWindowPosition" value="623,199,512,405"/> <ExtraDataItem name="GUI/LastScaleWindowPosition" value="400,194,640,480"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" value="Mac-06Fxxxx93F0323C5"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardSerial" value="C025xxxx0CDGDQPCB"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemFamily" value="MacBook Pro"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" value="MacBookPro11,4"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" value="C02PQ4ZBG8WL"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemUuid" value="CAFECAFE-xxxx-CAFE-CAFE-DECAFFDECAFF"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiOEMVBoxVer" value="string:1"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiOEMVBoxRev=" value="string:.23456"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSVersion" value="MBP114.88Z.F000.B00.1906140921"/> <ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSReleaseDate=" value="06/14/2019"/> <ExtraDataItem name="VBoxInternal/Devices/smc/0/Config/DeviceKey" value="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"/> <ExtraDataItem name="VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" value="1"/> <ExtraDataItem name="VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant" value="1"/>
|
通过配置命令修改信息
cd至virtualbox目录下
执行 VBoxManage setextradata "OSName" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro11,3"
修改SystemProduct信息
其他信息类似
在虚拟机已经建立后,这种方法不一定能够成功修改,慎用
通过脚本直接新建虚拟机,在脚本里写上配置参数
此方法参考开源项目macos-guest-virtualbox
具体步骤:
- 将工程下载或pull到本地
- 升级bash到bash4.0 参考Mac更新bash至4-0以上
- 安装依赖 bash coreutils wget unzip dmg2img
- 按照前面生成的plist信息修改脚本文件
- cd 到目录下运行脚本 $ ./macos-guest-virtualbox.sh
- 一路enter,选择一下os版本,然后看提示信息一路enter
最后虚拟机建立好后,可以看到虚拟机的信息已经跟真机类似了,而且跟我们配置的参数一样,后面xcode的账户果然也可以正常登录
其他问题
vmware虚拟机相同问题
同样的,如果vmware出现相同问题,也可以通过修改配置文件的方法解决,具体参考:
https://www.insanelymac.com/forum/topic/292170-how-to-spoof-real-mac-in-vmware/?page=1
https://www.insanelymac.com/forum/topic/309654-run-vanilla-os-x-el-capitan-sierra-high-sierra-or-mojave-in-virtualbox-5xx-on-a-windows-host/