banner.png

前言

前几天从工位拿到了个淘汰的Mac Pro。机箱是真的好看,内部做工精致整洁,可玩性非常强,于是不想放弃这个机会,打算对这台Mac Pro进行一次全方面的升级。

目前这台机子的配置是两块4核的Intel Xeon 5520作为CPU,两根1GB的DDR3 ECC SDRAM内存条,一张苹果于2009年定制的初级Nividia GT 120 512MB显卡和Mac Pro定制的主板。

想要升级到两个6核的Intel Xeon X5690,32GB DDR3 ECC内存,RX580以及使用SSD作为启动盘。

但是第一步就有困难,因为2009的Mac Pro (Mac Pro 4,1)是不支持六核心处理器的。但有意思的是Mac Pro 2010(Mac Pro 5,1)-2012的版本的架构相似度为99.99%,这就使得2010-2012的固件可以刷给2009的Mac Pro,使其支持所有2010-2012 Mac Pro的硬件和API。

有人做出了一个软件,叫做Mac Pro 2009-2010 Firmware Tool。该软件通过联网下载固件并挂载ramdisk强行刷入Mac Pro 5,1固件。原作者于早些年时结束了对软件的维护,同时关闭了固件下载服务器,导致工具一度无法使用。随后该工具由The House of Moth维护。但该工具2020年起出现了弹出刷写成功但不会真正刷固件的问题。因此本篇文章将会讲解2024年依然可用的刷写方法。

工具准备

Mac Pro 2009固件二合一包(包括了升级用的5,1固件,以及降级使用的4,1固件)

FirmwareFiles.zip

Mac Pro 2009-2010 Firmware Tool刷机工具

MacPro2009-2010FirmwareTool.zip

Mac Pro准备

  • 确保Mac Pro升级至OS X El Capitan(10.11.6)

  • 根据以下教程关闭系统完整性保护 (System Integrity Protection),又称作为SIP

关闭系统完整性保护 (System Integrity Protection)

  1. 完全关闭Mac Pro (点击苹果LOGO,并选择关机)

  2. 点按开机键,听到开机音效后按住 Command + R 键进入系统恢复

  3. 在上方工具栏选择「实用工具」并打开「终端」

  1. 在终端中,输入「csrutil disable」后回车

  1. 在终端中,输入「reboot」后回车,电脑开始重启。

制作可读写的EFI固件挂载盘

  1. 在「启动台」中打开磁盘工具

  1. 在工具栏中找到「映像」并选择「转换」

  1. 在文件选择中首先选择你下载的映像中的「MacProEFIUpdate4-1.dmg」。在打开的窗口中的「储存为」后面的名称改为Mac Pro EFI Update 2009,「映像格式」中选择「读/写」,并点击「转换」

  1. 随后会在同目录中生成名为Mac Pro EFI Update 2009.dmg的文件。

  2. MacProEFIUpdate5-1.dmg和上面的步骤一样,名称改为Mac Pro EFI Update 2010并转换为读/写即可。

  3. 最后,你应该拥有两个新的dmg文件,分别是Mac Pro EFI Update 2009.dmgMac Pro EFI Update 2010.dmg

为Mac Pro 2009-2010 Firmware Tool编写新的脚本

我们已知目前Firmware Tool无法正常刷写固件,因此我们要通过本地挂载的方法写进ramdisk。而想要让ramdisk挂载,我们依然需要使用Mac Pro 2009-2010 Firmware Tool。

  1. 右键「Mac Pro 2009-2010 Firmware Tool」,点击「显示包内容」。(我在使用新的mac作为演示,你的电脑不应该有禁止图标)

  1. 打开以下路径 Contents > Resources,使用文本编辑器编辑「ExtractAndPatchEFIFiles.sh」,将里面的脚本内容清空,并替换以下脚本。

#!/bin/sh

pushd /Volumes/RamDisk

# hdiutil attach -nobrowse EFI2010.dmg

pkgutil --expand '/Volumes/Mac Pro EFI Update 2010/MacProEFIUpdate.pkg' Expanded

cp Expanded/MacProEFIUpdate.pkg/Payload Payload

tar -xf Payload

mkdir MacProEFI2010-2009
mkdir MacProEFI2009-2010

cp 'System/Library/CoreServices/Firmware Updates/MacProEFIUpdate15/EFIUpdaterApp2.efi' MacProEFI2010-2009
cp 'System/Library/CoreServices/Firmware Updates/MacProEFIUpdate15/MP51_007F_03B_LOCKED.fd' MacProEFI2009-2010/MP41_0081_07B_LOCKED.fd

rm -R Applications
rm -R Expanded
rm -R System
rm Payload

hdiutil detach '/Volumes/Mac Pro EFI Update 2010/'

# hdiutil attach -nobrowse EFI2009.dmg

pkgutil --expand '/Volumes/Mac Pro EFI Update 2009/MacProEFIUpdate.pkg' Expanded

cp Expanded/MacProEFIUpdate.pkg/Payload Payload

tar -xf Payload

cp 'Applications/Utilities/Mac Pro EFI Firmware Update.app/Contents/Resources/EfiUpdaterApp2.efi' MacProEFI2009-2010
cp 'Applications/Utilities/Mac Pro EFI Firmware Update.app/Contents/Resources/MP41_0081_07B_LOCKED.fd' MacProEFI2010-2009/MP51_007F_03B_LOCKED.fd

rm -R Applications
rm -R Expanded
rm -R System
rm Payload

hdiutil detach '/Volumes/Mac Pro EFI Update 2009/'

popd

patch /Volumes/RamDisk/MacProEFI2009-2010/EfiUpdaterApp2.efi EfiUpdater2009.patch
patch /Volumes/RamDisk/MacProEFI2010-2009/EfiUpdaterApp2.efi EfiUpdater2010.patch
  1. 记得保存脚本

挂载ramdisk磁盘与EFI磁盘

  1. 双击打开Mac Pro 2009-2010 Firmware Tool,点击「Upgrade to 2010 Firmware」

  1. 运行一会之后会报5530或5570错误,问题不大。此时桌面应该出现了一个叫做ramdisk的磁盘

  2. 双击你刚刚制作的可读写的Mac Pro EFI Update 2009.dmgMac Pro EFI Update 2010.dmg,将它们一并挂载。

  3. 这时你的桌面上应该有三个磁盘,分别是ramdiskMac Pro EFI Update 2009Mac Pro EFI Update 2010。如果名字不对,请手动改名,一定要确保名称正确,否则会影响后续脚本运行

运行Patch脚本及升级脚本

  1. 在「启动台」中打开「终端」,或你的iTerm(跑

  2. 使用cd指令进入你的刷机工具的目录内的Contents/Resources/目录下。如果你的刷机工具在你的「下载」文件夹内,它看起来会是这样的:cd ~/Downloads/Mac\ Pro\ 2009-2010\ Firmware\ Tool.app/Contents/Resources/

  3. 输入 sudo ./ExtractAndPatchEFIFile.sh 来执行我们刚刚修改过的Patch脚本。

  4. 确保没有报错后,再输入sudo ./UpgradeEFI2009-2010.sh 来执行升级脚本。

  5. 再次确保没有其他报错!

脚本报错

  • 如果出现Operation not permitted或其他权限不足的报错提示,请尝试对Resources 文件夹执行指令chmod 777 使其可读写。如果还是不行,请在「终端」内使用csrutil status 指令查看SIP是否为disable。如果是enable,请返回「关闭系统完整性保护 (System Integrity Protection)」并完成关闭SIP的操作。

  • 如果出现文件夹、目录不存在的报错,请返回挂载ramdisk磁盘与EFI磁盘项再次确认你的磁盘名称是否正确,ramdisk是否正确挂载。

进行固件升级

  1. 工具栏点击苹果LOGO,选择「关机」将Mac Pro完全关机

  2. 确认电源灯闭,长按开机电源键不松手,等待电源灯快速闪烁,并发出很长的一段「哔————」声,依旧保持电源按钮按压,不要松开。

  3. 保持电源键按下大概50-60秒时,光驱会弹出,表示固件验证有效,可以升级,此时继续按压电源按键10秒并松开。可以不触碰光驱,在固件升级完成后光驱会自动收回,代表固件安装完成。

  4. 固件安装途中有些人的显示屏不会显示任何东西,只靠光驱来验证安装状态。但如果你的屏幕有显示东西,它应该是个灰色的苹果logo和一个粗的灰色进度条。

  1. 完成固件升级后,电脑会自动重启。这是回到「系统报告」中,查看设备识别号是否变为MacPro5,1。如果依然保持MacPro4,1,请重试「进行固件升级」步骤。以下是我的Mac Pro截图:

重新启用系统完整性保护(SIP)

SIP是个好东西,可以保护系统底层不被奇怪的软件修改,于是完成固件升级后我们最好重新启用它。

  1. 将电脑重启,听到开机音效后立刻按住 Command + R 进入系统恢复

  2. 在上方工具栏选择「实用工具」并打开「终端」

  3. 在「终端」内输入csrutil status ,轻敲回车执行

  4. 输入reboot 重启电脑

固件降级(5,1 -> 4,1)

降级有个注意的点。虽然5,1支持4核心处理器和六核心处理器,但4,1只支持四核心处理器。这意味着如果你在装有六核心处理器的情况下将Mac pro降回4,1会导致变砖!所以请务必在降级前将处理器换回受支持的四核心处理器。

  1. 重复「关闭系统完整性保护 (System Integrity Protection)」步骤

  2. 重复「运行Patch脚本及升级脚本」步骤,最后一步我们不使用指令sudo UpgradeEFI2009-2010.sh ,而是使用sudo DowngradeEFI2010-2009.sh

  3. 重复「重新启用系统完整性保护(SIP)」步骤

  4. 在「系统报告」中,查看设备识别号是否变为MacPro4,1。

后记

为了折腾这个Mac Pro算是翻遍了Mac Rumors论坛和Stack Overflow以及Raddit。在某一个帖子意外发现了这个办法。在论坛上还有人需要以高价接单修改BootRom并声称除了该方法以外无路可循的情况下,我认为这篇教程是必须的。

同时,这篇文章的英文版也发布在了Mac Rumors上,希望可以帮助到更多的Mac Pro搞机人!