MacBook Pro:如何从EFI永久禁用离散GPU?


49

我想在MacBook Pro 15“(视网膜,2014年中,Mac OS X 10.10 Yosemite)上禁用NVidia GTX 750M GPU。我知道我可以使用GfxCardStatus,但我读到我可以通过更改一些EFI获得更永久的解决方案。旗。

我的问题是:

  • 如何从EFI禁用离散GPU?

    我认为这在多次重启后都是持久的。我也想知道如何在需要时撤消它。

更新:

问题基本上是这里的GfxCardStatus github问题注释中提到的命令是否正确,以及如果不起作用如何撤消它。

仅此一个答案是正确的答案,但是如果您也能告诉我,那将是非常棒的:

  • 如果您在GfxCardStatus中强制使用集成图形,则Mac OS X(至少为优胜美地(Yosemite))不允许使用多个显示器(即使内置的Iris Pro也可以)。

    如果我从EFI禁用了离散GPU,macOS是否会认为集成GPU是已安装的GPU,并且可以让我同时使用多台显示器吗?

  • 我听说相同的EFI设置甚至没有向除macOS之外的其他操作系统显示集成GPU,您必须以某种方式欺骗它以认为它是macOS。

    真的吗?如果是的话,该怎么做?


4
这看起来像一个经典的XY问题。您实际上想达到什么目的?
Tetsujin 2015年

6
永久节省电池电量并减少热量,而无需支付噪声成本。我买了NVidia,因为我想要对CPU和SSD进行顶级升级,而这是预建的。如果我可以等待自定义构建,那我将拥有集成的GPU。
Meligy 2015年

3
这个问题的解决方案对于离散MB缺陷的2011 MBP模型的所有者也很有用。这当然是可能使用Linux,看到这里我的问题时,禁用独立GPU:apple.stackexchange.com/questions/168167/...
xpereta

Answers:


52

您可以按照以下步骤永久禁用独立显卡

更新!尝试从单用户模式编辑NVRAM变量

直到macOS Sierra为止,步骤1-3中描述的过程对我一直有效,但是升级到High Sierra后,我开始出现粉红色/淡红色屏幕,并且无法进入恢复模式以重复步骤3,因为我必须在以前的升级。在互联网上搜索时,我进入了GitHub问题,解释了您可以使用以下命令替换步骤1和2,该命令可以在单用户模式下执行(引导按cmd+ s):

sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00

1.使用非GUI Linux准备可引导的USB Pendrive

1.1下载ArchLinux ISO

  • 您需要一台可以正常运行的计算机和一个备用CD / DVD / USB驱动器。
  • 下载最新的Arch Linux ISO映像
  • 然后,您可以将此ISO刻录到CD / DVD(以后可以将其插入MBP的SuperDrive或通过两条USB电缆连接到MBP的外部DVD驱动器),也可以创建可引导的USB

1.2使用.iso创建可启动USB

  • 首先,您需要识别USB设备。
  • 在MacOS中打开/​​ Applications / Utilities / Terminal并列出所有存储设备:

    diskutil list

    您的USB设备将显示为/dev/disk2 (external, physical)。通过检查其名称和大小来验证这是您要擦除的设备,然后将其标识符用于以下命令,而不是/dev/diskX

  • USB设备通常会自动安装在macOS中,在使用dd块写入它之前,您必须先卸载(不弹出)它:

    diskutil unmountDisk /dev/diskX

  • 现在将ISO映像文件复制到设备。dd命令类似于Linux对应命令,但请注意,对于原始模式,“ disk”之前的“ r”会大大加快传输速度:

    sudo dd if=path/to/arch.iso of=/dev/rdiskX bs=1m

    完成后,macOS可能会抱怨“您插入的磁盘无法被此计算机读取”。选择“弹出”。USB设备将可启动。

2.使用Linux更改EFI变量

2.1开机

  • 将此CD / DVD / USB插入Macbook Pro,在启动时按住Option键(alt)。
  • 选择“ EFI引导”(这是您的可引导安装媒体)。
  • 当菜单显示时,在主屏幕上被选中时,按“ e”键编辑Arch Linux archiso x86_64 UEFI CD菜单项的GRUB选项,添加nomodeset到此行的末尾并按Enter。
  • 如果一切正确完成,您将在Linux控制台中找到自己!(这需要一些时间,因此请耐心等待提示)

2.2清除现有的EFI变量

看起来efivarfs文件系统是默认安装的!所以,你已经可以cd /sys/firmware/efi/efivarsls这个目录探索,看看是否有一个gpu-power-prefs-...变量(其中...这是可变的UUID)。

  • 如果有这样的变量,最好用rm删除它。

    rm gpu-power-prefs-…

  • 如果尝试时收到“不允许操作”消息rm,则意味着efivarfs已作为只读方式挂载,您需要使用读写许可权重新挂载它,然后重试:

    cd /
    umount /sys/firmware/efi/efivars/
    mount -t efivarfs rw /sys/firmware/efi/efivars/
    cd /sys/firmware/efi/efivars/
    rm gpu-power-prefs-…

  • 如果此操作仍然失败(您仍然无法删除文件),请使用chattr命令禁用文件不变性,然后删除文件:

    chattr -i "gpu-power-prefs-…”
    rm gpu-power-prefs-…

2.3创建一个新的gpu-power-prefs-…文件

printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9

2.4在gpu-power-prefs-…文件中增加不变性

chattr命令应该锁定文件以使其只能由“超级用户”访问-因此,在引导时,您的EFI在任何情况下都没有机会破坏您的gpu-power-prefs -...变量

chattr +i "/sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9"

2.5卸载efivars并重新启动

转到根目录以卸载efivars:

cd /
umount /sys/firmware/efi/efivars/

确保将您的EFI变量刷新到efivarfs文件系统。重新启动之前,请安全地卸载它。

reboot

3删除AMD / NVIDIA kexts

注意:每次更新操作系统时,您可能都需要执行此操作,因为它通常会重新生成这些kext。您可能希望收藏此答案以供参考,因此可以在需要时从其他设备访问它。

使用Arch禁用dGPU后,正常启动会中途停止,但安全启动会起作用。

3.1将AMD / NVIDIA kext文件移动到备份目录

在故障恢复控制台的终端中删除所有AMD(或NVIDIA,取决于您的卡)kext文件。尝试在“单用户”模式下删除它们只会产生沙箱错误,因此请不要在“单用户模式”下执行此操作!(您使用cmd+ 引导的那个s)。

  • 如果您有FileVault,请先将其解锁。
  • 直接启动到恢复(cmd+ r)。如果失败,则重复步骤2并重试(使用AMD / NVIDIA kexts引导进入os后,dGPU可以再次激活)。
  • 启动终端(此命令用于AMD。如果您具有NVIDIA,请进行相应更改)

    diskutil cs list(查找逻辑卷UUID:最后一项)
    diskutil coreStorage unlockVolume UUID(UUID:来自上一条命令)
    cd /Volumes/Macintosh\ HD
    mkdir AMD_Kexts
    mv System/Library/Extensions/AMD*.* AMD_Kexts/
    reboot

我在此链接中找到了该过程,您可以在其中阅读不同部分的归属以及有关该主题的讨论线程。

我自己在2011年初的MacBook Pro上尝试了该显卡,该显卡带有故障的独立显卡,即使出现过热故障也无法启动,最终获得了一台功能齐全的计算机!


1
是的,您是对的,这台Mac具有NVIDIA卡而不是AMD(我只是按照步骤进行操作,而没有意识到这一点)。但是,我仍然无法正常工作,但是针对该特定笔记本电脑提出了另一种解决方案,它确实起作用了!!MBPMid2010_GPUFix。谢谢你的帮助。
塔科

2
一些重要信息,如果您拥有NVidia而不是AMD卡。说明正确无误,但需要删除以下kext:CUDA.kext GeForce.kext GeForce7xxxGLDriver.bundle GeForceGA.plugin GeForceGLDriver.bundle GeForceVADriver.bundle NVDANV40Hal.kext NVDANV50Hal.kext NVDAResman.kext在NVSMU上测试了MBP。运行10.12.6。
sporker '17

2
我花了3次尝试(确保重复步骤2)才能进入恢复模式而不冻结,但终于在2012年中的Macbook Retina Pro(使用Nvidia卡)上工作了。那谢谢啦!
huyz

3
同样显然,此问题是由离散gpu旁边的电容器引起的,而不是dGPU本身引起的youtube.com/watch?v=DzcgT_fiVTA
cbartondock

2
对于拥有2013年mac pro视网膜和Nvidia dGPU的用户,我发现,如果仅移动了System / Library / Extensions中的NVD *。*文件,则不会禁用dGPU,并且如果我同时移动了这些文件和@sporker建议使用GeF *。*文件,然后机器正常工作,但是a)无法更改亮度,b)关闭时不会使显示屏变暗。对我有用的是移动GeF文件而不是NVD文件。nvram方法对我也不起作用,我必须将“ fa4ce28d”替换为“ 000fa4ce”,但否则archlinux方法会起作用。不能告诉你我对这篇文章的感激之情。
cbartondock

10

您的困境

我完全赞同您在MacBook Pro内使用独立显卡的“节省电池并减少热量,而无需支付噪声成本”的愿望。

警告

在执行任何将禁用显示屏的操作之前,请确保您能够使用SSH登录到MacBook Pro,以便撤消您的手工。虽然在禁用所有图形卡的情况下进行屏幕共享可能可以在某些默认分辨率下进行,但我不会将计算机押在上面。

答案

如果我从EFI永久禁用独立的nVidia图形卡,将会发生什么情况?Mac OS是否会认为集成GPU是已安装的GPU,让我同时使用多台显示器?

您将失去使用外接显示器的能力(在任何操作系统下)。外部图形端口连接到离散图形芯片。

我自己的MacBook Pro 2011即使在负载下使用内置的Intel图形卡也能在60°稳定的温度下运行,而在使用分立6750负载时会出现满风扇(在4000至6000 RPM范围内)的峰值。是真实的。我也希望只能使用内置图形来驱动外部显示器。

没办法,没有办法。

确实,同一EFI甚至没有向其他操作系统(而不是Mac OS)显示集成的GPU,您必须以某种方式欺骗它以为是Mac OS?

对,是真的。如果您启动除Mac OS X以外的任何其他功能,则MacBook Pro 11,3的EFI将关闭Intel GPU。如果要在替代OS下使用集成的Intel芯片,则有四个选择

  1. rEFInd版本0.10.0或更高版本(推荐):http ://www.rodsbooks.com/refind

最新版本的rEFInd具有内置的“ apple_set_os” hack。您可以通过在refind.conf中设置spoof_osx_version选项来启用它。

  1. apple_set_os.efi:https : //github.com/0xbb/apple_set_os.efi

  2. 补丁GRUB:https : //lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html https://wiki.archlinux.org/index.php/MacBookPro11,x#Getting_the_integrated_intel_card_to_work_on_11.2C3

  3. 修补的内核:https ://www.marc.info/?l = grub-deavel & m = 141586614924917&w =2

小心计划。如果您不准备,将面临掉电的集成显卡和黑屏。当然,您始终可以返回并启动Mac OS X,然后重新启动。

上面最简单的选择是第二个-替换Apple EFI。不幸的是,它可能会让您无法在将来的某个日期重新启动。苹果不喜欢人们使用EFI,并保留为此而对设备进行修改的权利。如果您拥有Apple Care并仍处于保修期内,则可能会在某个地方哭泣。威力。当您更改EFI时,您还将承担安全风险,即您可以更轻松地入侵计算机。您需要能够更新到最新的EFI,这将删除您的补丁。

第一种选择是,rEFInd置于引导和EFI之间,这为发生问题的可能性留有相当大的余地,您可能会被砖头和漫长的艰辛历程所困扰。这些问题有多严重?许多MacBook Pro所有者已将硬盘丢失给rEFInd:

大量的rEFIt错误报告表明,大约有500 GiB的磁盘上存在磁盘损坏问题。...我强烈建议您不要键入sudo bless --info以检查安装状态,如果您有这样的磁盘,或者即使您怀疑自己可能有这样的磁盘。(我见过高级格式化磁盘小到320 GB。)

选项三相对容易。修补grub是任何早期的Hackintosh所有者都非常熟悉的过程。修补Grub可以工作,并且很容易撤消,因为更改不是在固件级别进行的。如果保守地修补grub,则只能通过在boot上按住option / alt来启用其他grub代码。

结论

如果您更喜欢使用计算机进行维修,则现成配置中的Cody Krieger的gfxCardStatus看起来越来越有吸引力。如果您真的想强制gfxCardStatus在运行时开始运行,那么Krieger先生参加了一场启发性的谈话,该谈话导致了switchGPU。switchGPU将gfxCardStatus预设为离散图形或集成图形的时间足够早,以至于您的离散GPU过热或崩溃时可以在集成图形上运行。gfxCardStatus继续正常运行(即,您可以在使用gfxCardStatus菜单项启动后切换回离散GPU)。除非您遇到严重的硬件问题,否则无需安装switchGPU 使用独立的GPU,这意味着您需要一直保持关闭状态。

结尾

反思后,我自己对集成AMD 6750的情况已经够糟糕了(即使在散热处理后仍然如此嘈杂,声音如此之大),以至于我将利用苹果针对带有AMD显卡的2011 MacBook Pro的延长保修计划。Marco Arment可能是正确的,将其2011 GHz 2.2750 MBP和6750转换为2.0 GHz版本6490。虽然我当时考虑做同样的事情,但是我不得不将我的MBP运送到国外进行更改。可悲的是,视网膜MacBook Pro似乎继续遭受同样的热量和噪音问题。我女友的2013 MacBook Pro仅带有集成显卡,性能要好得多。

由于四核MBP工作站的散热和噪音问题,我放弃了购买两台Mac Pro(2006年和2009年),将CPU分别升级为八核和六核。安装有Apple AMD 5870的2006年几乎安静(比2009年安静得多),并且多任务性能优于MBP 15英寸。两个银色的塔(家庭和办公室)的成本比单个MacBook Pro的总和还低。在独立显卡上运行2011 MBP 15“仅作为随身携带(无外部显示器)。


8

您计划的过程是可能的。您计划好的过程并不那么困难。您计划的过程不是最佳选择。

为什么这条路线不是最理想的

连接外部显示器后,MacBook Pro将会并且必须切换到离散GPU(dGPU)。因此,已安装但已禁用的dGPU取消了将外部Monitor与该dGPU一起使用的选项。

现在还有其他选项,例如使用USB解决方案或外部GPU(eGPU)。但是,设置您要查找的EFI变量肯定会禁止使用一根电缆从Thunderbolt端口连接到外部监视器来直接输出。

如何从EFI禁用离散GPU?

您在更新中提到的命令几乎是正确的。它只是错过了正确的标识符:

sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00

这会将相应的EFI变量写入NVRAM,并强制MacBook Pro始终直接引导到集成GPU(iGPU)中。该标识符不仅适用于AMD dGPU,而且适用于所有dGPU。确认这可以与NVidia芯片一起使用。通过NVRAM复位,它也很容易反转。

在这种情况下此策略的缺点

现在的缺点是:这可能有两个小问题:

  1. 强制执行这些NVRAM设置后,macOS可能会“有点混乱”。芯片仍在那儿,进行接线并供电。

  2. 要使其启动,您可能需要禁用dGPU的图形驱动程序。或至少一个管理实际图形切换的kext。否则尝试启动GPU切换时,引导可能会挂起。

这两个新出现的问题都可以通过将所有NVidia机器人/System/Library/Extensions移至安全的备用位置来解决。这将引导计算机进入加速的iGPU模式。但是,设置EFI变量可能不足以实现合理的电源管理。为此,您可能必须将NVidia kext移回,除了负责图形切换的那些。否则,将导致dGPU上不必要的高功耗。它将至少在“全功率”(转换为>〜60°C)时处于空闲状态。

对于减少风扇噪音和增加电池电量的计划来说,这种高功率的空闲状态可能是最大的失败。文献的旁注:普遍公认的事实是,移动kexts还需要您在较新版本的OS X / macOS上禁用SIP,只要您进行这种移动即可。

查找要试验的kext的一般策略:在储备系统中启动时不带 NVRAM变量(使用“默认” NVidia kexts)。然后记下系统实际使用的扩展名kextstat。然后重新启动,将先前加载的NVidia / Geforce kexts移开并启用​​hack。获取详细的传感器监控器(iStatMenus,TGPro等),并观察GPU上及其周围的温度。现在使用,将一个相关的kext依次加载回内核sudo kextload /path-to/NVDA***.kext。每次等待一到两分钟。

由于本文的方法(或同样有效但宽松的方法:在Linux中操作EFIvar)是NVRAM,因此,如果您执行SMC / NVRAM重置,它将干净地还原。实际上,NVRAM黑客攻击是这篇文章中唯一可以肯定不会给您带来太多麻烦的部分。

执行此NVRAM重置可将最少的出厂设置还原为EFI变量/ NVRAM。该出厂设置将不会被触及。

您可以根据需要经常执行此操作。

在Linux中,更好地记录了驱动程序系统,并更干净地实现了imho。有很多方法可以通过Linux或引导到Linux来实现。而Linux(无论是尊重此NVRAM / EFIvars设置还是通过其他方法)将使您减少驱动程序的麻烦(他们曾想过)。对于其他操作系统,例如Microsoft Windows,我没有数据。

重复一次:操作系统无法正确识别dGPU并不意味着它已关闭电源。这可能会导致不良的热副作用。

看看本指南2011年的MacBook Pro了类似的解决方案和一点点更多的选择; 还可以快速撤消重做NVRAM hack。

多台显示器和一个禁用的dGPU

话虽如此,如果您没有真正的硬件问题需要解决,gfxCardStatus(或尝试使用不同版本的原始版本-它们具有不同的选项/功能...)是最好的选择。它更加灵活,您仍然可以在运行的系统中轻松切换回dGPU或外部显示器。

无论是通过EFI / NVRAM还是通过gfxCardStatus:将具有可切换图形的Mac强制为“仅集成”,将使用内置的DisplayPort或Thunderbolt图形输出禁用外部显示模式。这是硬件设计的结果,该设计通过 dGPU 为外部监视器路由显示信号。对于该限制,不使用离散的而是使用外部图形适配器可能是一种解决方法。

EFI设置以启用与其他操作系统的集成

到现在为止应该很清楚,允许Linux等其他操作系统“查看”可切换图形设置的EFI设置与上述禁用 dGPU的设置不同。 用于在Linux和Windows的Macbook Pro 11,3上解锁Intel IGD的微型EFI程序:

用于在Linux和Windows的Macbook Pro 11,3上解锁Intel IGD的微型EFI程序。它可以通过未修改的EFI引导加载程序(例如Grub,rEFInd等)轻松地进行链加载。

如果您启动除Mac OS X以外的任何其他功能,则Macbook Pro 11,3型号的EFI将关闭Intel GPU。因此,需要通过伪造OS标识来进行一些操作,以使所有硬件都可访问。

所有荣誉归最初发现此黑客的Andreas Heider所有:https//lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html


4

延迟回答以下问题之一:您可能需要启用独立GPU才能使用外部显示器。原因应该在于GPU和视频输出的接线方式。

(我对PC笔记本电脑的图形切换技术的工作方式进行了半点猜测,半点推断。这并不是不合理的假设,即这些技术是基于GPU厂商与Apple的合作。仍然:盐。)

使用nVidia Optimus,设置是将笔记本电脑的内置显示器连接到集成GPU,而外部显示端口连接到离散GPU。如果您需要使用分立GPU来渲染东西到内置显示器,则分立GPU被“奴役”到集成的GPU。渲染调用首先转到集成GPU,如果启用了离散GPU,则将其转发到那里,然后检索结果以将其推送到显示器上。

如果连接了外部显示器,则对该显示器的渲染调用将直接转到离散GPU,因为该GPU始终可以将任何输出发送到该显示器。集成的GPU根本根本无法自行将视频输出发送到该端口。我认为甚至不可能将集成GPU“奴役”到离散的GPU中,因为首先,从设计角度来看,对于图形切换技术的目标而言,这毫无意义。即使这样,它仍然需要启用离散GPU,这对芯片故障的人没有帮助。


有趣!我知道Lenovo ThinkPad W530允许我从BIOS选项设置集成GPU,并且几乎可以肯定,这仍然让我可以挂接外部显示器。也不是100%肯定。
Meligy 2015年

就像我说的那样,我不确定上面的内容,因为我再也找不到原始的文章了。我所描述的布线可能不是唯一可能的配置,并且W530都具有集成的GPU手柄。但是,Macbook要求您为外部设备运行独立的GPU,这表明它确实按照我的描述进行了布线。
millimoose

您确实需要独立的GPU才能使用外部显示器。定期使用独立的GPU将产生更大的风扇噪音,并缩短主板寿命。我不再使用离散GPU。我使用台式机进行繁重的工作,但在旅行时仍然可以欣赏17英寸的内置大屏幕。
Foliovision '18

4

如果仍然有人在寻找实现此目的的方法,请查看此MacRumors论坛帖子。

我按照该论坛帖子中提到的步骤进行操作,而我的15英寸MacBook Pro 2011仅使用其集成显卡即可完美运行。毫无价值的AMD显卡已成功禁用。

https://forums.macrumors.com/threads/force-2011-macbook-pro-8-2-with-failed-amd-gpu-to-always-use-intel-integrated-gpu-efi-variable-fix。 2037591 / page-5#post-24511780

https://forums.macrumors.com/threads/force-2011-macbook-pro-8-2-with-failed-amd-gpu-to-always-use-intel-integrated-gpu-efi-variable-fix。 2037591 /


您尝试过哪个OSX / macOS版本?
huyz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.