附录[1] – OpenCore 支持的内核驱动 (Kext) 及其用途
参考 https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Kexts.md

GitHub 项目的下载地址位于 Release 下, 驱动具体支持的设备请进入项目地址查看

有线网卡
驱动及项目地址 备注
AppleRTL8169Ethernet Realtek RTL8169 官方驱动
AtherosE2200Ethernet.kext 高通 Atheros Killer E2200 系列驱动
AtherosL1cEthernet.kext 高通 Atheros AR813x/815x 驱动
IntelMausi.kext 英特尔有线网卡 Acidanthera 分支
IntelMausiEthernet.kext 英特尔有线网卡原作者
NullEthernetInjector.kext 仿冒内建网卡 (没有可用的内建网卡时使用)
RealtekR1000SL.kext Realtek 8111B/C/D/E/EP/F/G/GU/8411B 系列驱动
RealtekRTL8100.kext Realtek RTL810X 系列驱动
RealtekRTL8111.kext Realtek RTL8111/8168 系列驱动
Wi-Fi 和蓝牙
驱动及项目地址 备注
AirPortAtheros40.kext 高通 Atheros AR92xx/AR93xx 驱动, 仅用于 10.14+
AirportBrcmFixup.kext 非苹果官方博通网卡修复
ATH9KFixup.kext 高通 Atheros AR9xxx 无线网卡修复
BrcmPatchRAM.kext 博通网卡蓝牙固件上传
BT4LEContinuityFixup.kext IOBluetoothFamily 修补
MT7610 联发科 MT7610
RT5370 联发科 RT5370
RTL8192CU Realtek RTL8192CU 驱动 (链接为谷歌云盘)
键盘, 鼠标和触摸设备
驱动及项目地址 备注
ApplePS2SmartTouchPad.kext 触摸板和键盘
AsusSMC.kext 华硕 Fn 键, 键盘背光灯和环境光传感器 驱动
NoTouchID.kext 禁用 Touch ID 检测, 修复输密码时卡顿
SerialMouse.kext 使用 Microsoft 串行鼠标协议的串行鼠标驱动
VoodooI2C.kext I2C 触摸板/屏 驱动
VoodooPS2Controller.kext PS2 键盘/触摸板 驱动
显卡和声卡
驱动及项目地址 备注
AppleALC.kext 定制万能声卡驱动
NVIDIA CUDA drivers NVIDIA CUDA 驱动
NVIDIA Web-drivers NVIDIA 显卡驱动
SNBGraphicsMojaveInstaller 二代酷睿核显驱动, 仅用于 10.14+
VoodooHDA.kext 万能声卡驱动
WhateverGreen.kext 显卡补丁驱动
Polaris22Fixup.kext Polaris22/VegaM 显卡修复
CPU 和 SMC
驱动及项目地址 备注
CPUFriend.kext CPU 变频管理
FakeSMC.kext and sensors Clover 官方 FakeSMC
HWPEnabler.kext 启用 HWP
NullCPUPowerManagement.kext AMD 和虚拟机专用版本
OpcodeEmulator.kext Opcode 模拟驱动
TSCAdjustReset.kext TSC 频率同步驱动
VirtualSMC.kext 及传感器 Acidanthera 的 SMC 和传感器驱动
VoodooTSCSync.kext TSC 频率同步驱动
USB 和 其它接口
驱动及项目地址 备注
IOElectrify.kext 在雷电 3 设备上启用常开电源
USBWakeFixup.kext 修复 Skylake 平台 USB 唤醒黑屏
SASMegaRAID.kext LSI MegaRAID SAS 系列 RAID 控制器驱动
Sinetek-rtsx.kext Realtek RTSX SDHC 读卡器驱动
VoodooSDHC.kext SDHC 读卡器驱动
其它驱动
驱动及项目地址 备注
AppleIntelInfo.kext CPU / 核显 变频测试
HibernationFixup.kext 修复因 RTC 变量和 NVRAM 造成的睡眠问题
Lilu.kext SDK & Library
LiluFriend.kext 用于确保 Lilu 在 L/E 下正常加载
RTCMemoryFixup.kext 修复 BIOS CMOS (RTC) 内存和 AppleRTC 之间的冲突问题
NightShiftUnlocker.kext 解锁 NightShift
WebCamera.kext 某些旧设备的摄像头驱动
附录[2] – UEFI 驱动 (.efi) 及其用途
OpenCore 支持的 UEFI 驱动
ApfsDriverLoader
APFS 文件系统引导驱动
AudioDxe
OpenCore 用于在 UEFI 环境播放音频的驱动
CrScreenshotDxe
增加 OpenCore UI 内截屏功能, 快捷键为 LCtrl + LAlt + F12 ( 左Ctrl + 左Alt + F12)
FwRuntimeServices
通过支持只读和只写 NVRAM 变量来提高 OpenCore 和 Lilu 的安全性。有些设置项, 例如 RequestBootVarRouting, 需要此驱动程序才能正常运行
HFSPlus
苹果自带的闭源 HFS 驱动, 不具有 Bless 和其它功能, 但是启动速度比它的等效驱动 VBoxHfs 快 3 倍
HiiDatabase.efi
用于给 Ivy Bridge (3 代酷睿) 或更老代主板上支持 UEFI 字体渲染, UEFI Shell 中文字渲染异常时使用, 新主板不需要
NvmExpressDxe
从 Broadwell 开始的大多数固件中都包含此驱动程序。对于 Haswell 及更早的固件, 如果安装了 NVMe SSD 就需要使用
MemoryAllocation.efi
为 Z390/X99 等主板预留第一组 512MB 内存, 帮助引导工具注入内核以及内核缓存至第一组 512MB 内存, 需要配合 FwRuntimeServices 和引导标识符 slide=1
AppleUsbKbDxe
添加了对 AppleKeyMapAggregator 协议支持的 USB 键盘驱动, 这是 AppleGenericInput 的等效驱动, 根据固件的不同, 实际效果会更好或更坏
VariableRuntimeDxe
EDK II 的 NVRAM 驱动, OpenCore 中用于模拟 NVRAM, 需要配合 FwRuntimeServices(.efi) 和 DisableVariableWrite(Quirk)
VBoxHfs
具有 bless 支持的 HFS 文件系统驱动程序。该驱动程序可以等效替代 Apple 固件中常见的闭源 HFSPlus 驱动。此驱动虽然功能更加完善, 但启动速度相比大约慢 3 倍,并且尚未经过安全审核
XhciDxe
来自 MdeModulePkg 的 XHCI USB 控制器支持驱动程序。从 Sandy Bridge 开始的大多数固件中都包含此驱动程序。在较旧的固件上可以用于支持 USB 3.0 PCI 卡
部分网上无法找到的 UEFI 驱动可以在这里下载

Download

OpenCore 不兼容的 UEFI 驱动
AppleGenericInput
添加了对 AppleKeyMapAggregator 协议支持的用户输入驱动。此外, 还解决了某些固件上的鼠标输入问题, 这是 AppleUsbKbDxe 的等效驱动, 根据固件的不同, 实际效果会更好或更坏
已合并入 OpenCore
AppleImageCodec
为 Clover 启动 FileVault 2 解码 PNG 和 BMP, OpenCore 已集成
AppleKeyAggregator
为 Clover 支持 FileVault 2 启动 UI 的驱动, OpenCore 已集成
AppleKeyFeeder
为 Clover 支持 FileVault 2 内 PS/2 键盘输入的驱动, OpenCore 已集成
AppleUITheme
为 Clover 支持 FileVault 2 启动 UI 主题的驱动, OpenCore 已集成
AptioInputFix & AppleGenericInput
用于解决 UEFI 固件输入问题的驱动, 已与 OpenCore 合并
AptioMemoryFix
NVRAM 和内存驱动, 用于修复 UEFI 固件上的内存问题, 已与 OpenCore 合并为 FwRuntimeServices
CsmVideoDxe
用于 Clover GUI 的显卡驱动, 允许使用更多分辨率, 基于 UEFI BIOS 中的 CSM 兼容模块, 并将启用所需的 CSM, OpenCore 不兼容
DataHubDxe
macOS 必需的 DataHub 协议, OpenCore 自带且提供了这个 Quirk
EmuVariableUefi
Clover 的模拟 NVRAM 驱动, OpenCore 不兼容, 替代品为 VariableRuntimeDxe
EnglishDxe
在 UEFI Shell 中支持 UnicodeCollation 协议, OpenCore 自带且提供了这个 Quirk
EnhancedFatDxe
这个驱动已存在于所有 UEFI 固件中, 无法从 OpenCore 直接使用。由于很多固件的 FAT 支持都有问题, 导致在尝试写入时会损坏文件系统。如果在引导过程中写入 EFI 分区出现问题, 则需要将此驱动用 UEFITool 刷入固件中
FirmwareVolume
为 Clover 启动 FileVault 2 创建 FirmwareVolume 光标的驱动, OpenCore 已集成
FSInject
Clover 用于注入内核驱动 (Kext) 的驱动, OpenCore 自带且使用更先进的方法
HashServiceFix
修复 UEFI BIOS 中的哈希支持, OpenCore 自带且提供了这个 Quirk
OsxAptioFixDrv
旧的 Clover NVRAM 和内存驱动, 用于修复 UEFI 固件上的内存问题, 与 FwRuntimeServices 和 OpenCore 不兼容
OSXAptioFix2Drv-Free2000.efi
Clover 的内存驱动, 用于修复 UEFI 固件上的内存问题, 作者已经声明会损坏硬件
OsxAptioFix3Drv
Clover NVRAM 和内存驱动, 用于修复 UEFI 固件上的内存问题, 与 FwRuntimeServices 和 OpenCore 不兼容
OsxFatBinaryDrv
Clover 用于支持 OS X 10.9 和更早版本的 FAT Binary 可执行文件的驱动, 与 FwRuntimeServices 和 OpenCore 不兼容
OsxLowMemFixDrv
精简版的 OsxAptioFixDrv, 用于修复 UEFI 固件上的内存问题, 与 FwRuntimeServices 和 OpenCore 不兼容
PartitionDxe
用于支持非常规分区图的驱动, 如: 混合 GPT/MBR 或 Apple 分区图, OpenCore 兼容性未知
Ps2MouseDxe
PS/2 鼠标驱动, 这个驱动已存在于所有 UEFI 固件中
SMCHelper
UEFI 层面的 SMC 驱动, 用于与 FakeSMC 配合。与 OpenCore 不兼容
VirtualSmc
UEFI 层面的 SMC 驱动, 已与 OpenCore 合并
其它未在本文中提到的 UEFI 驱动一律不兼容
附录[3] – 常用内核引导标识符合集
引导标识符 作用
-amd_no_dgpu_accel 关闭 AMD 显卡硬件加速
cpus=# 启用 # 个 CPU 核心
darkwake=0 禁用 Power Nap
dart=0 禁用 VT-d
debug=0x100 发生 KP 时不自动重启
keepsyms=1 发生 KP 时保留 Debug Symbols, 用于给开发者反馈问题
kext-dev-mode=1 启用 Kext 开发模式, 非开发者请勿使用
-no_compat_check 关闭兼容性检查
npci=0x2000 在旧设备上禁用 kIOPCIConfiguratorPFM64
nvda_drv=1 启用 N 卡驱动的老方法, 在 10.12 及以后失效
nv_disable=1 关闭 N 卡硬件加速
-s 单用户模式
slide=# 手动设置 KASLR slide 值为 #
-v verbose 跑码模式
-x 安全模式
内核驱动提供的引导标识符请去对应驱动的 Readme 查看

https://blog.csdn.net/m_nanle_xiaobudiu/article/details/105649294

推荐使用的是docker方式,运营lnmp容器来实现快速搭建
镜像名称:haveyb/lnmp

主要命令摘要:

cd ~
cd .docker
vi daemon.json
 
#将文件内容替换为下面内容
 
{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
 


docker pull haveyb/lnmp

docker run -itd --name lnmp --privileged -p 6379:6379 -p 80:80 -p 3307:3306 -v /Users/SH-Server:/data haveyb/lnmp /usr/sbin/init


docker exec -it lnmp bash

#exit回到MAC系统中,添加域名绑定到本机
sudo vi /etc/hosts

# 先从mac进入容器内部
docker exec -it lnmp bash

#然后到 /usr/local/nginx/cond.d 目录下创建一个名为 ttt.haveyb.com.conf 的文件,内容如下:
    server {
           listen       80;
           server_name  ttt.haveyb.com;
       
           client_max_body_size 128M;
       
           charset utf-8;
           error_log    /usr/local/nginx/logs/error/ttt.haveyb.com.log error;
           access_log  /usr/local/nginx/logs/access/ttt.haveyb.com.log main;
     
           root   /data/ttt;
           index  index.html index.htm index.php;
       
           location / {
               try_files $uri $uri/ /index.php?$query_string;
           }
       
           location ~ ^/assets/.*\.php$ {
               deny all;
           }
       
           location /favicon.ico {
               log_not_found off;
               access_log off;
           }
       
           error_page  404 403 500 502 503 504  /404.html;
       
           location = /404.html {
               root   /data/errorPage;
            }
        
            location ~ \.php$ {
                fastcgi_pass   unix:/dev/shm/php-cgi.sock;
                fastcgi_index  index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
            }
        
            location ~ /\.ht {
                deny  all;
            }
                
        }
 
#编写测试文件,到定义的网站目录下编写一个测试的PHP文件,这里就是上面指定的 /data/ttt 目录

cd /data
mkdir ttt
vi index.php
 
<?php
phpinfo();

程序管理(在docker 容器中操作)

systemctl status/start/stop/restart/reload nginx
 
# 站点的配置文件放在 /usr/local/nginx/conf.d 目录下

systemctl status/start/stop/restart/reload php-fpm
 
# php.ini 文件位于/usr/local/php/etc/php.ini
 
# phpize全局可用

systemctl status/start/stop/restart/reload mysql
 
# MySQL 数据文件、慢查询日志、错误日志位于 /usr/local/mysql/data 目录下
 
# 配置文件位于 /etc/my.cnf  可以通过设置mysql错误日志级别 log_error_verbosity 来减少mysql错误日志的记录,默认是都记录,建议添加 log_error_verbosity = 1,即只记录error
 
# 初始密码:123456

systemctl status/start/stop/restart/reload redis
 
# conf 配置文件位于 /etc/redis.conf,哨兵sentinel配置文件位于 /etc/redis-sentinel.conf
 
# 初始密码:haveyb


systemctl status/start/stop/restart/reload memcached 

四、Docker 使用过程中可能遇到的问题及解决方案
1、Docker创建容器后并映射端口号后,navicat 远程连接mysql

2、Docker中使用git clone 报错 Could not resolve host: github.com; Unknown error

3、进入容器后,没有clear指令

yum install ncurses

使用 mac 开发过程中,建议使用的软件
1、开发idea 还是使用 PHPStorm
2、连接本地、远程SSH 使用 Termius
3、虚拟机:vmware fusion,只放一些MAC中无法被代替的,否则就没必要了吧
4、连接数据库:navicat Premium
5、接口测试 postman

英文原文:https://osxlatitude.com/forums/topic/10267-understanding-and-patching-framebuffer-haswell/

首先以我最喜欢的Haswell为例。我使用的是移动平台ID 0x0a260006。

Haswell帧缓冲(AppleIntelFramebufferAzul):

如果您在十六进制编辑器中打开位于AppleIntelFramebufferAzul.kext的Contents / MacOS中的二进制文件,然后搜索“ 0600260A 01030303”

您将得到如下结果:

0600260A 01030303 00000002 00003001 00006000 其中值是:

0600260A->帧缓冲区/布局ID(0x0a260006)
01030303->管道和端口数(最后4个字节,不知道为什么会重复)
00000002-> DvMT内存(32MB,十进制1024 1024 32)
00003001->帧缓冲内存(十进制19MB 1024 1024 19)
00006000->光标内存(十进制为6MB 1024 1024 6)
注意: 帧缓冲内存+游标内存必须小于DvMT值,否则会出现内核崩溃(19 + 6 = 25,小于32MB)

现在我们知道了这些值所对应的内容,我们还知道我们的平台ID中包含3个端口,即0x03 = 3(十进制)。现在,如果您在十六进制编辑器中查找仅几个字节,您将获得帧缓冲区的端口。

AppleIntelFramebufferAzul在0600260A的端口:

00000800 02000000 30000000->端口0000属性(LVDS)
01050900 00040000 87000000->端口0105属性(DP)
02040900 00040000 87000000->端口0204属性(DP)
FF000000 01000000 40000000->茶几
注意: 第一组的前4个字节显示端口号。第二部分涉及连接器类型。现在让我们看一下常见的连接器类型。

连接器类型:

LVDS 0200
用于DP的0004
用于HDMI的0008
尽管在HD4400上可以使用OOB,但在真正的Mac上却找不到VGA。
修补帧缓冲区:

我们将介绍端口计数,HDMI,DvMT,Cursor mem,Framebuffer mem和删除端口的修补程序。

修补PortCount:

众所周知,我们的平台ID中有3个端口,用01030303表示, 现在假设我们要将端口数更改为2(用于从帧缓冲区中删除不需要的端口,从而解决了某些Haswell / Broadwell机器上的延迟)

因此,我们必须将03更改为02(因为重复了两次,所以我们必须更改该数据的最后4个字节)。将计数从3更改为2的端口计数更改端口为:

名称:AppleIntelFramebufferAzul

找到:0600260A 0103 0303 00000002

代表:0600260A 0103 0202 00000002

现在,当我们将端口数减少到2时,我们需要删除未使用的端口。使用一些常识,您可以知道我们无法删除LVDS端口,否则我们的笔记本电脑将无法显示任何内容。现在我们剩下2个备用端口了。其中之一将用于HDMI。就我而言,端口0204用于HDMI。

请注意,端口号很容易识别,因为它们在FrameBufferConnector的位置。就像,如果您运行:

nick @ Nicks - MacBook - Air :〜$ ioreg - l | grep “ AppleIntelFramebuffer类”

| | | + -o AppleIntelFramebuffer @ 0 <类AppleIntelFramebuffer ,ID 0x100000354 ,已注册,已匹配,活动,忙碌0 (41毫秒),保留20 > //端口1 | | | + -o AppleIntelFramebuffer @ 1 <类AppleIntelFramebuffer ,id 0x100000355 ,已注册,匹配,有效          
        ,忙0 (43 ms ),保留15 > //端口2  

您可以看到@ 0和@ 1仅有两个端口(我删除了第三个端口,因为它从睡眠中唤醒后会导致延迟)

因此,从逻辑上讲,@ 0表示LVDS,@ 1表示端口0105,@ 2表示端口0204。

修补程序以删除未使用的连接器:

众所周知,我们在端口0204上使用HDMI,而端口0000是内部LVDS,我们可以摆脱不需要的端口0105。

我们将用0204替换端口0105,并使端口0204无效。为此的补丁是:

名称:AppleIntelFramebufferAzul

查找: 01050900 00040000 87000000 02040900

代表: 02040900 00040000 87000000 FF000000

HDMI修补程序:

您将必须使用IOREG来识别用于HDMI的端口。您将看到“ AppleDisplay”,就像在LVDS的帧缓冲区0下看到“ AppleBacklightDisplay”一样。

一旦确定了用于HDMI的端口,您只需将其连接器类型更改为0008

HDMI端口0204的补丁为:

名称:AppleIntelFramebufferAzul

查找:02040900 000 4 0000 87000000

代表:02040900 000 8 0000 87000000

请注意,现在我们仅在以上补丁中更改了连接器类型。

DvMT补丁(仅适用于Haswell或更低版本,BDW +动态确定DvMT):

我们知道,默认情况下,我们的platform-id使用32MB DvMT。在PC上,我们可以修改此值。假设我在BIOS中将DvMT设置为64MB,那么,我必须修补Framebuffer才能利用它。

首先,我们需要将64MB值转换为Intel字节格式,例如:

64 1024 1024 = 67108864(十进制)

现在我们需要将其转换为十六进制格式。所以:

67108864 = 0x4000000(十六进制)

现在将其转换为英特尔字节格式:

0x4000000 = 00000004

现在我们知道需要将DvMT值替换为00000004。为此的补丁是:

名称:AppleIntelFramebufferAzul

查找:0600260A 01030303 000000 02

代表:0600260A 01030303 000000 04

注意: 帧缓冲区值+游标字节数必须小于DvMT值,否则会出现内核崩溃。

修补游标字节和FrameBuffer大小:

如您所知,在某些情况下,我们必须将光标字节更改为9MB,以修复一些计算机上的菜单栏故障。您也可以将帧缓冲区修补为其他大小。只要记住上面的注释,FB + CB。

将光标字节更改为48MB,将帧缓冲区更改为48MB的简单补丁是:

名称:AppleIntelFramebufferAzul

查找:0600260A 01030303 00000002 00003001 00006000

代表:0600260A 01030303 00000002 00000003 00000003

但是,您可以看到48 + 48 = 96MB,这比我们的DvMT大32MB。因此,我们需要将DvMT值调整为等于或大于96MB。我将以128MB为例。

因此,最终补丁将是:

名称:AppleIntelFramebufferAzul

查找:0600260A 01030303 00000002 00003001 00006000

代表:0600260A 01030303 00000008 00000003 00000003

一般注意事项:

最好将不同的补丁合并为一个补丁,因为这样可以减少冲突的机会。
如果要在某些修补程序中更改端口号,则其他修补程序应遵循该值。例如,如果将端口设置为2,然后在DvMT补丁程序中将端口计数设置为3,则很可能会引起恐慌。

如何将多个补丁合并为一个:

我将使用一个补丁来更改端口数,DvMT,帧缓冲区和光标字节。让我们看一下:

名称:AppleIntelFramebufferAzul

找到:0600260A 0103 0303 00000002 00003001 00006000

代表:0600260A 0103 0303 00000008 00000003 00000003

在上述补丁中我做了什么?您可能已经知道,0x0a260006具有3个端口,具有32MB DvMT,19MB帧缓冲区和6MB游标字节。

我将端口数更改为2,将DvMT更改为128MB,将帧缓冲区和光标字节更改为48MB。

Broadwell的样本数据:

06002616 01030303 00002002 00005001->平台ID,端口,帧缓冲区,游标字节。您可能会注意到,没有DvMT,因为它是动态确定的。

提示:您可以看到小于32MB的帧缓冲区+光标字节(34 + 21 = 55)。因此证明,在Broadwell或更高版本上,DvMT必须设置为64MB或更大。否则,您将无法启动macOS安装程序。

如果您无法在BIOS中更改DvMT,则可以通过EFI Shell或BIOS改装来完成。如果您不能这样做,则可以使用Lilu + IntelGraphicsDvMTFixup来解决此问题。

虽然,IntelGraphicsDvMTFixup可能会让您进入安装程序,也可能使您能够使用macOS,但是当您修补帧缓冲区时,事情会变得很麻烦,因为IntelGraphicsDvMTFiFixup严重依赖于帧缓冲区数据。如果更改它,它将不会加载,因此会出现恐慌。

因此,请考虑一种解决方法。知道了吗?是的,更改FrameBuffer和Cursor Bytes值,使其小于或等于DvMT。

大多数PC的DvMT设置为32MB。而且,如果您仔细阅读本指南,就会知道Haswell可以使用32MB的prealloc很好。因此,普通人会为Broadwell或更高版本复制相同的补丁。但是有一个问题。当使用默认的haswell数据时,您有19MB作为帧缓冲区和6MB作为光标字节。

但是,如果您在Broadwell上使用相同的数据(特别是6MB的光标字节),则可以启动macOS,但可能会出现随机故障,主要是在菜单栏中。

因此,我们将使用9MB作为游标字节。我们可以看到19 + 9 = 28MB,小于所需的DvMT(32MB)值。

因此,对此的补丁将是:
名称:AppleIntelBDWGraphicsFramebuffer
查找:06002616 01030303 00002002 00005001
代表:06002616 01030303 00003001 00009000

希望您有想法,并可以根据需要遵循本指南。如果您遇到困难,OSXL可以满足您的需求。

感谢Pike,RehabMan和其他许多人对此事的初步研究。

干杯

跟贴者:

https://pikeralpha.wordpress.com/2013/06/24/haswell-cpuigpu-power-management-with-a-ga-z87m-d3h/

https://pikeralpha.wordpress.com/2013/06/27/appleintelframebufferazul-kext/

https://pikeralpha.wordpress.com/2013/08/02/appleintelframebufferazul-kext-part-ii/

https://pikeralpha.wordpress.com/2013/09/25/appleintelframebufferazul-kext-part-iii/

0600260A 01 030303 00000002 00003001 FB id /移动/管道|端口| FBMem-Count / StolenMem / FBMem 00006000 00000060 D90A0000 D90A0000 CursorMem / RAM / Freq / MaxFreq 00000000 00000000 00 00 08 00 0200 0000 f b索引 /端口号/ 管道

30000000 01 05 09 00 00040000 87000000 连接器类型/ 标志
02 04 09 00 00040000 87000000 FF000000
01000000 40000000 0F000000 01010000

04000000 00000000 0E000000 00000000

0600260A->布局ID
01 03 03 03->移动+ nb的管道+ nb的端口+ nb的帧缓冲区
00000002-> fStolenMemorySize(= BIOS分配):0x02000000 = 32MB
00003001-> fFramebufferMemorySize:0x01300000 = 19MB
00006000-> fCursorBytes:0x00060000 = 6MB
00000060->最大值 VRAM:0x06000000 = 1536MB
D90A0000-> f背光频率
D90A0000-> fBacklightMaxFrequency
00000000
00000000
00 00 0800 02000000 30000000-> FB索引0 +端口#0 +管道属性+ LVDS连接器类型+激活延迟(标志)
01 05 0900 00040000 87000000-> FB索引1 +端口#5 +管道属性+ DP连接器类型+激活延迟(标志)
02 04 0900 00040000 87000000-> FB索引2 +端口#6 +管道属性+ DP连接器类型+激活延迟(标志)

从那里开始,可能会有不同的二进制补丁:

显示输出端口数
输出端口索引(FB#+端口号)
输出端口连接器类型
最大限度。虚拟RAM

这些修补原理-我想强调“原理”一词-对于Ivy Bridge,Haswell,Broadwell framebuffer kext是可重复的。

现有指南已针对以下方面发布:

桑迪桥HD3000图形
常春藤桥HD4000图形
Haswell HD4x00 / HD5000 / Iris图形

任何希望修补适用于他/她自己的计算机的帧缓冲区扩展的人都应该:

识别iGPU的相关帧缓冲区kext(用于HD3000的SNB,用于HD4000的Capri,用于Haswell的Azul,用于Broadwell的BDW)
识别iGPU的相关布局ID(Clover Configurator应用程序将它们全部列出,以供参考;否则,敏锐的人们可能会使用Hex编辑器在kext的二进制文件中查找表)
标识您需要/想要打补丁的输出端口(使用IOReg数据确定端口)
应用相关补丁(例如:将HDMI的连接器类型更改为0008 0000)

在以上线程中已对样本进行了详细说明。