dsdt編譯
❶ 想請問一下clover提取的DSDT和SSDT如何命名才能載入
不同的電腦,要根據實際情況選擇補丁。修改、編譯好的,就是放到那個文件夾。就可以載入DSDT。要載入SSDT,就還需要參數。
DSDT是主板BIOS中ACPI的一個表。什麼是ACPI呢,它是BIOS的一個高級功能模塊。
它是The Differentiated System Description Table的簡寫。字面上就可以知道它是一個描述系統不同信息的表。
包含了所有除基本系統以外所有不同設備的信息,也就是每台計算機設備的基本系統是相同的,而不相同的設備用DSDT來描述。
DSDT表代碼為ACPI Machine Language (AML)。
Mac OS X不完整支持ACPI規范,僅支持它的子集DSDT。
用戶通過修改DSDT可以得到更好的硬體支持。最簡單的理解就是DSDT是描述硬體的。mac的驅動是被動驅動,需要讓系統知道存在這個硬體且知道硬體位置。
修改DSDT的主要目的就是讓mac系統識別存在這個硬體並告訴mac系統你的硬體位置,以便讓mac系統內置的驅動來驅動硬體工作。
❷ 在黑蘋果中,所說的DSDT是什麼是什麼作用的
DSDT是The Differentiated System Description Table的簡寫。字面上就可以知道它是一個描述系統不同信息的表。
包含了所有除基本系統以外所有不同設備的信息,也就是每台計算機設備的基本系統是相同的,而不相同的設備用DSDT來描述。
用戶通過修改DSDT可以得到更好的硬體支持。最簡單的理解就是DSDT是描述硬體的。mac的驅動是被動驅動,需要讓系統知道存在這個硬體且知道硬體位置。
修改DSDT的主要目的就是讓mac系統識別存在這個硬體並告訴mac系統的硬體位置,以便讓mac系統內置的驅動來驅動硬體工作。
(2)dsdt編譯擴展閱讀:
自從蘋果採用Intel的處理器,OSX被黑客破解後可以安裝在Intel CPU與部分AMDCPU的機器上。從而出現了一大批非蘋果設備而使用蘋果操作系統的機器。在Mac蘋果機上面安裝原版Mac系統的被稱為白蘋果(Macintosh),與黑蘋果相對。
黑蘋果板塊,國內的主要討論社區,大部分資料來源於此處,高手雲集。威鋒論壇或威鋒網。黑蘋果板塊,國內主要討論蘋果的一線社區,iOS為主要討論對象。
❸ 求助如何修改DSDT來禁用獨顯
基本原理
在電腦開機時(對應_INI method)和睡眠喚醒時(對應_WAK method)調用關閉Nvidia獨顯的Method。
這個網站http://hybrid-graphics-linux.tuxfamily.org/index.php?title=ACPI_calls總結了關閉Nvidia顯卡的常見methods,還列舉了一些機型的具體情況,大家可以去看看,弄清楚自己電腦關閉顯卡的method究竟是哪個,然後結合這個帖子來修改DSDT.
正如上面那個網站所示,關閉Nvidia獨顯一般有兩種方法:一、使用 _DSM + _PS3;二、直接用_OFF(或者DOFF,SGOF等等,有些機型是不同的);
雖然上面那個網站一般都是直接調用OFF()函數來關閉獨顯的,但個人覺得如果有_DSM和_PS3的話,先使用方法一比較好,因為方法二可能會有一些影響,比如CPU變頻的問題。(具體請看參考帖子[教程] 解決Optimus 和CPU Turbo 變頻沖突)。
具體方法
很多人喜歡把SSDT的顯卡部分移到DSDT中然後添加關閉獨顯的代碼,並且開機DropOEMSSDT只用DSDT。但是我個人覺得這樣子很麻煩,首先在移動過程中可能會產生錯誤,而且Drop掉SSDT後,DSDT中的那些External variables,methods就無法access了,因此DSDT中用到這些Objects,Methods的地方就會產生問題。如果Drop SSDT的目的是為了使用clover和變色龍的Generate P-States和C-States的話,clover可以只Drop掉有CPU信息的SSDT,變色龍可以把除有CPU信息的其他SSDT放在Extra目錄下再DropSSDT,所以我認為完全沒有必要花時間來移動顯卡部分或者其他東西。如果DSDT和SSDT要相互調用對方的函數,那就在definition block那裡加上External就好了。(如果新人看不懂這一段就跳過吧)說了那麼多廢話,終於開始了。
注意,在修改DSDT和SSDT之前,可以用這個帖子介紹的方法先生成dsl文件,可以減少錯誤,還有其他錯誤自己爬帖解決。不過如果你某個DSDT或SSDT有錯誤不能解決但你不需要再把它編譯成AML文件的話,可以不用管它。
方法一:搜索函數
首先在DSDT和SSDT中搜索找到要用的函數_WAK,_INI,_PS3,_DSM。_WAK一般只有一個。_INI可能有很多個,最好用\_SB.PCI0下或\_SB.PCI0.PEG0.PEGP的。_PS3隻有一個,如果沒有的話看方法二。_DSM會有很多個,一定要用\_SB.PCI0.PEG0.PEGP下的,如果\_SB.PCI0.PEG0.PEGP下沒有,搜索看看Device(GFX0)下有沒有,如果都沒有就看方法二.(注意,以下步驟是默認你DSDT的相關methods為一般情況,若有不同需根據你自己的DSDT做相應更改)
方法一:在_WAK之前新建一個Method PINI()
Method(PINI,0,NotSerialized)
{
\_SB.PCI0.PEG0.PEGP._DSM(Buffer(0x10)
{
/*0000*/0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,
/*0008*/0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0
},0x0100,0x1A,Buffer(0x04)
{
0x01,0x00,0x00,0x03
})
\_SB.PCI0.PEG0.PEGP._PS3()
}
Method(_WAK,1,Serialized)
{
PINI()
......
}
[。。。省略。。。]
Method(_INI,0,NotSerialized)
{
PINI()
.......
}
ErrorObjectdoesnotexist(PINI)
External(PINI,MethodObj)
DefinitionBlock("acpi_dsdt.aml","DSDT",1,"LENOVO","CB-01",0x00000001)
{
External(_SB_.PCI0.PAUD.PUAM,MethodObj)//Warning:UnresolvedMethod,guessing0arguments(maybeincorrect,seewarningabove)
External(_SB_.PCI0.XHC_.DUAM,MethodObj)//Warning:UnresolvedMethod,guessing0arguments(maybeincorrect,seewarningabove)
External(_SB_.TPM_.PTS_,MethodObj)//Warning:UnresolvedMethod,guessing1arguments(maybeincorrect,seewarningabove)
External(_PR_.CFGD,FieldUnitObj)
External(_PR_.CPU0._PPC,IntObj)
External(_PR_.CPU0._PSS,PkgObj)
External(PINI,MethodObj)
External(_SB_.PCI0.PEG0.PEGP._PS3,MethodObj)
External(_SB_.PCI0.PEG0.PEGP._DSM,MethodObj)
Method(_WAK,1,Serialized)
{
\_SB.PCI0.PEG0.PEGP._OFF()
......
}
[。。。省略。。。]
Method(_INI,0,NotSerialized)
{
\_SB.PCI0.PEG0.PEGP._OFF()
.......
}
方法一:在_WAK和適當的_INI中調用PINI()
_WAK和_INI可能不在同一個DSDT或SSDT中,沒有關系
方法一:編譯錯誤
如果有類似以下的錯誤
在DefinitionBlock(在DSDT和SSDT的最上面)加上以下代碼
方法一:錯誤修正示範:
如果錯誤提示Object does not exist (\_SB.PCI0.PEG0.PEGP._PS3)
在DefinitionBlock加上
如果錯誤提示Object does not exist (\_SB.PCI0.PEG0.PEGP._DSM)
在DefinitionBlock加上
方法一:保存編譯
沒有錯誤了,編譯,save AML,把修改了的DSDT.aml, SSDT.aml和其他所以沒有修改的SSDT*.aml放在Extra目錄(變色龍),或patched文件夾(Clover),這樣的話要DropSSDT。開機,幸運的話,Nvidia顯卡應該被屏蔽了。
方法二:沒有_PS3函數
如果沒有_PS3函數,或者使用上面的方法沒效果,那就試試這個方法吧。
在_WAK和適當的_INI裡面加入\_SB.PCI0.PEG0.PEGP._OFF()
方法二:編譯錯誤
如果編譯時有錯誤,像方法一的4中那樣解決錯誤即可。
方法二:編譯保存
沒有錯誤了,編譯,save AML,把修改了的DSDT.aml, SSDT.aml和其他所以沒有修改的SSDT*.aml放在Extra目錄(變色龍),或patched文件夾(Clover),這樣的話要DropSSDT。開機,幸運的話,Nvidia顯卡應該被屏蔽了。
查看是否生效
如何查看是否成功屏蔽Nvidia獨顯:打開「系統信息」→「圖形卡/顯示器」,若只有Intel顯卡的信息就證明屏蔽成功。若成功了就支持一下吧!