MacBookPro4,1 nVidia 8600m 上的 Ubuntu 14.10 - 无法加载二进制驱动程序

MacBookPro4,1 nVidia 8600m 上的 Ubuntu 14.10 - 无法加载二进制驱动程序

为了延长我珍爱的 A1260 MacBook Pro 的使用寿命,我遇到了无数问题(包括 USB3.0、NTFS、iTunes、App Store 等),因此我决定从 MacOS 切换到 Xubuntu。这台机器功能强大,而且我在旧机器上运行过 Ubuntu,因此我非常希望它能正常工作。
它基本可以正常工作(我现在正在用它输入这些内容)。但是,无论我怎么尝试,nVidia 显卡都无法与二进制驱动程序配合使用。每当我尝试加载它们时,X 都会失败并在 kern.log 中生成以下内容:

Oct 26 18:53:15 Pegasus kernel: [   49.229756] nvidia 0000:01:00.0: irq 51 for MSI/MSI-X
Oct 26 18:53:15 Pegasus kernel: [   49.232512] NVRM: failed to copy vbios to system memory.
Oct 26 18:53:15 Pegasus kernel: [   49.232745] NVRM: RmInitAdapter failed! (0x30:0xffffffff:747)
Oct 26 18:53:15 Pegasus kernel: [   49.232752] NVRM: rm_init_adapter failed for device bearing minor number 0
Oct 26 18:53:15 Pegasus kernel: [   49.232777] NVRM: nvidia_frontend_open: minor 0, module->open() failed, error -5
Oct 26 18:53:18 Pegasus kernel: [   52.620786] nvidia 0000:01:00.0: irq 51 for MSI/MSI-X
Oct 26 18:53:18 Pegasus kernel: [   52.623552] NVRM: failed to copy vbios to system memory.
Oct 26 18:53:18 Pegasus kernel: [   52.623893] NVRM: RmInitAdapter failed! (0x30:0xffffffff:747)
Oct 26 18:53:18 Pegasus kernel: [   52.623901] NVRM: rm_init_adapter failed for device bearing minor number 0
Oct 26 18:53:18 Pegasus kernel: [   52.624534] NVRM: nvidia_frontend_open: minor 0, module->open() failed, error -5
Oct 26 18:53:24 Pegasus kernel: [   58.702055] nvidia 0000:01:00.0: irq 51 for MSI/MSI-X
Oct 26 18:53:24 Pegasus kernel: [   58.704792] NVRM: failed to copy vbios to system memory.
Oct 26 18:53:24 Pegasus kernel: [   58.705020] NVRM: RmInitAdapter failed! (0x30:0xffffffff:747)
Oct 26 18:53:24 Pegasus kernel: [   58.705028] NVRM: rm_init_adapter failed for device bearing minor number 0
Oct 26 18:53:24 Pegasus kernel: [   58.705055] NVRM: nvidia_frontend_open: minor 0, module->open() failed, error -5
Oct 26 18:54:06 Pegasus kernel: [  100.268217] nvidia 0000:01:00.0: irq 51 for MSI/MSI-X
Oct 26 18:54:06 Pegasus kernel: [  100.270803] NVRM: failed to copy vbios to system memory.
Oct 26 18:54:06 Pegasus kernel: [  100.271017] NVRM: RmInitAdapter failed! (0x30:0xffffffff:747)
Oct 26 18:54:06 Pegasus kernel: [  100.271023] NVRM: rm_init_adapter failed for device bearing minor number 0
Oct 26 18:54:06 Pegasus kernel: [  100.271042] NVRM: nvidia_frontend_open: minor 0, module->open() failed, error -5
Oct 26 18:54:39 Pegasus kernel: [  133.380791] [drm] Module unloaded

我的理解是,这是由于 EFI 架构不允许驱动程序从卡中加载固件,或类似原因。我现在在 Nouveau 上运行它,但由于我有一些想玩的游戏,我真的很想让 nVidia 驱动程序正常工作。我尝试了 331 套装和 nVidia 最新的独立驱动程序;都没有用。

我已经安装了 rEFInd,但这没有帮助;事实上,只有选择 EFI 选项,它才会启动。选择第二个常规选项后,rEFInd 窗口会立即挂起。Xubuntu 是这台机器上唯一的操作系统,我用 msdos 分区表格式化了磁盘。它还启用了 FDE。

我尝试了一些内核标志;nomodeset这很重要。我也尝试过,nopat但没有帮助。

我的基本理解是 BIOS 兼容性在 MBP 硬件上不起作用。由于 Xubuntu 是其上唯一的操作系统,因此我可以毫无问题地重新配置系统,直到它正常工作(如果可能的话);一些搜索表明这是一个非常棘手的问题,nVidia 已经放弃处理了。Red Hat 已关闭了一张票,因为无法修复。

我对此感到困惑。有什么办法可以让这个东西工作吗?

  • 硬件:Core 2 Duo T9500 2.6GHz、4GB RAM、nVidia Geforce 8600M GT 512MB
  • 软件:Xubuntu 14.10 x86_64

答案1

我发现有一种方法可以做到这一点——在这里找到线索之后:http://korrekt.org/page/注意:如何在Macbook7上安装Ubuntu14.04,1#这台Macbook上的EFI问题是什么.3F

(K)ubuntu 不会在安装过程中询问您是否需要 EFI 或 BIOS 模式。它只会使用您用于启动安装程序的相同模式。一旦您以这种模式安装了 Ubuntu,就很难更改。事实上,这两种模式都有各自专用的引导加载程序,它们的工作方式不同(BIOS 的软件包“grub-pc”和 EFI 的软件包“grub-efi-amd64”)。

如何在 BIOS 模式下启动。因此,您必须确保安装程序以正确的模式启动。对我来说,这是通过从 CD/DVD 启动来实现的。

...

至少在我的引导加载程序中,似乎无法从非 EFI USB 启动。我可以使用 USB 启动,主要是为了使用实时系统尝试修复我的安装,但这些总是 EFI USB 启动,然后以 EFI 模式启动。

解决方案是刻录 CD/DVD,而不是使用 USB 记忆棒。这样确实可以强制 Mac 固件以 BIOS 模式启动,Ubuntu 将从中得知它应该安装 GRUB 的 BIOS 版本。一切都从那里开始。但是,根据我的理解,如果不完全重新安装,就无法做到这一点。

我希望这对其他人有帮助。

答案2

对于像我一样经过搜索来到这里的人(这个结果最终让我找回了我的 Nvidia 二进制驱动程序)...

较早的答案是“...如果不完全重新安装就不可能做到这一点。” 但无论如何我都想尝试一下,结果发现这相当容易。

可以改回 BIOS Grub没有重新安装。

我按照以下步骤在我的旧 Macbook Pro 4,1(A1261,17 英寸版本)上从 EFI Grub 切换到 BIOS Grub:

  • 安装grub-pc
  • 删除grub-efi
  • 我在这里至少重启了一次,因为我第二天又回来了
  • 使用parted,删除 EFI 分区
  • update-grub
  • grub-install /dev/sda将 Grub 安装到 MBR
  • (我不知道前两个步骤是否有多余的。因为我有点手忙脚乱,所以我都做了。)
  • 重启
  • 确认不存在/sys/firmware/efi
  • 安装 Nvidia 二进制驱动程序(我在这台机器上成功使用了 304 版本)

后来,我想起来也许我应该在分区 2(这是第一个分区,现在我已经删除了 EFI 分区 1)上设置“启动”标志。这是启用了 /boot 文件系统的分区。它工作正常没有启动标志已设置,但我还是设置了它。

这是从 U 盘安装的相当干净的 Linux Mint 17.2。Mint 17.2 基于 Ubuntu 14.04。

Linux 是这台机器上唯一的操作系统。没有 OSX,没有 rEFIt/rEFInd。只有裸机 Mint 17.2 安装。

通常的“先备份!”建议适用。:D

我希望这可以帮助别人。

答案3

我通过从 rEFInd 链式加载 GRUB2 解决了同样的问题:

  • 删除grub-efi并安装grub-pcgdisk

  • 使用gdisk,创建混合 MBR(“r恢复和转换选项”->“makeHybrid mbr”)。当提示您设置 Linux 分区的可启动标志时,选择Y

  • 将 GRUB2 安装到混合 MBR 中:grub-install --force /dev/sdX

现在重新启动,并在 rEFInd 中选择“从整个磁盘卷启动 Linux(旧版)”。

相关内容