syscl 发表于 2015-3-14 02:38

Haswell奔腾&赛扬Yosemite安装完善教程(G1840+H87M-G43完美变频睡眠流畅)

本帖最后由 syscl 于 2015-3-14 03:35 编辑

『在这里,你主宰你的命运』


以上面这句话作为起点,我更想表达的是,OS X安装在PC上面的诀窍,就是敢于尝试,具体问题具体分析,还有永不放弃尝试的耐心和毅力。
在之前完成了技嘉B85M-DS3H的安装『E3-1230 V3+B85M-DS3H+UEFI Yosemite完美之旅:https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1579577&page=19#pid43136362』之后,也想趁着春节更新旧的电脑,奈何预算不够,想打造一台『廉价』的OS X,毕竟,并不是每个人都会为了安装OS X买E3,E5,或者i3,i5的。对于日常的工作和学习,其实赛扬(Celeron)和奔腾(Pentium)就足够了。
前一阵子在论坛看到有消息说Haswell 平台以及Haswell Refresh平台的赛扬(Celeron G18XX)和奔腾(Pentium G3XXX)无法顺利安装OS X,表现为启动卡在『15/3/13 下午3:17:29.000 kernel: XCPM: registered』附近。致使我曾想入手7系列的主板,但是很多主板的价格高不成低不就,整个平台配套下来也不便宜,结合作死的心态,入手了微星H87M加上赛扬(Celeron)G1840。
全文分两部分,一部分直接面向偷懒的朋友(配置相近),直接下载附件中的Clover档案,扔进EFI分区即可。
另一部分,是希望不断追求完善和的朋友们看的。在完成了系统的安装后,我们的系统还仅仅能『用』,自然希望系统更完美的运行,如减少第三方内核扩展(Kext)的调用,AppleHDA原生驱动声卡,网卡内建以实现AppStore购买,处理器/显卡变频,完美睡眠,USB 3.0驱动...

硬件

[*]主板:       微星(MSI) H87M-G43 (H87M-S01)『Bios版本 1.8 需要进一步修改』
[*]处理器:      Intel(R) Celeron(R) G1840 @ 2.80GHz 变频档位(8、28)
[*]音频:       Realtek ALC892 (VenderID 10ec0892)
[*]以太网卡:Realtek RTL8111/8168/8411
[*]显卡:       Pegatron GeForce G210(VenderID 10de0a60)
[*]显示器:      HP2009f

主板接线

[*]

[*]尽量不使用『USB Front 1』

HP p6215cx在使用上述接口时,前面板一旦接入设备,便会睡眠瞬间/自动/一秒唤醒。即便移除了DSDT中的GLAN,EHC,XHC也无效。引入参数gux_defer_usb2、gux_noidle、gux_nosleep,也无效。移植技嘉对EHC的管理方法也不行,然而在把前置USB接到USB Front 3上面的时候,奇迹出现了,睡眠不再自动唤醒。当然,方法不绝对,每个人的配置或多或少存在区别,也正是如此,完善OS X的过程中,你,主宰你的命运!BIOS设置
1. Settings—>Advanced—>Integrated Peripherals
        SATA1/2/3/4/5/6 Hot Plug                           设置成『Enabled』2. Settings—>Advanced—>Wake Up Event Setup
        Wake Up Event By                                     设置成『BIOS』        Resume From S3/S4/S5 By USB Device设置成『Enabled』(鼠标,键盘唤醒)3. Settings—>Advanced—>USB Configuration        XHCIHand-off                                       设置成『Enabled』        EHCIHand-off                                       设置成『Enabled』4. Settings—>Advanced—>Boot
        Boot mode select                                    设置成『UEFI』5. Overclocking
        EIST                                                          设置成『Enabled』6. Overclocking—>CPU Features
        Intel Adaptive Thermal Monitor               设置成『Enabled』        Intel C-State                                              设置成『Enabled』        C1E Support                                              设置成『Enabled』        Clover设置(Config.plist)
1.ACPI 部分
       
2.Boot 部分                


3.Devices 部分


4.Graphics 部分




[*]5.KernelAndKextPatches 部分

        这部分需要重点说明        (i)FakeCPUID填入『0x0306A0』        (ii)更详细的Kext And Patches的部分,可以参看帖子『一劳永逸!更新不再替换Kext(Kexts to patch)教程』https://bbs.pcbeta.com/viewthread-1580832-1-1.html

6.SMBIOS 部分



7.所需UEFI驱动
*可选/非必要操作(注意:以下操作有可能损坏您主板BIOS芯片,如果没有一定的善后能力,请注意标红部分,在按照标红部分设置后,你可以跳过下面的操作)
**在Config.plist的『KernelAndKextPatches』增加『KernelCpu』和『KernelPM』,类型为『Boolean』,值为『Yes』。
**
1.务必完整备份主板原先的BIOS。

2.M-Flash更新BIOS到最新版(Select one file to update BIOS and ME)




[*]
3.利用UEFIPatch(https://github.com/LongSoft/UEFITool/releases/tag/0.20.4)解除MSR 0xE2register lock 。
      将UEFIPatch、patches.txt和待修改的BIOS放置在同一目录下        UEFIPatch BIOSName.XXX
       
4.M-Flash完整的刷入修缮过的BIOS(Select one file to update BIOS and ME)


[*]
5.   Ubuntu提取DSDT和SSDT,Codec。

完成了步骤1,步骤2,步骤3和步骤4后,就可以去掉Clover当中的『Kernel PM』以及『Kernel CPU』。也就是,OS X可原生(不再需要每次都破解mach_kernel)加载Haswell 平台的电源管理XCPM并且不会发生引导重启的问题了。
附件中含微星H87M-G43(H87M-S01)1.8 版本修改好的BIOS,并加入Dell SLIC 2.2用以激活系统。DSDT
*这部分需要MaciASL,iasl。
1.iasl反编译得到可用的dsl iasl -da -dl *.aml2. 修复错误和部分警告
错误:syntax error, unexpected PARSEOP_ZERO
删除错误位置下的Zero

错误:10887, 6126, syntax error, unexpected '}'       If (CondRefOf (MDBG))      {            Return (MDBG)            Arg0      }
删除标红处,或者在MaciASL 中『打补丁』—>『RehabMan』—>『Fix ADBG Error』
手动删除:

或者打补丁:


错误:83, 6074, Name already exists in scope (_SB_.PCI0.PEG0)
找到错误所在行External (_SB_.PCI0.GFX0.TCHE, UnknownObj)
    External (_SB_.PCI0.PEG0, UnknownObj)
    External (_SB_.PCI0.PEG0.PEGP, UnknownObj)删除后External (_SB_.PCI0.GFX0.TCHE, UnknownObj)
    External (_SB_.PCI0.PEG0.PEGP, UnknownObj)错误:83, 6074, Name already exists in scope (_SB_.PCI0.PEG0.PEGP)External (_SB_.PCI0.GFX0.TCHE, UnknownObj)
    External (_SB_.PCI0.PEG0.PEGP, UnknownObj)
    External (_SB_.PCI0.PEG1, UnknownObj)删除后External (_SB_.PCI0.GFX0.TCHE, UnknownObj)
    External (_SB_.PCI0.PEG1, UnknownObj)错误:83, 6074, Name already exists in scope (_SB_.PCI0.PEG1)
找到错误所在行External (_SB_.PCI0.GFX0.TCHE, UnknownObj)
    External (_SB_.PCI0.PEG1, UnknownObj)
    External (_SB_.PCI0.PEG2, UnknownObj)删除后External (_SB_.PCI0.GFX0.TCHE, UnknownObj)
    External (_SB_.PCI0.PEG2, UnknownObj)错误:83, 6074, Name already exists in scope (_SB_.PCI0.PEG2)
找到错误所在行External (_SB_.PCI0.GFX0.TCHE, UnknownObj)
    External (_SB_.PCI0.PEG2, UnknownObj)
    External (D1F0, UnknownObj)删除后External (_SB_.PCI0.GFX0.TCHE, UnknownObj)
    External (D1F0, UnknownObj)2.原生加载AppleLPC.kext (仿冒Low Pin Controller(LPC)的设备ID为9c43)
搜索0x001F0000,定位到LPCB模块,在模块最后添加Method (_DSM, 4, NotSerialized)
                {
                  If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
                  Return (Package()
                  {
                        "compatible", "pci8086,9c43",
                  })
                }3.驱动AppleHDA.kext (注入硬件Layout-ID(Audio ID)类型为 1 )
搜索0x001B0000,添加Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
                  Return (Package()
                     {
                        "layout-id", Buffer() { 0x01, 0x00, 0x00, 0x00 },
                           "PinConfigurations", Buffer(Zero) {}, "hda-gfx", Buffer() { "onboard-1" }, })
            }
注入后:
4.修复因为注入声卡而导致的声音爆破或者声音变形
        MaciASL—>『打补丁』—>『RehabMan』—>『IRQ Fix』

5. 电源键休眠
搜索PNP0C0C,将            Name (_HID, EisaId ("PNP0C0C"))// _HID: Hardware ID改成            Name (_CID, EisaId ("PNP0C0C"))// _HID: Hardware ID
至此,DSDT的修改完成,转换成dsdt.aml后(注意大小写),拷贝至『/EFI/CLOVER/ACPI/patched/』即可 。
二楼主要解决的问题是,利用SSDT实现Haswell奔腾Pentium以及赛扬Celeron在Yosemite下以及Mavericks下的变频功能。



所需附件

**** Hidden Message *****

syscl 发表于 2015-3-14 02:38

本帖最后由 syscl 于 2015-3-14 03:44 编辑

SSDT
        自从Ivy Bridge之后,OS X的电源管理方式不再采用AppleIntelCPUPowerManagement.kext以及AppleIntelCPUPowerManagementClient.kext来管理电源,取而代之的是内核中的XCPM(Xnu CPU Power Management)以及IOPlatformPluginFamily.kext(X86PlatformPlugin.kext和X86PlatformShim.kext)来管理电源了。        1.对Ubuntu提取的SSDT进行修正        错误:223, 6126, syntax error, unexpected PARSEOP_PACKAGE

      MaciASL-『打补丁』-『派奇』-『SSDT Package(){0x80000000} error fix』
        更多DSDT以及SSDT修复,可以参看daxuexinsheng的帖子『[授权翻译] 使用补丁修改DSDT/SSDT | https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1571455』以及『[2015.1.31-更新]充分运用MaciASL软件的补丁源-让黑苹果高手帮你完善DSDT | https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1576959』。
        2. 生成用于变频的SSDT
        要想加载原生电源管理,还需要回到SSDT上面来。生成合适的SSDT是关键,ssdtPRGen.sh中并没有Haswell 赛扬(Celeron)以及奔腾(Pentium)的信息,我们需要进行以下操作。
(i)下载最新ssdtPRGen.shcurl -o ~/ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/Beta/ssdtPRGen.sh(ii)打开执行权限chmod +x ~/ssdtPRGen.sh(iii)让ssdtPRGen.sh创建运行环境ssdtPRGen.sh -c 2(iv)显然,ssdtPRGen.sh并没有成功生成ssdt,但是伴随着执行命令,已经在『~/library/ssdtPRGen/Data』下创建了对应的配置文件,下面我们来编辑配置文件,以生成适合G1840的配置文件。
(v)打开『~/library/ssdtPRGen/Data/Haswell.cfg』
在『gDesktopHaswellCPUList=』下的最后一行添加『G1840,53,800,2800,2800,2,2』,保存配置文件
(vi)使用如下参数再次执行ssdtPRGen.sh./ssdtPRGen.sh -c 2 -p G1840(vii)把生成好的SSDT.aml重命名成SSDT-2.aml,并替换掉Ubuntu中提取的『OEM Table ID』为『CpuPM』的SSDT即可。

三楼关注的问题是修改内核扩展,以达到不改变系统『/System/Library/Extensions/』内容的情况下,加载内核扩展 。包括显卡变频,HDA的驱动......

syscl 发表于 2015-3-14 02:38

本帖最后由 syscl 于 2015-3-14 03:56 编辑

需要修改内核扩展文件(Kext)

1.FakeSMC.kext 设置机型为smc-mpc以对应iMac 14,2(Mac-27ADBB7B4CEE8E61)


2.修复内核日志中的 unknown Platform

      <i>从『AppleGraphicsPowerManagement.kext/Contents/Info.plist』中复制出『IOKitPersonalities』下面的『AGPM』,粘贴到『FakeSMC.kext/Contents/Info.plist』下的『IOKitPersonalities』。
      <ii>在刚才粘贴的项目下面,找到『Machines/Mac-27ADBB7B4CEE8E61/』,把『Vendor10deDevice0fea』改成『Vendor10deDevice0a60』


更详细的修改『AppleGraphicsPowerManagement 显卡电源管理 AGPM 的修改交流与讨论』https://bbs.pcbeta.com/viewthread-944161-1-1.html
3. 加载『AppleHDAHardwareConfigDriver.kext』      从修改好/破解过的『AppleHDA.kext/Contents/Plugins/AppleHDAHardwareConfigDriver.kext/』中展开『IOKitPersonalities』,复制出『HDA Hardware Config Resource』,粘贴到『FakeSMC.kext/Contents/Info.plist』的 『IOKitPersonalities』下面

4. 将破解后的『Platforms.xml.zlib』和『layout1.xml.zlib』放置到『AppleHDA.kext/Contents/Resources/』目录下并修复权限。
下一层楼是完成后的效果图。

syscl 发表于 2015-3-14 02:39

本帖最后由 syscl 于 2015-3-14 03:54 编辑

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


2. 查看是否开启变频


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


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


5. 查看AppleGraphicsPowerManagement.kext是否成功加载,以及『XCPM』模式是否正常。




下一层:分享一些心得(吐槽)


syscl 发表于 2015-3-14 02:39

本帖最后由 syscl 于 2015-3-14 03:55 编辑

心得

弄这台机子有作大死的心态,抱着侥幸的心态想如果能弄好,MSI H87M+G1840成功便有了很好的例子。当然,还有一个原因,就是为了梳理一下思路。
在这个过程中也发现了一些有趣的事
之前一直以为,只要解除了 MSR 0xE2 lock之后,系统便可以顺利进入。但是0x0603C仍旧卡在『XCPM: registered』,不过解除了MSR lock之后,替换了几个FakeCPUID,均不出现内核崩溃以及瞬间重启的现象,可以顺利进入操作系统。
采用0x010676作为FakeCPUID确实可以通过Haswell平台的安装,但这个做法值得商酌。系统运行有明显的迟滞感。处理器空闲率只有20%~30%。看来,这个数值会限制处理器的性能。这也符合预期的猜测,以0x010676作为CPUID会导致系统只能使用老旧的指令集,并且无法顺利安装Intel Power Gadget插件。
这样的体验不完美,只能另辟蹊径。注意到从SandyBridge过渡到Haswell Refresh的过程中,性能的提升并没有如以往一样显著,相应架构的改变也比较小。甚至,IvyBridge的CPUID和Haswell的CPUID差距非常的小,一个是0x0306A0,一个是0x0306C3。另外,两者都是通过XCPM+X86Platform来实现处理器的电源管理,也就是说有可能可以开启XCPM来实现类似的效果。
果然,0x0306A0可以顺利的完成系统的引导。但是还不完美,XCPM仍旧没有加载。采取10.7.4上面修改SSDT的方法并不能顺利开启处理器的变频,G1840一直处在最高档(x28)运行。甚至,我还看了ACPI 5.0的规范。无果,不过,修改后,却出现了『Unexpect C2 Info』,表明SSDT确实向系统传递了_CST,只是参数不对。真有让我换处理器的冲动。最后,利用ssdtPRGen.sh结合配置文件生成了适合系统的SSDT.aml,才算完成,在稍微晚些的时候,我会贴上ssdtPRGen.sh的一些使用心得。(真的有些累了)
最后修缮的过程就是围绕这电源管理展开的,真的很折磨人。直到在Clover当中添加了xcpm参数(强制开启XCPM而非AICPM管理)之后,惊奇的发现『X86PlatformShim::sendPStates - Success!』,变频成功了,再没有什么比这个更高兴了。
现在系统的资源占用率只有20%~40%,非常流畅,温度也很感人。廉价的配置,同样能带来很好的系统体验。
曾有一段时间非技嘉主板不选,我会先找是否有成功案例,是否比较容易驱动,然后仿照别人的参数进行安装,但是,在完成之后,却总觉得少了些什么,是那种不断挣扎,不断满怀期待能够成功,不断完善的喜悦感荡然无存了。为什么要沿着一条注定会成功的路去走?在这种作死心态的驱使下,我选择了使用的比较少的MSI H87M,以及Celeron G1840。也在四天之后,每天差不多睡3~4个小时的状态下,终于在生日当天完成了自己所期望的全部功能(完美的睡眠、变频、原生声卡驱动、流畅的体验)。
关于机型的选择,insanelymac的stinga11建议采用iMac13,2,他的理由是Haswell平台只有最高和最低频两档变频,但是个人建议采用iMac14,2。一是更接近Haswell平台本身,另外一个是虽然iMac13,2以及Macmini6,2都能够实现多级变频,但是跑分要低过iMac14,2(这三个平台我每个都至少测试了5遍)。stinga11还建议关闭C2,C3,C4,C6,C7以及EIST,但是我在禁用了这些选项之后便出现了Finder无法打开的错误,开启之后系统稳定运行。晚些的时候再咨询他为什么了,实在是很累。
理论上,只要是Haswell(Haswell Refresh)奔腾Pentium G3XXX和赛扬Celeron G1XXXX都可以采用本文的方法进行安装和变频。只需要像我在SSDT当中做的,向Haswell.cfg添加对应处理器的信息再执行就可以了。例如G1840添加的参数『G1840,53,800,2800,2800,2,2』分别对应着『处理器型号』、『最大TDP』、『基础频率/最低频率』、『最高频率』、『睿频最高档(奔腾和赛扬没有,因此只要添入最高频率即可)』、『核心数』、『线程数/逻辑处理器数量』,然后在ssdtPRGen.sh中运行ssdtPRGen.sh -c 2 -p G1840即可。算是通用教程吧。
各位,祝好运!Good luck!
////

syscl 发表于 2015-3-14 02:39

本帖最后由 syscl 于 2015-3-24 20:58 编辑

附上各种CPU平台的ID以及所支持的系统(来自 | http://clover-wiki.zetam.org/Configuration/KernelAndKextPatches#FakeCPUID)





带有Slic 2.2以及解除MSR 0xE2 lock的BIOS(微星H87M-G43/S01)
更新的时候选择『M-Flash』————>『Select one file to update BIOS』。


////





JAMESM5 发表于 2015-3-14 02:41

半夜醒来支持下楼主

lyx4850487 发表于 2015-3-14 02:45

Haswell奔腾&赛扬Yosemite安装完善教程(G1840+H87M-G43完美变频睡眠流畅)

syscl 发表于 2015-3-14 03:06

JAMESM5 发表于 2015-3-14 02:41 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
半夜醒来支持下楼主

谢谢!!真的是不容易。

pan329 发表于 2015-3-14 03:38

好教程,赞,我主板是技嘉b85m-d3h.囊中羞涩正在纠结cpu上i5 4590还是奔腾系列,主要是想整黑苹果,对电脑要求不高,楼主给点建议吧!

风的季节 发表于 2015-3-14 07:16

恭喜大神又一原创完美教程,支持楼主辛苦了!

zzhx668 发表于 2015-3-14 09:45

大赞楼主,楼主的教程很详细,真是精品教程,虽然我已经装好了,但是搞不清怎么加载haswell原生内核和GPU变频,这回终于懂了.谢谢楼主~~

vbsjbs 发表于 2015-3-14 10:08

支持下楼主

drcc 发表于 2015-3-14 10:31

支持,楼主折腾的辛苦

kfc0013 发表于 2015-3-14 10:45

谢谢分享

wchh 发表于 2015-3-14 11:48

感谢您的分享。

halechan 发表于 2015-3-14 13:49

支持了{:7_479:}

syscl 发表于 2015-3-14 14:07

pan329 发表于 2015-3-14 03:38 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
好教程,赞,我主板是技嘉b85m-d3h.囊中羞涩正在纠结cpu上i5 4590还是奔腾系列,主要是想整黑苹果,对电脑要 ...

看预算啊,还有一个你主要用来做什么?

syscl 发表于 2015-3-14 14:07

drcc 发表于 2015-3-14 10:31 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
支持,楼主折腾的辛苦

编辑帖子,才是真正折腾的开始!!!!!!

syscl 发表于 2015-3-14 14:13

本帖最后由 syscl 于 2015-3-14 16:09 编辑

halechan 发表于 2015-3-14 13:49 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
支持了
现在感觉黑苹果不折腾,倒是论坛编辑超折腾。。。内容丢失了不知道多少次,有一次提示标题过长,返回后,内容全都没了。。。。。。。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Haswell奔腾&赛扬Yosemite安装完善教程(G1840+H87M-G43完美变频睡眠流畅)