300系列主板正确使用AptioMemoryFix.efi的姿势(重写版)

在OsxAptioFix2Drv-free2000的作者自爆出此插件最终会导致设备永久损坏后,对于z390用户来说,换上最新AptioMemoryFix(AMF)已经变成了一件必要的事情,而我之前写的AMF实在有点杂乱无章,让很多人摸不着头脑。我的博客里面的文章也一直希望是给小白用户看的,希望每个人都能看懂,基于我的初衷,我现在重新写一次300系列主板使用AMF的教程。如果你是z390的用户,并且实在需要帮助,也可以来我的qq群里:838739020。

关于OsxAptioFix2Drv-free2000作者对这个插件的影响陈述如下:

I unleashed a plague upon you guys and I am sorry for OsxAptioFix2Drv-free2000. from hackintosh

 

 

 

 

提一下这类补丁的作用就是修复内存,我这里quote下@athlonreg版主的解释:

New set of memory fix drivers.

OsxAptioFixDrv and OsxAptioFix2Drv reverted to rev before 4368 so without NVRAM support. Let them stay here for history. And sometimes OsxAptioFixDrv is only working version for high warped memory map.

OsxAptioFix2Drv is a reduced version without relocation blocks and may not works on some hardware or with older OS version. But this version supported Hibernation while first one no.

OsxAptioFix3Drv is a OsxAptioFix2Drv rev 4369 renamed to be different. This version supported NVRAM. More runtime fixes in 4379. This version can be improved by clover crew in future.

AptioMemoryFix included in the package is third-party memory fix driver used as is. It is probably better then OsxAptioFix*. Choose it for a first attempt.

OsxLowMemFixDrv is also memory fix driver, not improved since rev608.

SIC! These 5 drivers should not be used simultaneously! Choose one of them!

Slice的解释,五选一,AptioMemoryFix优先考虑

 

事实上,我们的300系列是无法使用最优的AptioMemoryFix的,就算能用,也不能完全发挥它的作用在@黑果小兵的博客中他指出:

300系列主板请于drivers64UEFI目录中移除AptioMemoryFix-64.efi添加OsxAptioFix2Drv-free2000.efi该驱动位于/EFI/CLOVER/drivers-off目录下 或者 Slide值获取及计算

 

当然我需要指出的是,并不是所有的300系列主板都要弄得很麻烦才能用上,一些直接可以使用,但是并没有完全用好它。根据作者的github,正确的使用它需要符合以下条件:

  • KernelPm 取消勾选
  • boot argument中添加自行计算出的slide值(参考方法二中黑果小兵的教程,如果不加slide值不卡加号,就别添加任何slide值
  • BIOS中解锁CFG
  • BIOS中CSM disabled
  • BIOS中EHCI/XHCI Hand-off enabled
  • BIOS中Above 4G Decoding enabled
  • BIOS中VT-d disabled

 

在我们开始一系列操作之前,我们必须确保你做了如下的步骤!这是必须一定要做的!

  • 在你的config.plist里勾选kernelPM以及AppleIntelCPUPM

 

  • 一些主板包括华擎、华硕可以直接在BIOS中开启关闭cfg,若你能在主板中直接选择cfg lock,请确保此时的cfg lock是enable的。
  • 删了原先在Clover/drivers64UEFI/下面的OsxAptioFixDrv-64.efi/OsxAptioFix2Drv-free2000/OsxAptioFix2Drv-64.efi 等内存修复补丁,并替换上AptioMemoryFix-64.efi (注意备份!)
  • 下面的操作过程必须按我的写作顺序来!

 

 

计算slide数值

准备工作后,开机我们会卡+号,如果可以顺利进入,那恭喜你不需要计算slide值了,直接跳过这步。卡加号的话代表你需要计算slide,方法由黑果小兵提供,原贴:https://blog.daliansky.net/Slide-value-acquisition-and-calculation.html

 

下图为黑果小兵给出的截图

 

如果你在开机进入clover界面中无法看到UEFI Shell的选下,你需要执行:

  • 首先确保你的EFI/Clover/下面有tools这个文件夹,以及文件夹中有uefi shell的工具,如果没有,请安装一遍最新的CLOVER即可!
  • config.plist中,在gui选项栏中打开tools:

 

  • 执行上两步还是没有的话,换一个黑果小兵提供的主题文件。

 

还有值得一提的是:

  • 如果你输入memmap显示内容太多而分辨率低导致你看不到主体内容,请输入memmap -b 对内容进行分页,就可以看到主体内容了。
  • 在外国的一些slide教程中,并没有要求Start列的值比10000000大,所以我把这个条件去掉了,在计算过程中,我得出了2组符合条件的slide值,其中一个是slide=1,slide=1是一个比较通用的数值。

 

 

 

解锁BIOS中的CFG功能

解锁bios并不一定需要我下面那么复杂的方法!如果你的主板是华硕华擎的,你可以直接在bios中看到CFG Lock这个选项,选择disable即可。CFG Lock disable的意思说是说cfg的锁关闭,也以为这cfg功能开启。一些主板如果只显示cfg,那应该选择开启,你要理解其中的双重否定,我们的最终目的是开启cfg功能!

 

如果你的bios没有cfg的相关选项,你需要跟着我写的方法来,此过程中你需要一个空U盘!

首先你需要在你的config.plist中添加你刚才计算出来的slide值,我的是slide=1 (图片是用的以前的,给大家看一下添加位置而已)。

 

在MAC的桌面上新建一个叫CFG的文件夹,并将以下三个文件放入此目录

  • ifrextract
  • UEFITool
  • 正在使用的BIOS文件。这个可以从官网下载,比如我是技嘉的z390-elite,正在使用的是F7这个版本的BIOS, 可以从此处下载到,并解压,得到Z390AE.F7这个文件

至此,在桌面创建的CFG文件夹中应该有如图三个文件:

 

打开terminal(终端)输入以下命令

cd ~/Desktop/CFG

./UEFITool.app/Contents/MacOS/UEFITool ~/Desktop/CFG/Z390AE.F7

 

其中Z390AE.F7你需要替换成你的BIOS的文件名。

 

输入命令后我们可以看到如下界面,并在此见面中按Command+F,搜索Text”CFG Lock“

 

我们可以在最下面的输出栏中看到搜索到的结果,双击它就能得到指定的目录中,右键extract body,并保存文件名为PE32Section.efi到我们桌面上的CFG文件夹。

 

回到terminal, 我们再键入如下指令,将PE32Section.efi转换为txt文件:

cd ~/Desktop/CFG

./ifrextract PE32Section.efi PE32Section.txt

 

 

 

 

 

用文本编辑器打开CFG文件夹下的PE32Section.txt文件,如果你打不开,我推荐你使用sublime text这个编辑软件来打开它。

我们Command+F搜索”CFG Lock“

 

我们找到如下数值:

One Of: CFG Lock, VarStoreInfo (VarOffset/VarName): 0x5C1, VarStore: 0x1

 

 

其中CFG Lock的Varname是0x5C1,对应的设置0x1。我们理解0x1是等于”锁定”,而解锁应该是”0x0″,所以接下来我们需要把CFG解锁。

 

将U盘插入MAC,用磁盘工具将U盘格式化为fat32格式,命名为EFIBOOT:

 

下载modGRUBShell.efi, 并重命名为bootx64.efi

在U盘内创建一个EFI文件夹,并再在此文件夹下创建文件夹BOOT,并将bootx64.efi放入BOOT下:

 

重启电脑,我们通过UEFI启动此U盘进入GRUB shell

 

在GRUB shell中输入

setup_var_3 0x5C1

其中0x5C1(你必须注意大小写!)是我们之前从PE32Section.txt得到的Varname,输入后,我们可以看到你当前主板的CFG是关闭的,值为0x1。图片中因为我已经改好了,所以是0x00

我们再输入

setup_var_3 0x5C1 0x00

这样,我们就可以把CFG解锁了。

注:一些主板可能不适setup_var_3命令,请使用setup_var

setup_var 0x5C1

setup_var 0x5C1 0x00

 

回到MAC中,我们把EFI/Clover/drivers64UEFI下关于内存修复的补丁全删了,包括OsxAptioFixDrv-64.efi/OsxAptioFix2Drv-free2000/OsxAptioFix2Drv-64.efi

再把AptioMemoryFix-64.efi放入。

 

关闭kernelPM以及AppleIntelCPUPM

我们之前在准备过程中,勾选了这两个选项,现在我们需要关闭它:

 

 

最后你需要重启电脑,我们可以通过hackintool来查询cfg是否解锁:

1.点击工具

2.点击下面的intel图标,输入你的管理密码,稍等一会,便会输出内容

3.在内容中你可以看到cfg lock这个选项,我们看到已经是not locked了!

 

小彩蛋1

我们知道Z390本身是不支持原生电源管理的,但我们既然发动了CFG,那当然要用上full HWP咯!试试看吧!

 

这里我使用了@黑果小兵提供的开启HWP的方案。

打开terminal(终端),输入一下命令:

cd /tmp && curl -s https://raw.githubusercontent.com/Piker-Alpha/freqVectorsEdit.sh/master/freqVectorsEdit.sh > /tmp/freqVectorsEdit.sh && chmod +x freqVectorsEdit.sh && /tmp/freqVectorsEdit.sh && sudo rm -rf /tmp/freqVectorsEdit.sh && sudo rm -rf /tmp/Mac-*.bin

 

 

回车,输入密码,我们能看到大约50多种机型,其中带HWP字样的是默认开启HWP的,我们选择的原则有两条:

  • 自己是台式机就选择台式机机型
  • 能选新的带HWP的机型就尽可能选新的机型

在一堆机型中,我看到一个机型:

[ 51 ] Mac-AA95B1DDAB278B95.plist (Unknown Model @ 4100 HWP/4300 HWP/4600 HWP/5000 HWP)

因为这个代码很久没更新了,一些新的机型是它就写 Unknown Model。没关系我们用百度搜一下代码就知道是啥机型了。

百度搜索:

Mac-AA95B1DDAB278B95

可以看到是最新款、使用9代CPU的iMac19,1,刚好!

通过Clover configurator 打开config.plist,转到SMBIOS,我们把机型选择成19.1:

 

到ACPI,我们打开plugintype(原生电源管理选项):

 

保存重启,我们再使用hackintool的工具箱查看,我们看到hwp已经是开启的了(1=开启)

 

 

完工!

小彩蛋2

在使用了AMF后,你也许会碰到睡眠唤醒的问题,这其中也有可能是USB造成的,同样也会因为我们的z390不支持nvram而不能进入休眠模式(Hibernation),我们需要执行以下命令来让系统只进入睡眠(sleep)而不进入休眠:

 

打开hackintool—电源—看看下面两个选项是否全绿,如果没绿,自己点击以下修复键:

 

你所需要的文件:

CFG

25 评论

  1. Slide计算出来也是129,但是添加了slide=129之后,依然出现Error Allocating 0x11c01 pages at 0x00000000053cb000……

  2. 我的主板是微星b360m迫击炮,我已经打开cfg,按照上文操作,用AptioMemoryFix替换OsxAptioFix2Drv-free2000,发现 睡眠失效 点击睡眠变成了关机,并且关机也不正常,请问如何解决,谢谢。

    1. b360m系列也会有nvram的问题,请参照我那篇“Z390主板从WINDOWS重启到MAC后不断重启的解决方案”来模拟nvram

      1. 感谢回复,我昨晚尝试了模拟nvram后,尝试替换OsxAptioFix2Drv-free2000,启动能成功,但是我dp显示器黑屏。我的系统是10.14.5,双屏,一个dp,一个hdmi,hdmi正常。

        1. 看起来像是显卡的connector mapping有问题,按说WhateverGreen应该都能解决的…之前在我远景发的的帖子下有个回复(http://bbs.pcbeta.com/forum.php?mod=redirect&goto=findpost&ptid=1804307&pid=49118545)让我注意到CaseySJ说「Framebuffer Orinoco is for RX580 only」,进一步查Orinoco的意思看到了这个帖子(https://www.insanelymac.com/forum/topic/303186-how-to-modification-of-amd-fb-clover-injection/?page=16&tab=comments#comment-2552825)里有写「Orinoco (5) @ 0x121d90
          DP, DP, HDMI, HDMI, DDVI」,不知道你用的什么显卡,这个问题我也没深究过,提供个思路没解决的话你可以参考这个找找解决办法试试~

  3. 我又来啦~

    前一阵有些忙,QQ群也没仔细看,记得有条AptioMemoryFix替换OsxAptioFix2Drv-free2000的信息在群里@我之后过了好久我才看到,也没回复,抱歉啦🙏

    说一下我后续的进展,10.14.5的时候我最新版BIOS(对于我的GIGABYTE Z390 M GAMING主板来说就是修复INTEL-SA-00233漏洞的F7)解锁CFG Lock(MSR Ex02)之后,用AptioMemoryFix配合slide=0或者memmap里用Available计算出的两个值都可以正常启动。
    其他一切不变从10.14.5升级10.14.6之后会卡「Couldn’t allocate runtime area」,奇怪的是我只安装和测试升级系统的备用硬盘上的10.14.5升级10.14.6之后并没有问题。卡「Couldn’t allocate runtime area」的那个盘换回OsxAptioFix2Drv-free2000之后可以正常完成引导开机。
    全盘备份之后在主硬盘全新安装10.14.6用AptioMemoryFix又能正常开机,怀疑是之前做过什么修改导致的问题。考虑到10.15就快到了,到时候磁盘结构会有比较大的变化(http://bbs.pcbeta.com/viewthread-1820982-1-1.html),我打算升10.15时候再全新安装一次,10.14.6就不折腾全新安装了,把CCC的全盘备份恢复之后先用OsxAptioFix2Drv-free2000顶几个月吧,主要还是懒2333

    至于OsxAptioFix2Drv-free2000,CaseySJ在他那个帖子(https://www.tonymacx86.com/threads/success-gigabyte-designare-z390-thunderbolt-3-i7-9700k-amd-rx-580.267551/page-595#post-1985046)里的观点是「Despite the doom and gloom warnings about OsxAptioFix2Drv-free2000, there is no immediate urgency to make any change……but all Boot Services Drivers are terminated once the boot process begins.」,OsxAptioFix2Drv-free2000作者那边虽然对危险性的表述用词很严重,但是对原因语焉不详(或许是为了避免不准备修复的漏洞被恶意利用吧),CaseySJ这边给出了认为暂且还可用的理由,就暂且信之吧,不过有可能的话还是应该尽量换到AptioMemoryFix/OsxAptioFix3Drv.

    记得在QQ群里看到有讨论为了用AptioMemoryFix降回旧版本BIOS的,我的观点是两害相权取其轻,INTEL-SA-00233的危害官方有明确解释,微软(https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/adv190013)和苹果(https://support.apple.com/zh-cn/HT210107)等都有安全性更新来应对,我还是倾向于优先升级用最新版本BIOS。

    CaseySJ的那个帖子完成度很高,而且下边集中了大量Z390相关的讨论,时常看看更新总能有所收获~

    1. 似乎跟顺序有关:首先算slide,kernelpm打钩,填进slide值,试一下可以进入系统,最后解锁CFG。记得最后解锁CFG,就可以了

  4. 请问大佬是否有在处理使用原生NVRAM的进程以及是否有准备制作教程教驱动z390的原生NVRAM呢?目前不能使用原生NVRAM导致开机没法自动倒计时。

  5. 你说如果不卡就不用计算值,可是下一步你填入的值又是怎么获得的?另外群怎么加不进去,群提问是黑苹果引导小写?

  6. 在bios里面将cfg lock disable后在hackintool里面还是显示是锁上的,不过进系统没有察觉到异常,内核补丁一个都没有打

  7. 您好,我也是技嘉主板,z390 pro wifi,cpu是9900ks,bios升级了F11,CFG是不是必须开启?我现在U盘启动提示couldn’t allocate runtime area

悠久之翼进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注