填坑黑苹果(VMware装MacOS) - 修改 Unlocker 补丁源码版

最近闲的突然想找点事来折腾一下, 于是随着苹果的发布会就盯上自己手上的 iPhone, 也想弄个 Mac 来搞 IOS. 于是就有了这个填坑故事.

为什么要修改补丁源码:

  1. 不再苦苦去寻找和下载 drawn.iso 文件, 虽然我会告诉你这里可以下载到官网的;
  2. 遇到个错误, 既然也是搞 python 的, 那自己当然也要动手动手了.

1. 安装前

\1. 安装环境

  • Windows 10
  • VMware Pro 14

\2. 系统硬件配置

  • 内存推荐 16G 以上
  • 硬盘预留 40G 以上
  • CPU推荐 i5 8th以上

\3. 安装 MacOS 必备包

  • VMware Pro 14

填壹号坑: Unlocker 的最新版本 v3.0.2 仅支持 VMware 的 12~14 版本(终端输出的, 本人之前用的是15的, 总是报各种错, 所以就发现了这个坑).

一定要使用 Pro 版本, Player 版本安装的黑苹果不稳定, 经常会自动重启..

VMware pro 14 官网下载地址

  • MacOS 系统镜像 (6G左右大小)
  1. cdr [推荐], 懒人安装包, 因为易装, 麻烦少.

填贰号坑: 试过使用神马HFSExplorer将dmg 转cdr的工具, 结果那工具不行, 老是弹出 error 框. 于是就搜索下载别人发的 cdr包进行安装

  1. dmg, 原始镜像, 没有试过这个格式的安装, 不了解填这个坑
  2. ISO, 可以使用 UltraISO 工具将 dmg 格式转为 iso 格式, 然后进行安装, 但是中途遇到了 boot 问题, 于是换用cdr 进行安装
  • MacOS Unlocker for VMware, 简称 Unlocker

能够让 VMware 选择 Mac 系统进行安装的补丁

Unlocker 在 github 的下载地址

windows 选择第一个 unlocker302.zip 进行下载即可

2. 安装

\1. 安装 VMware Pro 14, 并注册

此处网络上教程挺多, 安装也不复杂, 过程很顺利

注册看个人了, 惯用方式是网上搜索密钥进行注册, 密钥如:
ZC5XK-A6E0M-080XQ-04ZZG-YF08D ;
ZY5H0-D3Y8K-M89EZ-AYPEG-MYUA8 .

\2. 安装 Unlocker

  1. 使用超级管理员运行 cmd.

在任务栏的搜索框中, 搜索 cmd, 然后右击使用管理员运行 cmd

解压已经下载的 unlocker, 并在 刚才打开的终端中 cd 到目录下

执行 win-install.cmd

  1. 终端报错了

看到终端有 Successfully, Finished 等词, 先不要高兴太早, 因为那整句话是否定的.

报错内容有:

  • ***.*** 文件权限问题

    哪一个文件的权限出了问题, 就找到它并给它添加权限就可以了.

    操作步骤: 右击选择属性 --> 选择安全选项卡 --> 点击编辑 --> 选择 Everyone (组或用户名) --> 允许完全控制.

  • 没有找到 drawn*.* 文件

    看了一下终端是访问了 http://*** 链接之后才报的错误, 认为是访问超时了结果重试了几次都不行, 然后打开浏览器进行访问该链接, 结果浏览器返回 not found. 一脸懵逼, 简直坑爹啊

    填叁号坑: 解决办法 - 修改源码后重新编译打包exe
    修改文件: gettools.py, 修改后的完整代码放在最后, 有中文注释.
    思路: 访问问题, 那就修改访问的链接; 由于VMware 服务器识别 UA, 所以伪装 UA.
    打包exe: 需要 python3.x 环境, 依赖包: requests, PyInstaller; 打包命令 pyinstaller -F gettools.py
    替换 gettools.exe 文件: 打包 exe 后, 会生成 dist 文件夹, 找到里面的 exe 文件, 替换 unlocker 文件夹中的 gettools.exe 文件

    补充: 安装依赖包的命令: pip3 install requests; pip3 install PyInstaller; 打包exe 前, 需要打开终端并切换目录到 gettools.py 文件所在目录下.

\3. 安装 mac

  1. 运行 VMware 并创建新的虚拟机
  2. CD/DVD 处选择 cdr 文件, 然后启动虚拟系统
  3. 安装虚拟系统过程中出现的问题
  • 虚拟系统启动, 虚拟机报错问题:

打开 ***.vmx 文本文件, 添加 smc.version = "0" 配置项

  • 安装盘问题:

选择菜单栏上的实用工具 --> 然后选择 VMware 硬盘 --> 点击抹掉按钮 --> 输入一个英文名称即可

  1. 安装 VMTools

关机mac, 在 CD/DVD 处选择 VMware Pro 安装目录下的 darwn.iso (Unlocker 生成的文件), 我的安装目录是 C:\Program Files (x86)\VMware\VMware Workstation

开机, 打开桌面上的光盘进行安装, 所以 drawn.iso 是用来安装 VMTools 插件的.

\4. 屏幕大小, 分辨率问题

在VMware里装 VMTools 后发现全屏时的分辨率是 950 (HiDPI) 的, 在设置/显示器/缩放中, 点击1920 的死活切换不了

打开终端依次输入以下命令:

cd /Library/Preferences, 切换目录.
plutil -p com.apple.windowserver.plist 查看现在的plist设置, 值应该是 1.
sudo plutil -replace DisplayResolutionEnabled -bool "NO" com.apple.windowserver.plist 修改plist 设置为 0.

重启生效.

gettools.py

from __future__ import print_function

import os
import shutil
import sys
import tarfile
import zipfile

# 添加处, 方便伪装 User-Agent
import requests

# 添加处
def download_drawn(url, path):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
    }
    resp = requests.get(url, headers=headers, timeout=180)
    with open(path, "wb") as fp:
        fp.write(resp.content)

def convertpath(path):
    # OS path separator replacement funciton
    return path.replace(os.path.sep, '\\')  # 修改处

def main():
    # Check minimal Python version is 2.7
    if sys.version_info < (2, 7):
        sys.stderr.write('You need Python 2.7 or later\n')
        sys.exit(1)

    # Setup url and file paths
    url = 'http://softwareupdate.vmware.com/cds/vmw-desktop/fusion/'
    dest = os.path.dirname(os.path.abspath(__file__))

    # Re-create the tools folder
    shutil.rmtree(dest + '/tools', True)
    os.mkdir(dest + '/tools')

    # 删改处
    urlpost15 = url + '11.1.0/13668589' + '/packages/com.vmware.fusion.tools.darwin.zip.tar'
    urlpre15 = url + '11.1.0/13668589' + '/packages/com.vmware.fusion.tools.darwinPre15.zip.tar'

    # Download the darwin.iso tgz file
    print('Retrieving Darwin tools from: ' + urlpost15)
    # 修改处
    download_drawn(urlpost15, convertpath(dest + '/tools/com.vmware.fusion.tools.darwin.zip.tar'))

    # Extract the tar to zip
    tar = tarfile.open(convertpath(dest + '/tools/com.vmware.fusion.tools.darwin.zip.tar'), 'r')
    tar.extract('com.vmware.fusion.tools.darwin.zip', path=convertpath(dest + '/tools/'))
    tar.close()

    # Extract the iso and sig files from zip
    cdszip = zipfile.ZipFile(convertpath(dest + '/tools/com.vmware.fusion.tools.darwin.zip'), 'r')
    cdszip.extract('payload/darwin.iso', path=convertpath(dest + '/tools/'))
    cdszip.extract('payload/darwin.iso.sig', path=convertpath(dest + '/tools/'))
    cdszip.close()

    # Move the iso and sig files to tools folder
    shutil.move(convertpath(dest + '/tools/payload/darwin.iso'), convertpath(dest + '/tools/darwin.iso'))
    shutil.move(convertpath(dest + '/tools/payload/darwin.iso.sig'), convertpath(dest + '/tools/darwin.iso.sig'))

    # Cleanup working files and folders
    shutil.rmtree(convertpath(dest + '/tools/payload'), True)
    os.remove(convertpath(dest + '/tools/com.vmware.fusion.tools.darwin.zip.tar'))
    os.remove(convertpath(dest + '/tools/com.vmware.fusion.tools.darwin.zip'))

    # Download the darwinPre15.iso tgz file
    print('Retrieving DarwinPre15 tools from: ' + urlpre15)
    # 修改处
    download_drawn(urlpre15, convertpath(dest + '/tools/com.vmware.fusion.tools.darwinPre15.zip.tar'))

    # Extract the tar to zip
    tar = tarfile.open(convertpath(dest + '/tools/com.vmware.fusion.tools.darwinPre15.zip.tar'), 'r')
    tar.extract('com.vmware.fusion.tools.darwinPre15.zip', path=convertpath(dest + '/tools/'))
    tar.close()

    # Extract the iso and sig files from zip
    cdszip = zipfile.ZipFile(convertpath(dest + '/tools/com.vmware.fusion.tools.darwinPre15.zip'), 'r')
    cdszip.extract('payload/darwinPre15.iso', path=convertpath(dest + '/tools/'))
    cdszip.extract('payload/darwinPre15.iso.sig', path=convertpath(dest + '/tools/'))
    cdszip.close()

    # Move the iso and sig files to tools folder
    shutil.move(convertpath(dest + '/tools/payload/darwinPre15.iso'), convertpath(dest + '/tools/darwinPre15.iso'))
    shutil.move(convertpath(dest + '/tools/payload/darwinPre15.iso.sig'), convertpath(dest + '/tools/darwinPre15.iso.sig'))

    # Cleanup working files and folders
    shutil.rmtree(convertpath(dest + '/tools/payload'), True)
    os.remove(convertpath(dest + '/tools/com.vmware.fusion.tools.darwinPre15.zip.tar'))
    os.remove(convertpath(dest + '/tools/com.vmware.fusion.tools.darwinPre15.zip'))

if __name__ == '__main__':
    main()

原文地址:https://www.cnblogs.com/trent-fzq/p/11564442.html

时间: 2024-11-05 19:43:40

填坑黑苹果(VMware装MacOS) - 修改 Unlocker 补丁源码版的相关文章

如何修改调试OpenCV源码

有时候,直接调用OpenCV的接口并不能满足我们的需求,需要我们对源码及其算法进行修改.这里就介绍一下如何修改OpenCV的源码.首先,要用cmake编译一下OpenCV:然后,就是修改源码了:接着,配置新生成的dll和lib:最后,测试. 一.cmake编译OpenCV 1.下载安装cmake 想要在Windows平台下生成OpenCV的解决方案,我们需要一个名为cmake的开源软件,可以在 camke的官网:http://www.cmake.org/上下载到,首先转到其下载页面. 而Bina

看我如何修改vlc2.1源码-libvlc录像 视频效果控制 旋转 图形 亮度 对比度 等控制

http://58.251.41.199:9200/upload/videoshow.wmv 上面地址是我整个做出来的视频演示效果.呵呵,达到了想要的效果,但是也牺牲了不小夜晚在linux上编译 1.首先你要找到增加libvlc的patch,修改源码.在官网上有,耐心找下. 2.一定要在unbuntu上编译vlc 3.要把他的vlc源码导出来理下其代码模块 搞好这几块,想咋改都行.想要源码可联系我396963546qq, 可以技术指导析,但是不会免费. 看我如何修改vlc2.1源码-libvlc

Hadoop 修改源码以及将修改后的源码应用到部署好的Hadoop中

我的Hadoop版本是hadoop-2.7.3, 我们可以去hadoop官网下载源码hadoop-2.7.3-src,以及编译好的工程文件hadoop-2.7.3, 后者可以直接部署. 前者hadoop-2.7.3-src必须mvn之后才能部署. 我们修改代码必须是在hadoop-2.7.3-src源码中进行, 而源码mvn之后才能部署或使用. 所以我们要先了解Maven.     mvn hadoop-2.7.3-src的时候会出现各种问题. 其中hadoop-2.7.3-src源码文件中有个

Android对apk源码的修改--反编译+源码修改+重新打包+签名【附HelloWorld的修改实例】

近期遇到了需要修改apk源码的问题,于是上网查了下相关资料,编写了HelloWorld进行修改看看可行性,经过实验证明此方案可行,并且后来也成功用这个方法对目标apk进行了修改,只不过需要修改的部分比HelloWorld复杂些,但是只要了解下smali也能进行相关的修改,下面讲下具体的步骤,文中所用到的资源会在文章的结尾给出,感兴趣的可以下载试试. 首先介绍下要用到的工具: jdk:这个不用多说了 baksmali:把classes.dex转为为smali文件的工具 dex2jar:classe

修改libpng库源码解决libpng warning: iCCP: known incorrect

下载libpng源码 wget https://sourceforge.net/projects/libpng/files/libpng16/1.6.36/libpng-1.6.36.tar.xz 修改png.c文件 if (png_sRGB_checks[i].is_broken != 0) { /* These profiles are known to have bad data that may cause * problems if they are used, therefore a

使用TWebBrowser时存在内存泄漏问题的解决方案(使用SetProcessWorkingSetSize函数,或者修改OleCtrls.pas源码解决问题)

用TWebBrower不断打开多个网页,多某些版本的操作系统上运行一段时间后,发现占用系统内存达几百M,直到关闭程序后,占用的内存才能释放. 这个问题在网有很多讨论,比较多人的建议办法是用SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1)处理一下,这个变通的办法貌似可行. 然后在http://www.winu.cn/space-14160-do-blog-id-270.html出现别一个解决办法,当中提到OLE中存在内存泄露,通过重写OLE函数

最近修改chrome的源码,而工程很大,压缩成rar,都有6G左右,用vs2010打开后,速度缓慢,便去寻找性能优化方法,总结如下

Visual Studio 2010 运行速度优化: Tool ->Option ->EnvironMent ->General 关闭 "启用丰富客户端视觉体验 - Enable rich client visual experience" Tool ->Option ->EnvironMent ->General 关闭硬件加速(否则CPU都更多用来处理图像了) 关闭 "在解决方案资源管理器中跟踪活动项 - Track Active Ite

Cython的用法以及填坑姿势

因为项目需要,需要优化已有的Python代码.目前Python代码的执行过程是将Python代码转变成一行行指令,然后解释器解释指令的执行,调用到C代码层.如果去掉指令解释这个阶段,直接进入C代码层,效率就比较高了.如果用之前所述的使用Python C API将Python代码改造为C代码并作为Python的内建模块,工作量极其大,也不能保证其正确性,所以这种方法不太现实.而Cython库正好符合这种场景需求,将已有的Python代码转化为C语言的代码,并作为Python的built-in模块扩

练习:给Keras ResNet50源码加上正则化参数, 修改激活函数为Elu

最近学习了一下ResNet50模型,用其跑了个Kaggle比赛,并仔细阅读了其Keras实现.在比赛中,我修改了一下源码,加入了正则项,激活函数改为elu, 日后的应用中也可以直接copy 使用之. ResNet50 的结构图网上已经很多了,例如这篇博文:https://blog.csdn.net/nima1994/article/details/82686132. 可以看出,ResNet50是主要分为两个部分,一部分为Plain Network,也就是上图的左侧部分,就是一系列通常的卷积,批量