使用WhateverGreen对英特尔® 核芯显卡Framebuffer进行修补

使用WhateverGreen对英特尔® 核芯显卡Framebuffer进行修补

写在前头

使用Clover中的 KextsToPatch 在Mojave 的二进制修补帧缓冲区中进行帧缓冲修补不再是Mojave for Skylake及以上版本的可行方法。现在你需要使用Lilu + WhateverGreen

不只是对于Mojave
这种帧缓冲修补方法不仅是Mojave所必需的,我们还推荐它用于所有以前和未来的macOS版本。

Coffee Lake用户
请注意,新的WhateverGreen不适用于仿冒Kaby Lake平台ID。你需要有macOS 10.14 Beta 4(18A336e)或更新版或macOS High Sierra 10.13.6(17G2112))。后者是一种特殊版本,仅适用于MacBookPro15,1或MacBookPro15,2主板ID。您可以通过运行installinstallmacos.py来创建macOS High Sierra 10.13.6(17G2112)安装程序。(更新:vit9696增加了仿冒Kaby Lake平台ID的能力)Lilu + WhateverGreen WhateverGreen将取代Lilu的所有其他视频补丁插件(它目前已经合并了WhateverGreen,IntelGraphicsFixup,NvidiaGraphicsFixup,Shiki和CoreDisplayFixup)。其他人可能会遵循(例如AppleALC,HibernationFixup和IntelGraphicsDVMTFixup)。这旨在成为视频的一体化解决方案。

准备工作

删​​除

  •  – FakePCIID_Intel_HD_Graphics
  • – IntelGraphicsFixup
  • – NvidiaGraphicsFixup
  • – CoreDisplayFixup
  • – Shiki

关闭Clover中的所有图形注入

  • – config.plist / Graphics / Inject / ATI = NO 
  • – config.plist / Graphics / Inject / Intel = NO 
  • – config.plist / Graphics / Inject / NVidia = NO 
  • – config.plist / Graphics / ig-platform-id = 
  • – config.plist / Devices / FakeID / IntelGFX =
关闭Clover中的所有图像注入

禁用Clover对DSDT的修复

  • – AddHDMI
  • – FixDisplay
  • – FixIntelGfx
  • – AddIMEI

禁用UseIntelHDMI 

禁用UseIntelHDMI

删除引导参数

  • -disablegfxfirmware 

从以下位置删除所有IGPU和HDMI条目

  • – config.plist/Devices/Arbitrary
  • – config.plist/Devices/Properties
  • – config.plist/Devices/AddProperties

从以下位置删除任何与IGPU和HDMI相关的SSDT和DSDT

  • – CLOVER/ACPI/patched

重命名GFX0 – > IGPU

  • – WhateverGreen将自动执行此操作(请参阅下面的警告)
  • – 你应该意识到WhateverGreen不重命名GFX0的所有实例 – > IGPU,但在大多数情况下应该没问题
  • – 您可能需要包含Clover GFX0 – > IGPU重命名用于其他需要它的kexts或ACPI修补

编译Lilu + WhateverGreen

下载WhateverGreen。在编译之前,请确保将Lilu的调试版本放入WhateverGreen的根目录中。将Lilu和WhateverGreen kext安装到通常的位置。如果要查看调试输出,请将WhateverGreen编译为debug。

编译有问题?

如果您在编译时遇到问题,可以下载正式版本二进制文件或下载我的(不支持的)build_lilu.shshell脚本并在文件夹中运行它以自动下载和构建Lilu + WhateverGreen使用Xcode。我建议您首先尝试调试版本(将它们放入Clover的EFI / Clover / kexts / Other文件夹中)。(也可以使用我制作的脚本来编译,链接1

获取IGPU的设备路径

下载并使用gfxutil工具,如下所示:

$ ./gfxutil -f IGPU
DevicePath = PciRoot(0x0)/Pci(0x2,0x0)

ig-platform-id

对于AAPL,ig-platform-id(AAPL,Sandy Bridge的snb-platform-id)条目Clover要求此值为数据格式,因此您需要反转字节。因此,如果您希望您的platform-id为0x3EA50009,请首先反转字节(0900A53E),然后使用Xcode的plist编辑器将值添加到Clover的config.plist中。

ig-platform-d

我应该为我的系统使用什么ig-platform-id?

您应该选择与您的系统最匹配的一个。我建议你在选择之前先做一些研究。有关可用选项,请参阅第2篇文章。

您可以通过连字符后的第一个数字来确定CPU的生成。

例子

  • – Intel(R) Core(TM) i5-2760QM (Gen 2)
  • – Intel(R) Core(TM) i7-5257U CPU @ 2.70GHz (Gen 5)
  • – Intel(R) Core(TM) m3-6Y30 (Gen 6)
  • – Intel(R) Core(TM) i5-8350U (Gen 8)

仿冒因特尔CPU代数

如果需要欺骗不同Intel的CPU代可以使用lilucpu = N启动标志。N指的是以下英特尔代:

4    Sandy Bridge
5    Ivy Bridge
6    Haswell
7    Broadwell
8    Skylake
9    Kaby Lake
10    Coffee Lake

要欺骗CPU,您需要在设备/属性中的GPU条目中为相应的英特尔生成设置有效的设备ID。

例如。欺骗Skylake(lilucpu = 8引导标志,设备ID = 0x16190000),Kaby Lake(lilucpu = 9引导标志,设备ID = 0x12590000)。

以下是一些推荐的帧缓冲框架

第2代:Sandy Bridge(英特尔高清显卡2000/3000)

  • – S/L/E/AppleIntelSNBGraphicsFB.kext
  • – 支持从10.7.x到10.13.6的系统
  • – metal不可用
  • – 设备ID: 0x0102 0x0106 0x010A 0x0112 0x0116 0x0122 0x0126
  • – AAPL,snb-platform-id (台式机): 0x00030010 (预设值)
  • – AAPL,snb-platform-id (笔记本): 0x00010000 (预设值)

第3代:Ivy Bridge (英特尔高清显卡2500/4000)

  • – S/L/E/AppleIntelFramebufferCapri.kext
  • – 从10.8.x开始支持
  • – 设备ID: 0x0152 0x0156 0x0162 0x0166
  • – AAPL,ig-platform-id (台式机): 0x0166000A (预设值), 0x01620005
  • – AAPL,ig-platform-id (笔记本): 0x01660003 (预设值), 0x01660009, 0x01660004

第4代:Haswell(英特尔高清显卡4200-5200)

  • – S/L/E/AppleIntelFramebufferAzul.kext
  • – 从10.9.x开始支持
  • – 设备ID: 0x0D26 0x0A26 0x0A2E 0x0D22 0x0412
  • – AAPL,ig-platform-id (台式机): 0x0D220003 (预设值)
  • – AAPL,ig-platform-id (笔记本): 0x0A160000 (预设值), 0x0A260005 (推荐)

注:0x0A260005和0x0A260006这两个ID需要把cursormemorysize值修改为9m,不然会有局部花屏问题,也可以选用0x0D260007或0x0D26000E/0x0D26000F。

第5代:Broadwell(英特尔)高清显卡5300-6300)

  • – S/L/E/AppleIntelBDWGraphicsFramebuffer.kext
  • – 从10.10.2开始支持
  • – 设备ID: 0x0BD1 0x0BD2 0x0BD3 0x1606 0x160E 0x1616 0x161E 0x1626 0x1622 0x1612 0x162B
  • – AAPL,ig-platform-id (台式机): 0x16220007 (预设值)
  • – AAPL,ig-platform-id (笔记本): 0x16260006 (预设值)

第6代:Skylake(英特尔高清显卡510-580)

  • – S/L/E/AppleIntelSKLGraphicsFramebuffer.kext
  • – 从10.11.4开始支持
  • – 设备ID: 0x1916 0x191E 0x1926 0x1927 0x1912 0x1932 0x1902 0x1917 0x193B 0x191B
  • – AAPL,ig-platform-id (台式机): 0x19120000 (预设值)
  • – AAPL,ig-platform-id (笔记本): 0x19160000 (预设值)

第7代:Kaby Lake(英特尔高清显卡610-650)

  • – S/L/E/AppleIntelKBLGraphicsFramebuffer.kext
  • – 从10.12.6开始支持
  • – 设备ID: 0x5912 0x5916 0x591B 0x591C 0x591E 0x5926 0x5927 0x5923 0x87C0
  • – AAPL,ig-platform-id (台式机): 0x59160000 (预设值)
  • – AAPL,ig-platform-id (笔记本): 0x591B0000 (预设值)

第8代:Coffee Lake(Intel UHD Graphics 630)

  • – S/L/E/AppleIntelCFLGraphicsFramebuffer.kext
  • – 从10.13.6(17G2112)和10.14 beta4(18A336e)版本开始支持
  • – 设备ID: 0x3E9B 0x3EA5 0x3E92 0x3E91
  • – AAPL,ig-platform-id (台式机): 0x3EA50000 (预设值), 0x3E9B0007 (推荐)
  • – AAPL,ig-platform-id (笔记本): 0x3EA50009 (预设值)

给缓冲帧打补丁

WhateverGreen为您自动完成大部分工作,在大多数情况下您不需要任何额外的Framebuffer补丁。至少你应该选择一个ig-platform-id适用于您的系统并将其放在config.plist / Devices / Properties中,如下所示:

给缓冲帧打补丁

您可能需要额外缓冲帧补丁的一些原因

  • – 为那些无法在BIOS中设置超过32 MB的人设置DVMT(framebuffer-stolenmem / framebuffer-fbmem)
  • – 为遇到图形故障的4K用户设置更高的VRAM(帧缓冲) -unifiedmem)
  • – 禁用eGPU(disable-external-gpu)
  • – 启用4K支持的像素时钟补丁(enable-hdmi20)
  • – 禁用连接器以启用睡眠(framebuffer-pipecount / framebuffer-portcount / framebuffer-conX-type = -1)
  • – 删除<10.13.6上的eDP笔记本电脑屏幕的CNConnectorAlwaysConnected标志(framebuffer-con0-flags = 0x00000090)
  • – 更改连接器类型以匹配您的系统端口(framebuffer-conX-type)

帧缓冲区修补类型

我们有三种不同类型的补丁:

1。任意(推荐)
framebuffer-patch-enable (以下补丁的总开关)
framebuffer-framebufferid (可选; 默认为当前平台ID)
(以下补丁皆为可选)
framebuffer-mobile(mobile值)
framebuffer-pipecount(管道值)
framebuffer-portcount(输出端口数)
framebuffer-memorycount(memory值)
framebuffer-stolenmem(stolenmen值,dvmt补丁之一)
framebuffer-fbmem(fbmem值,dvmt补丁之一)
framebuffer-unifiedmem(核显最大动态显存值)
framebuffer-cursormem (cursormemorysize值,Haswell核显专用)
framebuffer-camellia(camellia值)
framebuffer-flags(标志位)

framebuffer-conX-enable (conX端口的补丁开关)
framebuffer-conX-index(conX端口的索引值)
framebuffer-conX-busid(conX端口的总线ID)
framebuffer-conX-pipe(conX端口的管道值)
framebuffer-conX-type(conX端口的端口类型)
framebuffer-conX-flags(conX端口的标志位)

注:conX的X可以是0,1,2,3

2.所有数据
framebuffer-conX-enable (conX端口的补丁开关)
framebuffer-conX-alldata(conX端口的补丁数据)
3.查找/替换
framebuffer-patchX-enable (补丁X的开关)
framebuffer-patchX-framebufferid (可选; 默认为当前平台ID)
framebuffer-patchX-find(补丁X要查找匹配的数据)
framebuffer-patchX-replace(补丁X要替换的数据)
framebuffer-patchX-count (可选; 默认为1)

您应该将补丁放在Clover config.plist 中的config.plist / Devices / Properties中。

一些示例补丁

  • – 32MB BIOS,19MB被盗(帧缓冲)9MB fbmem(光标)2048MB unifiedmem(vram)
dvmt补丁和vram补丁
  • – 管道/端口数3至2 
  • – 连接器1 DP至HDMI 
  • – 连接器2禁用
端口补丁

以下是All Data方法的示例

端口0的All Data补丁方法

以下是查找/替换方法的示例

查找/替换补丁方法

帧缓冲转储

有两种方法可以转储帧缓冲区数据(两者都需要WhateverGreen + Lilu调试版本):

1.使用-igfxdump引导标志将IGPU帧缓冲区kext转储到/ AppleIntelFramebuffer_X_Y(启动驱动器的根目录)

有几种方法可以读取它转储:

2.使用-igfxfbdump引导标志将本机和修补的framebuffer表转储到ioreg IOService:/ IOResources / WhateverGreen 

有几种方式读取此转储:

3.使用Hackintool Framebuffer-> macOS 10.14菜单

调试输出

要从Lilu获取调试输出,请使用-liludbgall liludump = 60启动标志。您将需要编译Lilu和WhateverGreen作为调试,以使这两个标志起作用。日志文件应位于/ var / log / Lilu_ *

要查看调试,请将以下内容粘贴到终端(weglog.txt将输出到您的主目录):

log show --predicate 'process == "kernel" AND (eventMessage CONTAINS "WhateverGreen" OR eventMessage CONTAINS "Lilu")' --style syslog --source --last boot >weglog.txt
示例一
示例二

Written by

Mison

2 thoughts on “使用WhateverGreen对英特尔® 核芯显卡Framebuffer进行修补

发表评论

电子邮件地址不会被公开。 必填项已用*标注