简介这是一份面向 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 上安装 UnlockerWindows 与 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.iniLinux 下是/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.vmxLinux。由于你的 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.presentFALSE关闭 SMC 控制器检查usb_xhci.xhciPort1true强制 USB 3.0 控制器映射给 macOSethernet0.virtualDeve1000e更换虚拟网卡型号macOS 对 e1000e 驱动支持更稳firmwareefi必须用 EFI 引导虚拟化环境不支持传统 BIOS 的 macOS4.3 首次走完恢复分区CPU 型号与内存设置的坑首次启动 macOS 虚拟机时画面会先进入一个类似恢复模式的分区选择页。很多人在这一步直接傻眼明明把 macOS ISO 挂在光驱上却看不到安装入口。这里的原因多半是固件在启动菜单里走了默认项没有去扫描光驱设备。解决方法是启动虚拟机后立刻按住 F2 进入虚拟机的固件设置或者更直接一点在 vmx 文件里加一行临时参数bios.bootDelay 5000bios.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 升级后那几分钟希望这套经验对你也有帮助。本文还有配套的精品资源点击获取
