Leask

降级 Mac OS X

Leask

不知道是现阶段 OS X 10.7.3 beta 1 有 Bug 还是我个人 RP 的问题,玩了两天,千方百计,还是未能解决 MacBook Pro 运行龟速的问题。主要体现在磁盘 IO 缓慢,Finder 和 iTunes 占用 CPU 都很高,多指手势延时超过 1 秒。

忍无可忍,尝试用 10.7.2 的升级包降级回到 10.7.2 稳定版。却提示版本太新,不能安装老版本的 combo 包。立刻想到了跑 Reversioner11C73Client.pkg,结果报错:“The volume must contain Mac OS X version 10.7.2 11C73”。

解开 Reversioner11C73Client.pkg 发现 Contents/Resources/VolumeCheck 中有以下检测:

#!/usr/bin/perl
my $SYSTEM_VERS = "$ARGV[0]"."/System/Library/CoreServices/SystemVersion.plist";
my $SERVER_VERS = "$ARGV[0]"."/System/Library/CoreServices/ServerVersion.plist";
my $EXIT_VALUE = 0;
DO_CHECKS: {
	if(! -e "$SYSTEM_VERS") {
		$EXIT_VALUE = (( 1 << 5 ) | 16 );
		last;
	}
	if(! MatchSystemVersionRange($SYSTEM_VERS, "10.7.2", "11C1", "11C73")) {
		$EXIT_VALUE = (( 1 << 5 ) | 16 );
     	last;
	}
	if((-e $SERVER_VERS)) {
		$EXIT_VALUE = (( 1 << 5 ) | 16 );
		last;
	}
}
exit($EXIT_VALUE);
......

再观察 Contents/Resources/English.lproj/VolumeCheck.strings:

"16" = "The volume must contain Mac OS X version 10.7.2 11C73";
"17" = "This Downgrader requires that reversioner_flat.tmp be installed on this volume.";

哈,这不很明显吗?原来安装包仅仅检测 /System/Library/CoreServices/SystemVersion.plist 中的版本号,一旦发现版本号不满足,就不允许往后安装了。那就简单了:

sudo vim /System/Library/CoreServices/SystemVersion.plist

直接改为:

<?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>11C73</string>
	<key>ProductCopyright</key>
	<string>1983-2011 Apple Inc.</string>
	<key>ProductName</key>
	<string>Mac OS X</string>
	<key>ProductUserVisibleVersion</key>
	<string>10.7.2</string>
	<key>ProductVersion</key>
	<string>10.7.2</string>
</dict>
</plist>

我都不屑跑 Reversioner 了,直接跑 MacOSXUpdCombo10.7.2.pkg 然后重启。
机器闪电搬的速度又回来了,哈!痛快!