简介:这是一份面向 VMware 用户的 Unlocker 2.1.1 工具包,旨在让 VMware Workstation 14/Player 14 环境能够解锁并安装 macOS 虚拟机,解决官方版本默认不识别 Apple 系统引导的问题。资源共 21 个文件,压缩包约 15.44MB,文件类型覆盖 6 个 cmd、5 个 sh、3 个 exe、3 个 py、2 个 txt,另有 git 辅助文件;其中 cmd/sh 分别对应 Windows 与 Linux/macOS 下的安装、卸载和更新 tools 操作,exe 负责获取工具链,py 脚本用于辅助解锁与 SMBIOS 信息调整,txt 为说明文档,整体结构清楚,可按需选用。需要特别留意的是,从旧版升级到 2.1.1 前必须先卸载旧版,否则 VMware 可能无法启动;同时 2.1.1 已放弃对 ESXi 6.x 的支持,因此更适合桌面版 Workstation/Fusion 用户。当前已有 3852 人学习下载。对希望在 VMware 14 中运行 macOS 的运维人员或技术爱好者而言,这份资源提供了可执行的完整解锁脚本、平台适配脚本和更新说明,解压后根据操作系统选择 install 或 uninstall 脚本即可,适合在搭建 macOS 测试环境或维护多版本 VMware 时快速切换。
1. Unlocker2.1.1 是什么:VMware 里装 macOS 的那把钥匙
做虚拟化的人早晚会遇到一个需求:手头只有 Windows 或 Linux 宿主机,却要跑一个 macOS 环境。常规做法是直接新建虚拟机,但你会发现在 VMware Workstation 的客户机操作系统列表里根本没有 Apple macOS 这个选项,选不了系统类型,后续一切无从谈起。Unlocker2.1.1 for VMware 干的事就是把这个选项“解锁”出来,让 VMware 识别并允许创建 macOS 虚拟机,同时修改 vmware-vmx 核心文件,让苹果系统能够正常启动。我把它定位成“给 VMware 补上苹果支持的最后一块板子”,适合三类人:想低成本体验 macOS 的开发者、需要跑 iOS 打包或 Xcode 构建的测试工程师、以及做跨平台软件验证的运维。下面这套流程我从 2.0 一路用到 2.1.1,每一步的参数和坑都写在后面。
2. 为什么需要 Unlocker 而不是直接改配置:先看懂原理再动手
2.1 Unlocker 的版本差异与选型
Unlocker 从 1.x 到 2.1.1 经历了两次比较大的变化。1.x 时代它做的事情比较粗暴,直接替换 VMware 安装目录里的 vmware-vmx 文件。这种做法的坏处是 VMware 一更新,补丁就被覆盖,而且不同版本之间的兼容性很差。2.x 改用“脚本 + Python 补丁”的方式,核心是一个 unlocker.py 脚本,它扫描 vmware-vmx 可执行文件,把里面关于 darwin 客户机类型的判断逻辑改掉,同时向 vmwarebase.dll 或对应的 Linux 库写入 smc 版本和机型信息。这样 VMware 的底层模块被“说服”,认为苹果系统是被支持的客户机类型。
选型时我建议优先考虑 2.1.1 而不是旧版 1.3.1,原因有两条。其一,2.1.1 对应的是 VMware Workstation 15.5 到 16.x 这个区间的解锁场景,脚本里对 ELF 和 PE 两种文件格式都做了处理,覆盖 Windows 和 Linux 宿主机;其二,它保留了恢复出厂逻辑,也就是 win-uninstall.cmd / lnx-uninstall.sh,万一解锁失败可以回滚,不用重装整个 VMware。如果你现在用的是 Workstation 17,官方对 macOS 客户机的支持已经内置了一部分,但如果你回头维护 15/16 的老环境,2.1.1 仍然是最稳妥的补丁方案。
2.2 安装前检查:VMware 状态与存放路径
很多人在安装 Unlocker 时翻车,不是因为脚本本身有问题,而是前置条件没满足。第一件事,确认你的 VMware Workstation 版本。2.1.1 对 15.x 和 16.x 支持最好,对 12.x 和 14.x 也能工作,但如果你用的是 17.x,脚本的处理逻辑可能不完全匹配。第二件事,检查安装目录里是否有 vmware-vmx 可执行文件。Windows 下它通常在C:\Program Files (x86)\VMware\VMware Workstation\,Linux 下通常在/usr/lib/vmware/bin/vmware-vmx。第三件事,也是我栽过跟头的:Windows 下安装 Unlocker 之前,必须把 VMware 相关的服务全部停掉。常见做法是打开任务管理器,把 vmware-tray.exe 结束掉,再打开“服务”窗口,把类型为“自动”的 VMware 服务全部停止。如果不这么做,vmware-vmx 进程正在运行的情况下强行覆盖文件,轻则补丁不生效,重则启动虚拟机时报出存取被拒绝的错误。
反过来,Linux 宿主机上要先检查所有权。我用的是 CentOS 和 Ubuntu 双环境,Ubuntu 下 VMware 安装目录的属主一般是 root,所以安装脚本前要先用sudo -i切换到 root,否则写文件时会提示 permission denied。下面是两条最常用的检查命令:
# 检查 vmware-vmx 是否存在及其版本信息 ls -l /usr/lib/vmware/bin/vmware-vmx # 确认当前运行的内核模块,防止 VMware 服务还在占用文件 sudo systemctl status vmware逻辑说明:第一条命令验证 VMware 主程序路径是否存在,脚本要补丁的就是这个文件;第二条命令看 vmware 服务的工作状态,如果服务处于 running,先执行sudo systemctl stop vmware再继续。参数方面,ls -l的-l表示长格式输出,方便我们看文件权限和链接情况;systemctl status不接参数会列出服务当前状态和最近日志。正常情况下你应该看到 vmware-vmx 的大小在几十到一百多 MB,权限位属于 root,如果你看到的属主是一个普通用户,说明之前 VMware 被非标准方式安装过,解锁会不干净。
3. 在 VMware Workstation 上安装 Unlocker:Windows 与 Linux 两套流程
3.1 Windows 主机:管理员身份跑脚本的完整步骤
Windows 下的安装没有什么神秘的地方,关键是“以管理员身份运行”以及“按顺序执行”。你先解压 Unlocker2.1.1 的归档文件,会得到 win-install.cmd、win-update.cmd、win-uninstall.cmd 以及一个 tools 文件夹。这里要特别说明一个容易忽略的点:运行脚本前必须先退出 VMware。我见过不少人只关了虚拟机窗口,没关 Workstation 主进程,结果vmware-vmx.exe仍被系统占用,补丁写入失败。
正确顺序是先打开任务管理器,确认没有 vmware-tray.exe 和 vmware-vmx.exe 的进程,再鼠标右键“以管理员身份运行” win-install.cmd。这个脚本做的事情分三步:检查 vmware-vmx 路径、复制 tools 里的 dalwin.dll(在旧版中是 darwin.iso 与 darwinPre15.iso)到 VMware 安装目录、然后调用 Python 脚本修改 vmware-vmx 的二进制判断。如果你看到命令行窗口最后输出OK字样,说明解锁成功。这里有一个提示:
注意:如果 cmd 窗口闪一下就消失,多半是权限不够或被杀毒软件拦截。建议从管理员 CMD 里手动执行,不要双击。
手动执行的命令是这样:
cd /d C:\Unlocker2.1.1 win-install.cmd逻辑说明:cd /d是切换目录并切换盘符,确保当前路径在归档解压后的目录里;win-install.cmd就是官方安装入口。参数没有额外开关,不能跟-silent之类的静默参数,因为它内部就是一套固定流程。跑完以后你会注意到C:\Program Files (x86)\VMware\VMware Workstation\下多了 darwin.iso 等文件,这正是创建 macOS 虚拟机时所需的系统引导镜像,理论上是提供给 Mac OS X 客户机使用的,后续安装 macOS 时会自动关联。
3.2 Linux 主机:改文件权限与执行解锁
Linux 下面的安装思路完全一致,但要留意脚本的换行符和权限。先给 lnx-install.sh 加上执行权限,再以 root 身份运行。注意这里不要用图形界面的 VMware Workstation 正在运行时执行,论坛上最常见的问题就是开着 VMware 跑这个脚本,然后告诉你Error: Unable to patch vmware-vmx。
我通常按下面这套命令来走:
# 进入解压后的目录 cd /opt/Unlocker2.1.1 # 给脚本加上可执行权限 chmod +x lnx-install.sh lnx-update.sh lnx-uninstall.sh # 停止 vmware 相关服务,避免二进制文件被占用 sudo systemctl stop vmware sudo vmware-modconfig --console --stop 2>/dev/null # 运行解锁脚本 sudo ./lnx-install.sh逻辑说明:chmod是修改文件权限位的命令,+x表示给所有用户加上执行权限;systemctl stop vmware停止 systemd 服务单元;vmware-modconfig --console --stop是 VMware 内核模块的停止命令,参数--console表示以控制台方式运行,输出日志到终端,2>/dev/null把错误信息丢弃,避免干扰观察主流程。sudo ./lnx-install.sh中,sudo是提权,./指当前目录,脚本内部会调用 Python 进行处理。全部跑完后,你可以再启动一次 VMware Workstation,确认“客户机操作系统”下拉列表里出现了 Apple Mac OS X 一项。
3.3 验证解锁结果:GUI 与配置文件双重确认
安装完以后别急着直接建虚拟机,先用肉眼和文本两层确认一下解锁是否落地。GUI 验证很简单:打开“新建虚拟机向导”,在“客户机操作系统”一页选择 Apple Mac OS X,版本下拉里能看到 Mac OS X 10.x 到 macOS 11 的选项。如果没看到,退回上一步重进一次,还不出现就只能走配置文件验证。
配置文件验证的路径在 Windows 下是C:\ProgramData\VMware\VMware Workstation\config.ini,Linux 下是/etc/vmware/config。重点看有没有这行:
smc.present = "FALSE"这个键值对的意义是让虚拟机监控程序对苹果系统的 SMC 控制器检查失效。严格来说,在 macOS 客户机启动过程中,虚拟机固件会校验 SMC 容器的存在性,如果smc.version相关配置不符合固件期望,macOS 会直接拒绝启动。解锁脚本会在 config.ini 里补上对应条目,让你在后续创建虚拟机时自动带上。这里需要提醒,如果你看到的是smc.present = "TRUE"或压根没有这一行,说明补丁没有写进去,别继续往下走,回到 3.1 或 3.2 检查执行过程。
4. 把 macOS 装进 VMware:从创建虚拟机到首次启动的参数设置
4.1 新建虚拟机的基本配置
解锁成功后,创建 macOS 虚拟机和建 Windows 虚拟机在向导层面没有太多不同,但有几个选项必须单独拿出来说。首先在“客户机操作系统”选择页,选 Apple Mac OS X,然后根据你手上的系统镜像选版本。注意安装介质这一项我建议先用“稍后安装操作系统”,等虚拟机配置建好后再挂载 ISO,这样免得向导自动检测到一个不认识的 ESP 分区结构就报错。
然后进入“自定义硬件”页面,内存、处理器、磁盘这几项要结合前面提到的实测问题来定。例如:
- 内存:macOS Big Sur 及以上建议至少 4GB,我一般给 8GB,少于 2GB 会在安装阶段直接黑屏。
- 处理器:至少 2 核,给到 4 核也常见,但不要超过物理 CPU 线程数的一半,否则嵌套虚拟化场景下延迟明显。
- 磁盘:建议 60GB 起步,macOS 系统占 20GB 左右,剩下的留给 Xcode 缓存和开发者工具。
- 网络:默认 NAT 就行,除非你要做局域网内跨系统调试。
做完这些,先不要点“完成”,还有几个高级参数要改。
4.2 修改 vmware-vmx 的 3 个必调参数
虚拟机的配置模板默认生成在文档\虚拟机\macOS 14.vmx这样的位置(Windows),或~/vmware/macOS14/macOS14.vmx(Linux)。由于你的 Unlocker 已经修改了全局 vmx 支持,向导生成的虚拟机可以直接启动,但启动到安装界面之前通常还需要在这份 vmx 里补几个参数,等于说是固件层面的设置项。我最常加的是下面三个:
smc.version = "0" keyboard.vusb.enable = "TRUE" board-id.reflectHost = "TRUE"逐条说:smc.version = "0"和 3.3 节里的smc.present配合,能避免系统在启动初期就弹出“无法验证此 Mac”的提示;keyboard.vusb.enable = "TRUE"解决安装过程中键盘失灵的问题,虚拟化环境里如果没有这一项,苹果的自动键盘设置向导经常捕获不到键位;board-id.reflectHost = "TRUE"则把宿主机的主板标识映射给客户机,苹果的安装脚本读取到合法板号后才会继续写系统文件。
其他可能有用的参数还包括以下几种,按需添加,不要全堆进去:
| 参数 | 典型值 | 作用 |
|---|---|---|
| smc.present | FALSE | 关闭 SMC 控制器检查 |
| usb_xhci.xhciPort1 | "true" | 强制 USB 3.0 控制器映射给 macOS |
| ethernet0.virtualDev | "e1000e" | 更换虚拟网卡型号,macOS 对 e1000e 驱动支持更稳 |
| firmware | "efi" | 必须用 EFI 引导,虚拟化环境不支持传统 BIOS 的 macOS |
4.3 首次走完恢复分区:CPU 型号与内存设置的坑
首次启动 macOS 虚拟机时,画面会先进入一个类似恢复模式的分区选择页。很多人在这一步直接傻眼:明明把 macOS ISO 挂在光驱上,却看不到安装入口。这里的原因多半是固件在启动菜单里走了默认项,没有去扫描光驱设备。解决方法是启动虚拟机后立刻按住 F2 进入虚拟机的固件设置,或者更直接一点,在 vmx 文件里加一行临时参数:
bios.bootDelay = "5000"bios.bootDelay的单位是毫秒,设成 5000 表示开机时停留 5 秒,方便你点进启动菜单选择“从 CD-ROM 启动”。这套动作在 VMware 文档里叫“强制引导”,正常建好 Windows 虚拟机时根本用不到,但 macOS 安装镜像的分区结构特殊,固件的自动联想经常不认。
首次启动还有两个高频坑,第一是安装界面卡在“准备安装时出错”,第二是安装完成后反复重启进不了系统。前者通常和虚拟 CPU 型号有关,我建议把 vmx 里的以下参数加上:
cpuid.0.ebx = "0x756e6547" cpuid.0.edx = "0x49656e69" cpuid.0.ecx = "0x6c65746e"这组 cpuid 参数的作用是让 CPU 厂商字符串报告为 GenuineIntel,苹果安装器对非 Intel 商标的处理器会有额外校验;如果你用的是 AMD 平台,这组参数几乎是必须的,不加会卡在启动早期。第二类反复重启的问题多半是磁盘分区表写错了,后面第 5 章会专门讲。
5. Unlocker 与 macOS 虚拟机的避坑:5 个现场问题
5.1 解锁后新建虚拟机没有 Apple Mac OS X 选项
现象:win-install.cmd 执行成功,日志末尾是 OK,但重新打开 VMware Workstation,新建虚拟机向导里仍然只有 Windows 和 Linux 系列,找不到 Apple Mac OS X。
原因:最常见的两种,一是 Workstation 被安装在非默认位置,Unlocker 脚本扫描注册表失败后默认走了C:\Program Files (x86)\VMware\VMware Workstation\;二是解锁时 VMware 的托盘进程没有完全退出,补丁只在内存中生效,重启后恢复原样。
解决:先彻底杀掉所有vmware*进程,再把整个 VMware 安装目录设置为脚本搜索路径。具体操作是打开 win-install.cmd,找到set VMX_PATH或类似变量行,改成你的实际安装路径。改完保存,重新以管理员身份执行一遍,并去config.ini里确认有没有smc.present条目。如果确认有,但 GUI 还是不出选项,用vmware -v看下版本号是否和 Unlocker2.1.1 的声明范围不符,Workstation 17 上就常常不出此选项,这不是 bug,而是新版本改变了客户机类型的注册逻辑。
5.2 VMware 更新或重装后解锁失效
现象:解锁后一切正常,某次给 Workstation 打了小版本补丁,重新打开发现此前能开的 macOS 虚拟机直接报错:Device power on failed,或者干脆无法选择客户机类型。
原因:vmware-vmx 在每次 Workstation 版本升级时都会被替换为官方原始文件,Unlocker 的补丁是对原文件做字节级修改,官方升级覆盖后补丁自然消失。这不算 Unlocker 的问题,而是整个思路的固有代价——你补丁的宿主是 VMware 自己的可执行文件,它更新就等于重装底层文件。
解决:有两个选择。一是升级完立刻重跑一次 lnx-update.sh 或 win-update.cmd,不改变已有 vmx 虚拟机文件,只重新打补丁,这是最省事的路径;二是把 Unlocker 的 install 脚本注册成计划任务,让它跟随 Workstation 启动,但我不推荐,因为每次启动都要做一次文件写操作,杀毒软件会频繁拦截。日常维护惯例是:官方升级完,先开一个 Windows 虚拟机确认正常,再跑一次 update 脚本,最后启动 macOS 虚拟机。
5.3 启动虚拟机时出现不可恢复错误 0xc0000005
现象:创建好 macOS 虚拟机后点开机,VMware 弹窗显示“不可恢复错误: (vcpu-1) exception 0xc0000005 (access violation)”,虚拟机在 BIOS 界面之前就崩掉。
原因:这个错误在 VMware 社区里出现的频率非常高,本质上是 vcpu 线程访问了无效内存地址。放在 Unlocker 的语境下,通常是 vmware-vmx 的补丁版本和当前 Workstation 的构建版本不匹配。比如你用的是 Workstation 16.2.1,但 Unlocker2.1.1 内的补丁是为 16.1 版本做的,字节偏移对不上,补丁把关键的跳转指令改写错了,一启动就访问越界。
解决:这不是配置问题,是补丁版本问题,不要试图在 vmx 里调参数解决。第一步,把当前 Workstation 退回到 Unlocker2.1.1 发布说明里明确支持的构建版本,比如 16.1.x;第二步,执行 uninstall 脚本清掉已有补丁,再重新 install。如果你必须在高版本 Workstation 上用,换对应新版 Unlocker 或手动给 2.1.1 打 patch,后者门槛较高,不建议普通用户做。这里有个提示:
注意:报错信息里的
(vcpu-1)不一定是 CPU 数量太少,而是 unlock 补丁的问题,先检查版本匹配再调 CPU 参数。
5.4 引导界面卡在苹果标志不动
现象:macOS 虚拟机引导后能看到苹果 Logo,但进度条一直不动,有时候过很久直接重启进入恢复界面。
原因:分为磁盘和内存两类。磁盘方面,如果你在虚拟机设置里选了“将磁盘存储为单个文件”,某些 macOS 版本在安装引导阶段对虚拟磁盘布局有要求,Unlocker 本身不管磁盘类型,但配错会造成引导程序无法识别分区;内存方面,macOS 12 开始对内存控制器要求更高,虚拟机内存小于 2GB 会频繁触发内存收缩机制,表现为进度条走到一半就卡住。
解决:先把磁盘类型改为 SATA,默认的 SCSI 在部分 macOS 版本下会出问题。修改方式是在 vmx 文件里设置sata0.present = "TRUE"和sata0:0.fileName = "macOS.vmdk",然后删除原有的scsi0条目。内存至少提至 4GB。另外,取消勾选“启动时连接”里的软盘设备,某些主板上软驱状态会让 macOS 的 IO 枚举卡住。这里说一下逻辑:Unlocker 只解决了系统类型识别,剩下的引导兼容性要靠虚拟硬件配置去贴合 macOS 的预期,SCSI 和 SATA 的选择对 Windows 是透明的,对 macOS 不是。
5.5 安装完成后 VMware Tools 启动脚本未能在虚拟机中成功运行
现象:macOS 安装完成进入桌面,手动挂载 VMware Tools 安装包,点击安装后提示“VMware Tools 启动脚本未能在虚拟机中成功运行。如果您在此虚拟机中配置了自定义”,安装过程中断。
原因:这个提示对 Windows 虚拟机来说更容易遇到,macOS 客户机下多半是因为系统的安全策略拦截了内核扩展的加载。从 macOS Catalina 开始,非苹果签名的 KEXT 需要在“系统设置 → 隐私与安全性”中手动允许,否则安装脚本能拷贝文件,但无法完成内核模块的装载。
解决:在 macOS 客户机里打开系统设置,进入“隐私与安全性”,看到“系统软件”相关的拦截提示时点击“允许”;如果没有任何提示,打开终端手动执行:
sudo /Library/Application\ Support/VMware\ Tools/installer.sh /T逻辑说明:/Library/Application Support/VMware Tools/是 VMware Tools 默认安装路径,installer.sh是安装器主脚本,/T参数表示以终端模式静默执行,实时输出日志。这个命令的作用是绕过图形安装器的 UI 限制,直接把 VMware Tools 的内核扩展和用户态服务装进系统。执行完成后重启虚拟机,再执行vmware-toolbox-cmd -v验证版本号。如果你不想用命令行,也可以把安装包里的Install VMware Tools.app拖到桌面再运行,部分系统版本从共享挂载目录直接运行会触发 macOS 的 Gatekeeper 限制。
6. 给 macOS 虚拟机做最终定制:序列号与维护习惯
解锁完成、系统装好、Tools 跑通,接下来就是让这台虚拟机更像一台“真实 Mac”。我常用的套路是修改 vmx 里的品牌信息。先看几个例子:
board-id = "Mac-27AD2F918A96851E" hw.model = "MacPro6,1" serialNumber = "C02XP2B1JGH5"这三项分别对应主板 ID、硬件型号和序列号。按理说,macOS 对硬件信息的校验主要在安装阶段,装完后再改不会影响运行;但在使用 iCloud 或 App Store 下载 Xcode 时,苹果的服务器会读取这些标识,填一套合法范围内的组合能减少奇奇怪怪的鉴权问题。具体组合你可以在公开的 SMBIOS 列表里找,但注意不要用网上随手抄的、容易冲突的组合。更稳的办法是用 Clover 工具集为真实机型生成一套,再把生成结果映射到 vmx。
日常维护上我养成了一个固定习惯:每次宿主机上的 VMware Workstation 升级,就先跑一次 uninstall,再跑一次 install。顺序不能反,先卸载补丁再用官方文件做基准,否则残留的字节补丁和新版本二进制错位,容易出现第 5.3 节那种 0xc0000005。同理,如果某天你发现 macOS 虚拟机启动变慢,别去调大内存,先确认一下 vmx 里smc.present = "FALSE"还在不在,因为手工编辑虚拟机设置时 VMware 偶尔会把这个条目覆盖回来。
最后的进阶技巧是给虚拟机做快照分层:装好系统加好 Tools 后打一个干净的“基线”快照,然后在这个快照之上再装开发环境。这样每次做系统级实验失败,恢复基线只需 30 秒,不用重新走一遍 Unlocker 和 VMware Tools 安装步骤。我在很多台机器上都靠这套方式省了大量重复劳动,补丁脚本的维护也基本集中在 Workstation 升级后那几分钟,希望这套经验对你也有帮助。
本文还有配套的精品资源,点击获取