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