Mac 上带有 EFI 的专有 NVidia 驱动程序,以防止过热

sto*_*ack 16 nvidia overheating macbook uefi drivers

从 2010 年年中开始,我在白色 MacBook 上安装了双启动 Mac OS X 10.8 和 Kubuntu 12.10 64x。(型号标识符: MacBook7,1 。如果重要的话,我已将 RAM 从 2GB 升级到 8GB。)我的 Kubuntu 上安装了专有的 NVIDIA 驱动程序。

从 Kubuntu 中的温度监视器小部件来看,我的温度似乎在 10 左右?与 Mac OS X 下相比更热。在 Mac OS XI 中使用温度监视器。我将 Kubuntu 中的 CPU Core 0 和 CPU Core 1 值与 Mac OS X 中的 CPU Core 1 和 CPU Core 2 值进行比较。

10?more 可能不是一个非常大的过热灾难,但是当我在我的电脑上做一些非常激烈的事情时(比如玩一会儿军团要塞 2),我的 CPU 是 ~70?在 OSX 上,在 Kubuntu 上玩一会儿时,我的 CPU 是 ~80?。我担心较高的温度可能会缩短笔记本电脑的使用寿命。

我做了一些研究,发现可能是我在 BIOS 模式下安装它,导致发热。我无法在 EFI 模式下安装它,因为那时专有的 NVidia 驱动程序不起作用(已经尝试过,它给出了黑屏)。有谁知道如何让专有的 NVidia 驱动程序在 EFI 模式下工作?

编辑:好的,即使没有办法在 EFI 模式下使用专有的 nvidia 驱动程序(似乎没有办法做到这一点,我没有得到任何答案),如果加热可以在 BIOS 模式下修复。我怎样才能至少在 BIOS 模式下修复加热问题?我尝试将它放在我的 xorg.conf 中的 Device 部分以启用省电:

     Option         "DPMS" "1"
     Option         "RegistryDwords" "EnableBrightnessControl=1; PowerMizerEnable=0x1; PerfLevelSrc=0x2233; PowerMizerDefault=0x3"
Run Code Online (Sandbox Code Playgroud)

……但这没有用。

哦,顺便说一下,我没有使用 rEFIt,可能是这样吗?

And*_*eas 25

对我来说,在加载了 Nvidia 驱动程序的 UEFI 模式下启动 Ubuntu,也总是在启动 X 时导致众所周知的黑屏。

直到昨天!

另一个线程中遇到一些关于在 Mac 上以 UEFI 模式安装 Windows 7 的非常有希望的信息之后。那边的人一直在努力解决 Windows 7 所需的 int 10h 传统支持,并发现为了解决这个问题,可以执行无人值守安装(因为在安装过程中显示不起作用)。即使使用 Nvidia 驱动程序也能在 UEFI 模式下成功启动 Ubuntu关键信息是,在 EFI 启动时(移交给 grub),Apple 的固件实际上并未将 VGA 卡激活为 PCI-E 总线主控。Windows 的人解释了如何使用 EFI shell 来绕过这个问题,该 shell 链接加载 Windows 启动管理器,以便至少在无人值守模式下运行安装程序。好消息是:在 GRUB 中很容易做到这一点

事实上,我现在正在运行以 UEFI 模式 ( Xorg.0.log )启动的 Ubuntu Vivid 的 MacBook Pro 7,1(2010 年中)上键入此内容。但是,它应该很容易在任何提供 EFI 版 GRUB 的 Linux 发行版上运行或调整,例如 Ubuntu 14.04.2 LTS。

~$ dmesg | grep -i efi
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.19.0-15-generic.efi.signed root=UUID=7843c644-e6f4-4d64-9317-0b854cb524f2 ro quiet splash intremap=off acpi_osi=! acpi_osi=Darwin nomodeset vt.handoff=7
[    0.000000] efi: EFI v1.10 by Apple
[    0.000000] efi:  ACPI=0xbf96a000  ACPI 2.0=0xbf96a014  SMBIOS=0xbf71a000
Run Code Online (Sandbox Code Playgroud)

长话短说,我们必须设置两个 PCI-E 寄存器:一个在显卡上启用总线控制,另一个在显卡的 PCI-E 桥上启用 VGA 支持。因此,它实际上与 Nvidia 驱动程序无关,并且取决于观点,甚至与 Apple 过时/残缺/您将其命名为 EFI 实现无关。

我就是这样解决的。当然,获得荣誉的主要是 MacRumors 论坛上的那些人。 免责声明以下说明按原样提供,不作任何保证,也不承担任何责任。这样做的风险由您自己承担!

  1. 使用 Nvidia 驱动程序在 UEFI 模式下安装 Ubuntu

我不会在这里详细介绍,因为网络上有很多文章向您展示了如何执行此操作,并且在安装 Nvidia 驱动程序(例如www.rodsbooks.com /ubuntu-efi)。

但请注意,以下说明假定您已成功安装并在 UEFI 模式下启动。您可以通过检查目录/sys/firmware是否存在来验证,该目录仅在以 EFI 模式启动后创建。

  1. 找到正确的 PCI-E 总线标识符

我们需要显卡的 ID 和它所连接的 PCI-E 桥接器。在 shell 中发出以下命令:

~$ sudo lshw -businfo -class bridge -class display
pci@0000:00:00.0              bridge         MCP89 HOST Bridge
pci@0000:00:03.0              bridge         MCP89 LPC Bridge
pci@0000:00:0e.0              bridge         NVIDIA Corporation
pci@0000:00:15.0              bridge         NVIDIA Corporation
pci@0000:00:16.0              bridge         NVIDIA Corporation
pci@0000:00:17.0     >!!<     bridge         MCP89 PCI Express Bridge
pci@0000:04:00.0     >!!<     display        MCP89 GeForce 320M
Run Code Online (Sandbox Code Playgroud)

看一看 (1) 显示显示的行和 (2) 显示行之前带有桥的行。记下桥接设备(此处为 00:17.0)和显示设备(此处为 04:00.0)的 PCI-E 总线 ID(格式 XX:YY.Z)并记住哪个是哪个。注意:这些 ID 在您的机器上可能会有所不同,具体取决于您的 Mac 型号和版本。

  1. 创建用于在引导期间设置 PCI-E 寄存器的 GRUB 脚本

使用sudo nano /etc/grub.d/01_enable_vga.conf启动文本编辑器并复制/粘贴以下内容。确保将所有 4 行粘贴到该文件中! 00:17.0替换为步骤 2 中记录的桥接设备的 PCI-E ID。 04:00.0替换为步骤 2 中记录的显示设备的 PCI-E ID。

cat << EOF
setpci -s "00:17.0" 3e.b=8
setpci -s "04:00.0" 04.b=7
EOF
Run Code Online (Sandbox Code Playgroud)

最后,使用以下两个命令使创建的文件可执行并更新您的 grub 配置文件。

~$ sudo chmod 755 /etc/grub.d/01_enable_vga.conf
~$ sudo update-grub
Run Code Online (Sandbox Code Playgroud)
  1. 重新启动并检查

如果在重新启动后,寄存器值已设置为 8(桥接设备)和 7(显示设备),则一切正常:

 ~$ sudo setpci -s "00:17.0" 3e.b
 08
 ~$ sudo setpci -s "04:00.0" 04.b
 07
Run Code Online (Sandbox Code Playgroud)
  1. 安装Nvidia驱动程序并享受!

使用 Ubuntu 的附加驱动程序GUI 来安装 Nvidia 驱动程序。我建议遵循这篇关于如何启用亮度控制的文章,因为它不是开箱即用的。