黑苹果折腾记

系统升级之后NVIDIA驱动不支持的解决

今天手贱升级了mac10.11.6 beta 版本, 结果n卡的驱动无法加载了; 重新安装还提示新版系统不支持; 解压开驱动的安装包WebDriver-346.03.10f01.pkg, 里面有个Distribution 文件里有段js脚本是检查系统版本的:

function validateSoftware()
{
	var supportedOSVer = "10.11.5";
	var supportedOSBuildVer = "15F34";
	var targetBuild = system.version.ProductBuildVersion;
	var result = compareBuildVersions(targetBuild, supportedOSBuildVer);

	if (result != 0)
	{
		var title;
		var msg;
		var osVersionString = system.version.ProductVersion;

		if ((targetBuild.substring(0, 2) == supportedOSBuildVer.substring(0, 2)) && (result < 0))
		{
			title = system.localizedString("need_os_update_title");
			msg = system.localizedStringWithFormat("need_os_update_message", supportedOSVer, supportedOSBuildVer);

		}
		else
		{
			title = system.localizedString("visit_website_title");
			msg = system.localizedStringWithFormat("visit_website_message", osVersionString, targetBuild);

		}

		my.result.title = title;
		my.result.message = msg;
		my.result.type = "Fatal";

		return false;

	}

	return true;

}

那么尝试修改里面的值为’10.11.6’ 和 ‘15G37’, 再次安装, 检测可以通过, 但是安装到一半还是报错; 好吧, 既然安装脚本改了不行, 那想办法把系统版本号’10.11.6’改回’10.11.5’行不行?

系统版本的配置在这个文件里: /System/Library/CoreServices/System Events.app'

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
		<key>ProductBuildVersion</key>
		<string>15G37</string>
		<key>ProductCopyright</key>
		<string>1983-2016 Apple Inc.</string>
		<key>ProductName</key>
		<string>Mac OS X</string>
		<key>ProductUserVisibleVersion</key>
		<string>10.11.6</string>
		<key>ProductVersion</key>
		<string>10.11.6</string>
</dict>
</plist>

把里面相应的数值修改保存之后, 安装成功; 重启后, 驱动正确加载!

wifi频繁掉线的解决办法

之前买了个pci的wifi双频网卡, 免驱, 很完美, 但是后来升级了10.11.5之后, wifi开始频繁掉线; 搜索了一下, 需要重置 nvram.

苹果官方的办法, 在macbook上 :

重置 NVRAM

关闭 Mac。
在键盘上找到以下按键:Command (⌘)、Option、P 和 R。
打开 Mac。
听到启动声后立即按住 Command-Option-P-R 键。
按住这些按键直到电脑重新启动,然后您会再次听到启动声。
松开这些按键。

其实不用这么麻烦, 有个命令叫’nvram’

nvram: (usage: no such option as -h)
nvram [-x] [-p] [-f filename] [-d name] [-c] name[=value] ...
	-x         use XML format for printing or reading variables
(must appear before -p or -f)
	-p         print all firmware variables
	-f         set firmware variables from a text file
	-d         delete the named variable
	-c         delete all variables
	name=value set named variable
	name       print variable
Note that arguments and options are executed in order.

所以, 使用nvram -c 即可重置;

重置之后显示所有参数值:

➜  ~  nvram -p
bootercfg       (%00
prev-lang:kbd   en:0
fmm-computer-name       iMac
security-mode   none
SystemAudioVolumeDB     %ef
SystemAudioVolume       /
csr-active-config       g%00%00%00

E3-1245 v2 显卡 P4000 驱动

使用https://github.com/RehabMan/OS-X-Fake-PCI-ID 这个工程里的 FakePCIID.kextFakePCIID_Intel_HD_Graphics.kext 放到 S/L/E 中 然后重建缓存; config.plist 中 Devices -> IntelGFX 的 FakeID 设置为0x01668086 , 这个是 P4000 的 设备id, 这个id 可以从 开始菜单 -> 设备报告 -> 图形卡/显示器 中看到; 0x016A 就是 设备ID, 0x8086 是供应商id;