本文部分翻譯自 Lilu的README裸弦,一些部分基于樓主的理解寫出麸俘。
什么是 Lilu 澈魄?
Lilu 是 vit9696 開發(fā)的一個內(nèi)核擴展 (kext)采章,可對"任意" 內(nèi)核擴展(kext)/進程(process)/運行庫(framework/library)等 進行打補丁运嗜。(但其實某些比較底層的 kext 仍無法修改,如基本硬件驅(qū)動悯舟、底層重要依賴等)
Lilu 目前實現(xiàn)的功能担租?
為 kext 打補丁
為 進程 打補丁 (目前僅支持 64 位)
為 運行庫 打補丁 (目前僅支持 64 位)
提供一套統(tǒng)一的 API 接口
如何理解 "提供一套統(tǒng)一的 API 接口"?
這意味著 Lilu 自身是不起任何作用的抵怎,你需要額外使用依賴它的 kext 奋救,目前已知需要依賴 Lilu 的 kext 可在 下方 找到。
下載/安裝
關于下載:
你可以直接下載作者編譯好的版本反惕,或者從 GitHub 下載源碼自行編譯尝艘。
關于安裝:
- 建議將 Lilu 以及依賴它的 kext 放置于引導器用于注入 kext 的位置并使用引導器注入它,目前主流的引導器都有注入 kext 的功能姿染。
- 如果將其放置于
/System/Library/Extensions
或者/Library/Extensions
下的話背亥,你還需要LiluFriend
并正確配置使其正常工作。
Lilu 支持的內(nèi)核參數(shù)(kernel flags)
-liludbg
可以開啟排錯日志模式,不過只有 DEBUG 版本才可用狡汉。(對于日常使用的 RELEASE 版本此參數(shù)無效)
-liluoff
會禁用 Lilu 和依賴它的 kext 娄徊。(實際上只禁用了 Lilu ,不過與之相關的 kext 也就自然會失效了)
-liluslow
會啟用舊版的 UserPatcher 盾戴。(可能與修改進程寄锐、運行庫有關,具體的因為樓主對 Lilu 代碼不是很熟悉尖啡,所以也就沒法解釋清楚了橄仆,抱歉)
-lilulowmem
會禁止 Lilu 和依賴它的 kext 在 Recovery 模式下載入。(實際上只禁用了 Lilu 衅斩,不過與之相關的 kext 也就自然會失效了)
-lilubeta
會在不受支持的 Darwin 版本啟用 Lilu 沿癞。
致開發(fā)者/有興趣的朋友:
關于 Log 輸出,目前 Lilu 提供的 API 中有兩個輸出 Log 的接口矛渴,分別為 SYSLOG("msg\n"); 與 DBGLOG("msg\n"); 這兩個 macro 椎扬,具體輸出原理這里不做過多解釋,仍是調(diào)用 Apple 在 IOLib.h 中為我們提供的 IOLog 接口具温。
但要特別注意的是蚕涤,如上所說,DBGLOG("msg\n"); 這個 macro 需要在 DEBUG 模式開啟下才會被編譯铣猩。
相信各位看這段代碼即可了解揖铜。;) (來自 Headers/kern_util.hpp)
#define SYSLOG(str, ...) IOLog( xStringify(PRODUCT_NAME) ": " str "\n", ## __VA_ARGS__)
#ifdef DEBUG
#define DBGLOG(str, ...) \
do { \
if (ADDPR(debugEnabled)) \
IOLog( xStringify(PRODUCT_NAME) ": (DEBUG) " str "\n", ## __VA_ARGS__); \
} while(0)
#else
#define DBGLOG(str, ...) do { } while(0)
#endif
另外,原宏中已經(jīng)自帶了換行符 \n 达皿,所以在編寫 Log 時也就無必要再換行了天吓。
Bug 反饋
建議在作者的 GitHub Issues 中提交,需使用英文峦椰。
Lilu插件列表
此插件列表來自 Lilu 的 KnownPlugins.md 龄寞。
目前已知需依賴 Lilu 的 kext & 作用簡單說明
注:某些 kext 可能還沒有列在這里,如果你有發(fā)現(xiàn)的話汤功,可以跟帖反饋物邑。
Name | Short description |
---|---|
AirportBrcmFixup | 修補 Broadcom Wi-Fi 綜合問題 |
AppleALC | 動態(tài)對系統(tǒng)注入必要的文件/打補丁以驅(qū)動聲卡 |
AzulPatcher4600 | 一些針對某些筆記型 HD4600 的額外修復 |
CoreDisplayFixup | 動態(tài)修改某些系統(tǒng)運行庫/kext 以解決非 Iris 系列 Intel 核顯/部分 N 卡高分辨率輸出問題 |
CPUFriend | 動態(tài)向 X86 注入 CPU 電源管理數(shù)據(jù) |
EnableLidWake | 為某些 Intel 核顯開啟合蓋睡眠 |
HibernationFixup | 在某些機器上修復 3/25 模式下的休眠狀態(tài) |
IntelGraphicsFixup | 修補 Intel 核顯綜合問題 (開機花屏,Haswell/Skylake 因 PAVP 導致的死機等等) |
IntelGraphicsDVMTFixup | 修正 Broadwell/Skylake 平臺核顯因 DVMT 不足而導致的死機 |
NightShiftUnlocker | 解決老機型無法使用自 10.12.4 開始引入的 NightShift 功能 |
NvidiaGraphicsFixup | 修正 N 卡 (可能也適用于 I 卡) 使用某些 SMBios 如 MacPro6,1 等引發(fā)黑屏的問題 |
Shiki | 動態(tài)修改 iTunes 相關系統(tǒng)進程滔金,以在 Ivy Bridge 或更新的平臺上正確使用 iTunes 相關服務色解,同時其內(nèi)置的 ResourceConverter 亦可配置一些自定義的針對其他 framework/lib/process 的補丁 (CoreDisplayFixup 的早期測試版本即基于 Shiki 編寫) |
WhateverGreen | 修補 AMD 獨顯綜合問題 (單卡啟動黑屏,喚醒黑屏 等等) |
將功能合并到其他插件中的插件:
Name | Short description |
---|---|
BrcmWLFixup | 現(xiàn)已被 AirportBrcmFixup 取代餐茵。 |
原文鏈接:口袋妖怪heart
QQ群:
331686786 一起黑蘋果