对我来说,在UEFI模式下加载Nvidia驱动程序启动Ubuntu时,启动X时总是会导致众所周知的黑屏。
直到昨天!
在另一个线程中遇到了一些非常有前途的信息,有关在Mac上以UEFI模式安装Windows 7。那里的人们为Windows 7所需的int 10h旧式支持而苦苦挣扎,发现要解决此问题,可以执行无人值守安装(因为在安装过程中显示不起作用)。即使使用Nvidia驱动程序,也要在UEFI模式下成功启动Ubuntu的关键信息是,在启动EFI引导(移交给grub时)时,Apple的固件实际上并未将VGA卡激活为PCI-E总线主控。Windows的人解释了如何使用EFI Shell规避此问题,该EFI Shell加载Windows启动管理器,以便至少在无人参与模式下运行安装程序。这是个好消息:在GRUB中很容易做到这一点!
实际上,我现在在运行以UEFI模式(Xorg.0.log)启动的Ubuntu Vivid的MacBook Pro 7,1(2010年中)上键入此命令。但是,应该易于在任何提供GRUB EFI版本的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
长话短说,我们必须设置两个PCI-E寄存器:一个在视频卡上启用总线主控,另一个在视频卡的PCI-E桥上启用VGA支持。因此,它实际上与Nvidia驱动程序无关,并且取决于观点,甚至与Apple的过时/瘫痪/您将其称为EFI实现无关。
这就是我解决的方法。当然,在MacRumors论坛上主要是向工友们致敬。
免责声明以下说明按原样提供,不保证也不承担任何责任。自行承担风险!
1.使用Nvidia驱动程序以UEFI模式安装Ubuntu
我不会在这里进行详细介绍,因为网络上有很多文章向您展示了如何执行此操作,并且最终安装了Nvidia驱动程序后的nouveau驱动程序以热的方式运行您的计算机或黑屏(例如,www.rodsbooks.com) / ubuntu-efi)。
但是请注意,以下说明假定您已成功安装并以UEFI模式启动。您可以通过检查是否存在目录/ sys / firmware来进行验证,该目录仅在以EFI模式启动后才创建。
2.找到正确的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
看一下(1)显示行和(2)在该显示行之前的带有桥的行。记下桥接设备(此处为00:17.0)和显示设备(此处为04:00.0)的PCI-E总线ID(格式为XX:YY.Z),并记住是哪个。注意:根据您的Mac型号和版本,这些ID在您的计算机上可能不同。
3.创建GRUB脚本以在引导过程中设置PCI-E寄存器
使用sudo nano /etc/grub.d/01_enable_vga.conf启动文本编辑器,然后复制/粘贴以下内容。将 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
最后,使创建的文件可执行,并使用以下两个命令更新您的grub配置文件。
~$ sudo chmod 755 /etc/grub.d/01_enable_vga.conf
~$ sudo update-grub
4.重新启动并检查
重新启动后,如果将寄存器值设置为8(桥接设备)和7(显示设备),则一切正常:
~$ sudo setpci -s "00:17.0" 3e.b
08
~$ sudo setpci -s "04:00.0" 04.b
07
5.安装Nvidia驱动程序并享受!
使用Ubuntu的其他驱动程序 GUI安装Nvidia驱动程序。我建议按照本文介绍如何启用亮度控件,因为它不能立即使用。