給 iPhone 等平台開發應用,總是需要用到一台蘋果電腦的,或者 iMac 或者 rmbp,就算是 mac mini 也行。不過,當開發的項目比較大了,需要的東西多了,比如我吧,雖然做一個小小的輸入法,但跑詞庫跑算法什麼的,一趟下來就得一天,搞不好還崩潰重來。每當 Xcode 不爭氣動不動就白板的時候,我就想——來一台 mac pro 多好。
不過,這個價格有點呵呵。
終於,在 CycleUser 的鼓動和誘惑下,我用他的配方擼了一台黑蘋果。
價格一套下來是 8000 人民幣,作為對比,我這兩年一直用的 rmbp 買的時候是 11000 人民幣,這還是算上學生優惠的價格,當然了,買了 apple care。
那麼再說說配置,是 64GB ddr4,256 SSD,酷睿i7 6700K.
這可是迄今為止我用過的內存最大的電腦了呢!
另外,我的主板是 技嘉 GA-Z170X-UD3 。
值得一提的是,我 ssd 用了 NVMe,所以要做額外的配置才能讓 osx 識別出來。
在開始之前,我要先說一下,直到目前為止,不能使用的功能有:
- 麥克風插口無法使用,前後都不行(但播放正常);
- 無法重啟,會卡死(但關機正常);
- 主板上那唯一的 USB-C 接口未測試, A口則只能插鼠標用。
好了,接下來,我們就先來準備安裝盤。
製作系統盤
你需要一塊容量大於 8GB 的 U盤 來製作黑蘋果的系統安裝盤,我的建議是用一個舊的老 U盤,因為將來你很有可能會用這個 U盤來救急,所以這個U盤一旦做好了,是不應該在用於其他用途的。最好是 USB 2.0,這樣你不心疼。我會告訴你反正安裝的時候也要插在 USB 2.0 插口上嗎?
這裡先按照 tonyX86 的教程來走,把啟動盤做好。注意先把自己系統語言改為英文,在“系統偏好設置”,的第一行里,“語言與地區”中改,改完會提示你重啟,這裡不用重啟,U盤做好之後改回來就可以了。
這時候你應該已經有了一個能夠引導的啟動盤,現在我們再來手動給它添加 NVMe 的驅動。
參考大神的帖子:HTTP://www.insanelymac.com/forum/topic/312803-patch-for-using-nvme-under-macos-sierra-is-ready/
我們在 EFI 分區裡找到 config.plist 編輯它,記得不要用 Xcode 編輯,用一個文本文檔編輯器來編輯即可,找到 <鍵>KernelAndKextPatches</鍵> 這個字段,在這個字段裡,你應該能找到一個 <鍵>KextsToPatch</鍵> 字段,這裡邊是一個 <排列> </排列> 數組,那麼裡邊每一個元素是一個 <字典></字典> ,我們就把下面的內容插入到這個 <排列> </排列> 裡即可,注意要在上一個 </字典> 之後,不能把元素嵌套了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
<dict> <key>Comment</key> <string>IONVMeFamily IONameMatch</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>InfoPlistPatch</key> <true/> <key>Find</key> <data>PHN0cmluZz5wY2kxNDRkLGE4MDQ8L3N0cmluZz4=</data> <key>Replace</key> <data>PHN0cmluZz5wY2kxNDRkLGE4MDI8L3N0cmluZz4=</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#1</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>ibPoAgAAweAMBQAQAACJgw==</data> <key>Replace</key> <data>ibPoAgAAweAJBQAQAACJgw==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#2</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>D7aMiIIAAACD+QwPhTIBAA==</data> <key>Replace</key> <data>D7aMiIIAAACD+QkPhTIBAA==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#3</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>AMeDpAAAAAAQAABIi0gISA==</data> <key>Replace</key> <data>AMeDpAAAAAACAABIi0gISA==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#4</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>SYnGTYX2dGFBwecMSWP/vg==</data> <key>Replace</key> <data>SYnGTYX2dGFBwecJSWP/vg==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#5</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>hv8PAABIwegMD7cPgeH/Dw==</data> <key>Replace</key> <data>hv8PAABIwegJD7cPgeH/Dw==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#6_7</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>icGB4f8PAABIAdFIgfn/DwAAdzs=</data> <key>Replace</key> <data>icGB4f8BAABIAdFIgfn/AQAAdzs=</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#8</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>SYHF/w8AAEnB7QxJiwQkSA==</data> <key>Replace</key> <data>SYHF/w8AAEnB7QlJiwQkSA==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#9_10</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>BgIAAEyNuAAQAABMiflIgeEA8P//SYmGGgEAAEmJjiIBAABBvAAQAABJKfQ=</data> <key>Replace</key> <data>BgIAAEyNuAACAABMiflIgeEA8P//SYmGGgEAAEmJjiIBAABBvAACAABJKfQ=</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#11</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>AABJiY4iAQAAugAQAABIKQ==</data> <key>Replace</key> <data>AABJiY4iAQAAugACAABIKQ==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#12</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>yAAAAEkp17gAEAAATYskJA==</data> <key>Replace</key> <data>yAAAAEkp17gAAgAATYskJA==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#13</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>4b+AQBUGTYnWugAQAABFMQ==</data> <key>Replace</key> <data>4b+AQBUGTYnWugACAABFMQ==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#14</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>iWTY+EmBxAAQAABJgccA8A==</data> <key>Replace</key> <data>iWTY+EmBxAACAABJgccA8A==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#15</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>Bf8PAABIwegMZvfB/w8PlQ==</data> <key>Replace</key> <data>Bf8PAABIwegJZvfB/w8PlQ==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#16</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>weIIQQ+2wcHgDEQJ0EQJwA==</data> <key>Replace</key> <data>weIIQQ+2wcHgCUQJ0EQJwA==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#17</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>RYTJD5XAD7bAweAMRAnYRA==</data> <key>Replace</key> <data>RYTJD5XAD7bAweAJRAnYRA==</data> </dict> |
然後,拷貝驅動文件到 EFI -> CLOVER -> kext文件 -> 其他 目錄中。
這下你就可以用它來引導啟動黑蘋果了。
調整主板配置
要調整主板的配置來更好的兼容 osx,如果你設置不好,那麼肯定是不能成功引導的(最好用默認的英文,不然你可能找不對對應的開關):
- 在 BIOS功能
- 快速啟動: 殘
- 視窗 8/10 素質特徵分析: 視窗 8/10
- CSM支持: 啟用
- 在 外設:
- Intel平台信任技術: 殘
- 初始顯示輸出: 的PCIe 1 插槽 (或任何你插槽GFX是)
- 傳統USB支持: 啟用
- XHCI手斷: 啟用
- 港口 60/64 仿真: 殘
- 在 超級IO配置:
- 串行端口 1: 殘
- 在 芯片組:
- VT-D: 殘
- 內部圖形: 啟用
- 音頻控制器: 啟用
- PCH局域網控制器: 啟用
- IOAPIC 24-119 項: 啟用
這裡我用的是 CPU 集成顯卡,所以 內部圖形 要啟用,不能關閉,關了就沒了。還有不能選擇為 auto,選擇為 auto 也無法點亮的哦!
這是我遇到的第一個坑
安裝驅動
設置好了之後你就可以進入安裝界面了,開開心心地安裝吧!裝好之後會重啟,不要拔下 U盤,引導還得靠它,回到四葉草的啟動界面後選擇為你剛裝好的硬盤啟動,繼續完成 10.12.4 的安裝過程。
安裝完成後,你就可以把U盤裡的 EFI 分區整體複製到硬盤的EFI分區了,你可能需要這個工具來掛載 EFI 分區。
複製過去之後,記得刪除硬盤 EFI 分區中 EFI -> CLOVER -> kext文件 -> 其他 目錄下的那個驅動文件,還記得文件名嗎?叫 IONVMeFamily.KEXT ,它已經被安裝到你的系統中了,就不需要這裡再有了。
一切都完成後,就可以開始打驅動了,這裡要注意,先確定你的電腦插著網線,或者如果驅動沒有,要先調整時間,不然驅動驗證不通過是無法打驅動的!
這是我遇到的第二個坑
用事先你根據教程放入U盤備用的 MultiBeast 來安裝驅動,不要選擇快速開始模式:
- 快速開始
- none 啥都不選
- 驅動程序
- 音頻
- ALC 1150
- 100 / 200 系列音頻
- 雜項
- FakeSMC
- FakeSMC
- FakeSMC
- 網絡
- IntelMausiEthernet V2.2.0
- 音頻
- 引導程序
- 啥都不選
- 定制
- 顯卡配置
- 英特爾HD 5XX
- 系統定義
- iMac電腦 17,1
- 顯卡配置
這樣選擇 Build -> Install 即可。
安裝完成後你就可以拔掉 U盤 啟動進系統了!
配置硬件信息
進入系統後,使用三葉草配置,先掛載你硬盤的 EFI 分區,然後用它打開你 EFI 分區裡的 config.plist
在左側選擇“SMBIOS”,在右側點那個魔法棒,選擇生成你的系統參數,注意不要選擇 Mac Pro 系列,選擇 iMac,比如我就是 iMac 17,1,因為這個的 CPU 和我的是一樣的。
然後在右側有兩個“shake”按鈕,多按幾次,生成一個隨機的值用來生成你的序列號。
然後點 ok 即可。
配置好後,你還需要添加內存信息,修改為你內存的真實數據(不帶星號的字段可以留空),不然內存識別會有問題。都設置完成後關閉退出。
重啟後,你的內存和CPU識別應該就也正常了。
最後,值得一提的是,音響插後面要插黑孔,也就是我們平時用的後置音響的那個插孔,輸出選擇為“線路輸出”,插機箱前插口的話,則輸出選為內置音箱。雖然有點麻煩,但至少是能用的。如果你使用外置聲卡,那就隨意了。
另:
網上盛傳的兩個修復重啟問題的驅動(OpenHaltRestart.kext或EvOreboot.kext),都不要使用,不然就祈禱你沒有格式化那個啟動U盤吧。
請享用
至此,黑果順利安裝完成,後續如果有什麼其他進展,我會繼續更新這篇文章。 :)
祝開發愉快沒有bug。
本文由 落格博客 原創撰寫:落格博客 » 攢一台用來做開發的 黑蘋果 hackintosh
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/2729.html
以前黑蘋果還蠻簡單的,後來越來越麻煩,到了2011年之後還是買白蘋果,省事。
ps. 這網站有內涵,不可多得的好站。
尼斯,很贊!
準備入個itx裝黑果,一直在爬配置,嘿嘿
tonyx86上的配置很多啊,記得要買典型的不能圖新,不然遇到問題很煩人。
怪圈就是按照tonymacx86的方案,還是擔心會出現睡眠和音量問題。
嗯……音量我這邊沒什麼問題,板載聲卡正常……麥克風無效。
睡眠的話……我7×24小時開機,不需要這個功能哈哈。