
簡介unlocker208 是面向需要在 VMware 環(huán)境中運(yùn)行 macOS 的用戶整理的補(bǔ)丁工具包重點(diǎn)解決虛擬機(jī)創(chuàng)建時(shí)無法識別 Apple 系統(tǒng)、macOS 無法正常引導(dǎo)等兼容性問題適用于 Workstation、Player、Fusion 及 ESXi 等多類產(chǎn)品的實(shí)測場景。壓縮包共 18 個(gè)文件約 9.61MB包含 8 個(gè) sh 腳本、3 個(gè) exe 可執(zhí)行文件、3 個(gè) cmd 批處理、3 個(gè) py 腳本和 1 個(gè) txt 說明文檔分別覆蓋不同平臺的補(bǔ)丁安裝、卸載與 VMware Tools 更新等用途。已有 2474 人學(xué)習(xí)或下載。包內(nèi)提供分平臺腳本與 Python 補(bǔ)丁代碼并附 readme 說明和常見報(bào)錯(cuò)提示便于讀者了解補(bǔ)丁的作用機(jī)制、核對版本兼容性并在遇到虛擬機(jī)啟動異常時(shí)按提示排查對希望減少反復(fù)試錯(cuò)、系統(tǒng)掌握 VMware 運(yùn)行 macOS 配置思路的讀者具有較強(qiáng)參考價(jià)值。1. 一臺 Windows 工作站要跑 macOS 10.12.6缺的往往不是硬件手上只有一臺 Windows 工作站卻要復(fù)現(xiàn)一個(gè)只在 macOS 10.12.6 上才出現(xiàn)的老問題——最省事的辦法是用 VMware 起一臺 Sierra。裝完 Workstation 你會發(fā)現(xiàn)新建向?qū)Ю锔緵]有 Apple 這一欄就算手工把 guestOS 改成 darwin16按下開機(jī)電源虛擬機(jī)窗口一閃就關(guān)日志里只留一句「Mac OS X 不受支持」。unlocker208 就是拆這兩道閘門的補(bǔ)丁給 VMware 的客戶機(jī)列表塞進(jìn) darwin 條目再把 vmx 執(zhí)行體里那段「非 Apple 硬件不許上電」的校驗(yàn)?zāi)ǖ?。它適合手里是 Workstation 12 / Player 12 這一代、客戶機(jī)鎖定 10.12.6 的人想裝更高版本的系統(tǒng)這個(gè)包夠不著別硬套。2. 補(bǔ)丁落在哪幾個(gè)文件上unlocker208 的三道閘門與 darwin16 的天花板很多人把 unlocker208 當(dāng)成一個(gè)「一鍵安裝包」雙擊跑完發(fā)現(xiàn)沒效果就開始懷疑人生。實(shí)際上它做的事情很窄定位 VMware 安裝目錄下兩三個(gè)可執(zhí)行文件按字節(jié)特征找到特定位置把校驗(yàn)邏輯改掉。正因?yàn)槭嵌M(jìn)制級改寫而不是改配置版本對不對得上直接決定這次操作是成功、無效、還是把 VMware 打壞。真正的困難在于多數(shù)人不知道補(bǔ)丁應(yīng)該改哪幾個(gè)文件。先把補(bǔ)丁的作用范圍看清楚后面所有「裝完沒反應(yīng)」「開機(jī)就關(guān)機(jī)」的現(xiàn)象都能自己定位到具體環(huán)節(jié)。2.1 三道閘門向?qū)l目、開機(jī)校驗(yàn)、SMC 設(shè)備第一道閘門是「你根本選不到」。VMware 的新建虛擬機(jī)向?qū)Ю锬欠菘蛻魴C(jī)操作系統(tǒng)下拉列表來自安裝目錄中的一個(gè)二進(jìn)制模塊在 Windows 下這個(gè)模塊是vmwarebase.dll。列表里沒有 darwin 這一項(xiàng)你就沒有 Apple Mac OS X 可選只能選「其他」。unlocker208 對它的處理是把 darwin 相關(guān)的客戶機(jī)條目和相關(guān)字符串寫回去讓向?qū)О?Apple 一欄渲染出來。這一步只影響「能不能建」和能不能開機(jī)沒有關(guān)系。第二道閘門是「能建但開不了機(jī)」。真正執(zhí)行開機(jī)的是vmware-vmx.exe。它在給客戶機(jī)加電之前會判斷 guestOS 是不是 darwin如果是就進(jìn)一步檢查宿主是不是 Apple 硬件。不是就直接拒絕并拋出一句Mac OS X is not supported然后進(jìn)程退出。這就是很多人看到的「電源一閃窗口消失」。補(bǔ)丁處理的正是這段判斷邏輯。第三道閘門不在補(bǔ)丁范圍內(nèi)必須自己補(bǔ)macOS 內(nèi)核啟動早期會去讀 SMCSystem Management Controller的鍵值用來確定機(jī)型、電源策略等。VMware 只有在 vmx 里寫了smc.present TRUE才會虛擬出這個(gè)設(shè)備缺了它內(nèi)核走到那一步要么無限轉(zhuǎn)圈要么直接五國內(nèi)核崩潰。補(bǔ)丁只負(fù)責(zé)讓你「建得出、點(diǎn)得開」第三道在配置里第 4 章會給出完整寫法。提示這三道閘門是依次放行的。只解決第二道、不管第三道表現(xiàn)就是「能開機(jī)、卡蘋果」很多人誤判成補(bǔ)丁沒打上其實(shí)是配置缺行。還有一點(diǎn)需要提前說明這類二進(jìn)制改寫依賴字節(jié)特征定位沒有官方符號表可查。VMware 只要換了編譯版本甚至只是小版本號往前跳一點(diǎn)特征串就可能移位此時(shí)補(bǔ)丁要么找不到位置直接跳過要么改到錯(cuò)誤偏移把文件寫成半殘。所以「版本對位」不是講究而是前提。2.2 版本對位darwin16 就是 2.0.8 的天花板客戶機(jī)標(biāo)識里那個(gè)數(shù)字不是隨手編的它是 Darwin 內(nèi)核的大版本號Darwin 14 對應(yīng) 10.10Darwin 15 對應(yīng) 10.11Darwin 16 對應(yīng) 10.12Darwin 17 對應(yīng) 10.13。所以要裝 10.12.6vmx 里的 guestOS 必須寫darwin16。下表是按常見資料整理的對應(yīng)關(guān)系各家整理略有出入最終以解壓包里 readme 的說明為準(zhǔn)客戶機(jī)標(biāo)識對應(yīng)系統(tǒng)版本unlocker208 是否覆蓋說明darwin14macOS 10.10是老系統(tǒng)Tools 用 darwinPre15.isodarwin15macOS 10.11是分界點(diǎn)建議確認(rèn) Tools 版本darwin16macOS 10.12是2.0.8 正好做到這一代darwin17macOS 10.13否需要更新的補(bǔ)丁版本把 guestOS 寫成 darwin15 能不能開機(jī)能但 VMware 會按 10.11 的硬件清單去配置設(shè)備顯卡、USB 控制器、網(wǎng)卡的默認(rèn)行為都和 10.12 有差異后面裝 Tools 很容易對不上號。這就是典型的「少寫一個(gè)數(shù)字多花一整天」。VMware 這一側(cè)同樣要匹配。Workstation 12 這一代的硬件版本是virtualHW.version 12。如果你從別處拿了一份virtualHW.version 14的 vmx 模板直接套上去虛擬機(jī)會在開機(jī)前就報(bào)「不支持的硬件版本」連補(bǔ)丁都幫不了你。提示解壓后第一個(gè)該打開的文件不是win-install.cmd是 readme。包里通常同時(shí)帶 Windows 和 Linux 兩套腳本跑錯(cuò)平臺等于白忙一場。2.3 裝前自檢五件事不做后面全是玄學(xué)補(bǔ)丁本身只有幾十秒出問題基本都出在準(zhǔn)備階段。我一般按下面五條過一遍缺哪條補(bǔ)哪條能省掉后面大部分反復(fù)完全退出 VMware。主界面點(diǎn)關(guān)閉不算數(shù)托盤圖標(biāo)、后臺的vmware-vmx、授權(quán)服務(wù)進(jìn)程都要停。文件被占用時(shí)補(bǔ)丁進(jìn)程往往不會報(bào)錯(cuò)只是靜默跳過。確認(rèn)安裝目錄。默認(rèn)在C:\Program Files (x86)\VMware\VMware Workstation裝在別的盤、或者同時(shí)裝了 Player路徑就不一樣。打錯(cuò)目錄是最常見的「裝完沒反應(yīng)」。做一份冷備份。整個(gè)安裝目錄復(fù)制一份到別處退一步至少把vmwarebase.dll和vmware-vmx*.exe單獨(dú)存起來。這是唯一的后悔藥第 3 章還會講為什么腳本自帶的回滾有時(shí)恢復(fù)不回去。確認(rèn)宿主虛擬化開著。BIOS/UEFI 里 VT-x 要打開如果宿主本身就是一臺虛擬機(jī)還得在外層開嵌套虛擬化否則客戶機(jī)會卡在啟動早期。盤和內(nèi)存留夠??蛻魴C(jī)磁盤 40G 起步裝完系統(tǒng)加上常用工具就吃掉大半宿主 8G 內(nèi)存給客戶機(jī) 4G 是比較舒服的分配。第 3 條值得多說一句。很多人打補(bǔ)丁失敗后第一反應(yīng)是「再跑一遍 win-uninstall 就干凈了」但如果補(bǔ)丁已經(jīng)把文件改壞回滾腳本讀的備份也可能已經(jīng)是被覆蓋過的版本。這種時(shí)候能不能退回可用狀態(tài)取決于你有沒有自己留一份原始文件。3. 在 Windows 上跑通 unlocker208從關(guān)進(jìn)程到向?qū)Ю锍霈F(xiàn) Apple準(zhǔn)備到位之后實(shí)際操作只有幾步。真正需要動腦的是這幾步中間如何確認(rèn)狀態(tài)以及出錯(cuò)時(shí)看哪里。下面按執(zhí)行順序走一遍每一步都給一條可以直接抄的命令或操作。3.1 先看清機(jī)器上到底有幾個(gè) VMware不要急著跑腳本先確認(rèn)進(jìn)程和路徑。同一臺機(jī)器上裝過 Workstation 又裝過 Player或者舊版本卸載不干凈補(bǔ)丁很容易打進(jìn)錯(cuò)誤的目錄# 列出所有 VMware 相關(guān)進(jìn)程重點(diǎn)看 Path 列是不是你要打補(bǔ)丁的那個(gè)目錄 Get-Process | Where-Object { $_.Name -like vmware* } | Select-Object Id, Name, Path | Format-Table -AutoSize這條命令做兩件事確認(rèn)還有哪些 VMware 進(jìn)程在跑從Path列反推真實(shí)安裝目錄。如果 Path 里出現(xiàn)兩個(gè)不同的父目錄說明機(jī)器上確實(shí)有多個(gè)安裝。確認(rèn)清楚之后再統(tǒng)一結(jié)束進(jìn)程# 主界面、播放器、虛擬機(jī)和授權(quán)服務(wù)都要停否則文件被占用補(bǔ)丁會靜默跳過 Stop-Process -Name vmware, vmplayer, vmware-vmx, vmware-authd -Force -ErrorAction SilentlyContinue-ErrorAction SilentlyContinue的作用是「進(jìn)程不存在也不報(bào)錯(cuò)」因?yàn)檫@幾個(gè)名字不一定全都有。跑完之后再執(zhí)行一次上面的查詢確認(rèn)列表已空。這一步省下來后面就可能多花兩小時(shí)。3.2 win-install.cmd 干了什么日志怎么讀把補(bǔ)丁包解壓到本地目錄不要直接在壓縮包里雙擊運(yùn)行臨時(shí)目錄的路徑經(jīng)常帶空格和特殊字符然后以管理員身份打開命令提示符:: 切到解壓目錄路徑有空格一定要加引號 cd /d D:\tools\unlocker208 :: 以管理員身份運(yùn)行安裝腳本腳本內(nèi)部會去注冊表讀 VMware 的安裝路徑 win-install.cmd腳本的執(zhí)行順序大致是停止 VMware 相關(guān)服務(wù) → 從注冊表讀安裝路徑 → 備份將被修改的文件 → 逐個(gè)文件打補(bǔ)丁 → 重啟服務(wù)。日志的措辭各版本略有差別看關(guān)鍵詞就夠了Found VMware Workstation at: C:\Program Files (x86)\VMware\VMware Workstation Backing up: vmwarebase.dll Patching: vmwarebase.dll Patching: vmware-vmx.exe Finished三個(gè)關(guān)鍵點(diǎn)。第一Found ... at后面的路徑必須和你在 3.1 里確認(rèn)的一致不一致說明注冊表里讀到的是另一個(gè)安裝。第二Backing up出現(xiàn)幾次意味著還原時(shí)有幾個(gè)文件可用如果這一行沒出現(xiàn)就直接 Patching說明備份環(huán)節(jié)被跳過了趕緊手工補(bǔ)一份。第三如果日志里出現(xiàn)帶not found、skipped字樣的行多半是文件版本和補(bǔ)丁不匹配此時(shí)不要繼續(xù)往下走。還有兩類失敗值得單獨(dú)說。一是權(quán)限沒有管理員權(quán)限時(shí)腳本可能一路跑完但一個(gè)字節(jié)都沒寫進(jìn)去因?yàn)閷懭氡幌到y(tǒng)拒絕而腳本沒有檢查返回值。二是安全軟件改寫 exe 這種行為很容易被攔截表現(xiàn)為窗口一閃而過、目錄里文件時(shí)間戳沒變。遇到這兩種情況先看文件修改時(shí)間再考慮加白名單。3.3 三處驗(yàn)證向?qū)?、文件時(shí)間戳、服務(wù)狀態(tài)跑完不要急著建虛擬機(jī)花一分鐘做三項(xiàng)確認(rèn)能區(qū)分「真成功」和「假成功」向?qū)l目新建虛擬機(jī) → 客戶機(jī)操作系統(tǒng)里出現(xiàn)Apple Mac OS X版本下拉里能看到 10.12 這一項(xiàng)說明vmwarebase改成功了。文件時(shí)間戳安裝目錄里vmwarebase.dll和vmware-vmx.exe的修改時(shí)間變成剛才那一刻旁邊多出備份文件說明補(bǔ)丁真的寫進(jìn)去了。服務(wù)狀態(tài)VMware Authorization Service處于運(yùn)行中說明腳本收尾正常。三項(xiàng)里只要有一項(xiàng)不符合就回到 3.2 看日志不要跳過繼續(xù)建虛擬機(jī)——那只會把問題推到更難排查的位置。3.4 回滾win-uninstall.cmd 什么時(shí)候不靈回滾腳本做的事很簡單把備份文件覆蓋回去再重啟服務(wù)。cd /d D:\tools\unlocker208 win-uninstall.cmd它有一個(gè)容易被忽略的前提備份只在第一次打補(bǔ)丁時(shí)才是「原版」。如果你連續(xù)跑了兩次安裝腳本第二次備份覆蓋了第一次的備份此時(shí)備份里的內(nèi)容已經(jīng)是打過補(bǔ)丁的版本回滾回去等于沒回滾。這就是為什么有人反復(fù)執(zhí)行回滾狀態(tài)卻始終不變。另外VMware 的升級安裝和修復(fù)安裝都會把這兩個(gè)文件換回官方版本效果等同于自動回滾。所以升級前導(dǎo)出一次虛擬機(jī)配置升級后重新對版本打補(bǔ)丁是更省事的路徑。注意升級 VMware 之后不要拿舊版補(bǔ)丁直接往新文件上打。特征串對不上時(shí)可能寫到錯(cuò)誤偏移把文件徹底寫壞那時(shí)只能重裝 VMware。4. 讓 10.12.6 真正進(jìn)系統(tǒng)vmx 里那幾個(gè)不能省的參數(shù)向?qū)Ю锍霈F(xiàn) Apple 條目只代表你有了「建」的資格。真正把 10.12.6 從安裝界面送進(jìn)桌面靠的是 vmx 文件里那幾行配置以及安裝源的形式。這一章按「先解決安裝源再解決參數(shù)最后解決 Tools」的順序推進(jìn)。4.1 安裝源dmg 不能直接掛得先變成 ISOVMware 的虛擬光驅(qū)只認(rèn) ISO 這類原始扇區(qū)鏡像Apple 的 dmg 在 Windows 側(cè)既掛不上也引導(dǎo)不了。常見做法是先在 macOS 上把安裝鏡像轉(zhuǎn)成原始鏡像再交給 VMware# 在 macOS 上執(zhí)行把安裝鏡像轉(zhuǎn)成原始磁盤映像 hdiutil convert -format UDRW -o ./sierra.img ./InstallESD.dmg # hdiutil 產(chǎn)出的是 .img改名成 .iso 只是讓虛擬光驅(qū)按原始扇區(qū)去讀 mv ./sierra.img ./sierra.iso這里的改名并不是真正的格式轉(zhuǎn)換只是讓 VMware 按原始扇區(qū)解釋這個(gè)文件。絕大多數(shù)引導(dǎo)場景夠用如果虛擬機(jī)認(rèn)不出這張盤再用 dmg2img 之類工具先轉(zhuǎn)成標(biāo)準(zhǔn) ISO 走一遍。參數(shù)上-format UDRW表示輸出可讀寫的原始映像比默認(rèn)的壓縮格式兼容性更好。比鏡像格式更容易翻車的是引導(dǎo)順序10.12.6 的安裝器需要二次引導(dǎo)——第一次從 ISO 進(jìn)安裝界面裝完第一次重啟時(shí)要在虛擬機(jī)設(shè)置里把 CD/DVD 改成「斷開連接」否則又會回到安裝界面看起來像死循環(huán)。這個(gè)坑我在第一次操作時(shí)踩過當(dāng)時(shí)以為是鏡像壞了。4.2 vmx 參數(shù)表哪些必須有哪些是錦上添花關(guān)機(jī)狀態(tài)下編輯 vmx在虛擬機(jī)的「設(shè)置 → 選項(xiàng) → 高級」旁邊能直接找到文件路徑下面這張表是我會逐條核對的參數(shù)取值作用不寫會怎樣guestOSdarwin16聲明客戶機(jī)類型系統(tǒng)按其他類型配置硬件Tools 對不上smc.presentTRUE虛擬出 SMC 設(shè)備內(nèi)核啟動早期崩潰或卡蘋果smc.version0SMC 協(xié)議版本部分版本會報(bào) SMC 相關(guān)錯(cuò)誤firmwareefi使用 EFI 引導(dǎo)傳統(tǒng) BIOS 引導(dǎo)不了 macOSvirtualHW.version12硬件版本與 Workstation 12 不匹配會拒絕開機(jī)memsize4096客戶機(jī)內(nèi)存MB低于 2G 裝不動sata0:0.presentTRUE磁盤掛在 SATA 上部分版本找不到系統(tǒng)盤ethernet0.virtualDeve1000e網(wǎng)卡型號vmxnet3 需要 Tools 支持vhv.enableTRUE暴露硬件虛擬化嵌套場景下開不了機(jī)參數(shù)本身不復(fù)雜復(fù)雜的是取值之間的依賴比如網(wǎng)卡選了 vmxnet3系統(tǒng)裝完但 Tools 沒裝就是徹底沒網(wǎng)很多人會誤判成「網(wǎng)絡(luò)配置有問題」其實(shí)是驅(qū)動沒到位。4.3 一份抄過去就能開機(jī)的 vmx下面這份是 10.12.6 的最小可用版本注釋里寫了每一項(xiàng)的理由可以直接對照修改.encoding UTF-8 config.version 8 virtualHW.version 12 displayName macOS 10.12.6 guestOS darwin16 # SMC 設(shè)備macOS 內(nèi)核啟動早期要讀它的鍵值缺了直接崩 smc.present TRUE smc.version 0 # macOS 只走 EFI傳統(tǒng) BIOS 引導(dǎo)不起來 firmware efi # 4G 內(nèi)存 / 2 核是 10.12.6 比較舒服的下限 memsize 4096 numvcpus 2 cpuid.coresPerSocket 1 # 磁盤走 SATA兼容性最好別一上來就用 NVMe sata0.present TRUE sata0:0.present TRUE sata0:0.fileName macOS-10.12.6.vmdk # 網(wǎng)卡先 e1000e等 Tools 裝完再考慮換 vmxnet3 ethernet0.present TRUE ethernet0.virtualDev e1000e ethernet0.connectionType nat # USB 控制器鍵鼠和 U 盤都靠它 usb.present TRUE usb_xhci.present TRUE # 宿主支持 VT-x 且需要嵌套時(shí)打開 vhv.enable TRUE # 關(guān)掉安全啟動相關(guān)檢查10.12.6 不吃這一套 uefi.secureBoot.enabled FALSE修改時(shí)的順序建議是先改guestOS和smc.*能開機(jī)進(jìn)安裝界面再調(diào)內(nèi)存和核數(shù)最后動網(wǎng)卡和 USB。一次改太多出問題時(shí)不知道是哪一行引起的這是排查中最常見的自找麻煩。sata0:0.fileName要和虛擬目錄里實(shí)際的 vmdk 文件名對上改錯(cuò)了 VMware 會提示找不到磁盤。cpuid.coresPerSocket保持 1 是為了讓客戶機(jī)把兩個(gè)核識別成兩個(gè)獨(dú)立核某些多核調(diào)度場景下識別錯(cuò)會導(dǎo)致性能異常。4.4 裝 VMware Toolsdarwin.iso 和 darwinPre15.iso 別拿錯(cuò)補(bǔ)丁包的 tools 目錄里通常有兩個(gè)鏡像darwin.iso和darwinPre15.iso。名字里的 Pre15 指 Darwin 15 之前也就是 10.11 及更早的系統(tǒng)用后者10.12.6 用前者。拿錯(cuò)的表現(xiàn)是安裝程序能跑完但分辨率、剪貼板、時(shí)間同步全都不生效。掛載方式很直接虛擬機(jī)關(guān)機(jī) → 設(shè)置 → CD/DVD → 使用 ISO 鏡像 → 指向darwin.iso→ 開機(jī)進(jìn)系統(tǒng)后雙擊安裝。裝完的效果是分辨率自適應(yīng)窗口、宿主機(jī)和客戶機(jī)之間能復(fù)制粘貼、時(shí)間自動同步另外vmxnet3驅(qū)動也在這時(shí)裝上之后就可以把網(wǎng)卡型號換掉了。如果包里帶了更新腳本名字類似win-update-tools它的作用是從官方渠道拉最新版 Tools。網(wǎng)絡(luò)受限時(shí)這一步會失敗但完全不影響使用直接掛包里自帶的鏡像就行不必糾結(jié)。提示10.12 之后系統(tǒng)對內(nèi)核擴(kuò)展有簽名限制安裝 Tools 時(shí)如果提示被阻止去「安全性與隱私」里放行一次然后重啟。裝完沒有任何變化八成就是這一步?jīng)]做。5. 避坑裝完沒反應(yīng)、開機(jī)就關(guān)機(jī)的五條排查記錄下面五條是按發(fā)生頻率排的每條都按「現(xiàn)象 → 原因 → 解決」寫遇到問題時(shí)可以按順序?qū)φ栈灸芨采w絕大多數(shù)場景。5.1 現(xiàn)象向?qū)Ю锔緵]有 Apple 條目原因vmwarebase.dll沒被改動。細(xì)分下來有三種補(bǔ)丁打進(jìn)了另一個(gè)安裝目錄同時(shí)裝了 Player 和 Workstation腳本沒有管理員權(quán)限寫入被拒絕但沒報(bào)錯(cuò)安全軟件攔截了改寫行為。解決先看安裝目錄里vmwarebase.dll的修改時(shí)間如果還是幾個(gè)月前說明沒寫進(jìn)去再看 3.1 里查出的進(jìn)程路徑確認(rèn)補(bǔ)丁打的是同一個(gè)目錄最后檢查安全軟件日志。三樣都排除后重跑一次安裝腳本并盯住日志里Found ... at那一行的路徑。5.2 現(xiàn)象虛擬機(jī)建出來了一按開機(jī)窗口就消失原因vmware-vmx.exe的校驗(yàn)沒被去掉。最常見的是補(bǔ)丁只改了其中一個(gè)變體——安裝目錄里往往有vmware-vmx.exe、vmware-vmx-debug.exe、vmware-vmx-stats.exe幾個(gè)文件正常開機(jī)走的是第一個(gè)調(diào)試模式走的是第二個(gè)。只改了一個(gè)就出現(xiàn)「調(diào)試能開、正常開不了」的怪現(xiàn)象。另一種可能是 VMware 升級把文件換回了官方版。解決在安裝目錄按修改時(shí)間排序確認(rèn)所有vmware-vmx*.exe都是剛才的時(shí)間戳打開虛擬機(jī)目錄下的vmware.log搜索darwin和not supported能直接看到是哪一段校驗(yàn)攔下來的。確認(rèn)后關(guān)機(jī)、結(jié)束所有 VMware 進(jìn)程、重跑補(bǔ)丁。5.3 現(xiàn)象卡在蘋果 logo進(jìn)度條走到一半黑屏或五國原因補(bǔ)丁這一層已經(jīng)過了卡在 SMC 相關(guān)檢查上。vmx 里缺smc.present TRUE或者smc.version沒寫內(nèi)核讀不到需要的鍵值。解決虛擬機(jī)關(guān)機(jī)直接編輯 vmx 補(bǔ)上這兩行再開機(jī)。如果補(bǔ)上后仍然黑屏把firmware改成efi再試一次——有些模板是從別的系統(tǒng)復(fù)制過來的這一行還是傳統(tǒng) BIOS。改完記得保存文件再啟動VMware 在運(yùn)行時(shí)會鎖定 vmx改了不生效。5.4 現(xiàn)象安裝器彈窗說「此副本已損壞」原因不是文件真壞了是 10.12 這一代安裝器的簽名證書過期加上客戶機(jī)時(shí)間沒有同步到正確年份。解決在安裝器界面打開菜單里的終端把系統(tǒng)日期設(shè)到 2016 年關(guān)掉彈窗繼續(xù)安裝裝完進(jìn)系統(tǒng)后再把時(shí)間同步打開。這個(gè)操作只影響客戶機(jī)和宿主機(jī)無關(guān)。5.5 現(xiàn)象VMware 升級之后原來的 macOS 虛擬機(jī)打不開原因升級安裝把vmwarebase.dll和vmware-vmx*.exe全部換成了官方版本補(bǔ)丁自然沒了。有些升級還會順帶提高硬件版本導(dǎo)致 vmx 里的virtualHW.version和實(shí)際不匹配。解決升級前先導(dǎo)出一份虛擬機(jī)配置升級后先確認(rèn)硬件版本再從對應(yīng)的補(bǔ)丁版本重新打一遍不要拿舊補(bǔ)丁往新文件上打。如果升級后虛擬機(jī)直接報(bào)「文件損壞」先別急著刪把 vmx 里的硬件版本改回升級前的數(shù)字多數(shù)情況能救回來。6. 三處校驗(yàn)確認(rèn)補(bǔ)丁生效以及我給每個(gè) VMware 版本留的存檔目錄判斷補(bǔ)丁到底有沒有生效不要只看「向?qū)Ю镉袥]有 Apple」這一條那只覆蓋了三道閘門里的第一道。我一般做三項(xiàng)交叉驗(yàn)證向?qū)l目、日志、客戶機(jī)內(nèi)部信息任何一項(xiàng)對不上都說明還有環(huán)節(jié)沒走通。下面的表是這三項(xiàng)的具體查法。校驗(yàn)點(diǎn)位置正常表現(xiàn)客戶機(jī)條目新建虛擬機(jī)向?qū)С霈F(xiàn) Apple Mac OS X版本含 10.12開機(jī)校驗(yàn)虛擬機(jī)目錄vmware.log搜索not supported無命中客戶機(jī)內(nèi)部系統(tǒng)內(nèi)的終端能讀到 CPU 型號與硬件信息客戶機(jī)內(nèi)部這一項(xiàng)最容易被忽略但它能反向證明引導(dǎo)鏈路是通的。進(jìn)系統(tǒng)后開終端# 讀 CPU 標(biāo)識確認(rèn) VMware 把宿主 CPU 正確透傳進(jìn)來 sysctl -n machdep.cpu.brand_string # 只看硬件概覽前幾行機(jī)型、內(nèi)存、序列號都在這里 system_profiler SPHardwareDataType | sed -n 1,12p # 檢查 VMware Tools 的內(nèi)核擴(kuò)展是否加載有輸出說明 Tools 生效 kextstat | grep -i vmware第一條命令的輸出應(yīng)該能對上宿主的物理 CPU 型號如果是空的或者明顯錯(cuò)亂說明 vmx 里的 CPU 相關(guān)配置有問題。第二條的重點(diǎn)是內(nèi)存和機(jī)型字段內(nèi)存應(yīng)該等于memsize的值。第三條最實(shí)用Tools 裝沒裝、裝完有沒有真正加載這條命令一查便知比看分辨率有沒有變化直觀得多。最后一個(gè)習(xí)慣是我在被坑過幾次之后固定下來的在備份盤上按 VMware 版本號建目錄比如VMware-12.5/下面放這一代的原版vmwarebase.dll和全部vmware-vmx*.exe旁邊再放一份對應(yīng)版本的補(bǔ)丁包。這樣不管是升級后要重打、還是補(bǔ)丁把文件寫壞了要退回都能在兩分鐘內(nèi)搞定不用去翻舊安裝包。我還習(xí)慣在目錄里放一個(gè)文本文件寫清楚這一代跑通過哪個(gè)客戶機(jī)版本、用的哪份 vmx下次遇到同樣需求直接抄。從那以后我每次動 VMware 之前都會先把整個(gè)安裝目錄復(fù)制一份并標(biāo)上版本號再去跑補(bǔ)丁。這個(gè)動作只花十幾秒?yún)s能省掉一整個(gè)下午的重裝。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取