- UID
- 512654
- 最后登录
- 1970-1-1
- 阅读权限
- 205
- 精华
- 主题
- 回帖
- 0
- 积分
- 730
- PB币
-
- 威望
-
- 贡献
-
- 技术
-
- 活跃
-
|
本帖最后由 紫米 于 2011-10-16 02:06 编辑
[三] 綜合修改部分
1. 可自動閒置睡眠(修改 DSDT、SMBIOS.plist…?)
2. 可使用原生 AppleHDA.kext 驅動音效卡(使用 LegacyHDA.kext 和 修改 Platforms.xml 和 layoutXXX.xml)
「Lion 完善紀實之三」
到了目前這個階段,不知道前面的過程你是否順利,
良心的建議,如果前面都困難重重的話,這篇就當作天書賞玩賞玩就好(一"一)。
已經至此,紫米還是得苦口婆心地說:我沒有把這三篇當作教程寫,
因為紫米不可能解決所有問題,所以看不懂的網友你真的需要去練功一下。
我只是用自己的經歷來告訴大家,黑 Mac 可以多接近白 Mac,如此而已。
有心想把黑 Mac 當作主要使用系統的朋友可以以此為目標,然後分享更多修改資料。
而只是玩票性質的朋友就…看看玩玩就好了。因為勢必要花很多時間去修改試驗。
最後,桌上型電腦有比較多可塑性可以更符合 Mac 配置,
而筆記型電腦真的就要老天保佑,就算配置相仿,
但是筆記型電腦多了很多內置功能,而這些功能並不完全相容於白 Mac。
然而,這是沒有筆記型電腦的紫米可以為你解答的。
紫米很樂意跟大家討論修改思路與解決辦法。(如果紫米可以幫的上忙)
1. 可自動閒置睡眠
這一個部分有很多問號,紫米只能就修改經驗發表一些可能性。
在安裝 Snow Leopard 於 GA-965P-DS4 時,一直無法實現自動閒置睡眠。
當時一直以為是大家所說的光碟機問題,結果,當然是毫無進展。
然而,這次安裝 Lion 於 GA-965P-DS4 時,居然奇蹟地成功。
於是,紫米就分析兩次安裝上的差異。
>> AppleLPC.kext 加載
之前加載 AppleLPC.kext 紫米使用 ICH10 的裝置代碼,(紫米當時也是覺得越新越好...)
而這次 Lion 紫米是使用 ICH8 的裝置代碼。
使用 "文字編輯" 開啓 DSDT.dsl 檔案。一般技嘉的位置在 Device (PX40) { } 這個區域。
<如果你找不到這個 PX40,請使用 0x001F000 這個值來搜尋,或者是你剛剛搜尋的有命名的裝置名稱。>
ICH8-M LPC 參數:- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x02)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x15, 0x28, 0x00, 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码 以下兩個圖是 AppleLPC.kext 支援的晶片組代碼:
也有新的 Sandy Bridge 支援的晶片組代碼:
再者,紫米提供一個裝置代碼查詢網站,裡面有很豐富的資料,對於判斷裝置代碼是什麼很有用:
Intel:http://pci-ids.ucw.cz/read/PC/8086
當然,也可以查詢其他製造商的裝置代碼:
http://pci-ids.ucw.cz/read/PC
8086 是 Intel 的代碼、1002 是 ATI、1022 是 AMD、10DE 是 nVidia。
而上圖的 pci8086,2815 中 8086 就是 Intel 的代碼,而 2815 就是 82801HEM (ICH8M) LPC Interface Controller。
>> NTFS 寫入支援的修改
之前裝 Snow Leopard 為了方便有針對開啓原生 NTFS 寫入支援的修改。
因為這個修改有更動到 Mac 的系統檔案,
似乎會造成在執行睡眠時,無法順利關閉硬碟。
一般來說執行閒置睡眠時,會先關閉顯示器接著一段時間後主機也會跟著停止運作進入睡眠狀態。
<風扇與閃爍的指示燈都會停止>
然而,紫米修改原生 NTFS 寫入支援後,
關閉顯示器接著一段時間後會產生硬碟停止後隨即繼續運轉的狀況,
亦即硬碟無法進入睡眠狀態的狀況。
所以,如果無法自動閒置睡眠的朋友可以試著先移除關閉相關 NTFS 寫入支援的軟體。
(因為紫米沒有使用這類程式,所以就留待有心的網友自行測試吧)
>> 相關電源管理的修改?
應為裝 Lion 時,對 DSDT 的修改不同於之前,也就是 DSDT 修改的地方太多很難判斷。
應該這麼說,如果想實現這個功能,必須先完善所有 Mac 對所有裝置的電源管理功能,
也就是前面相關的 DSDT 修改應該是不可少的。
而透過第三方驅動來是現睡眠的…大概就…很難了吧。
然而聯手動睡眠都不行…就更別談這項功能了。
<驗證方式>
2. 可使用原生 AppleHDA.kext 驅動音效卡
Snow Leopard 10.6.8 後,Mac 的 AppleHDA.kext 的結構作了重大改變。
所以,以前的修改方式已經無法適用,包括目前的 Lion 也是同樣的。
但是,並不表示說以前辛辛苦苦做出的 LegacyHDA.kext 白費了。
所以沒有做過 LegacyHDA.kext 還是請繼續對著 "完整製作仿冒 LegacyHDA.kext (12/16)" 天書傻眼。
如果有現成 LegacyHDA.kext 請繼續以下的步驟:
如果有做過 LegacyHDA.kext 因該知道音效卡資訊分為三部分:Config、Layout、Pathmap。
會對應以下圖片這三個檔案:
>> Config
Config 用來說明音效卡的功能,如:Mic、Line in、Line out…等。
有 LegacyHDA.kext 可以直接保留這個部分。
>> Layout
Layout 用來設定 Mic、Line in、Line out 的各個功能,
而這個部分的參數被獨立出來放置於 /System/Library/Extensions/AppleHDA.kext/Contents/Resources
layoutXX.xml 就是 Layout 功能放置的新地方。
所以,你只要將原本 LegacyHDA 裡面的 Layout 部分用 Dashcode 開啟後將 <dict> <key>LayoutID</key> … </dict> 複製。
然後使用 layoutXX.xml 作範本改為 layout885.xml、layout883.xml,並將剛剛複製的內容貼上 < 建議使用 Xcode >。
<layout885.xml、layout883.xml 的 885、883 請對應剛剛 Config 中的 LayoutID>
然後將妳命名的 layoutXX.xml 貼回 /System/Library/Extensions/AppleHDA.kext/Contents/Resources
請注意檔案的權限 sudo chown 0:0 /System/Library/Extensions/AppleHDA.kext/Contents/Resources/layoutXX.xml
>> Pathmap
Pathmap 用來設定各個裝置的路徑節點,以產生功能。
而這個部分的參數被獨立出來放置於 /System/Library/Extensions/AppleHDA.kext/Contents/Resources
Platforms.xml 就是 Pathmap 功能放置的新地方。
所以,你只要將原本 LegacyHDA 裡面的 Pathmap 部分用 Dashcode 開啟後將 <dict> <key>PathMapID</key> … </dict> 複製。
並將剛剛複製的內容貼上 Platforms.xml 確切位置 < 建議使用 Xcode >。
然後將 Platforms.xml 貼回 /System/Library/Extensions/AppleHDA.kext/Contents/Resources
請注意檔案的權限 sudo chown 0:0 /System/Library/Extensions/AppleHDA.kext/Contents/Resources/Platforms.xml
至此,原本 LegacyHDA.kext 的功能已經完整的調整成新的 Lion 架構。
但是要能成功原生驅動仍需要一些功課。
需要 DSDT 修改來引導音效卡驅動 885:- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x04)
- {
- "layout-id",
- Buffer (0x04)
- {
- 0x75, 0x03, 0x00, 0x00
- },
- "PinConfigurations",
- Buffer (Zero) {}
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码 需要 DSDT 修改來引導音效卡驅動 883:- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x04)
- {
- "layout-id",
- Buffer (0x04)
- {
- 0x73, 0x03, 0x00, 0x00
- },
- "PinConfigurations",
- Buffer (Zero) {}
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码 其中的 885 轉換為 16 進位 00 00 03 75 在兩位兩位擺放 0x75, 0x03, 0x00, 0x00
其中的 883 轉換為 16 進位 00 00 03 73 在兩位兩位擺放 0x73, 0x03, 0x00, 0x00
當然,如果 DSDT 的部分很頭痛,你可以使用第三方驅動 HDAEnabler.kext 等來取代。
最後,AppleDHA.kext 有限制音效卡型號,也就是不是限定的音效卡型號是不被允許驅動。
所以 889A(885)是 Apple 使用的音效卡型號,所以不必作任何修改。
但是 883 不作修改是無法驅動,
所以,要針對 /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleDHA 修改。
以前是教大家 885 的參數修改成 883 的參數來達成驅動。
< 0x85 0x08 0xec 0x10 改成 0x83 0x08 0xec 0x10 >
不過經試驗後,這樣修改是無法達成驅動,需要使用 262 來改成 883 才能達成驅動效果。
< 0x62 0x02 0xec 0x10 改成 0x83 0x08 0xec 0x10 >
以上可以使用 Hex Editor 的程式來修改。
當然,你可以使用 "終端機" 的指令行來達到修改目的。- sudo perl -pi -e 's|\x62\x02\xec\x10|\x83\x08\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
复制代码 <其中 |\x62\x02\xec\x10|\x83\x08\xec\x10| 需要針對你的需要作修改,請不要直接套用。>
<請務必備份原檔>
最後,更動 /System/Library/Extensions 的內容後,
請務必執行 終端機 指令來重建緩存快取:- sudo touch /System/Library/Extensions
复制代码 以上修改完成,即可達成驅動 AppleHDA,但是以後系統更新有更新到 AppleHDA.kext 就需要再次做修改動作。
Platforms.xml 與 AppleHDA 音效卡型號修改要再次做動作。
<驗證方式>
以下附上 885 以及 883 的 AppleHDA 相關檔案供參考:
「紫米 Lion 完善紀實之一」
「紫米 Lion 完善紀實之二」
「紫米 Lion 完善紀實之三」 |
|