本帖最后由 syscl 于 2015-2-17 16:22 编辑
一直很想认真写一篇关于美化的心得和体会,从初中Vista的美化开始,到现在黑苹果。一路走来,黑苹果之旅真是一条不归路,千奇百怪的硬件组合,能够产生各种各样奇怪的引导问题,也正是如此,黑苹果的安装和完善深深地吸引了我。也在这个过程中,我变得更耐心了,更懂得善用搜索去解决问题,学着不去依赖现有的工具,不断学习新的东西,腰也不酸了,腿也不疼了,这是后话…
硬件信息: - 主板: B85M-DS3H (Rev 2.001)
- 处理器: Intel Xeon E3-1230 V3 变频档位(8、33、35、37)
- 音频: Realtek ALC887-VD (VenderID 10ec0887)
- 以太网卡:Realtek RTL8111/8168/8411
- 显卡: Asus GeForce 8600 GT (VenderID 10de0402)
- 显示器: Dell P2414H
需要BIOS修改的地方:
- Boot Mode Selection: 设置成『UEFI Only』
- XHCI Hand-off : 设置成『Enabled』
- EHCI Hand-off : 设置成『Enabled』
- SATA Port 0/1/2/3/4/5
Hot plug : 设置成『Enabled』
需要Clover加以完善的地方:
1. 加载SSDT并实现X86PlatformPlugin.kext的加载
2. 开启开发者模式加载内核扩展:kext-dev-mode=1; 修复虚拟技术导致的重启:dart=0
3. 修正处理器类型:Type = 0x0501
4. 驱动显卡: Inject NVidia
5. 开启Trim以及修正硬盘识别为外置设备
6.为AppleHDA.kext打补丁
<i>注入声卡的VenderID(例如ALC887-VD的VenderID为10EC0887):『+』添加 『Name*』为『AppleHDA』,对应『Find [HEX]』中填入『8419D411』,『Replace*』中填入『8708EC10』
<ii>屏蔽日志中的Sound assertion at line错误:『+』添加『Name*』为『AppleHDA』,对应『Find [HEX]』中填入『536F756E6420617373657274696F6E20696E202573206174206C696E652025640A002573002564』,『Replace*』中填入『000000000000000000000000000000000000000000000000000000000000000000000000000000』
<iii>让声卡读取修改好的Platforms.zml.zlib和layout.zml.zlib文件:『+』添加『Name*』为『AppleHDA』,对应『Find [HEX]』中填入『786D6C2E7A6C』,『Replace*』中填入『7A6D6C2E7A6C』
7. 所需的UEFI的驱动
需要DSDT加以完善的地方:
1. 修复DSDT的错误和警告
错误:syntax error, unexpected PARSEOP_ZERO
删除错误位置下的Zero
错误:76, 4057, Name already exists in scope (_SB_.PCI0.PEG0)
- External (_SB_.PCI0.GFX0.TCHE, FieldUnitObj)
- External (_SB_.PCI0.PEG0, UnknownObj)
- External (_SB_.PCI0.PEG0.HPME, MethodObj)
复制代码
删除后 - External (_SB_.PCI0.GFX0.TCHE, FieldUnitObj)
- External (_SB_.PCI0.PEG0.HPME, MethodObj)
复制代码
错误 :78, 4057, Name already exists in scope (_SB_.PCI0.PEG0.PEGP) - External (_SB_.PCI0.PEG0.HPME, MethodObj) // 0 Arguments
- External (_SB_.PCI0.PEG0.PEGP, UnknownObj)
- External (_SB_.PCI0.PEG1, UnknownObj)
复制代码删除后 - External (_SB_.PCI0.PEG0.HPME, MethodObj) // 0 Arguments
- External (_SB_.PCI0.PEG1, UnknownObj)
复制代码
错误:10862, 4096, syntax error, unexpected PARSEOP_ARG0 - Method (ADBG, 1, Serialized)
- {
- If (CondRefOf (MDBG))
- {
- Return (MDBG)
- Arg0
- }
复制代码删除Arg0,得到 - Method (ADBG, 1, Serialized)
- {
- If (CondRefOf (MDBG))
- {
- Return (MDBG)
- }
复制代码
警告:3378, 1105, Result is not used, possible operator timeout will be missed 修改成0xFFFF
警告:8024, 1099, Unknown reserved name (_DEP) - Method (_DEP, 0, NotSerialized) // _DEP: Dependencies
复制代码删除下划线 - Method (DEP, 0, NotSerialized) // _DEP: Dependencies
复制代码2. 原生加载AppleLPC.kext (仿冒Low Pin Controller(LPC)的设备ID为8c4b) 搜索0x001F0000,定位到LPCB模块,在模块最后添加 - Method (_DSM, 4, NotSerialized)
- {
- If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
- Return (Package()
- {
- "compatible", "pci8086,8c4b",
- })
- }
复制代码
3. 驱动AppleHDA.kext (注入硬件Layout-ID(Audio ID)类型为 3 ) 搜索0x001B0000,添加 - Method (_DSM, 4, NotSerialized)
- {
- If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
- Return (Package()
- {
- "layout-id", Buffer() { 0x03, 0x00, 0x00, 0x00 },
- "PinConfigurations", Buffer(Zero) {}, "hda-gfx", Buffer() { "onboard-1" }, })
- }
复制代码
音频Layout ID插入前:
音频Layout ID插入后:
4. 电源键休眠: 搜索PNP0C0C,将 - Name (_HID, EisaId ("PNP0C0C")) // _HID: Hardware ID
复制代码改成 - Name (_CID, EisaId ("PNP0C0C")) // _HID: Hardware ID
复制代码
5. SSDT用ssdtPRGen提取出E3 1230 V3的信息,替换掉之前OEM Table ID中含有Cpu0Ist、CpuPm的文件。
至此DSDT和SSDT的修改完毕。把AML扔进/EFI/CLOVER/ACPI/patched即可。
需要SSDT加以完善的地方:
- 加载原生的电源管理X86PlatformPlugin.kext
- Haswell处理器实现变频 (8、33、35、37)
- 加载显卡电源管理AppleGraphicsPowerManagement.kext
需要修改内核扩展文件(Kext):
- FakeSMC.kext 设置机型为smc-mpc以对应iMac 14,2(Mac-27ADBB7B4CEE8E61)
- 修复内核日志中的[AGPM] unknown Platform
<i>从『AppleGraphicsPowerManagement.kext/Contents/Info.plist』中复制出『IOKitPersonalities』下面的『AGPM』,粘贴到『FakeSMC.kext/Contents/Info.plist』下的『IOKitPersonalities』。
<ii>在刚才粘贴的项目下面,找到『Machines/Mac-27ADBB7B4CEE8E61/』,把『Vendor10deDevice0fea』改成『Vendor10deDevice0402』
更详细的修改『AppleGraphicsPowerManagement 显卡电源管理 AGPM 的修改交流与讨论』https://bbs.pcbeta.com/viewthread-944161-1-1.html - 加载『AppleHDAHardwareConfigDriver.kext』
从修改好/破解过的『AppleHDA.kext/Contents/Plugins/AppleHDAHardwareConfigDriver.kext/』中展开『IOKitPersonalities』,复制出『HDA Hardware Config Resource』,粘贴到『FakeSMC.kext/Contents/Info.plist』的 『IOKitPersonalities』下面
4. 将破解后的『Platforms.zml.zlib』和『layout.zml.zlib』放置到『AppleHDA.kext/Contents/Resources/』目录下并修复权限。
完成改动后:
1.在『系统信息』中的『功能扩展』来查看原生电源是否成功加载。或者『设置』中的『节能器』查看是否存在『启用Power Nap』、『断电后自动重启』。
2. 在『系统信息』中『音频』选项查看音频是否驱动。或者在『设置』中『声音』查看是否存在线路输出。
3. 在『系统信息』的『功能扩展』中查看AppleGraphicsPowerManagement.kext是否成功加载
4. 在『系统信息』『SATA/SATA Express』中查看固态硬盘是否开启了Trim
来说下这台机子的完善过程:
主板其实是花费最多心血的,没钱上Z87平台,只能把目光投向B85。但是B85不是少了两根内存插槽就是声卡无法正常加载。而新的技嘉主板还出现了via的声卡(晕)。众里寻他千百度,终于找到了B85M-DS3H,首先内存有4根槽,支持最大的32G,音频芯片是ALC887-VD,以太网卡也是Realtek,这为后续实现黑苹果的完美提供了保障。
看到很多B85M-HD3成功的案例,觉得安装过程应该会相对简单,没想到一开始就遇到了虚拟化导致的问题以及FakeSMC.kext的权限问题。另一个是沿用论坛里面B85M-DS3H成功的先例,竟然连安装界面都无法进入。只有利用Clover里面的参数进行不断的尝试。引导参数能少就少,内核扩展(Kext)也能少就少,这样才算是接近原生的!
安装完Yosemite,黑苹果之路才刚刚开始。首先遇到的问题便是加载原生的电源管理,虽然能够实现睡眠和变频,但不能加载原生的电源管理无疑让人无法接受。需要注意,新的Haswell平台电源管理不再是AppleIntelCPUPowerManager.kext以及AppleIntelCPPUPowerManagementClient.kext了。取而代之的是AppleHPET.kext、X86Platform.kext、 X86PlatformShim.kext这几个文件。能够原生加载电源管理的其中一个标志是『节能器』中出现5个可勾选的项目。本来以为透过修改DSDT便能顺利加载,事实证明,在UEFI平台上,很多的信息已经从DSDT移交到SSDT下面。并且,若不能加载X86Platform.kext、 X86PlatformShim.kext,无论如何修改AppleGraphicsPowerManagement.kext都是无法加载的。
通过修改X86PlatformPlugin.kext中iMac 14,2的StepContextDict来加载X86PlatformPlugin.kext的方法在Haswell平台上根本不可行。原因就是iMac 14,2在X86PlatformPlugin.kext中根本没有StepContextDict这一键值。不知道B85M-HD3通过改iMac 13,2 以实现加载iMac 14,2电源的朋友是怎么实现的(无心引发骂战,就是十分困惑而已…)。B85M-DS3H/HD3本身就有不修改内核扩展的方法加载原生的电源管理,为什么要多此一举?
至于变频,了解了Haswell的变频机制,只有最低,最高两档,以及Turbo(睿频)档。通过修改机型强制实现多档变频的操作和Haswell本身的机制就不一致,除了能够省一点电以及增加系统的不稳定性,还带来了什么?难道是为了人类心智的繁荣?
音频方面,我没有安装HDAEnabler.kext以减少第三方内核扩展带来的问题;为了在启动的时候更快的注入声卡信息,我没有插入DTGP函数,用了主板事先定义的模块,在启动上会快一点。最后利用toleda给AppleHDA.kext打上补丁重启便完成声卡的驱动了。以后每次更新完操作系统,都打一遍补丁就可以了。
也就是说,同样主板,或者类似配置(不同处理器)的朋友,可以直接使用下面的附件。每次更新完系统后,直接用音频补丁更新一下AppleHDA.kext即可。需要注意的是,toleda 1.04的音频补丁无法成功驱动B85M-DS3H的ALC887-VD,只能用1.03版本来驱动。一直以来都没有B85M-DS3H较完美的教程,心有不甘,也为了完成自己多年以来的黑苹果心愿,终于能够正常用了(心碎)。分享出来,希望各位早日吃上苹果!
所需要的附件
Linux dump以及ssdtPRGen生成的SSDT.zip
(62.58 KB, 下载次数: 230)
DSDT以及SSDT.zip
(26.63 KB, 下载次数: 529)
Clover配置.zip
(1.82 KB, 下载次数: 742)
音频补丁.zip
(5.67 KB, 下载次数: 400)
所需Kexts.zip
(1.36 MB, 下载次数: 1146)
|