在升级到Yosemite后,很多电脑都会出现启动进度条花屏(仅进度条显示有问题)的问题,当然这不是什么大问题,但是对于我们这种强迫症患者来说,这是不能容忍的,因为这不完美!解决这种问题的办法有两种,一种是直接给驱动打布丁,另一种则是通过Clover补丁注入的方式来解决。作为Clover派的我,当然选择后者。

由于昨天Yosemite刚刚发布10.10.2,干脆就一步到位,以下内容只适合10.10.2(10.10.1不适用),步骤如下:

如果使用Clover Configurator(强烈推荐),则在『Kernel and Kext Patches』下的『KextsToPath』添加:

Name:IOGraphicsFamily
Find:4188C4EB11
Replace:4188C4EB31
Comment:Bootloader Graphics - Second Stage Patch

如果是直接修改config.plist,则添加:

<dict>
	<key>Comment</key>
	<string>Bootloader Graphics - Second Stage Patch</string>
	<key>Find</key>
	<data>QYjE6xE=</data>
	<key>Name</key>
	<string>IOGraphicsFamily</string>
	<key>Replace</key>
	<data>QYjE6zE=</data>
</dict>

当然,如果你没有使用Clover,那只能通过以下方式打补丁了:

sudo perl -i.bak -pe 's|\x41\x88\xC4\xEB\x11|\x41\x88\xC4\xEB\x31|sg' /System/Library/Extensions/IOGraphicsFamily.kext/IOGraphicsFamily

昨天升级家里的台机到Yosemite,由于以前使用的是变色龙,所以这次采用了Clover重新安装。安装过程(参考:How to Install OS X Yosemite using Clover)没什么好说的,稍微有点别扭的的是我的华硕Z8NA-D6主板不支持UEFI,所以采用BIOS兼容模式安装,有点不爽。本文重点谈下安装完Yosemite后,通过Geekbench跑分软件发现的一些问题及解决办法。

机台配置如下:

  • CPU:X5570 x 2
  • 内存:KST ECC 1600MHz 16G x 3
  • 显卡:GT610 1G
  • 硬盘:Samsung 840 12G SSD + 希捷2TB

这台机器配了有段时间了,说起来当初配置有很多不合理之处。问题最大的就是内存,这主板支持ECC与non-ECC内存,所以没必要多花钱用ECC。其次,这款主板前端总线频率支持1066MHz与1333MHz,所以1600MHz根本发挥不出优势。最后,这款主板有六个内存插槽,最经济的做法是用6根8G条子,这样就可以充分享受三通道,而用3根16G虽然内存不少,但是只能到双通道。还有就是SSD偏小,想用来装多系统是不可能了,当然,这不是主要问题。由于我不做视频处理,GT610也就够用了。好在毕竟是服务器主板,还算稳定!

初次安装时,除了必要的显卡注入与驱动注入补丁(Trim与橘色硬盘),没有打任何DSDT补丁,也没有应用Clover DSDT补丁。结果Geekbench3跑分单核只有1000多一点,多核也就9000多!这绝对是不正常,这台机器正常跑分应该在16000以上。经过不停的试,终于找到答案,原来是上电源管理的补丁有关,用Clover Configurator在Acpi中勾选SSDT下面的”Generate P States”与”Generate CState”。重启后再跑分,总分达到了15000多!

内存跑分

虽然总分差不多,可以分析下跑分单项又发现了问题,内存跑分极不正常,单核与多核跑分一样,都在1200多分,这显然没有发挥双通道的威力。更吊诡的是,明明是48G内存,可是在系统信息中确显示64G,再细看,居然可以看到7个内存插槽,上面赫然显示有4根16GB的内存条。

Clover中对于内存的设置相对较少,在SMBIOS中可以设置详细的内存插槽及内存信息,但是我的理解是这只是硬件描述信息,应该不起什么作用,后来实验结果也得到了验证,所以,我觉得硬件问题的可能性大。后来尝试着将内存条移位,也就是将3根内存条全部换到其余的内存插槽,结过测试,果然有效果!虽然内存分值还是偏低(毕竟频率上不去,而且还不是三通道),但是相比以前已大大改善!跑分也上到了16500分多,这台机器曾经跑到过17000分以上,看来还是有调优空间。

正确的内存插接方式如图(红框标注):

主板

新的内存跑分:

内存跑分

我个人对于台式机研究相对较少,当前这可机器只能勉强算是能用了,但是细节上还有很多问题需要研究,例如:显示器内建、电源管理等,等以后有时间再补上,至少也要自建DSDT/SSDT及补丁。下面附上config.plist文件及用到的驱动,驱动都是大陆货,就不附下载了。

  • config.plist
  • AppleIntelE1000e.kext(以太网卡驱动)
  • FakeSMC.kext(不解释)
  • GenericUSBXHCI.kext(USB3)
  • VoodooPS2Controller.kext(鼠标键盘)

为什么要检查CPU Speedstep

很多果友试着自己装Hackintosh,运气好的没几下就装完了,运行着也挺是那么回事儿,可用一段时间发现不对劲了,笔记本用一会儿就烫手,电池消耗巨快。一般遇到这种情况,多半是两个原因:

  • 没有关闭独显(就是说你电脑上有两个显卡同时工作,没有禁用不使用的显卡,此问题的解决本文不赘述
  • 没有开启CPU Speedstep功能,至于如何开启的话题本文不赘述,这里只谈谈如何判断

什么是Speedstep

通俗得讲,Speedstep和汽车档位差不多意思,只不过这里控制的不是转速,而是CPU频率。也就是说,通过使CPU在不同的频率下工作(需要运行的程序多就高频率,没啥应用跑就低频),以实现减少CPU耗电和减少热量的目的,其延伸的好处还有减少风扇的耗电和延长电池寿命等等。因此,不难理解,这项技术最早用于笔记本移动版CPU。扫盲到此结束,如果还有兴趣参与:SpeedStep

具体步骤

首先要明确一点,检测的方法有很多,例如使用DPCIManager。这里,讲讲哪何用内核扩展的方式实现。

  • 准备AppleCPUPowerManagerInfo.kext,下载

  • 加载AppleCPUPowerManagerInfo.kext

sudo chown -R root:wheel ./AppleIntelCPUPowerManagementInfo.kext
sudo chmod -R 755 ./AppleIntelCPUPowerManagementInfo.kext
​sudo kextload ./AppleIntelCPUPowerManagementInfo.kext
  • 打开『控制台』,搜索”AICPUPM”,以我的环境为例,输出如下:
15/1/15 上午9:28:58.000 kernel[0]: AICPUPMI: CPU P-States [ 8 32 ]
15/1/15 上午9:29:00.000 kernel[0]: AICPUPMI: CPU P-States [ 8 17 32 ]
15/1/15 上午9:29:01.000 kernel[0]: AICPUPMI: CPU P-States [ 8 17 29 32 ]
15/1/15 上午9:29:02.000 kernel[0]: AICPUPMI: CPU P-States [ 8 17 26 29 32 ]
15/1/15 上午9:30:13.000 kernel[0]: AICPUPMI: CPU P-States [ 8 17 26 29 31 32 ]

以上就说明Speedstep工作正常!

  • 卸载AppleIntelCPUPowerManagementInfo.kext
sudo kextunload AppleIntelCPUPowerManagementInfo.kext

我的x220笔记本没有Mini-DP口,只有一个VGA口,我们知道苹果设备是不支持VGA口的,由于工作中常常需要讲PPT,因此,不能接投影仪对我来说是无法接收的。还好,x220使用的是HD3000核显,而这个型号的核显是可以实现VGA输出的,基本步骤如下:

设置SMBIOS

如果是Clover,在Clover Configurator中选择左侧的SMBIOS,右侧就是SMBIOS信息了,其中最重要的是『Product Name』,这项填入”MacBookPro8,1” ,当然,如果想省事儿,也可以向导生成(点击电脑图标右下的小魔法棒)。

应用DSDT补丁

为MaciASL添加源 http://raw.github.com/RehabMan/Laptop-DSDT-Patch/master,应用补丁”graphics_HD3K_low.txt”

修改AppleIntelSNBGraphicsFB.kext

方法一

  • 备份/System/Library/Extensions/AppleIntelSNBGraphicsFB.kext

  • 用二进制编辑器HEX Friend打开 /Ccontents/MacOS/AppleIntelSNBGraphicsFB 查找:

0102 0400 1007 0000 1007 0000 0503 0000 0200 0000 3000 0000 0205 0000 0004 0000 0700 0000 0304 0000 0004 0000 0900 0000 0406 0000 0004 0000 0900 0000

替换为:

0102 0300 1007 0000 1007 0000 0503 0000 0200 0000 3000 0000 0205 0000 0008 0000 0600 0000 0602 0000 0001 0000 0900 0000 0000 0000 0000 0000 0000 0000

方法二

使用Clover Configurator,在『Kernel and Kext Patches』-> 『KextsToPath』中添加:

Name:AppleIntelSNBGraphicsFB
Find:010204001007000010070000050300000200000030000000020500000004000007000000030400000004000009000000040600000004000009000000
Replace:010203001007000010070000050300000200000030000000020500000008000006000000060200000001000009000000000000000000000000000000

或者真接修改config.plist,添加:

<dict>
	<key>Find</key>
	<data>
	AQIEABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAEAAAH
	AAAAAwQAAAAEAAAJAAAABAYAAAAEAAAJAAAA
	</data>
	<key>Name</key>
	<string>AppleIntelSNBGraphicsFB</string>
	<key>Replace</key>
	<data>
	AQIDABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAIAAAG
	AAAABgIAAAABAAAJAAAAAAAAAAAAAAAAAAAA
	</data>
</dict>

基本原理解释

原始值
0102 0400 1007 0000 1007 0000 //这句话表示你机器的接口数
0503 0000 0200 0000 3000 0000 //笔记本显示器接口
0205 0000 0004 0000 0700 0000 //下面3个都是用来显示的接口(DVI)
0304 0000 0004 0000 0900 0000 
0406 0000 0004 0000 0900 0000

修改后
0102 0300 1007 0000 1007 0000 //3个接口
0503 0000 0200 0000 3000 0000 //LVDS 笔记本内置显示器接口
0205 0000 0008 0000 0600 0000 //HDMI(除了0205,可能值:0304/0406)
0602 0000 0001 0000 0900 0000 //VGA
0000 0000 0000 0000 0000 0000 //NONE

重新安装修改后的AppleIntelSNBGraphicsFB.kext,重启生效!

小技巧:有时候通过VGA口接上外显或投影仪时,苹果不自动探测,此时,点击『系统偏好设置』->『显示器』,按住ALT键,你会看到右下的『集合窗口』按钮变为了『探测显示器』,点击就是了!

如何解决系统安装完后不能登录AppStore与iCloud的问题?

  • 打开『系统偏好设置』,点击『网络』,将其中所有网络适配接口全部删除,例如:以太网、蓝牙PAN等

  • 删除文件 /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist

  • 重新启动系统

  • 打开『系统偏好设置』,点击『网络』,添加网络适配接口,记得先添加”以太网”

  • 通过”ifconfig”命令查看,确保能看到en0生效

如何制作Yosemite USB安装盘?

  • 通过App Store下载系统安装应用,注:现在OSX系统都可以免费下载

  • 准备8GB的U盘,以格式为”Mac OS扩展(日志式)”,分区方案为”主引导记录”(如果你的主板支持UEFI,那么选择”GUID发区表”分区方案也可以),分区名为”Installer”,格式化U盘

  • 执行如下命令:

sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume  /Volumes/Installer --applicationpath /Applications/Install\ OS\ X\ Yosemite.app --nointeraction

:安装Clover具体过程与选项本文略,只以我笔记本为例(支持UEFI):勾选『安装Clover到EFI系统区』、勾选『CloverEFI』、勾选Drivers64EFI选项:CsmVideoDxe-64、DataHubDxe-64、OsxAptionFix2Drv-64

如何查找主板对应的SystemProductName,以实现用单U盘引导(Clover)多台电脑?

用Clover Configurator查看Boot.log,找到如下字样信息:

Clover revision: 2976 running on 20AWS1BL03 0:100 0:000 … with board 20AWS1BL03

上例中20AWS1BL03就是SystemProductName,当然,你的信息也许和我的不同。

为什么在日志中不停地报”mdworker (warning) import bad path”?

执行如下命令:

touch /Volumes/EFI/.metadata_never_index

如何解决Yosemite启动界面进度条花屏问题?

在config.plist中加入如下补丁:

<key>KextsToPatch</key>
<array>
	<dict>
		<key>Comment</key>
		<string>Second Stage Patch 1</string>
		<key>Find</key>
		<data>hcB0XUg=</data>
		<key>Name</key>
		<string>IOGraphicsFamily</string>
		<key>Replace</key>
		<data>McB0W0g=</data>
	</dict>
	<dict>
		<key>Comment</key>
		<string>Second Stage Patch 2</string>
		<key>Find</key>
		<data>QYjE6wM=</data>
		<key>Name</key>
		<string>IOGraphicsFamily</string>
		<key>Replace</key>
		<data>QYjE6yM=</data>
	</dict>
</array>

如何通过功能键控制屏幕亮度

  • 确保内建屏幕成功,可以在『系统偏好』->『显示器』中看到亮度控制条,并且可以控制屏幕亮度

  • 安装 OS-X-ACPI-Debug.kext

  • 为MaciASL添加源 http://raw.github.com/RehabMan/Laptop-DSDT-Patch/master

  • 借助MaciASL为DSDT应用补丁:”Add DSDT Debug Methods” and “Instrument EC Queries”

  • 重新启动系统,打开『控制台』应用,按亮度调节功能键,在『控制台』中找到功能键对应的码值,例如:_Q15对应F5(减屏幕亮度),_Q14对应F6(加屏幕亮度)

  • 借助MaciASL为DSDT应用补丁(根据注释替换相应键值)

into method label _Q15 replace_content
begin
// Brightness Down\n
	Notify(\_SB.PCI0.LPC.KBD, 0x0205)\n
	Notify(\_SB.PCI0.LPC.KBD, 0x0285)\n
end;
into method label _Q14 replace_content
begin
// Brightness Up\n
	Notify(\_SB.PCI0.LPC.KBD, 0x0206)\n
	Notify(\_SB.PCI0.LPC.KBD, 0x0286)\n
end;
  • 重新启动,大功告成!当然,你也可以用此方法设置其它键值。