MacBook Pro、EFI 和 Nvidia setpci ID

MacBook Pro、EFI 和 Nvidia setpci ID

我刚刚在我的 2010 MacBookPro 上安装了 Linux(使用 refind 进行三重启动),并在安装 nvidia 驱动程序后出现了臭名昭著的黑屏。

我尝试应用这里提到的解决方案:https://askubuntu.com/a/613573/488420没有成功。

我想知道我是否正确获得了 setpci 的 ID。有人可以确认吗?

我将其粘贴在 lshw 显示输出和我的 /etc/grub.d/01_enable_vga.conf 文件下方。

谢谢!

mint@mint-MacBookPro ~ $ sudo lshw -businfo -class bridge -class display
información del Bus  Dispositivo  Clase       Descripción
===========================================================
pci@0000:00:00.0                   bridge      Core Processor DRAM Controller
pci@0000:00:01.0                   bridge      Core Processor PCI Express x16 Root Port
pci@0000:01:00.0                   display     GT216M [GeForce GT 330M]
pci@0000:00:02.0                   display     Core Processor Integrated Graphics Controller
pci@0000:00:1c.0                   bridge      5 Series/3400 Series Chipset PCI Express Root Port 1
pci@0000:00:1c.1                   bridge      5 Series/3400 Series Chipset PCI Express Root Port 2
pci@0000:00:1c.2                   bridge      5 Series/3400 Series Chipset PCI Express Root Port 3
pci@0000:00:1c.3                   bridge      5 Series/3400 Series Chipset PCI Express Root Port 4
pci@0000:00:1e.0                   bridge      82801 Mobile PCI Bridge
pci@0000:00:1f.0                   bridge      Mobile 5 Series Chipset LPC Interface Controller
pci@0000:ff:00.0                   bridge      Core Processor QuickPath Architecture Generic Non-core Registers
pci@0000:ff:00.1                   bridge      Core Processor QuickPath Architecture System Address Decoder
pci@0000:ff:02.0                   bridge      Core Processor QPI Link 0
pci@0000:ff:02.1                   bridge      Core Processor QPI Physical 0
pci@0000:ff:02.2                   bridge      Core Processor Reserved
pci@0000:ff:02.3                   bridge      Core Processor Reserved

mint@mint-MacBookPro ~  sudo cat /etc/grub.d/01_enable_vga.conf
cat << EOF
setpci -s "00:01.0" 3e.b=8
setpci -s "01:00.0" 04.b=7
EOF

答案1

我最终解决了 setpci 不会改变 PCI-E 桥的值的问题。

如果您无法使用 setpci 命令设置 PCI-E brigde 寄存器的值,以便使 nVidia GeForce 驱动程序在您的 Apple MacBook 机器上运行,请尝试以下步骤:

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

lshw -businfo -class bridge -class display

[root@kernelLinux]# lshw -businfo -class bridge -class display
Bus info          Device      Class          Description
========================================================
pci@0000:00:00.0              bridge         MCP89 HOST Bridge
pci@0000:00:03.0              bridge         MCP89 LPC Bridge
pci@0000:00:15.0              bridge         NVIDIA Corporation
pci@0000:00:17.0              bridge         MCP89 PCI Express Bridge
pci@0000:02:00.0              display        MCP89 [GeForce 320M]

你需要提供PCI Express 桥接器和你的展示格式为 XX:XX.X

您的 ID 可以不同。

在此示例中,我们的 ID 是00:17.0用于 PCI-E 桥接和02:00.0用于显示[GPU]。

2.创建 GRUB 脚本

我们的脚本与上面提到的帖子略有不同。

我注意到了两件事。使用发行版(我的是 Centos)安装的 Grub2 安装过程不包含设定pcigrub 模块。这就是为什么 grub 在启动时不会更改寄存器的原因。因此,在我们运行更改寄存器的命令之前,必须将 setpci 模块加载到 grub 中。

下载 grub2-efi-modules

Ubuntu Linux

sudo apt-get install grub-efi-amd64-bin

Fedora Linux

sudo dnf install grub2-efi-modules

CentOS Linux

sudo yum install grub2-efi-modules

模块将安装在 /usr/lib/grub/x86_64-efi/ 中,但 setpci 模块文件需要存在于 /boot/efi/EFI/centos/x86_64-efi/ 中

创建 x86_64-efi 文件夹

sudo mkdir /boot/EFI/centos/x86_64-efi

将 setpci 模块文件复制到 grub2 文件夹中

sudo cp /usr/lib/grub/x86_64-efi/setpci.* /boot/EFI/centos/x86_64-efi

创建01_enable_vga.conf文件。

该文件应包含以下代码行:

不要忘记用您的值替换 PCI-bridge 的 00:17.0 和显示器 [GPU] 的 02:00.0。

sudo nano /etc/grub.d/01_enable_vga.conf

cat << EOF
insmod setpci
setpci -s "00:17.0" 3e.b=8
setpci -s "02:00.0" 04.b=7
EOF

然后修复权限

sudo chmod 755 /etc/grub.d/01_enable_vga.conf

并更新 /boot/efi/EFI/centos/grub.cfg

Ubuntu Linux

sudo update-grub

仅在其他发行版上执行此命令(在 update-grub 之后在 Ubuntu 上不需要):

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

3. 重启系统并检查寄存器

重启机器并检查它是否正常工作。再次用您的 ID 替换 ID。您的终端最终应显示 08(PCI-E 桥)和 07(GPU)。

sudo setpci -s "00:17.0" 3e.b
08

sudo setpci -s "02:00.0" 04.b
07

4.安装 nVidia 驱动程序

截屏:https://i.stack.imgur.com/nim4Z.jpg

答案2

将您的lshw输出与我原来的方法进行比较,似乎您使用的是不同的 Macbook Pro - 您的 Macbook Pro 较新,并且有一个集成显卡和一个独立显卡(NVIDIA GT 330M)。我怀疑我针对 Macbook Pro 7,1(2010 年中,仅配备 NVIDIA 320M)的解决方案是否适用于您的硬件。

实际上,我怀疑黑屏的根本原因是 EFI Linux 启动期间禁用了独立 NVIDIA 330 GT。因此,您最好使用不同的 GRUB 脚本明确启用独立 NVIDIA 卡。关于如何实现这一点的初步提示是https://discussions.apple.com/message/19065782#19065782https://help.ubuntu.com/community/UEFIBooting

由于我没有该特定硬件,所以我不确定这些是否是正确的设置。

答案3

您可以尝试取消注释spoof_osx_version中的选项refind.conf。这可能让视频在您的系统上工作,但我不能保证它会工作。请参阅refind.conf或在rEFInd 文档了解此选项如何运作的详细信息。

请注意,此选项的工作方式可能有所不同,具体取决于您启动 Linux 的方式——即通过 BIOS 模式 GRUB、EFI 模式 GRUB、直接启动内核等。另外,请注意,您所做的 GRUB 更改仅在您通过 GRUB 启动 Linux 时才有效。目前尚不清楚您是否这样做。请参阅启动 Linux 的方法rEFInd 文档的部分,了解有关从 rEFInd 启动 Linux 的不同方法的更多信息。

相关内容