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 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 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 03:54 编辑
完成后
1.在『系统信息』中的『功能扩展』来查看原生电源是否成功加载。或者『设置』中的『节能器』查看是否存在『断电后自动重启』、『启用Power Nap』。
2. 查看是否开启变频
3.在『系统信息』中『音频』选项查看音频是否驱动。或者在『设置』中『声音』查看是否存在线路输出。
4.在『系统信息』『SATA/SATA Express』中查看固态硬盘是否开启了Trim
5. 查看AppleGraphicsPowerManagement.kext是否成功加载,以及『XCPM』模式是否正常。
下一层:分享一些心得(吐槽)
本帖最后由 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-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』。
////
半夜醒来支持下楼主 Haswell奔腾&赛扬Yosemite安装完善教程(G1840+H87M-G43完美变频睡眠流畅) JAMESM5 发表于 2015-3-14 02:41 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
半夜醒来支持下楼主
谢谢!!真的是不容易。 好教程,赞,我主板是技嘉b85m-d3h.囊中羞涩正在纠结cpu上i5 4590还是奔腾系列,主要是想整黑苹果,对电脑要求不高,楼主给点建议吧! 恭喜大神又一原创完美教程,支持楼主辛苦了! 大赞楼主,楼主的教程很详细,真是精品教程,虽然我已经装好了,但是搞不清怎么加载haswell原生内核和GPU变频,这回终于懂了.谢谢楼主~~ 支持下楼主 支持,楼主折腾的辛苦 谢谢分享 感谢您的分享。 支持了{:7_479:} pan329 发表于 2015-3-14 03:38 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
好教程,赞,我主板是技嘉b85m-d3h.囊中羞涩正在纠结cpu上i5 4590还是奔腾系列,主要是想整黑苹果,对电脑要 ...
看预算啊,还有一个你主要用来做什么?
drcc 发表于 2015-3-14 10:31 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
支持,楼主折腾的辛苦
编辑帖子,才是真正折腾的开始!!!!!! 本帖最后由 syscl 于 2015-3-14 16:09 编辑
halechan 发表于 2015-3-14 13:49 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
支持了
现在感觉黑苹果不折腾,倒是论坛编辑超折腾。。。内容丢失了不知道多少次,有一次提示标题过长,返回后,内容全都没了。。。。。。。