Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 81604|回复: 1129

[原创内容] E3-1230 V3+B85M-DS3H+UEFI Yosemite完美之旅     [复制链接]

远景FANS

UID
424619
帖子
4181
PB币
534
贡献
0
技术
742
活跃
2214

巡察使 我是大学生!

发表于 2015-2-11 17:01:02 |显示全部楼层
本帖最后由 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的加载

ACPI设置部分.png



2.   开启开发者模式加载内核扩展:kext-dev-mode=1; 修复虚拟技术导致的重启:dart=0

dart=0 clover.png


3. 修正处理器类型:Type = 0x0501


cpu0.png



4. 驱动显卡: Inject NVidia

InNVidia.png



5. 开启Trim以及修正硬盘识别为外置设备

Trim PNG.png



6.为AppleHDA.kext打补丁
AppleHDA Patch.png



       <i>注入声卡的VenderID(例如ALC887-VD的VenderID10EC0887):『+』添加                        『Name*』为『AppleHDA』,对应『Find [HEX]』中填入『8419D411』,『Replace*』中填入『8708EC10』


        <ii>屏蔽日志中的Sound assertion at line错误:『+』添加『Name*』为『AppleHDA』,对应『Find [HEX]』中填入『536F756E6420617373657274696F6E20696E202573206174206C696E652025640A002573002564』,『Replace*』中填入『000000000000000000000000000000000000000000000000000000000000000000000000000000


        <iii>让声卡读取修改好的Platforms.zml.zliblayout.zml.zlib文件:『+』添加『Name*』为『AppleHDA』,对应『Find [HEX]』中填入『786D6C2E7A6C』,『Replace*』中填入『7A6D6C2E7A6C



7.  所需的UEFI的驱动


UEFI64drivers.png



需要DSDT加以完善的地方:


1.   修复DSDT的错误和警告


错误:syntax error, unexpected PARSEOP_ZERO


删除错误位置下的Zero



错误:76, 4057, Name already exists in scope (_SB_.PCI0.PEG0)


  1.     External (_SB_.PCI0.GFX0.TCHE, FieldUnitObj)
  2.     External (_SB_.PCI0.PEG0, UnknownObj)
  3.     External (_SB_.PCI0.PEG0.HPME, MethodObj)
复制代码

删除后

  1.     External (_SB_.PCI0.GFX0.TCHE, FieldUnitObj)
  2.     External (_SB_.PCI0.PEG0.HPME, MethodObj)
复制代码


错误 :78, 4057, Name already exists in scope (_SB_.PCI0.PEG0.PEGP)

  1.     External (_SB_.PCI0.PEG0.HPME, MethodObj)    // 0 Arguments
  2.     External (_SB_.PCI0.PEG0.PEGP, UnknownObj)
  3.     External (_SB_.PCI0.PEG1, UnknownObj)
复制代码

删除后

  1.     External (_SB_.PCI0.PEG0.HPME, MethodObj)    // 0 Arguments
  2.     External (_SB_.PCI0.PEG1, UnknownObj)
复制代码


错误:10862, 4096, syntax error, unexpected PARSEOP_ARG0

  1.     Method (ADBG, 1, Serialized)
  2.     {
  3.         If (CondRefOf (MDBG))
  4.         {
  5.             Return (MDBG)
  6.             Arg0
  7.         }
复制代码

删除Arg0,得到

  1.     Method (ADBG, 1, Serialized)
  2.     {
  3.         If (CondRefOf (MDBG))
  4.         {
  5.             Return (MDBG)
  6.         }
复制代码


警告:3378, 1105, Result is not used, possible operator timeout will be missed

  1. Acquire (MUT0, 0x0FFF)
复制代码

修改成0xFFFF

  1. Acquire (MUT0, 0xFFFF)
复制代码


警告:8024, 1099, Unknown reserved name (_DEP)

  1.   Method (_DEP, 0, NotSerialized)  // _DEP: Dependencies
复制代码

删除下划线

  1.    Method (DEP, 0, NotSerialized)  // _DEP: Dependencies
复制代码

2. 原生加载AppleLPC.kext (仿冒Low Pin Controller(LPC)的设备ID为8c4b)

搜索0x001F0000,定位到LPCB模块,在模块最后添加

  1. Method (_DSM, 4, NotSerialized)
  2.                 {
  3.                     If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
  4.                     Return (Package()
  5.                     {
  6.                         "compatible", "pci8086,8c4b",
  7.                     })
  8.                 }
复制代码


3.  驱动AppleHDA.kext (注入硬件Layout-ID(Audio ID)类型为 3 )

搜索0x001B0000,添加

  1. Method (_DSM, 4, NotSerialized)
  2.             {
  3.                 If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
  4.                     Return (Package()
  5.                      {
  6.                         "layout-id", Buffer() { 0x03, 0x00, 0x00, 0x00 },
  7.                            "PinConfigurations", Buffer(Zero) {}, "hda-gfx", Buffer() { "onboard-1" }, })
  8.             }
复制代码

音频Layout ID插入前:

完成前PNG.png


音频Layout ID插入后:

完成后PNG.png


4. 电源键休眠:

搜索PNP0C0C,将

  1. Name (_HID, EisaId ("PNP0C0C"))  // _HID: Hardware ID
复制代码

改成

  1. Name (_CID, EisaId ("PNP0C0C"))  // _HID: Hardware ID
复制代码

5. SSDT用ssdtPRGen提取出E3 1230 V3的信息,替换掉之前OEM Table ID中含有Cpu0IstCpuPm的文件。


至此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) smc-mpc png.png
  • 修复内核日志中的[AGPM] unknown Platform

               <i>从『AppleGraphicsPowerManagement.kext/Contents/Info.plist』中复制出『IOKitPersonalities』下面的『AGPM』,粘贴到『FakeSMC.kext/Contents/Info.plist』下的『IOKitPersonalities』。


            <ii>在刚才粘贴的项目下面,找到『Machines/Mac-27ADBB7B4CEE8E61/』,把『Vendor10deDevice0fea』改成『Vendor10deDevice0402


    AGPM FakeSMC PNG.png


    更详细的修改『AppleGraphicsPowerManagement 显卡电源管理 AGPM 的修改交流与讨论』http://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』下面


FakeSMC HDA PNG.png



  4.  将破解后的『Platforms.zml.zlib』和『layout.zml.zlib』放置到『AppleHDA.kext/Contents/Resources/』目录下并修复权限。



完成改动后:


1.在『系统信息』中的『功能扩展』来查看原生电源是否成功加载。或者『设置』中的『节能器』查看是否存在『启用Power Nap』、『断电后自动重启』。


节能器PNG.png



2. 在『系统信息』中『音频』选项查看音频是否驱动。或者在『设置』中『声音』查看是否存在线路输出。


音频输出1PNG.png


3. 在『系统信息』的『功能扩展』中查看AppleGraphicsPowerManagement.kext是否成功加载


AGPM Apple PNG.png



4. 在『系统信息』『SATA/SATA Express』中查看固态硬盘是否开启了Trim


Trim开启PNG.png



来说下这台机子的完善过程:


主板其实是花费最多心血的,没钱上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, 下载次数: 228)


DSDT以及SSDT.zip (26.63 KB, 下载次数: 526)
Clover配置.zip (1.82 KB, 下载次数: 737)

音频补丁.zip (5.67 KB, 下载次数: 399)
所需Kexts.zip (1.36 MB, 下载次数: 1144)

10

查看全部评分

远景FANS

UID
424619
帖子
4181
PB币
534
贡献
0
技术
742
活跃
2214

巡察使 我是大学生!

发表于 2015-2-11 17:01:41 |显示全部楼层

关于虚拟化(VT-d)修复

本帖最后由 syscl 于 2015-2-13 14:39 编辑

完成SSDT的提取后,用SSDT来修复虚拟化引起的系统问题。



打开Clover配置文件,在『ACPI』的『Drop  Tables』分支下添加 『Item 0』,在 『Item 0』分支下添如下项目


DMAR PNG.png




持续更新。

PS:为何编辑总是会有问题,求指教

点评

wagsin  不是OZ改的没啥意思  发表于 2015-2-13 09:25
1

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
4584547
帖子
580
PB币
3
贡献
0
技术
92
活跃
212
发表于 2015-2-11 17:30:42 |显示全部楼层
谢谢分享

vistafans

Rank: 7Rank: 7Rank: 7

UID
31764
帖子
2542
PB币
6450
贡献
0
技术
23
活跃
962
发表于 2015-2-11 17:38:54 |显示全部楼层
不错,支持原创

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94486
贡献
1
技术
23534
活跃
2823

热心会员 8周年庆典勋章

发表于 2015-2-11 17:48:45 来自手机 |显示全部楼层
需要注意,新的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通过改iMac  13,2 以实现加载iMac 14,2电源的朋友是怎么实现的(无心引发骂战,就是十分困惑而已…)。B85M-DS3H/HD3本身就有不修改内核扩展的方法加载原生的电源管理,为什么要多此一举?

haswell CPU 是由 FrequencyVectors 控制的 与stepcontextdict无关
至于变频,了解了Haswell的变频机制,只有最低,最高两档,以及Turbo(睿频)档。通过修改机型强制实现多档变频的操作和Haswell本身的机制就不一致,除了能够省一点电以及增加系统的不稳定性,还带来了什么?难道是为了人类心智的繁荣?

haswell CPU的变频跟机型有关
机型要选合适的 最好跟平台对应上
你用iMac的smbios基本上不用指望出现其他档位了(iMac的变频档位本来就少)

先回复到这 论坛手机版编辑器太渣→_→

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94486
贡献
1
技术
23534
活跃
2823

热心会员 8周年庆典勋章

发表于 2015-2-11 17:50:03 来自手机 |显示全部楼层
BTW 楼主写帖辛苦 支持一下~

Rank: 2Rank: 2

UID
858782
帖子
367
PB币
469
贡献
0
技术
9
活跃
1133
发表于 2015-2-11 17:59:33 |显示全部楼层
文章編排清晰好閱讀!非常棒

Rank: 5Rank: 5Rank: 5

UID
422846
帖子
1097
PB币
2798
贡献
0
技术
2
活跃
1753
发表于 2015-2-11 17:59:46 |显示全部楼层
谢谢分享

Rank: 2Rank: 2

UID
3473735
帖子
197
PB币
1808
贡献
0
技术
0
活跃
379

8周年庆典勋章

发表于 2015-2-11 18:00:11 |显示全部楼层
谢谢楼主这么详细的教程!学习一下,我也是入手这块主板

远景FANS

UID
424619
帖子
4181
PB币
534
贡献
0
技术
742
活跃
2214

巡察使 我是大学生!

发表于 2015-2-11 18:14:07 来自手机 |显示全部楼层
本帖最后由 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要设置哪几项?
1

查看全部评分

远景FANS

UID
424619
帖子
4181
PB币
534
贡献
0
技术
742
活跃
2214

巡察使 我是大学生!

发表于 2015-2-11 18:15:30 来自手机 |显示全部楼层
neycwby09 发表于 2015-2-11 17:50
BTW 楼主写帖辛苦 支持一下~

你也蛮拼的,手机回复。不知道为什么每次编辑完的内容和发出来的不一样,总会有一些位置上的错误。

远景FANS

UID
424619
帖子
4181
PB币
534
贡献
0
技术
742
活跃
2214

巡察使 我是大学生!

发表于 2015-2-11 18:16:35 来自手机 |显示全部楼层
kaowo 发表于 2015-2-11 18:00
谢谢楼主这么详细的教程!学习一下,我也是入手这块主板

那恭喜你了,省了很多折腾的步骤。其实这块板布线和做工上都要比HD3好,价格也不高,不知道为何用的人那么少

氺氺

Rank: 15Rank: 15Rank: 15

UID
3805006
帖子
15211
PB币
0
贡献
0
技术
81
活跃
13443

小白鼠勋章II代 远景美化达人 8周年庆典勋章

发表于 2015-2-11 18:26:15 |显示全部楼层
谢谢分享

Rank: 1

UID
3547583
帖子
38
PB币
67
贡献
0
技术
0
活跃
35
发表于 2015-2-11 18:28:34 |显示全部楼层
看看怎么说的

Rank: 7Rank: 7Rank: 7

UID
719084
帖子
2093
PB币
5960
贡献
0
技术
12
活跃
1230

8周年庆典勋章

发表于 2015-2-11 18:48:56 |显示全部楼层
赞一个!~

Rank: 9

UID
589138
帖子
2577
PB币
1305
贡献
0
技术
39
活跃
2135

十一周年 Win10先驱者 十周年

发表于 2015-2-11 18:54:01 |显示全部楼层
非常优秀的文章,有参考价值哦,顶下。

Rank: 2Rank: 2

UID
1048097
帖子
186
PB币
224
贡献
0
技术
1
活跃
130
发表于 2015-2-11 19:35:32 |显示全部楼层
文章精美。给E3安装很好的参考价值

Rank: 2Rank: 2

UID
232043
帖子
50
PB币
1159
贡献
0
技术
0
活跃
852
发表于 2015-2-11 19:35:33 |显示全部楼层
支持原创,支持分享。

远景FANS

UID
424619
帖子
4181
PB币
534
贡献
0
技术
742
活跃
2214

巡察使 我是大学生!

发表于 2015-2-11 19:35:51 来自手机 |显示全部楼层
RuntimeError 发表于 2015-2-11 18:54
非常优秀的文章,有参考价值哦,顶下。

可怜了我的眼睛和硬盘。。。
1

查看全部评分

Rank: 2Rank: 2

UID
1189304
帖子
230
PB币
3342
贡献
0
技术
30
活跃
628
发表于 2015-2-11 19:43:56 来自手机 |显示全部楼层
感谢分享!楼主辛苦了
回顶部
Copyright (C) 2005-2020 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件