前言
距離去年正式開始折騰黑蘋果,到現(xiàn)在已有一年半的時(shí)間,在這段時(shí)間里,從自以為了解系統(tǒng)(曾經(jīng)安裝過很多版本的win和linux)安裝,到為了實(shí)現(xiàn)一個(gè)硬件驅(qū)動(dòng)而焦頭爛額,再到站在大牛肩膀上實(shí)現(xiàn)自己的驅(qū)動(dòng),期間感慨良多。雖然在遠(yuǎn)景上寫過幾篇帖子,也主要是為自己儲(chǔ)備相關(guān)的技術(shù)素材,方便以后繼續(xù)黑。于是打算借著簡書的markdown功能寫一篇總結(jié),也算是markdown的第一次練手吧。
安裝macOS的初衷
- 想自學(xué)Swift
- 對(duì)macOS無限好奇
- macOS有良好的軟件體驗(yàn)
- 能提升程序員的生產(chǎn)力
使用黑蘋果的體驗(yàn)
由于花了將近一年的時(shí)間實(shí)現(xiàn)了幾乎所有驅(qū)動(dòng),才使得現(xiàn)在有了接近完美的macOS體驗(yàn)。
- 工具軟件使用便利快捷鍵飛起來
- 與ios高度的協(xié)調(diào)性
- apple自己開發(fā)的app好用還免費(fèi)(17年剛免費(fèi)的三件套)
- 對(duì)游戲的支持不好,才更好集中精力工作學(xué)習(xí)
macOS工具軟件的良好體驗(yàn),也讓我從win系統(tǒng)到軟件全盜版的人開始在macOS和ios上付費(fèi)買軟件了(雖然后來購買了正版win8并升級(jí)成正版win10,但是macOS已經(jīng)成主力系統(tǒng)了)。
對(duì)于macOS,未來……
如今已經(jīng)越來越離不開macOS了,也更期待Retina屏幕、觸控板,尤其在體驗(yàn)過朋友的觸控板,以及自己黑的臺(tái)式機(jī)使用2K屏后,未來也許考慮擁有一臺(tái)真正的macbook pro吧……
說一說黑蘋果的那些坑
展示一下配置
雷 神 G170P 筆 記 本,藍(lán) 天(CLEVO)P170SMA模 具
CPU:Core i7-4710MQ 2.50GHz
主 板:CLEVO P17SM-A
硬 盤:威剛SSD 256GB
內(nèi) 存:16 GB ( 威 剛 DDR3L 1600MHz )
顯 卡:Nvidia GTX970M Intel HD4600
有 線 網(wǎng) 卡:瑞 昱 RTL8168/8111/8112
無 線 網(wǎng) 卡:博通BCM94352HMB(原 裝intel網(wǎng) 卡,無 解)
聲 卡:Realtek ALC892
深坑警示:
黑蘋果終究還是要仿制各種驅(qū)動(dòng)的,如果蘋果本身就不支持,再?zèng)]有硬件廠商的支持,那就意味著再折騰也是徒勞
AMD的CPU往往需要破解內(nèi)核,越新的CPU越難驅(qū)動(dòng),同時(shí)集顯也不支持,intel最新CPU則可以修改fakeID來驅(qū)動(dòng),盡量不選AMD的CPU
由于intel與Nvida的Optimus雙顯卡切換技術(shù),直接給MXM顯卡直接判了死刑,不僅驅(qū)動(dòng)不了,還會(huì)帶來滿頻率和能耗的問題。除了個(gè)別筆記本廠商良心的提供了獨(dú)立輸出,否則就不要再掙扎了。
解決辦法:
1.在BIOS層面由SG切換至IGFX(集顯獨(dú)顯切換->集顯模式)再分配最大共享顯存DVMT Pre-Allocated,我設(shè)置為1024,個(gè)別主板上限設(shè)置,無法啟動(dòng)系統(tǒng)的根據(jù)情況降低。當(dāng)然這樣的結(jié)果會(huì)導(dǎo)致安裝win也沒有獨(dú)顯可用
2.在修改DSDT和SSDT文件屏蔽獨(dú)顯,win系統(tǒng)中獨(dú)顯不會(huì)受到影響intel無線網(wǎng)卡的藍(lán)牙功能可以免驅(qū),但是wifi就不要掙扎了,無解。老老實(shí)實(shí)換個(gè)博通或者usb網(wǎng)卡吧
引導(dǎo)模式主要分為變色龍、clover、Ozmosis,
變色龍用傳統(tǒng)bios引導(dǎo),mbr硬盤分區(qū)。大多用懶人版系統(tǒng),也用原版,但可調(diào)參數(shù)較少,對(duì)新手不友好。
四葉草(clover)支持UEFI引導(dǎo),gpt硬盤分區(qū)。原版系統(tǒng)安裝,功能強(qiáng)大,適合新手。
Ozmosis適用于精通DSDT和SSDT修改的高手,刷BIOS來直接引導(dǎo)macOS,難度較高,關(guān)鍵是支持的主板少,現(xiàn)在以華碩和技嘉為主。
我個(gè)人嘗試了變色龍和四葉草,最后選擇了四葉草,因?yàn)樵谇捌谡娴暮芊奖悖笃谏?jí)系統(tǒng)很方便
黑蘋果的過程
對(duì)黑蘋果有一定了解后,就會(huì)發(fā)現(xiàn)黑蘋果真正最主要的事情就是實(shí)現(xiàn)驅(qū)動(dòng),驅(qū)動(dòng)實(shí)現(xiàn)了,安裝和升級(jí)系統(tǒng)都是簡單的事情,下面也主要以調(diào)試驅(qū)動(dòng)為主。
零基礎(chǔ)的新手推薦先了解一下基礎(chǔ)知識(shí)(感謝遠(yuǎn)景論壇和黑蘋果樂園)
目錄
一.刷入破解版BIOS
二.安裝系統(tǒng)
三.調(diào)整config
四.屏蔽獨(dú)顯,集顯開啟QE/CI
五.實(shí)現(xiàn)CPU變頻
六.定制USB驅(qū)動(dòng)
七.實(shí)現(xiàn)藍(lán)牙+WIFI
八.定制聲卡驅(qū)動(dòng)
九.實(shí)現(xiàn)亮度驅(qū)動(dòng)
十.實(shí)現(xiàn)睡眠
一.刷入破解版BIOS
由于雷神原版的BIOS長期不更新,并且隱藏了很多功能,為了方便以后的調(diào)試不得已選擇破解版的BIOS,由于刷BIOS有風(fēng)險(xiǎn),需要仔細(xì)研究以后再進(jìn)行操作。在刷機(jī)之前,一定要反復(fù)確認(rèn)BIOS是否適用于你的電腦。現(xiàn)在部分新主板支持Q-flash、M-flash刷寫B(tài)IOS,這種方法簡單安全,并且很多有中文提示,就不建議按照以下操作來刷寫B(tài)IOS了
1.進(jìn) 入bios ,CMOS設(shè) 置 中 禁 用Intel Anti-Theft Technology,如 果 該 項(xiàng) 目 是 可 行 的。
2.制 作 一 個(gè) U盤 啟 動(dòng) 盤(也 就 是PE工 具),把bios解 壓 到U盤 中 新 建 的bios文 件 夾 里,方 便dos下 查 找
3.重 啟 進(jìn) 入PE下純DOS環(huán)境下,運(yùn) 行meset.exe(DOS命 令 不 會(huì) 的 百 度 吧),系 統(tǒng) 會(huì) 自 動(dòng) 重 啟。
4.運(yùn) 行 在 純DOS flashme.bat,系 統(tǒng) 將 自 動(dòng) 關(guān) 機(jī)。
5.電 池 和 電 源 適 配 器 斷 開5秒,然 后 連 電。
6.在 系 統(tǒng) 上,系 統(tǒng) 會(huì) 自 動(dòng) 重 新 啟 動(dòng)。
7.進(jìn) 入CMOS設(shè) 置 檢 查BIOS版 本 和 加 載 系 統(tǒng) 默 認(rèn),保 存 更 改 并 重 新 啟 動(dòng)。
之后需要使用集顯的,在bios設(shè) 置 下 找 到Chipset → Graphics Configuration → Primary Display設(shè) 置IGFX(集 顯 模 式)
Aperture Size設(shè) 置512(因 為 我 的 內(nèi) 存 是 16G,所 以 選 最 大,根 據(jù) 情 況 可 以 適 當(dāng) 降 低)
DVMT Pre-Allocated設(shè) 置1024(我 也 是 選 最 大,根 據(jù) 情 況 適 當(dāng) 降 低)
DVMT Total Gfx Mem設(shè) 置MAX
想用DSDT+SSDT屏蔽獨(dú)顯的,Primary Display可以不用管,使用正常的集顯獨(dú)顯切換模式就可以,但是需要分配共享內(nèi)存
二.安裝系統(tǒng)
首先clover支持UEFI引導(dǎo),因此在主板支持的情況下可以將硬盤設(shè)置為GUID分區(qū)(即GPT)
為了方便分出了兩個(gè)EFI分區(qū)分別引導(dǎo)win10和macOS(macOS安裝格式化安裝盤時(shí)會(huì)有幾率導(dǎo)致EFI分區(qū)被格,分開引導(dǎo)以防萬一)
之后制作U盤進(jìn)行安裝
三、調(diào)整config
clover引導(dǎo)最大的方便之處在于config文件中有大量的參數(shù)可以調(diào)整,可以解決很多實(shí)際問題。下面以我筆記本調(diào)整為例進(jìn)行說明。下面是10.12.6驅(qū)動(dòng)完美后config文件,位于efi分區(qū)/EFI/CLOVER中
ACPI
<key>ACPI</key>
<dict>
<key>DSDT</key>//DSDT修復(fù)補(bǔ)丁
<dict>
<key>Debug</key>
<false/>
<key>DropOEM_DSM</key>
<false/>
<key>Fixes</key>
<dict>
<key>FixDarwin_0002</key>//使系統(tǒng)更多設(shè)備能在acpi模式下工作
<true/>
<key>FixShutdown_0004</key>//修復(fù)關(guān)機(jī)斷電問題
<true/>
</dict>
<key>ReuseFFFF</key>
<false/>
<key>SlpSmiAtWake</key>//幫助解決UEFI模式下睡眠和關(guān)機(jī)問題
<true/>
<key>SuspendOverride</key>//休眠覆寫,影響Fixshutdown補(bǔ)丁
<true/>
<key>Patches</key>
<array>
<dict>
<key>Comment</key>
<string>Rename EHC2 to EH02</string>//USB遮蓋器(實(shí)現(xiàn)USB驅(qū)動(dòng)中詳細(xì)介紹)
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
RUhDMg==
</data>
<key>Replace</key>
<data>
RUgwMg==
</data>
</dict>
<dict>
<key>Comment</key>
<string>Rename EHC1 to EH02</string>(實(shí)現(xiàn)USB驅(qū)動(dòng)中詳細(xì)介紹)
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
RUhDMQ==
</data>
<key>Replace</key>
<data>
RUgwMQ==
</data>
</dict>
<dict>
<key>Comment</key>
<string>Rename XHC1 to XHC</string>(實(shí)現(xiàn)USB驅(qū)動(dòng)中詳細(xì)介紹)
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
WEhDMQ==
</data>
<key>Replace</key>
<data>
WEhD
</data>
</dict>
<dict>
<key>Comment</key>
<string>change _OSI to XOSI</string>//模擬win系統(tǒng)中USB運(yùn)行模式
<key>Find</key>
<data>
X09TSQ==
</data>
<key>Replace</key>
<data>
WE9TSQ==
</data>
</dict>
</array>
<key>ReuseFFFF</key>
<false/>
</dict>
<key>HaltEnabler</key>//解決重啟或關(guān)機(jī)無法斷電問題
<true/>
<key>SSDT</key>
<dict>
<key>DropOem</key>丟棄所有自帶表,完全啟用自定義ssdt。
<true/>
<key>Generate</key>
<false/>
<key>PluginType</key>
<integer>1</integer>
</dict>
<key>SortedOrder</key>//按順序加載SSDT
<array>
<string>SSDT.aml</string>
<string>SSDT-1.aml</string>
<string>SSDT-2.aml</string>
<string>SSDT-3.aml</string>
<string>SSDT-4.aml</string>
<string>SSDT-5.aml</string>
<string>SSDT-6.aml</string>
<string>SSDT-7.aml</string>
<string>SSDT-8.aml</string>
<string>SSDT-9.aml</string>
<string>SSDT-10.aml</string>
<string>SSDT-11.aml</string>
</array>
</dict>
Boot
<key>Boot</key>
<dict>
<key>Arguments</key>
<string>dart=0 nv_disable=1</string>
//dart=0 修復(fù)BIOS開啟VT-d虛擬機(jī)設(shè)置導(dǎo)致的五國錯(cuò)誤,未開啟可不采用
//nv_disable=1禁止加載nvidia驅(qū)動(dòng)(在10.13中已經(jīng)失效),需要加載則添加nvda_drv=1
<key>Debug</key>
<false/>
<key>DefaultVolume</key>
<string>macOS</string>
//默認(rèn)引導(dǎo)盤卷名
<key>Secure</key>
<false/>
<key>Timeout</key>
<integer>5</integer>
//clover引導(dǎo)暫停時(shí)間
<key>XMPDetection</key>
<string>Yes</string>
//適用于DDR3 XMP內(nèi)存
</dict>
Devices
<key>Devices</key>
<dict>
//這段代碼以實(shí)現(xiàn)聲卡Audio、USB、以及其他設(shè)備仿冒使用
//我個(gè)人將這些設(shè)備功能在DSDT+SSDT中實(shí)現(xiàn),這里沒有代碼
//實(shí)現(xiàn)方法在后面介紹
</dict>
GUI
<key>GUI</key>
<dict>
<key>Language</key>
<string>zh_CN:0</string>
//鍵盤編碼zh_CN:0或en:0(中文或英文)
<key>Mouse</key>
<dict>
<key>DoubleClick</key>
<integer>500</integer>
//設(shè)置鼠標(biāo)指針雙擊反應(yīng)時(shí)間
<key>Enabled</key>
<false/>
//關(guān)閉引導(dǎo)界面實(shí)現(xiàn)鼠標(biāo)操作(實(shí)現(xiàn)需要添加鼠標(biāo)圖標(biāo),默認(rèn)主題都有)
<key>Mirror</key>
<false/>
//關(guān)閉鼠標(biāo)翻轉(zhuǎn)
<key>Speed</key>
<integer>8</integer>
//鼠標(biāo)速度
</dict>
<key>Scan</key>
//設(shè)置clover引導(dǎo)項(xiàng)
<dict>
<key>Entries</key>
<true/>//開啟啟動(dòng)項(xiàng)偵測(cè)
<key>Legacy</key>
<false/>//關(guān)閉傳統(tǒng)BIOS引導(dǎo)項(xiàng)
<key>Tool</key>
<false/>//關(guān)閉UEFI Tool項(xiàng)
</dict>
<key>ScreenResolution</key>
<string>1920x1080</string>
//clover引導(dǎo)界面分辨率1920x1080
(UEFI方式引導(dǎo),確認(rèn)\EFI\Clover\drivers64UEFI\有CsmVideoDxe-64.efi驅(qū)動(dòng),
同時(shí)在UEFI BIOS里開啟CSM。如輸入的分辨率無法識(shí)別時(shí),需注入EDID.
此外,對(duì)于獨(dú)立顯卡需在Graphics模塊下開啟以下設(shè)置:
對(duì)于ATI /AMD顯卡,開啟PatchVBios選項(xiàng)
對(duì)于Nvidia顯卡,在PatchVBiosBytes選項(xiàng)里注入修改數(shù)值)
<key>Theme</key>
<string>Universe</string>
//clover引導(dǎo)界面主題
</dict>
Graphics
<key>Graphics</key>
<dict>
<key>CustomEDID</key>
<data>
AP///////wANrjUXAAAAADIWAQSVJhV4AtSVo1VQnScPUFQAAAABAQEBAQEB
AQEBAQEBAQEBtDuASnE4NEAwIDUAftcQAAAYAAAA/gBOMTczSEdFLUUxMQog
AAAA/gBDTU4KICAgICAgICAgAAAA/gBOMTczSEdFLUUxMQogAOA=
</data>
//注入顯示屏EDID標(biāo)識(shí)(可以解決顯示器黑屏、花屏等問題)
//方法(轉(zhuǎn)自黑蘋果樂園)https://imac.hk/clover-injection-edid.html
<key>Inject</key>
<dict>
<key>ATI</key>
<false/>
<key>Intel</key>
<true/>
//開啟注入集顯
<key>NVidia</key>
<false/>
</dict>
<key>InjectEDID</key>
<true/>
//開啟EDID注入
<key>LoadVBios</key>
<true/>
//開啟選擇的顯卡rom
<key>NvidiaSingle</key>
<false/>
<key>ig-platform-id</key>
<string>0x0a260006</string>
//集顯ig-platform-id(HD4600對(duì)應(yīng)0x0a260006)
</dict>
<key>KernelAndKextPatches</key>
<dict>
<key>AppleRTC</key>//防止BIOS重置
<true/>
<key>AsusAICPUPM</key>//修復(fù)華碩主板電源管理驅(qū)動(dòng)
<false/>
<key>Debug</key>
<false/>
<key>ForceKextsToLoad</key>
<array>
<string>\System\Library\Extensions\IONetworkingFamily.kext</string>
</array>
<key>KernelCpu</key>
<false/>
<key>KernelHaswellE</key>
<false/>
<key>KernelLapic</key>
<false/>
<key>KernelPm</key>//因Haswell平臺(tái)鎖定MSR,開啟避免無限重啟
<true/>
<key>KextsToPatch</key>//所有驅(qū)動(dòng)的主要補(bǔ)丁集合
<array>
<dict>
<key>Comment</key>//10.12.5后新亮度補(bǔ)丁
<string>change F%uT%04x to F%uTxxxx for AppleBacklightInjector.kext (credit RehabMan)</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
RiV1VCUwNHgA
</data>
<key>Name</key>
<string>com.apple.driver.AppleBacklight</string>
<key>Replace</key>
<data>
RiV1VHh4eHgA
</data>
</dict>
<dict>
<key>Comment</key>//BCM94352HMB網(wǎng)卡補(bǔ)丁
<string>AirPortBrcm4360</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
gflSqgAAdSk=
</data>
<key>Name</key>
<string>AirPortBrcm4360</string>
<key>Replace</key>
<data>
gflSqgAAZpA=
</data>
</dict>
<dict>
<key>Comment</key>//BCM94352HMB網(wǎng)卡補(bǔ)丁
<string>AirPortBrcm4360 Patch 1</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
QTnEdRs=
</data>
<key>Name</key>
<string>AirPortBrcm4360</string>
<key>Replace</key>
<data>
QTnEZpA=
</data>
</dict>
<dict>
<key>Comment</key>
<string>AirPortBrcm4360 Patch 3</string>//BCM94352HMB網(wǎng)卡補(bǔ)丁
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
g33EBHQG
</data>
<key>Name</key>
<string>AirPortBrcm4360</string>
<key>Replace</key>
<data>
g33EBGaQ
</data>
</dict>
<dict>
<key>Comment</key>
<string>AirPort Extreme</string>//BCM94352HMB網(wǎng)卡補(bǔ)丁
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
axAAAHUN
</data>
<key>Name</key>
<string>AirPortBrcm4360</string>
<key>Replace</key>
<data>
axAAAJCQ
</data>
</dict>
<dict>
<key>Comment</key>
<string>AirPortBrcm4360 Patch 2</string>//BCM94352HMB網(wǎng)卡補(bǔ)丁
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
QQ+3zTnBdQw=
</data>
<key>Name</key>
<string>AirPortBrcm4360</string>
<key>Replace</key>
<data>
QQ+3zTnBZpA=
</data>
</dict>
<dict>
<key>Comment</key>
<string>Enable 9MB cursor bytes, 0x0a260006</string>
//HD4600防花屏補(bǔ)丁
<key>Find</key>
<data>
BgAmCgEDAwMAAAACAAAwAQAAYAA=
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
BgAmCgEDAwMAAAACAAAwAQAAkAA=
</data>
</dict>
<dict>
<key>Comment</key>
<string>QECI HD4600 Azul (GT2 Mobile to Desktop)</string>
//HD4600開啟QECI補(bǔ)丁
<key>Find</key>
<data>
hoASBA==
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
hoAWBA==
</data>
</dict>
<dict>
<key>Comment</key>
////HD4600防花屏補(bǔ)丁
<string>Frame Buffer</string>
<key>Find</key>
<data>
AQMDAwAAAAIAADABAABgAA==
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
AQMDAwAAAAIAADABAACQAA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>QECI HD4600 (GT2 Mobile to Desktop)</string>
//HD4600開啟QECI補(bǔ)丁
<key>Find</key>
<data>
hoASBA==
</data>
<key>Name</key>
<string>AppleIntelHD5000Graphics</string>
<key>Replace</key>
<data>
hoAWBA==
</data>
</dict>
<dict>
<key>Find</key>//SSD開啟TRIM
<data>
QVBQTEUgU1NEAA==
</data>
<key>Name</key>
<string>IOAHCIBlockStorage</string>
<key>Replace</key>
<data>
AAAAAAAAAAAAAA==
</data>
</dict>
<dict>
<key>Find</key>//開啟USB3.0補(bǔ)丁
<data>
g710////EA==
</data>
<key>Name</key>
<string>AppleUSBXHCIPCI</string>
<key>Replace</key>
<data>
g710////EA==
</data>
</dict>
<dict>
<key>Find</key>
<data>
AQAAdSU=
</data>
<key>Name</key>
<string>IOGraphicsFamily</string>
<key>Replace</key>
<data>
AQAA6yU=
</data>
</dict>
<dict>
<key>Find</key>//藍(lán)牙補(bǔ)丁
<data>
SIX/dEdIiwc=
</data>
<key>Name</key>
<string>IOBluetoothFamily</string>
<key>Replace</key>
<data>
Qb4PAAAA60Q=
</data>
</dict>
<dict>
<key>Name</key>//HD4600防花屏補(bǔ)丁
<string>AppleIntelFramebufferAzul</string>
<key>Comment</key>
<string>Isolate IntelAccelerator HD4600 10.12.x</string>
<key>Find</key>
<data>SImLqAAAAA==</data>
<key>Replace</key>
<data>kJCQkJCQkA==</data>
</dict>
</array>
</dict>
SMBIOS
<key>SMBIOS</key>
<dict>
<key>BiosReleaseDate</key>
<string>10/29/13</string>
<key>BiosVendor</key>
<string>Apple Inc.</string>
<key>BiosVersion</key>
<string>MBP111.88Z.0138.B03.1310291227</string>//MacBookPro11,1的Biosversion
<key>Board-ID</key>
<string>Mac-XXXXXXXXXXXXXXX</string>//MacBookPro11,1的ID
<key>BoardManufacturer</key>
<string>Apple Inc.</string>
<key>BoardSerialNumber</key>
<string>XXXXXXXXXXXXXXXXXX蘋果電腦主板MLB序列號(hào)</string>
<key>BoardType</key>
<integer>10</integer>
<key>ChassisAssetTag</key>
<string>MacBook-Aluminum</string>
<key>ChassisManufacturer</key>
<string>Apple Inc.</string>
<key>ChassisType</key>
<string>08</string>
<key>Family</key>
<string>MacBook Pro</string>
<key>Manufacturer</key>
<string>Apple Inc.</string>
<key>Mobile</key>
<true/>
<key>ProductName</key>
<string>MacBookPro11,1</string>
<key>SmUUID</key>
<string>XXXXXXXXXXXXXXXXXXX硬件UUID碼</string>
<key>Trust</key>
<false/>
<key>Version</key>
<string>1.0</string>
</dict>
<key>SystemParameters</key>//開啟 inject System ID,如果不選的話,會(huì)導(dǎo)致custom uuid和System-ID數(shù)據(jù)顛倒
<dict>
<key>CustomUUID</key>
<string>XXXXXXXXXXXXXXXXXXXROM碼</string>
<key>InjectKexts</key>
<string>Detect</string>
</dict>
smbios中有電腦型號(hào)以及系統(tǒng)三碼的描述(三碼用來激活imessage和Facetime)
其中電腦型號(hào)對(duì)CPU變頻有很大的作用,在選定型號(hào)之前,需要用Mactracker軟件找到與自己CPU型號(hào)主頻最接近的,為以后CPU變頻提供條件。
四.屏蔽獨(dú)顯,集顯開啟QE/CI
所謂的QE/CI其實(shí)通俗的講就是顯卡的正常特效顯示,比如蘋果系統(tǒng)的水波紋特效,毛玻璃特效。很多朋友能顯示但是畫面效果不好,多是沒有正常驅(qū)動(dòng)集顯顯存,獨(dú)顯驅(qū)動(dòng)后是不存在這個(gè)問題的,這一節(jié)就來說明這個(gè)問題。
對(duì)于無法使用獨(dú)顯的筆記本,需要屏蔽獨(dú)顯來保證集顯正常工作以及睡眠功能的實(shí)現(xiàn),同時(shí)解決獨(dú)顯滿負(fù)荷導(dǎo)致能耗問題,其實(shí)也是為了保護(hù)獨(dú)顯。而那些可以驅(qū)動(dòng)獨(dú)顯的,就簡單了。
A卡要么免驅(qū),要么加入對(duì)應(yīng)kext就好了。在最新的驅(qū)動(dòng)方法里想要單卡驅(qū)動(dòng)A卡需要lilu.kext和 WhateverGreen.kext相互配合使用,。(注意:lilu與WhateverGreen的版本要兼容)
N卡老卡有不少免驅(qū),不過自從蘋果不再采用N卡后,N卡的驅(qū)動(dòng)可謂是爛的一塌糊涂,現(xiàn)在主要方法是使用lilu.kext和nvidiagraphics.kext,在config中加入代碼開啟SIP,同時(shí)在代碼中的Boot->Arguments中加入-lilubetaall,進(jìn)入系統(tǒng)后安裝webdriver
集顯,這里的集顯全部指intel的集顯,AMD無解。集顯大部分都比較簡單,因?yàn)閲獯笊裰谱鞯膌ilu.kext與IntelGraphicsFixup.kext驅(qū)動(dòng),再加上集顯代碼注入和花屏補(bǔ)丁就差不多了。但是我的HD4600移動(dòng)版很悲劇,需要仿冒HD4600桌面版,花屏還需要修改EDID。
下面著重介紹一下HD4600移動(dòng)版驅(qū)動(dòng)方法
BIOS調(diào)整
共享內(nèi)存調(diào)整最大(部分主板調(diào)整最大進(jìn)入clover黑屏,根據(jù)情況調(diào)節(jié))
顯卡選擇可以先選擇板載(IGFX),在獨(dú)顯屏蔽后恢復(fù)即可
基本的驅(qū)動(dòng)
lilu1.1.7(HD4600移動(dòng)版不兼容lilu1.2,使用后嚴(yán)重花屏)
IntelGraphicsFixup 1.1.2 (需要兼容lilu1.1.7)
以上兩個(gè)驅(qū)動(dòng)是更新10.13系統(tǒng)必備
FakePCIID.kext
FakePCIID_Intel_HD_Graphics.kext
然后config中注入仿冒代碼
Boot->Arguments
<string> nv_disable=1 -lilubeta -igfxbeta</string>
//禁止驅(qū)動(dòng)N卡(這個(gè)只是驅(qū)動(dòng)層面,硬件無效)
//-lilibeta與-igfxbeta是與相關(guān)驅(qū)動(dòng)配合使用
<key>Inject</key>
<dict>
<key>Intel</key>
<true/>
</dict>
<key>ig-platform-id</key>
<string>0x0a260006</string>
<key>Devices</key>
<dict>
<key>FakeID</key>
<dict>
<key>IntelGFX</key>
<string>0x04128086</string>
</dict>
</dict>
由于10.12系統(tǒng)與10.13系統(tǒng)花屏補(bǔ)丁不同,下面是10.13集顯補(bǔ)丁,需要10.12集顯補(bǔ)丁的回到第二節(jié)調(diào)整config
KernelAndKextPatches->KextsToPatch
<dict>//10.13集顯補(bǔ)丁
<key>Comment</key>
<string>Enable 9MB cursor bytes, 0x0a260006</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
BgAmCgEDAwMAAAACAAAwAQAAYAA=
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
BgAmCgEDAwMAAAACAAAwAQAAkAA=
</data>
</dict>
<dict>
<key>Comment</key>
<string>Enable 128MB DVMT-prealloc, 48MB framebuffer & cursor bytes, 0x0a260006</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
BgAmCgEDAwMAAAACAAAwAQAAYAA=
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
BgAmCgEDAwMAAAAIAAAAAwAAAAM=
</data>
</dict>
<dict>
<key>Comment</key>
<string>Sierra Boot graphics glitch</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
AQAAdSU=
</data>
<key>Name</key>
<string>IOGraphicsFamily</string>
<key>Replace</key>
<data>
AQAA6yU=
</data>
</dict>
<dict>
<key>Comment</key>
<string>Disable Port 0204</string>
<key>Disabled</key>
<true/>
<key>Find</key>
<data>
AgQJAAAEAACHAAAA
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
/wAAAAEAAABAAAAA
</data>
</dict>
<dict>
<key>Comment</key>
<string>Isolate IntelAccelerator HD4600 10.12.x</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
SImLqAAAAA==
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
kJCQkJCQkA==
</data>
</dict>
EDID修改
針對(duì)10.13的集顯花屏問題,部分只需要打上補(bǔ)丁就好了,但是HD4600移動(dòng)版在開機(jī)過程中還是會(huì)出現(xiàn)8個(gè)蘋果的花屏現(xiàn)象。經(jīng)過不斷的測(cè)試,花屏問題應(yīng)該是HD4600仿冒桌面版在第二階段顯卡重置時(shí)出現(xiàn)的,原因其實(shí)還是HD4600移動(dòng)版不兼容的問題,但是如果在顯卡重置時(shí)順帶刷新屏幕,則迫使顯卡重新讀取EDID輸出畫面,修改EDID目的就在此。這就需要修改EDID中水平同步寬度sync width,修改需要EDID工具,修改沒有什么標(biāo)準(zhǔn),只要跟之前不同即可,可以自行嘗試。
DSDT+SSDT屏蔽獨(dú)顯
獨(dú)顯屏蔽基本策略
在電腦開機(jī)時(shí)(對(duì)應(yīng)_INI method)和睡眠喚醒時(shí)(對(duì)應(yīng)_WAK method)調(diào)用關(guān)閉Nvidia獨(dú)顯的Method。(對(duì)于剛提取的DSDT與SSDT,需要將代碼中的GFX0全部替換為IGPU)
方法:
一、使用 _DSM + _PS3
二、直接用_OFF(或者SGOF等等,有些機(jī)型是不同的,但是直接調(diào)用影響CPU變頻)
但是我的電腦中DSDT與SSDT存在EC依賴,需要先去掉依賴才能正常屏蔽獨(dú)顯 ,然后
在INI和WAK中調(diào)用PINI(調(diào)用PS3的方法)
移除SGOF中EC依賴,在REG加入EC依賴(此為補(bǔ)丁,復(fù)制到MaciASL的patch中使用)
# DSDT.dsl
into method label _REG parent_hid PNP0C09 code_regex ([\s\S]*) replace_matched
begin
If (LAnd(LEqual(Arg0,3), LEqual(Arg1,1)))\n
{\n
Store (Zero, \\_SB.PCI0.LPCB.EC.FDAT)\n
Store (0xBF, \\_SB.PCI0.LPCB.EC.FCMD)\n
}\n
%1
end;
在INI加上External聲明。(此為補(bǔ)丁,復(fù)制到MaciASL的patch中使用)
into method label _INI insert
begin
External (\_SB_.PCI0.PEG0.PEGP._OFF, MethodObj)\n
_OFF()\n
end;
into method label SGOF code_regex .*EC.* removeall_matched;
創(chuàng)建PINI,在INI與WAK中調(diào)用(DSDT中修改)
Method (PINI, 0, NotSerialized)
{
\_SB.PCI0.PEG0.PEGP._PS3 ()
}
——————————————————————————————————————————————————————————————————————————————
Method (_WAK, 1, Serialized) // _WAK: Wake
{
PINI ()
P8XH (One, 0xAB)
WAK (Arg0)
ADBG ("_WAK")
……
——————————————————————————————————————————————————————————————————————————————
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
PINI ()
OSYS = 0x07D0
If (CondRefOf (\_OSI, Local0))
{
If (_OSI ("Linux"))
{
OSYS = 0x03E8
}
If (_OSI ("Windows 2001"))
……
新手容易出現(xiàn)的問題:
提取的DSDT與SSDT是aml格式,需要轉(zhuǎn)換為dsl格式進(jìn)行修改,盡量不要單獨(dú)轉(zhuǎn)換,因?yàn)橹g有關(guān)聯(lián),單獨(dú)轉(zhuǎn)換會(huì)大量報(bào)錯(cuò),建議使用iasl轉(zhuǎn)換。修改完后,需要重新轉(zhuǎn)換為aml放入EFI/CLOVER/ACPI/patched/中
config->ACPI
<key>SortedOrder</key>
<array>
<string>SSDT.aml</string>
<string>SSDT-1.aml</string>
<string>SSDT-2.aml</string>
<string>SSDT-3.aml</string>
<string>SSDT-4.aml</string>
<string>SSDT-5.aml</string>
<string>SSDT-6.aml</string>
<string>SSDT-7.aml</string>
<string>SSDT-8.aml</string>
<string>SSDT-9.aml</string>
<string>SSDT-10.aml</string>
<string>SSDT-11.aml</string>//ssdtPRGen.sh生成的SSDT變頻放在最后,否則容易失效
</array>
五.實(shí)現(xiàn)CPU變頻
對(duì)于CPU變頻,只要是蘋果電腦采用過這一代CPU,找到CPU接近的機(jī)型再配合變頻SSDT,基本都能實(shí)現(xiàn)變頻,同時(shí)也會(huì)加載系統(tǒng)的X86,為以后睡眠打好基礎(chǔ)。就變頻本身來說,只要頻率有高有低,支持睿頻即可,無需追求很多檔位,白蘋果本身就沒有那么多檔位。而實(shí)現(xiàn)變頻的目的也是為了降低CPU能耗,保護(hù)CPU,同時(shí)為睡眠做準(zhǔn)備。
一、生成ssdt實(shí)現(xiàn)變頻
ssdtPRGen.sh生成ssdt變頻。(CPU-S中集成有,這里提供最高支持7代,更新的CPU查看ssdtPRGen.sh是否支持并直接使用ssdtPRGen.sh生成)
CPU-S(操作:變頻測(cè)試—生成SSDT)
ssdtPRGen.sh—具體方法見readme
二、加載X86PlatformPlugin
使用ssdtPRGen.sh生成ssdt變頻,基本上都可以實(shí)現(xiàn)加載X86PlatformPlugin。
對(duì)于部分需要修改X86PlatformPlugin,為部分iMac 機(jī)型開啟 HWP 或?yàn)檩^新的筆記本機(jī)型修改最低頻率等情況,只是所有生成的SSDT變頻有一定局限。
口袋妖怪heart與vit9696編寫的CPUFriend可以免去修改與安裝X86PlatformPlugin。使用CPUFriend-master.zip中ResourceConverter.sh生成的ssdt_data、CPUFriendProvider.kext與 CPUFriend.kext配合實(shí)現(xiàn)修改與動(dòng)態(tài)注入CPU電源管理數(shù)據(jù),CPUFriend-master.zip中的Instructions.md文件說明到,可以將ssdtPRGen.sh生成的ssdt與ssdt_data合并,合并方法見Instructions.md。
(之前誤認(rèn)為這個(gè)教程可以實(shí)現(xiàn)變頻,其實(shí)CPUFriend只是實(shí)現(xiàn)動(dòng)態(tài)注入電源管理數(shù)據(jù),實(shí)現(xiàn)X86PlatformPlugin加載,并不直接實(shí)現(xiàn)變頻)
由于遠(yuǎn)景論壇不穩(wěn)定,直接分享出CPUFriend的鏈接,需要注意的是CPUFriend也需要配合lilu才能驅(qū)動(dòng),生成的SSDT放入EFI/CLOVER/ACPI/patched/中
CPUFriend.kext
CPUFriend-master.zip
CPUFriend - 動(dòng)態(tài)注入 CPU 電源管理數(shù)據(jù) 作者:口袋妖怪heart
六.定制USB驅(qū)動(dòng)
放上RehanMan的最新USB驅(qū)動(dòng),基本上可以驅(qū)動(dòng)時(shí)下大部分主板USB,但不一定完美。
RehabMan-USBInjectAll(配合readme中的補(bǔ)丁可以實(shí)現(xiàn)USB2.0內(nèi)建與USB3.0 5G)
由于筆記本不同于臺(tái)式機(jī),USB接口千奇百怪,因此USB不完美的情況下要自制驅(qū)動(dòng)。附上詳細(xì)的定制USB驅(qū)動(dòng)的方法
一、修改USB總線名稱,躲避內(nèi)部遮蓋器
DSDT里,把EHC1、EHC2、XHC1兩個(gè)USB2.0、一個(gè)USB3.0總線重命名成EH01、EH02、XHC就可以
自己定制遮蓋器(即:USBInjectAll.kext)還是要配合dsdt,需要修改dsdt,如果在clover中加入補(bǔ)丁,則需要使用hotpatch的DSDT。
二、探明USB分布,根據(jù)分布定制遮蓋器
這一步需要判斷電腦上有幾個(gè)USB2.0和USB3.0接口,其中包括藍(lán)牙,觸摸板等等,這些可以在windows下檢測(cè)出來,之后就可以修改自制USB驅(qū)動(dòng)中info,配合DSDT來識(shí)別USB接口。超出15個(gè)限制的把沒用的可以直接刪掉,dsdt要?jiǎng)h,USBInjectAll.kext中port也要?jiǎng)h。最后有沒有成功IORegistryExplorer查看一下就知道,我的USB3.0比較特殊,兼容的2.0都在EH01中,因此我將HSP1到HSP15這些都刪掉了。
info中EH01與EH02代表USB2.0,XHC代表3.0
UsbConnector代表接口類型,0為USB2.0,3為USB3.0,255為特殊(如藍(lán)牙,觸摸板,10.12系統(tǒng)后總線類型也為255如PR11)
port-cound為端口總數(shù),port為USB接口所在位置的編號(hào)
三、將定制好的USBInjectAll.kext放到S/L/E或者Clover/kests中,不要忘了放入必要的驅(qū)動(dòng)(FakePCIID.kest和FakePCIID_XHCIMux.kext)以及config中添加USB3.0補(bǔ)丁
KernelAndKextPatches->KextsToPatch
<dict>//USB3.0補(bǔ)丁
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
g710////EA==
</data>
<key>Name</key>
<string>AppleUSBXHCIPCI</string>
<key>Replace</key>
<data>
g710////EA==
</data>
</dict>
<dict>//10.13解除15限制補(bǔ)丁
<key>Comment</key>
<string>change 15 port limit to 26 in XHCI kext</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
g32MEA==
</data>
<key>MatchOS</key>
<string>10.13.x</string>
<key>Name</key>
<string>com.apple.driver.usb.AppleUSBXHCIPCI</string>
<key>Replace</key>
<data>
g32MGw==
</data>
</dict>
注意:
1.筆記本大多沒有超過15個(gè)接口,因此15個(gè)限制補(bǔ)丁打不打意義不大。
2.最新USBinjectAll驅(qū)動(dòng)也可以這樣修改其中的info,但是需要配合lilu
3.偶爾一個(gè)總線失效的,可以在dsdt中打入IRQ補(bǔ)丁,影響到睡眠的可以打入0x0D(筆記本)或0x6D(臺(tái)式機(jī))補(bǔ)丁
七.實(shí)現(xiàn)藍(lán)牙+WIFI
藍(lán)牙與WIFI的實(shí)現(xiàn)主要是驅(qū)動(dòng)+補(bǔ)丁,最新出現(xiàn)了hotpatch方法,加入SSDT-ARP。
博通BCM94352HMB的驅(qū)動(dòng)方法:
基本驅(qū)動(dòng):
BrcmFirmwareRepo.kext
BrcmPatchRAM.kext
FakePCIID_BCM57XX_as_BCM57765.kext
FakePCIID_Broadcom_WiFi.kext
FakePCIID.kext
hotpatch方法基本驅(qū)動(dòng):
AirportBrcmFixup.kext
Lilu.kext
將SSDT-ARP.aml放入CLOVER/ACPI/patched,onfig.plist的SortedOrder加入SSDT-ARP.aml
藍(lán)牙在USB驅(qū)動(dòng)正常后,只需要添加補(bǔ)丁即可驅(qū)動(dòng)
10.13補(bǔ)丁(10.12補(bǔ)丁見第二節(jié)調(diào)整config)
<dict>//藍(lán)牙補(bǔ)丁
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
SIX/dEdIiwc=
</data>
<key>Name</key>
<string>IOBluetoothFamily</string>
<key>Replace</key>
<data>
Qb4PAAAA60Q=
</data>
</dict>
<dict>
<key>Comment</key>
<string>10.11-BCM94352-5GHz-US-FCC-dv</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
QYP8/3QsSA==
</data>
<key>Name</key>
<string>AirPortBrcm4360</string>
<key>Replace</key>
<data>
ZscGVVPrKw==
</data>
</dict>
<dict>
<key>Comment</key>
<string>AirPort Extreme</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
axAAAHUN
</data>
<key>Name</key>
<string>AirPortBrcm4360</string>
<key>Replace</key>
<data>
axAAAJCQ
</data>
</dict>
<dict>
<key>Comment</key>
<string>AirPortBrcm4360 - fcvo</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
gflSqgAAdSk=
</data>
<key>Name</key>
<string>AirPortBrcm4360</string>
<key>Replace</key>
<data>
gflSqgAAZpA=
</data>
</dict>
八.定制聲卡驅(qū)動(dòng)
完全的自制聲卡驅(qū)動(dòng)相當(dāng)?shù)膹?fù)雜,但是制作好以后,升級(jí)系統(tǒng)不容易失效,重新制作也很簡單。這里不詳細(xì)介紹,貼上我自己的帖子和我的文章,然后結(jié)合最新方法進(jìn)行重新制作可以支持10.13.
遠(yuǎn)景帖:(適用于10.12和13)ALC892的經(jīng)驗(yàn)之談,簡化大神教程幫助喜歡動(dòng)手仿冒的朋友
簡書文章:定制仿冒聲卡驅(qū)動(dòng)完整教程(ALC892為例)
完全自制聲卡驅(qū)動(dòng),主要是要制作4個(gè)文件:
1.Platforms.xml.zlib(節(jié)點(diǎn)文件)
2.layout1.xml.zlib(layoutID)
3.Applealc-master—>resources—>alc892—>info.Plist
(描述聲卡以及對(duì)layout和Platforms文件位置、id的說明)
4.Applealc-master—>resources—>pinconfigs.kext—>contents—>info.Plist
(包含codecID和layoutID相關(guān)值)
制作好這4個(gè)文件即可使用Applealc-master生成Applealc.kext,最新的方法只是需要在Applealc-master根目錄添加版本對(duì)應(yīng)的lilu.kext,驅(qū)動(dòng)時(shí)也需要配合lilu.kext。
對(duì)于聲卡沒有高要求的,可以使用最新的Applealc-master直接生成Applealc.kext,現(xiàn)在集成度很高,大部分都可以正常使用
九.實(shí)現(xiàn)亮度驅(qū)動(dòng)
在10.12.4以前,亮度需要驅(qū)動(dòng)與ssdt配合使用。在此之后,驅(qū)動(dòng)+ssdt+補(bǔ)丁才可以使用。附上我的帖子針對(duì)10.12.4、10.12.5、10.12.6系統(tǒng)。
完美解決10.12.4 HD4600亮度驅(qū)動(dòng)失效(適用于10.13)
在10.13系統(tǒng)中,稍有改變(只針對(duì)HD4600)
1.利用Patches.xcodeproj,生成ssdt-pnlf.aml,位置到build目錄下。
2.config.plist中SortedOrder中加入ssdt-pnlf.aml,將ssdt-pnlf.aml放入efi—>clover—>apci—>patch中
3.在10.12時(shí)需要將AppleBacklightInjector.kext安裝到S/L/E中,重建緩存,efi的kext中無效。但是在10.13時(shí)直接放在efi—>clover—>kexts—>10.13中即可
4.需要DSDT、SSDT打GFX0改為IGPU補(bǔ)丁,在clover中使用GFX0改為IGPU補(bǔ)丁也可以
5.sortedorder中需要在DSDT、SSDT之后,在變頻SSDT之前
(Patches.xcodeproj見帖子中RehabMan_backlight.zip)
亮度補(bǔ)丁
<dict>
<key>Comment</key>
<string>change F%uT%04x to F%uTxxxx for AppleBacklightInjector.kext (credit RehabMan)</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
RiV1VCUwNHgA
</data>
<key>Name</key>
<string>com.apple.driver.AppleBacklight</string>
<key>Replace</key>
<data>
RiV1VHh4eHgA
</data>
</dict>
十.實(shí)現(xiàn)睡眠
睡眠問題可以說是黑蘋果里的終極問題,因?yàn)樯婕皢栴}包括方方面面,這里只聊聊我自己的心得。
1、USB不完善不行
很多睡眠問題都是USB的事情,比如一睡即醒,喚醒黑屏等等,這就需要完善USB驅(qū)動(dòng),USB所有接口必須內(nèi)建,同時(shí)DSDT中有幾個(gè)關(guān)于USB影響睡眠的補(bǔ)丁。這里自制USB驅(qū)動(dòng)就很有優(yōu)勢(shì)。
2、亮度問題
Haswell以前的CPU不需要專門設(shè)置保存亮度,因此這些CPU喚醒黑屏的幾率不高,之后的CPU需要專門設(shè)置亮度保存,所以,驅(qū)動(dòng)亮度還是不夠的。
3、CPU變頻必不可少
CPU變頻本身就為睡眠時(shí)CPU降頻提供了前提,同時(shí)實(shí)現(xiàn)變頻,則會(huì)加載X86PlatformPlugin、X86PlatformShim這兩個(gè)驅(qū)動(dòng),這兩個(gè)驅(qū)動(dòng)也同樣是實(shí)現(xiàn)睡眠的前提。
4、獨(dú)顯屏蔽
對(duì)于不能使用獨(dú)顯的筆記本,睡眠如果不能屏蔽獨(dú)顯,獨(dú)顯滿載工作,即使睡眠正常也沒有意義。屏蔽獨(dú)顯,讓筆記本在睡眠狀態(tài)下能夠待機(jī)更久。
5、關(guān)機(jī)斷電
關(guān)機(jī)斷電是很普遍的問題,現(xiàn)在clover越來越完善了,只需要添加補(bǔ)丁
1、FixDarwin_0002(修復(fù)關(guān)機(jī)斷電問題)
2、SlpSmiAtWake(幫助解決UEFI模式下睡眠和關(guān)機(jī)問題)
3、SuspendOverride(休眠覆寫,影響Fixshutdown補(bǔ)丁)
6、睡眠模式
在10.12.6中我采用睡眠模式3就可睡眠
0—老式睡眠模式
睡眠期間內(nèi)存加電,禁用安全睡眠,超快速喚醒
1—休眠模式
內(nèi)存中的數(shù)據(jù)將寫入到磁盤上,系統(tǒng)在所謂的“睡眠”時(shí)將完全關(guān)閉
因?yàn)樾枰x取先前保存在硬盤中的內(nèi)存數(shù)據(jù),所以喚醒較慢
3—睡眠模式
睡眠過程中,內(nèi)存保持通電狀態(tài),同時(shí)內(nèi)存數(shù)據(jù)在進(jìn)入睡眠模式之前同樣要寫入到硬盤
萬一沒有外接電源并且電池也完全沒電了的話,系統(tǒng)將自動(dòng)進(jìn)入休眠模式
還有其他的模式,可以自行嘗試
7、相關(guān)驅(qū)動(dòng)加載
筆記本睡眠主要4個(gè)驅(qū)動(dòng)X86PlatformPlugin、X86PlatformShim、AppleLPC、AppleHPET
其中X86PlatformPlugin、X86PlatformShim通過實(shí)現(xiàn)變頻來加載。AppleLPC通過修改DSDT或者使用SSDT-LPC或者直接修改fakesma中的info,方法很多,也很方便。AppleHPET這個(gè)大多都是原生驅(qū)動(dòng),貌似很少有驅(qū)動(dòng)不了的。
結(jié)語
以上是進(jìn)行了大量學(xué)習(xí)后的成果,從開始折騰黑蘋果,到接近無語恨不得馬上買個(gè)白蘋果,再到把自己的筆記本完善的越來越好,這一路真的學(xué)到了很多的東西,也從來沒有像現(xiàn)在這么了解一個(gè)操作系統(tǒng)的結(jié)構(gòu),同時(shí)自學(xué)swift,越來越喜歡macOS和IOS。而國外的高手也讓黑蘋果越來越容易,越來越方便,就比如hotpatch。要知道當(dāng)初學(xué)習(xí)修改DSDT與SSDT時(shí)相當(dāng)崩潰。總之,結(jié)果是好的,再也不會(huì)回到win中時(shí)不時(shí)手癢玩游戲了。