使用 VMware 安装 macOS 虚拟机使用 Surge 作为代理网关
准备工作
下载并安装 VMware Workstation 15 作为虚拟服务器。本文使用 Windows 10 上的 VMware Workstation Pro 15。
从 GitHub 下载 Unlocker。你可以 点击这里 下载最新版的 Unlocker。右键使用管理员身份运行 win-install.cmd
。
下载 macOS With Extra Len's CDR
,请自行前往远景论坛下载、或使用现有的 macOS 设备下载 macOS 安装镜像的 dmg 文件并转换为 iso。
创建虚拟机
打开「新建虚拟机向导」,使用「自定义(高级)」模式。硬件兼容性使用默认的「Workstation 15.x」。
安装方式选择「安装程序光盘映像文件」,并选择你下载的 macOS 安装镜像。这一步可能会提示「无法检测此光盘映像中的操作系统」,这是正常现象。
如果在准备工作步骤中 Unlocker 成功执行,那么在这一步可以选择 Apple Mac OS X
。选择你安装的 macOS 版本。
选择虚拟机存储位置,强烈建议储存在 SSD 硬盘上;处理器配置,分配至少 2 核 2 内核的处理器和不少于 2048MB 的运存;网络连接选择「使用桥接网络」;SCSI 控制器和虚拟磁盘控制模式保留默认即可;虚拟硬盘选择「创建新虚拟磁盘」。
在指定硬盘容量时,推荐设置「将虚拟硬盘存储为单个文件」,有助于提高运行性能。
设置虚拟硬盘文件名以后,确认虚拟机信息后即创建完成。
进入虚拟机存储目录,使用记事本或者 Notepad++ 打开 vmx
文件,新增一行:
smc.version = "0"
编辑虚拟机
- 选项 => 增强型虚拟键盘 = 使用「在可用时使用」
- 选项 => VMware Tools = 勾选「将客户机时间与主机同步」
- 选项 => 高级:抓取的输入内容 = 高;收集调试信息 = 无;勾选「禁用页面内存调整」
点击「确定」保存虚拟机配置
启动虚拟机并安装 macOS
如果你之前启用过 Hyper-V,可能会因为
Windows Defender Credential Guard
导致 VMware 无法启动虚拟机,可以参考 Microsoft 支持文档 将其禁用。
选择安装语言,进入 macOS 安装界面。
通过菜单「实用工具 - 终端」打开终端。
在终端中输入:
csrutil disable
这一步用于禁用 macOS 的系统完整性保护(SIP),不然无法正常安装 VMware Tools。
重新启动系统以使 SIP 改动生效。
重新启动进入安装界面以后,选择「磁盘工具」初始化 VMware 虚拟硬盘。
选择 VMware 的虚拟硬盘,使用「抹掉」将其格式化为「APFS」格式。
成功格式化硬盘后,关闭「硬盘工具」窗口回到主界面,点击「重新安装 macOS」。
根据安装引导、同意条款、选择安装位置后便开始安装进程。安装速度取决于你的设备性能。
安装完成以后会自动重启进入 macOS 配置向导,按照指导设置你的 macOS 即可。
优化和精简 macOS
安装 VMware Tools
进入 macOS 以后,在 VMware 的菜单中找到「虚拟机 - 安装 VMware Tools」点击,macOS 会自动挂载 VMware Tools 安装硬盘并开始安装。安装完成以后需要重启。重启以后 VMware 中的 macOS 的显存会从 3MB 升级到 128MB、同时支持全屏、剪贴板同步、时间同步等。
优化显示
在「系统偏好设置 - 辅助功能 - 显示」中勾选「减弱动态效果」和「减少透明度」。
在「系统偏好设置 - 程序坞」中「最小化效果」选择「缩放效果」。
精简系统
由于这个 macOS 只用来安装 Surge 作为网关代理,macOS 预装的大部分功能我们都不需要。
接下来的操作高度危险,在了解每一个步骤会带来什么后果之前都不要在终端中执行!
- 获取 Su 权限
sudo su # 切换到 sh
passwd root # 修改 Root 用户的密码
su root # 进入 Root
- 解除系统应用
将系统应用备份下来比直接删除要安全
cd /
mkdir RemovedFiles
cd RemovedFiles
mkdir System-Library-LaunchAgents # 建立备份文件夹
FLA=/RemovedFiles/System-Library-LaunchAgents/
cd /System/Library/LaunchAgents/
mv com.apple.AddressBook* $FLA # 通讯录
mv com.apple.CalendarAgent.plist $FLA # 日历
mv com.apple.iCloudUserNotifications.plist $FLA # iCloud
mv com.apple.icbaccountsd.plist $FLA # iCloud
mv com.apple.icloud.fmfd.plist $FLA # iCloud
mv com.apple.cloud* $FLA # iCloud
mv com.apple.imagent.plist $FLA # FaceTime
mv com.apple.IMLoggingAgent.plist $FLA # FaceTime
mv com.apple.AirPlayUIAgent.plist $FLA # Airplay
mv com.apple.AirPortBaseStationAgent.plist $FLA
mv com.apple.bird.plist $FLA # iCloud 缓存
mv com.apple.findmymacmessenger.plist $FLA
mv com.apple.gamed.plist $FLA # macOS 游戏中心
mv com.apple.parentalcontrols.check.plist $FLA # 家长控制
mv com.apple.Maps.pushdaemon.plist $FLA
mv com.apple.ScreenReaderUIServer.plist $FLA
mv com.apple.speech.* $FLA
cd /System/Library/LaunchDaemons/
# AirPlay
launchctl unload -wF com.apple.AirPlayXPCHelper.plist
# Apple push notification
launchctl unload -wF com.apple.apsd.plist
# Disable location services (should have done it from System Preferences first)
launchctl unload -wF com.apple.locationd.plist
# No point trying to find your mac
launchctl unload -wF com.apple.findmymac.plist
launchctl unload -wF com.apple.findmymacmessenger.plist
# iCloud
launchctl unload -wF com.apple.icloud.findmydeviced.plist
launchctl unload -wF com.apple.cloudfamilyrestrictionsd-mac.plist
launchctl unload -wF com.apple.mbicloudsetupd.plist
# don't even have DVD these days
launchctl unload -wF com.apple.dvdplayback.setregion.plist
# Crash Report
launchctl unload -wF com.apple.SubmitDiagInfo.plist
launchctl unload -wF com.apple.CrashReporterSupportHelper.plist
launchctl unload -wF com.apple.ReportCrash.Root.plist
launchctl unload -wF com.apple.GameController.gamecontrollerd.plist
# Disable spindump (spindump is a tool used by various system components
# to create hang reports and notify the user of application hangs)
# if it's crashed - it's crashed, get on with your life and don't slow my system down
launchctl unload -wF com.apple.spindump.plist
launchctl unload -wF com.apple.metadata.mds.spindump.plist
# Disable cups (common unix printing service)
#launchctl unload -wF org.cups.cupsd.plist
#launchctl unload -wF org.cups.cups-lpd.plist
配置 Surge 作为代理网关
打开「系统偏好设置 - 网络」,将 IPv4 配置方式改为手动以固定虚拟机的 IP。
然后启动 Surge 并开启增强模式。如果是首次启动增强模式可能需要安装帮助程序。
修改宿主机设备的网络属性,IPv4 修改为手动设置,将网关设置为虚拟机的 IP,将 DNS 设置为 198.18.0.2
即可。