E3-1230 V3+B85M-DS3H+UEFI Yosemite完美之旅
本帖最后由 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 』中填入『8419D411』,『Replace*』中填入『8708EC10』
<ii>屏蔽日志中的Sound assertion at line错误:『+』添加『Name*』为『AppleHDA』,对应『Find 』中填入『536F756E6420617373657274696F6E20696E202573206174206C696E652025640A002573002564』,『Replace*』中填入『000000000000000000000000000000000000000000000000000000000000000000000000000000』
<iii>让声卡读取修改好的Platforms.zml.zlib和layout.zml.zlib文件:『+』添加『Name*』为『AppleHDA』,对应『Find 』中填入『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 missedAcquire (MUT0, 0x0FFF)修改成0xFFFFAcquire (MUT0, 0xFFFF)
警告:8024, 1099, Unknown reserved name (_DEP)Method (_DEP, 0, NotSerialized)// _DEP: Dependencies删除下划线 Method (DEP, 0, NotSerialized)// _DEP: Dependencies2. 原生加载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)
[*]修复内核日志中的 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通过改iMac13,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较完美的教程,心有不甘,也为了完成自己多年以来的黑苹果心愿,终于能够正常用了(心碎)。分享出来,希望各位早日吃上苹果!
所需要的附件**** Hidden Message *****
**** Hidden Message *****
**** Hidden Message ***** **** Hidden Message *****
**** Hidden Message *****
关于虚拟化(VT-d)修复
本帖最后由 syscl 于 2015-2-13 14:39 编辑完成SSDT的提取后,用SSDT来修复虚拟化引起的系统问题。
打开Clover配置文件,在『ACPI』的『DropTables』分支下添加 『Item 0』,在 『Item 0』分支下添如下项目
持续更新。
PS:为何编辑总是会有问题,求指教{:9_419:}
谢谢分享 不错,支持原创
需要注意,新的Haswell平台电源管理不再是AppleIntelCPUPowerManager.kext以及AppleIntelCPPUPowerManagementClient.kext了。取而代之的是AppleHPET.kext、X86Platform.kext、 X86PlatformShim.kext这几个文件。能够原生加载电源管理的其中一个标志是『节能器』中出现5个可勾选的项目。
首先haswell CPU的电源管理是直接由内核提供的 调用的是kernel里的XCPM
节能器里的选项基本上主要跟 AppleLPC 的加载与否相挂钩的 节能器里的最后一项 非haswell平台的机型是由fakesmc里的几个预设键值控制的
通过修改X86PlatformPlugin.kext中iMac 14,2的StepContextDict来加载X86PlatformPlugin.kext的方法在Haswell平台上根本不可行。原因就是iMac 14,2在X86PlatformPlugin.kext中根本没有StepContextDict这一键值。不知道B85M-HD3通过改iMac13,2 以实现加载iMac 14,2电源的朋友是怎么实现的(无心引发骂战,就是十分困惑而已…)。B85M-DS3H/HD3本身就有不修改内核扩展的方法加载原生的电源管理,为什么要多此一举?
haswell CPU 是由 FrequencyVectors 控制的 与stepcontextdict无关
至于变频,了解了Haswell的变频机制,只有最低,最高两档,以及Turbo(睿频)档。通过修改机型强制实现多档变频的操作和Haswell本身的机制就不一致,除了能够省一点电以及增加系统的不稳定性,还带来了什么?难道是为了人类心智的繁荣?
haswell CPU的变频跟机型有关
机型要选合适的 最好跟平台对应上
你用iMac的smbios基本上不用指望出现其他档位了(iMac的变频档位本来就少)
先回复到这 论坛手机版编辑器太渣→_→ BTW 楼主写帖辛苦 支持一下~ 文章編排清晰好閱讀!非常棒 谢谢分享 {:5_295:} 谢谢楼主这么详细的教程!学习一下,我也是入手这块主板 本帖最后由 syscl 于 2015-2-11 22:00 编辑
neycwby09 发表于 2015-2-11 17:48
首先haswell CPU的电源管理是直接由内核提供的 调用的是kernel里的XCPM
节能器里的选项基本上主要跟 App ...
之前也研究过这个问题,主要是haswell无法顺利加载电源管理。即便AppleLPC加载了,也只是多出一项。技嘉XCPM顺利加载,但是仍旧无法触发其他的电源管理驱动。后来发现问题在Clover和SSDT上面。当时有篇教程说E3 V3的通过改StepContextDict来实现变频,我......
FakeSMC要设置哪几项? neycwby09 发表于 2015-2-11 17:50
BTW 楼主写帖辛苦 支持一下~
你也蛮拼的,手机回复。不知道为什么每次编辑完的内容和发出来的不一样,总会有一些位置上的错误。 kaowo 发表于 2015-2-11 18:00
谢谢楼主这么详细的教程!学习一下,我也是入手这块主板
那恭喜你了,省了很多折腾的步骤。其实这块板布线和做工上都要比HD3好,价格也不高,不知道为何用的人那么少 谢谢分享
看看怎么说的 赞一个!~ 非常优秀的文章,有参考价值哦,顶下。 文章精美。给E3安装很好的参考价值 支持原创,支持分享。 RuntimeError 发表于 2015-2-11 18:54
非常优秀的文章,有参考价值哦,顶下。
可怜了我的眼睛和硬盘。。。 感谢分享!楼主辛苦了