Intel GMA945 (0x27AE8086) 分辨率与 CI/QE/OpenGL 硬件加速解决方案
我与 Chameleon 团队经过不懈努力,终于实现了这一方案。非常感谢 Prasys 实现了 GMA 的 GraphicsEnabler 修复。我为目前自用的 GMA 显卡设计了开启 CI/QE/OpenGL 的解决方案……同时也修复了……
- 主笔作者
-
@andyvand
发表于 2010-02-12
- 所属专区
- OSx86 10.X 核心架构与安装配置
- 典藏规模与记录
- 407,228 次历史阅读 · 39 则精选技术笔记(萃取自 41 则原始回帖) · 2010-02-12 – 2011-09-24
- 参与贡献成员 (13)
- @andyvand (12)@scififan68 (6)@krrr (4)@y333 (4)@chitchit (4)@Imkantus (2)@kocoman (2)@Ianxxx (2)@stha@lotech@aceruser12@plotino@bobert
- 相关硬件参考
- USB 3.2 Boot Flash Drives ↗ 4K DisplayPort & HDMI Monitors ↗ SATA III & NVMe SSDs ↗
我与 Chameleon 团队经过不懈努力,终于实现了这一方案。
非常感谢 Prasys 实现了 GMA 的 GraphicsEnabler 修复。
我为目前自用的 GMA 显卡设计了开启 CI/QE/OpenGL 的解决方案……
我还修复了 GMA graphicsenabler 中的一些警告信息。
此修复专为 Snow Leopard 10.6.2 打造……
下载:
rapid share.com/files/349732013/GMA_0x27AE8086_Snow_Leopard_Fix.zip
引导程序源代码:
请前往 Chameleon forge 网站检出(位于 branches/andyvand 下)。
尽情享用这个出色的解决方案吧…… :
针对 10.6.3 的全新修复,同时包含 0x27A2 支持,供在 10.6.3 下无法工作的用户使用:
rapid share.com/files/378494223/GMA950_27A2___27AE_fixed_10.6.3.zip
成功实证:
社区实测与技术补充笔记
自 41 则原始讨论回帖中萃取 39 则高价值技术回应
这是否只是让我们用 GraphicsEnabler 替代 GMA950 的 EFI String,还是说无需对 AppleIntelGMA950 和 AppleIntegratedFramebuffer 内核扩展进行二进制修补(bin-patch)即可驱动?
我试着在我的 Dell Mini 10v 上安装这个,但是引导程序安装失败了。
@Imkantus这是否只是让我们用 GraphicsEnabler 替代 GMA950 的 EFI String,还是说无需对 AppleIntelGMA950 和 AppleIntegratedFramebuffer 内核扩展进行二进制修补(bin-patch)即可驱动?
EFI 注入是由 GraphicsEnabler 来完成的。
但对于 Intel GMA945 (0x27AE8086),随附的两个 kext 内的 plist 设备 ID 仍需修改,而且还需要在二进制文件中将 8680A227 改为 8680AE27。
如果引导程序安装失败,请使用 Pacifist 解压并手动安装。
如果你已安装 Chameleon 2 RC4,只需直接把 boot 文件复制到 / 根目录即可……
这个修复同样适用于 0x27A28086。
在这种情况下,你可以照做所有步骤,但请保留原版(STOCK)的 AppleIntelIntegratedFramebuffer.kext 和 AppleIntelGMA950.kext
@andyvand这个修复同样适用于 0x27A28086。在这种情况下,你可以照做所有步骤,但请保留原版(STOCK)的 AppleIntelIntegratedFramebuffer.kext 和 AppleIntelGMA950.kext
如果把修补过的 intelgma950 kext 放在 /E/E 下可以工作吗?还是必须放在 /S/L/E 下才行?
有没有可能加入 0x2592 (GMA900/915) 的支持?我目前还在用 Elliot 的驱动……我试过把 Elliot 驱动和修补过的 AppleIntegratedGMA 放进 Extra(甚至试过加上那 3 个额外的依赖项……),但无论如何都不起作用,最后只好放进 /S/L/E……
另一个问题是 mach_kernel……把修补过的版本放进 /Extra 也没用……
@kocoman有没有可能加入 0x2592 (GMA900/915) 的支持?我目前还在用 Elliot 的驱动……我试过把 Elliot 驱动和修补过的 AppleIntegratedGMA 放进 Extra(甚至试过加上那 3 个额外的依赖项……),但无论如何都不起作用,最后只好放进 /S/L/E……另一个问题是 mach_kernel……把修补过的版本放进 /Extra 也没用……
只要替换掉一个兼容的 ID 应该就可行(请检查 Info.plist 看看里面有哪些 ID)。
修补二进制文件时,请替换经过字节反转(byte swapped)的 ID:
-- 示例 --
因此在 Info.plist 中:
0x27A28086
在二进制文件中会变成:
86 80 A2 27
请将最接近你显卡的设备 ID 替换成你自己的 ID……
我查过了……
将两个 plist 中的 0x25828086
改为
0x25928086
至于两个二进制文件,请使用 0xED 以十六进制模式搜索并替换:
将 86 80 82 25
改为
86 80 92 25
二进制可执行文件一律位于 Contents/MacOS 目录下(以防你不知道)。
将这两个内核扩展安装到 S/L/E,替换掉原本的 kext。
接着按照教程中的其他步骤操作;如果引导程序安装失败,请先安装原版 Chameleon 2 RC4,再用附件中的 boot 文件覆盖即可……
希望这能帮到你……
新版本:该版本还能检测第二台显示器并自动进行修补(而且会在“系统概述”中显示出来)。
得益于我提取的 VBIOS ROM dump 以及代码修改,它还修复了 0x27AE8086/0x27A68086 的分辨率支持……
请使用 RadeonPCI.kext 配合 RadeonDump -d 命令来提取 Intel VBIOS(仅适用于提取 VBIOS,无法读取寄存器……)
请大家尽量提取更多其他型号的 GMA VBIOS,这样我就能让更多显卡获得支持(采用 GMA950 / GMAX3100 的方式)。
这对所有 Chameleon 开发人员也会有莫大的帮助。
@andyvand新版本:该版本还能检测第二台显示器并自动进行修补(而且会在“系统概述”中显示出来)。得益于我提取的 VBIOS ROM dump 以及代码修改,它还修复了 0x27AE8086/0x27A68086 的分辨率支持……请使用 RadeonPCI.kext 配合 RadeonDump -d 命令来提取 Intel VBIOS(仅适用于提取 VBIOS,无法读取寄存器……
非常感谢你,Andy!在我的 Dell Mini 10v 上完美运行。
只要我的笔记本电脑拿回来,我就会立刻制作 10.6.3 版本…… :-|
嗯,看来你的修复补丁在我的 10.6.3 上也能正常工作。
适用于 10.6.3 的新版本已经发布,支持以下两款显卡:
0x27AE
0x27A2
请同时下载第一个压缩包以获取新版安装程序
@scififan68嗯,看来你的修复补丁在我的 10.6.3 上也能正常工作。
是的,但那是旧版本。
新版本修复了一些 OpenGL 的问题……
请问这对睡眠问题有帮助吗?我通过 DSDT 配合原版 kext 可以顺利驱动 gma950,但睡眠功能始终无法正常工作。
我也不清楚,因为我自己这台机器的睡眠功能目前也还没搞定……
你的 /Extra/Extensions 里面有没有放 sleepenabler.kext?
有的,我有装 SleepEnabler.kext,机器可以进入睡眠,但唤醒后却直接重启了,无法恢复 sleepimage……
@Andy
会不会是你的机器没有加载 AppleLPC kext,或者 debug 版本的 IOUSBFamily 在你的 dmesg 中输出了关于 UHCI 的错误?
根据我的经验,这两件事往往是导致某些配置无法从睡眠中唤醒的原因……
@Imkantus@Andy 会不会是你的机器没有加载 AppleLPC kext,或者 debug 版本的 IOUSBFamily 在你的 dmesg 中输出了关于 UHCI 的错误?根据我的经验,这两件事往往是导致某些配置无法从睡眠中唤醒的原因……
啊,没错,你说得对。我记得之前也因为 UHCI 遇到过睡眠问题。解决方法是在你的 com.apple.Boot.plist 中加入:
<key>UHCIreset</key>
<string>Yes</string>
即可
@andyvand只要替换掉一个兼容的 ID 应该就可行(请检查 Info.plist 看看里面有哪些 ID)。修补二进制文件时,请替换经过字节反转(byte swapped)的 ID:-- 示例 -- 因此在 Info.plist 中:0x27A28086 在二进制文件中会变成:86 80 A2 27 请将最接近你显卡的设备 ID 替换成你自己的 ID……我查过了……将 Info.plist 中的 0x25828086 改为……
各位高手好。
我是 OSx86 的纯新手,不过总算成功在我的 Lenovo R60 笔记本电脑上安装并运行了 Hazard OSX 10.6.2。
目前唯一没搞定的就是 GMA945 显卡。
pkg 安装包安装失败,于是我尝试手动替换 /.. 根目录下的 boot 文件,并安装了一楼提供的两个 kext。我还在 com.apple.boot.plist 中加入了 "Graphicsenabler"。可惜依然无功而返,我已经放弃了。屏幕虽然能显示,但只有 1024x768 分辨率,因此 DVD 播放程序也无法运行。
现在每次出现 Chameleon 标志画面之前,都会先跳出引导前的 verbose PCI UUID 列表,并提示“press any key to continue”。
请问我要怎样才能在开机时去掉这个繁琐的列表(以及“press any key to continue”提示)?
我的 com.apple.boot.plist 里面并没有设置 "-v"。
我猜这个 PCI 列表是在读取 com.apple.boot.plist 之前就显示出来的,对吗?
我当时没有备份 /.. 下原本的旧 boot 文件,所以现在无法还原到以前的引导方式。
希望各位能帮帮忙。
不好意思问了这种“新手问题”,但我很乐意学习!
Stha
注 1:请在 kernel boot args(内核启动参数)下加上 GraphicsEnabler=Yes
注 2:请下载 boot rel3(来自 insanelymac 同一个帖子)
哇,太感谢了——终于找到办法让我的 Vaio W 在 10.6.2 下获得一定程度的显示支持了。我之前试过好几个修复方案,这个是最成功的一个。
不过有一个大问题——当我照做所有步骤但不更新引导程序时,只有外接 VGA 有画面输出,上网本的内置 LCD 会黑屏;但当我安装了新的引导程序(无论是一楼那个还是后面几楼那个)后,电脑在显卡初始化完成后就会自动进入睡眠——而且据我观察,依然只有 VGA 有画面输出。
请问有什么头绪或建议吗?
你好 Andy,
我在 MSI U100(27AE 8086 显卡)上网本上安装了 iAtkos S3 整合版,内核是 10.3,发行版系统版本是 10.6.3。请问我该如何安装正确的 kext 才能获得高分辨率显示?我急需帮助,过去两天重装了 20 次,快要疯了。
以下是我终端的输出内容,请问该如何安装?
==================
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ pwd
/Users/netbook/Downloads/GMA950_27A2___27AE_fixed_10/GMA950 0x27AE 10.6.3 fixed
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ uname -a
Darwin netbooks-MacBook.local 10.3.0 Darwin Kernel Version 10.3.0: Fri Feb 26 11:58:09 PST 2010; root:xnu-1504.3.12~1/RELEASE_I386 i386
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ sudo kextload -t AppleIntelGMA950.kext/
WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.
To proceed, enter your password, or type Ctrl-C to abort.
Password:
Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts.
/Users/netbook/Downloads/GMA950_27A2___27AE_fixed_10/GMA950 0x27AE 10.6.3 fixed/AppleIntelGMA950.kext failed to load - (libkern/kext) authentication failure (file ownership/permissions); check the system/kernel logs for errors or try kextutil(8).
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ sudo kextload -t AppleIntelIntegratedFramebuffer.kext/
Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts.
/Users/netbook/Downloads/GMA950_27A2___27AE_fixed_10/GMA950 0x27AE 10.6.3 fixed/AppleIntelIntegratedFramebuffer.kext failed to load - (libkern/kext) authentication failure (file ownership/permissions); check the system/kernel logs for errors or try kextutil(8).
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ sudo cp -rf AppleIntel* /Extra/Extensions/
Password:
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ cd /Extra/Extensions
netbooks-MacBook:Extensions netbook$ sudo chmod -R 755 AppleIntelGMA950.kext/
netbooks-MacBook:Extensions netbook$ sudo chmod -R 755 AppleIntelIntegratedFramebuffer.kext/
netbooks-MacBook:Extensions netbook$ sudo chown -R root:wheel AppleIntelGMA950.kext/
netbooks-MacBook:Extensions netbook$ sudo chown -R root:wheel AppleIntelIntegratedFramebuffer.kext/
netbooks-MacBook:Extensions netbook$ sudo kextload -t AppleIntelGMA950.kext/
Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts.
netbooks-MacBook:Extensions netbook$ sudo kextload -t AppleIntelIntegratedFramebuffer.kext/
Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts.
netbooks-MacBook:Extensions netbook$ pwd
/Extra/Extensions
netbooks-MacBook:Extensions netbook$
==================
现在准备重启。
编辑:刚重启完,重启后第一次没有出现五国死机(内核崩溃),太棒了(抱歉,因为没卡在开机画面实在太激动了)。
不过分辨率依然没有改善,我没有 com.boot.plist 那个文件;我试过安装你在 Chameleon 邮件列表发出的某个 rapidshare 文件中的 Chameleon R69 版本,很遗憾安装失败了。请问现在该怎么办?
24 小时后编辑:-
这次重装之后,我无意中发现了 NetbookInstaller ↗,在我的 MSI U100 上网本的全新 iAtkos S3 系统上跑了大约 20 分钟才完成,期间提示我输入了 2-3 次密码。完成后我重启电脑,奇迹出现了,我获得了高分辨率桌面,但分辨率比例很怪异,请看附图。
Andy,请问我现在应该如何安装你的文件?我是否也应该替换你在后面回复中附带的 boot 文件?期待你的回复。
附图为显卡硬件信息(显示为 GMA 950 27AE)以及“关于本机”中的显卡信息与 / 根目录下的文件
我取得部分成功后编辑了上一条回复,麻烦帮忙看看。
你们使用镜像模式(mirror mode)时不会有问题吗?
我的屏幕会出现极其恐怖的竖线……
Andyvand> 请问你是怎样修改那些内核扩展的?我很想为社区出一份力,但找不到任何教程去了解该如何编辑它们
我只是把我的 LCD 显示器当作第二台显示器使用(即扩展桌面空间,可以把窗口从第一个屏幕拖到第二个屏幕),这样用完全没问题。这就是你所说的镜像模式吗?
krrr> 其实你那是扩展桌面模式,你的第二个屏幕是作为桌面的延伸。我问的是镜像模式,即两个屏幕显示相同内容的模式。接上第二台显示器后,你可以在“显示器”设置(中间的选项卡)找到“镜像显示器”(Mirror Displays)的复选框。
小心点,如果你的屏幕像我一样出现花屏,拔掉外接显示器后电脑虽然可以正常使用,但以后只要再次插上该显示器,就会立刻出现那些“精美”的伪影条纹。要关闭镜像模式,可以在终端使用这个工具:fabia ncanas.com/Projects/MirrorDisplays/(或者删除你的显示器偏好设置文件)。这样你就能重新使用扩展桌面模式了
Andyvand> 可以麻烦你帮我看看我的 ROM (27A2.5D00.0003.vga.rom) 吗?
media fire.com/file/gvodjemzzl3/27A2.5D00.0003.vga.rom
@y333,对,镜像模式确实不行,画面全是条纹,吓得我以为要重装系统,因为你发的那款小工具在我这里用不了。
幸好我找到了 eru via.org/software/osxmirroring/,在终端运行这个工具就搞定了,好险。
krrr> 提供一个不用靠第三方小工具的命令行方法:
rm -f /Library/Preferences/com.apple.window*
rm -f /Users/"USERNAME"/Library/Preferences/ByHost/com.apple.window*
rm -f /Users/"USERNAME"/Library/Preferences/ByHost/com.apple.pref*
(当然要将 "USERNAME" 替换成你的用户名……)
krrr> 感谢帮忙测试
有没有办法同时启用双屏显示?比如:内置屏幕加上 VGA 输出同时显示?
嘿 Andy,正如我之前在 InsanelyMac 上跟你说过的,我做了以下修改:
针对 ae27,我把所有的 86 80 72 27 都改成了 86 80 AE 27,但镜像显示依然无法工作。请问有解决办法吗?谢谢
编辑:我试过把所有 ID 都改掉,先将 86 80 72 27 改为 86 80 AE 27,再将 86 80 82 25 改为 86 80 AE 27,然后将 86 80 92 25 改为 86 80 AE 27,但镜像功能始终无效。你确定修补的地方只有这里吗?
请问镜像模式有任何解决方案吗?
请问这个方法可以用在我笔记本电脑的 GMA 900 显卡上吗?它的设备 ID 是 0x2592。我看过你前面关于修改 ID 的说明,但还是有点一头雾水,能指点一下我吗?
我成功搞定了!看来我的显卡 ID 其实已经内置在里面了。不过现在画面颜色完全偏色,请问该怎么处理?
没事了,原来是 sse3emu 搞的鬼。
我有一台配备 Intel GMA 945 的 Dell D620。我不太明白要怎样为 0x27AE8086 开启正确分辨率以及启用 CI/QE/OpenGL 的步骤。请问在哪里可以找到详细教程?我不太精通,这是第一次在 PC 上安装 Mac 系统。
Chris
那么如果我想在设备 ID 为 [8086:2592] 的 GMA900 上使用这个方案
我该怎么做?我需要修补 GMA900 的 kext 并加入旧版的 AppleIntelIntegratedFrambuffer.kext 吗?还是怎样?
@bkribbs那么如果我想在设备 ID 为 [8086:2592] 的 GMA900 上使用这个方案,我该怎么做?我需要修补 GMA900 的 kext 并加入旧版的 AppleIntelIntegratedFrambuffer.kext 吗?还是怎样?
对,请利用里面其中一个 0x25XX 系列的 ID 来进行替换。
记住在二进制文件内需要将字节反转(例如 25928086 会变成 86809225)。
先在 Info.plist 里找一个显卡 ID,按照我教你的方法反转字节。
接着将它替换成你显卡反转后的 ID。
最后别忘了还要修改 Info.plist 才能生效。
两个 kext 都必须这样处理(然后当然要安装进系统)。
@andyvand对,请利用里面其中一个 0x25XX 系列的 ID 来进行替换。记住在二进制文件内需要将字节反转(例如 25928086 会变成 86809225)。先在 Info.plist 里找一个显卡 ID,按照我教你的方法反转字节。接着将它替换成你显卡反转后的 ID。最后别忘了还要修改 Info.plist 才能生效。这……
但我看这个 ID 似乎已经内置在里面了,看起来我的设备 ID 本来就已经存在于文件中。
没有 QE、没有 CI、也没有 oGL
大家好,我是新手,以前也试过类似的方法,但现在只取得了有限的成功 lol……我目前运行的是 10.6.8,可以调整分辨率,但没有 QE/CI/OpenGL 加速,而且因为内置屏幕还没搞定,现在只能用外接屏幕显示
我用的是 Toshiba NB 100,显示芯片是 27ae
也就是说:
10.6.8
27ae
Toshiba 上网本
请问有人能帮帮我吗?我不太擅长使用命令行(即终端),但如果有清晰的教程指引,我一定会严格照着每一步去做……
以下是我目前正在使用的 kext:
osx 86.co/attachment.php?attachmentid=1618&stc=1&d=1316877241
文献来源与贡献者溯源名录(共 13 位具名成员 · 原始讨论串 #5512)
| 成员用户名 | 本卷贡献角色 | 发帖数 | 活跃时间窗 |
|---|---|---|---|
| @andyvand | 主笔作者 | 12 | 2010-02-12 → 2011-07-28 |
| @scififan68 | 核心贡献者 | 6 | 2010-02-13 → 2010-04-26 |
| @krrr | 核心贡献者 | 4 | 2010-06-23 → 2010-06-27 |
| @y333 | 核心贡献者 | 4 | 2010-06-26 → 2010-06-27 |
| @chitchit | 核心贡献者 | 4 | 2011-01-13 → 2011-07-30 |
| @Imkantus | 协作成员 | 2 | 2010-02-13 → 2010-04-25 |
| @kocoman | 协作成员 | 2 | 2010-02-15 → 2010-06-29 |
| @Ianxxx | 协作成员 | 2 | 2010-04-24 → 2010-04-25 |
| @stha | 协作成员 | 1 | 2010-06-01 |
| @lotech | 协作成员 | 1 | 2010-06-10 |
| @aceruser12 | 协作成员 | 1 | 2010-09-01 |
| @plotino | 协作成员 | 1 | 2011-02-01 |
| @bobert | 协作成员 | 1 | 2011-09-24 |