clover怎么在windows修改机型

clover怎么在windows修改机型,第1张

1.Clover的Config.plist是基于XML编写的,可以看成一个文本文档,Windows下使用Notepad ++ 或者使用写字板编辑;

Mac 下使用PlistEdit Pro2.Config.plist必须放置于 /EFI/Clover 文件夹下3.一些基本的设定规则:(1)如果你不知道这个参数是干什么的,或者他的值应该是多少,那么直接从config里删除掉这个参数。(2)不要设定你不知道的参数以及参数所对应的值。(3)任何参数都需要一个值,宁可删掉这个参数,也不要留空不填(不填写这个参数的值)。4.在Clover引导界面,进入Option设置,可以方便地临时修改各个参数的设定在引导系统安装时,config.plist的参数尽可能从简Boot 模块 一些杂项设置

Arguments 选项

Arguments

ARGUMENTS

在这部分,你可以添加 "Boot Flags" 启动项参数和 "Kernel Flags" 内核项参数,来由系统调用使用。这些参数源自chameleon(变色龙),主要起到解决系统不正常引导和启动及一些功能上修复作用。具体参数详解如下:

"Boot Flags"启动项参数

key>Arguments

-v –s –x

-v 啰嗦模式启动:不能正常进入系统时采用,故障调试,显示所有调试日志(含错误信息)

-s 启动 OS X 进入 单用户模式:不能正常进入系统时采用,脱离图形界面,以命令行方式进入,不适合新手适用。

-x 启动 OS X 进入 SafeBoot(安全模式):不能正常进入系统时采用。

其他启动项参数调用详见>>专贴

"Kernel Flags"内核项参数

arch参数

Arguments

arch=i386 arch=x86_64

参数说明:

arch=i386/x86_64两个参数不能同时启用。

arch=i386:强制使用32位模式启动。此参数不适用于10.8原生内核。

arch=x86_64:以64位内核模式启动。

slide参数

Arguments

slide=0

参数说明:只适用于OS X Mountain Lion 10.8.x 安装与引导时定位识别内核。

dart参数

Arguments

参数说明:修复因开启VT-d,导致系统启动时SMC五国错误,系统安装不能正常进行时可采用,安装成功后关闭。

xcpm参数

Arguments

-xcpm

参数说明:在IvyBridge系统里强制xcpm使用系统内核以实现CPU原生电源管理。PS:XCPM为“XNU cpu power management”缩写。

darkwake参数

Arguments

darkwake=no/0/1/2/3/4/8/10

参数说明:darkwake=0,(for setting the "Deepsleep" mode in Lion/ML),开启针对特定机型的深度睡眠模式,详>>专贴

-gux参数

Arguments

-gux_defer_usb2??-gux_no_idle

参数说明:修复USB3.0驱动相关问题-gux_defer_usb2:修复使用GenericUSBXHCI.kext导致的睡眠问题,intel7系列适用。

-gux_no_idle:终止英特尔芯片上的一些空闲模式(idle-mode)功能,intel7系列适用。

-gux_noslee:强迫睡眠使用 shudown/reset 方法。此参数Clover官方未含待验证。

-gux_nomsi:强迫使用中断(interrupt)而不是 msi。此参数Clover官方未含待验证。

npci参数

Arguments

npci=0x2000/0x3000

两个参数不能同时启用,貌似0x2000针对旧型号显卡,自行测试效果。

npci=0x2000:解决独立显卡PCIconfiguration begin卡住不动错误。

npci=0x3000:解决独立显卡PCIconfiguration begin卡住不动错误。

nvda_drv参数

Arguments

nvda_drv=1

第一步 (获取端口信息):

打开你的IORegistryExplorer然后搜索 display.

你应该看到类似下面的东西:

显卡不同端口数不通,重要的是找到有 AppleDisplay 的那个. 比如我的图片里面 (B@1) 是要找的. PS:端口是从0开始数的,比如 第一个是A@0第二个是B@1.第三个是C@3。

第二步 (提取 device-properties.hex):

打开一个终端窗口, cd到你创建的零时文件夹, 把gfxutil拷贝到那个文件夹,然后终端运行下面的代码:

ioreg

-lw0 -p IODeviceTree -n efi -r -x | grep device-properties | sed

's/.*<//s/>.*//' >"device-properties.hex" &&

./gfxutil -s -n -i hex -o xml "device-properties.hex"

"device-properties.xml"

复制代码

现在文件夹里应该生成了两个新文件: device-properties.hex 和 device-properties.xml

第三步 (修改 device-properties.xml):

用你喜欢的文本编辑器打开xml文件 (我用的是 Sublime) 然后把你的端口数写进去 (就是你刚才在IOreg里看到的端口数和端口名,一定要确认一样哦)像截图里这样:

千万不要忘了第一个数是0!

我的这个截图里的是2GB显存的 MSi GTX 650 OC , 有三个, 我们要把默认端口设置成 (B@1).

我把我自己改好的文件放到附件里了,方便你们做参考

第一段是设置默认端口,(就是你刚才看的有AppleDisplay的端口)这里是B@1

<key>@1,AAPL,boot-display</key>

<string>0x00000001</string>

复制代码

中间的端口信息我不说你们也会照猫画虎吧。

最后一段是VBIOS信息,像我这样写

<key>VRAM,totalsize</key>

<string>0x80000000</string>// 2 GB显存

<key>device_type</key>

<string>NVDA,Parent</string>//硬件种类

<key>model</key>

<string>MSi GeForce GTX 650</string>// 显卡名称

<key>rom-revision</key>

<string>80.07.35.00.04</string>//VBIOS 版本

复制代码

根据我的经验这些值每种型号的显卡都差不多的。想要你自己显卡的精确VBIOS信息你可以在windows下用显卡驱动,aida64,nvflash等等各种软件检测。

下面是RAM大小和16进制转换表. 如果你需要其他大小的16进制值,直接问我。

Amount of memory Hex value

128 MB 0x00000080

256 MB 0x00000100

512 MB 0x00000200

1024 MB (1 GB)0x00000400

2048 MB (2 GB)0x00000800

3072 MB (3 GB)0x00000C00

4096 MB (4 GB)0x00001000

5120 MB (5 GB)0x00001400

6144 MB (6 GB)0x00001800

7168 MB (7 GB)0x00001C00

8192 MB (8 GB)0x00002000

9216 MB (9 GB)0x00002400

10240 MB (10 GB)0x00002800

11264 MB (11 GB)0x00002C00

12288 MB (12 GB)0x00003000

13312 MB (13 GB)0x00003400

14336 MB (14 GB)0x00003800

15360 MB (15 GB)0x00003C00

16384 MB (16 GB)0x00004000

修改完之后在终端执行下面的代码把XML转换成hex文件:

./gfxutil -i xml -o hex device-properties.xml device-properties.hex

复制代码

第四步 (读取修改过的hex文件):

解压 gfx_hex 到你的零时文件夹,双击打开.

他应该像下面的截图一样直接输出16进制:

(别

忘了先备份config.plist,最好能把Clover 文件夹备份到U盘)复制黏贴到 Clover Configurator 里面的

Devices ->Properties 里然后把Inject的勾打上(像下面的截图这样).

你也可以直接自己写到你的config.plist文件里面,随你便喽。

第五部 (最终工作):

你可以试一下重启看效果,但是对于大部分人来说前四步只修复了进度条,如果你的苹果图标有问题,继续跟我往下做.

在Clover Configurator (显卡选项里)把 Patch Bios 和 Inject EDID 的勾打上. 如果你有修改过的EDID可以写在这里,没有的话就算了,没事.

对了 CsmVideoDrv能不启用就不启用吧。

保存。

重启。祈祷成果吧。

如果启动失败了,用你的备份恢复Clover。

基本原理

在电脑开机时(对应_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 ()

}

方法一:在_WAK和适当的_INI中调用PINI()

_WAK和_INI可能不在同一个DSDT或SSDT中,没有关系

Method (_WAK, 1, Serialized)

{

PINI ()

......

[。。。省略。。。]

Method (_INI, 0, NotSerialized)

{

PINI ()

.......

}

方法一:编译错误

如果有类似以下的错误

Error Object does not exist (PINI)

在DefinitionBlock(在DSDT和SSDT的最上面)加上以下代码

External(PINI, MethodObj)

方法一:错误修正示范:

DefinitionBlock ("acpi_dsdt.aml", "DSDT", 1, "LENOVO", "CB-01   ", 0x00000001)

{

External (_SB_.PCI0.PAUD.PUAM, MethodObj)    // Warning: Unresolved Method, guessing 0 arguments (may be incorrect, see warning above)

External (_SB_.PCI0.XHC_.DUAM, MethodObj)    // Warning: Unresolved Method, guessing 0 arguments (may be incorrect, see warning above)

External (_SB_.TPM_.PTS_, MethodObj)    // Warning: Unresolved Method, guessing 1 arguments (may be incorrect, see warning above)

External (_PR_.CFGD, FieldUnitObj)

External (_PR_.CPU0._PPC, IntObj)

External (_PR_.CPU0._PSS, PkgObj)

External (PINI, MethodObj)

如果错误提示Object does not exist (\_SB.PCI0.PEG0.PEGP._PS3)

在DefinitionBlock加上

External(_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)

如果错误提示Object does not exist (\_SB.PCI0.PEG0.PEGP._DSM)

在DefinitionBlock加上

External(_SB_.PCI0.PEG0.PEGP._DSM, MethodObj)

方法一:保存编译

没有错误了,编译,save AML,把修改了的DSDT.aml, SSDT.aml和其他所以没有修改的SSDT*.aml放在Extra目录(变色龙),或patched文件夹(Clover),这样的话要DropSSDT。开机,幸运的话,Nvidia显卡应该被屏蔽了。

方法二:没有_PS3函数

如果没有_PS3函数,或者使用上面的方法没效果,那就试试这个方法吧。

在_WAK和适当的_INI里面加入\_SB.PCI0.PEG0.PEGP._OFF()

Method (_WAK, 1, Serialized)

{

\_SB.PCI0.PEG0.PEGP._OFF()

......

[。。。省略。。。]

Method (_INI, 0, NotSerialized)

{

\_SB.PCI0.PEG0.PEGP._OFF()

.......

}

方法二:编译错误

如果编译时有错误,像方法一的4中那样解决错误即可。

方法二:编译保存

没有错误了,编译,save AML,把修改了的DSDT.aml, SSDT.aml和其他所以没有修改的SSDT*.aml放在Extra目录(变色龙),或patched文件夹(Clover),这样的话要DropSSDT。开机,幸运的话,Nvidia显卡应该被屏蔽了。

查看是否生效

如何查看是否成功屏蔽Nvidia独显:打开“系统信息”→“图形卡/显示器”,若只有Intel显卡的信息就证明屏蔽成功。若成功了就支持一下吧!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/bake/11753691.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存