0 linux graphics-card drivers multi-boot nvidia-graphics-card
前几天,当我遇到问题时,我试图多引导 Windows 8、Xubuntu 和普通的旧 Ubuntu。我使用 EVGA 750 TI SC,我认为由于法律问题,Linux 不支持开箱即用的 Nvidia 驱动程序。我当时不知道这一点,我什至无法安装操作系统(我已经安装了 Windows 8,接下来我正在尝试 Ubuntu)。
在 GRUB 启动菜单后,我一直收到黑屏,但我发现这可能是视频驱动程序问题。因此,我将显示器连接到主板的内置图形端口,然后取出 750 TI。这有效,我能够安装 Ubuntu 并启动到一切正常。我在 Ubuntu 和 Xubuntu 上都安装了 Nvidia 驱动程序,但是只要我没有在启动选项中启用“nomodeset”,我的 Nvidia 卡就无法工作。我认为这很好,直到我尝试了基准测试,当我看到 Linux 认为我在使用 VMware 时,即使在最低设置下玩 Minecraft 也给了我 10-15 fps。
那么我该如何解决这个问题?

由于法律问题,linux 不支持开箱即用的 Nvidia 驱动程序
虽然出于完全不同的原因,这在技术上是正确的,但Ubuntu(不仅仅是Linux;它是 Linux 加上许多其他(单独的)东西混在一起)确实将专有的 Nvidia 和 AMD 图形驱动程序作为其发行版的默认部分提供。事实上,安装它们是相当简单的,你不必做任何太技术性的事情就可以成功地做到这一点。我不确定您尝试安装 Nvidia 图形驱动程序采取了哪些步骤,但听起来您没有使用官方支持的方法。
linux 以为我在使用 vmware
不。VMware 实际上为开源图形堆栈(简称 OSGS)贡献了大量代码。因为 Mesa 的创建者是 VMware 员工(他在创建 Mesa 时不是,但现在是),所以如果您使用 OSGS,在 OpenGL 供应商字符串中经常会看到“VMware”这个名字。OSGS 实际上由以下组件组成:
Mesa - 一个用户空间 OpenGL 实现,包含基于软件和硬件加速的 OpenGL 实现。最近还实现了一些其他 API,例如 OpenCL,可能是 Direct3D 9、OpenVG 等。基本上,Mesa 是采用开源内核驱动程序的公开硬件并使其绘制 3d 内容的东西。在 Mesa 中,有 OpenGL 的硬件特定实现,它们要么基于经典Mesa(目前只有 Intel GPU 驱动程序基于经典 Mesa),要么基于Gallium3D,后者是 Mesa 的一部分,提供了很多共享可用于相对快速地为新硬件提供 OpenGL 支持的代码。
Linux 内核- 内核包含直接渲染管理器(首字母缩写词 DRM,但与数字限制管理无关),其中包含所有支持硬件的 OSGS 的“内核端”组件。
Xorg 显示服务器- 也称为“X”、“X11”或其背后的组织“X.Org”,这是一个提供基本输入(鼠标/键盘/操纵杆)和显示基础结构的用户空间组件。程序使用 TCP 或 UNIX 域套接字连接到 Xorg 显示服务器,并向服务器提交绘图命令。然后服务器使用显示设备扩展(DDXes) 将绘图命令传递给视频硬件。
DDXes - DDXes 实现了发送到 Xorg 服务器的绘图命令的实际“后端”。DDX 可以使用通用(非加速)VESA接口(所有显卡共享)或硬件加速接口,例如nouveau、intel、 或radeon,分别支持 Nvidia、Intel 和 AMD 图形处理器,通过在直接渲染架构(DRI)用户空间的组成部分。DRI 基本上与内核的 DRM 对话以向硬件提交加速绘图命令。未加速的 DDX 非常缓慢,因此如果可以,您应该始终使用加速的 DDX。
libdrm - 用户空间组件,基本上是 Linux 内核的 DRM API 的瘦包装器。硬件加速的 DDXes 和 Mesa 都使用 libdrm。
所以不,“Linux”(不管这意味着什么;Mesa 不是 Linux 内核的一部分)实际上并不认为您在 VMware 下运行。相反,最可能的情况是您对专有 Nvidia 图形驱动程序的错误配置导致操作系统回退到llvmpipeMesa 后端,这是在 CPU 上进行软件渲染的最大努力尝试(但与硬件加速驱动程序)。但是,如果您不发布完整的 OpenGL 版本字符串,就不可能知道您到底看到了什么。您可以使用该glxinfo命令显示您的 OpenGL 版本字符串(您可能必须先安装一个软件包)。
只要我没有在启动选项中启用“nomodeset”,我的 nvidia 卡就无法工作。
让我尝试通过重写来解析这个令人困惑的句子:
如果我做我的启动选项启用“nomodeset”,那么我的Nvidia显卡做的工作。
你的情况是这样,还是你的意思是别的?
如果这是真的,你应该知道它nomodeset实际上是告诉OSGS驱动程序启用用户模式设置,这主要是破坏 3D 加速。
澄清:
在桌面 GNU/Linux 上有两种常用的图形驱动程序堆栈:
在桌面 GNU/Linux 上有两种常用的模式设置:
用户模式设置:这是专有驱动程序支持的唯一模式设置类型。过去,这也是 OSGS 支持的唯一模式设置类型。但是近年来 OSGS 越来越倾向于内核模式设置,以至于人们普遍认为用户模式设置是一种不受支持的配置,并且在您使用 OSGS 时可能会中断。但是,用户模式设置仍然可以很好地与专有驱动程序配合使用,前提是 OSGS 没有受到影响。
内核模式设置:仅OSGS 支持。如果您打算使用专有驱动程序,如果 OSGS 的内核组件(直接渲染管理器)已启动内核模式设置,则不能使用它们。您必须重新启动系统才能解决此问题。
不幸的是,专有图形驱动程序是通过践踏OSGS 组成的文件来安装的。例如,该文件/usr/lib/libGL.so(我在这里过度简化了确切的文件名)是系统的默认 OpenGL 实现。默认安装会将这个文件“链接”到 OSGS -- Mesa,具体来说。一旦您安装了专有图形驱动程序,该文件将改为“链接”到专有驱动程序的特定 libGL 实现,而不是 Mesa。
专有图形安装过程的另一部分是更改一些配置文件,以便 OSGS 的内核组件不会尝试加载。如果 OSGS 的内核组件加载,它可能会尝试控制图形硬件,这将阻止专有图形驱动程序自己的内核模块成功加载,并且您的系统最终处于“损坏”状态。
事实上,由于图形堆栈的组件化架构(专有和 OSGS 具有相似的架构),存在大量可能的“损坏”配置,它们要么根本不提供任何显示输出,要么会限制你到纯文本终端,或者将加载 Xorg 但不提供 3d 加速。
以下是一些损坏配置示例的非详尽列表:
您从 OSGS 加载了内核 DRM,但您的 libGL 来自专有图形驱动程序。
您加载了专有图形驱动程序内核模块和 libGL,但您的 Xorg DDX 来自 OSGS。
您从 OSGS和专有图形驱动程序内核模块加载了内核 DRM ,但 OSGS 内核 DRM“胜出”(获得对硬件的独占控制权)。同时,您的 DDX 和 libGL 都来自专有图形驱动程序。
在以下情况下可能会发生这些类型的损坏配置:
专有显卡驱动安装工具存在BUG;
专有图形驱动程序需要特殊定制才能与您的 GNU/Linux 发行版配合使用,但您正在安装驱动程序的“vanilla”版本(从互联网上的 nvidia.com 或 amd.com 下载),而不是使用您的发行版的安装包管理器。该发行版包装的版本会被你的Linux发行版测试,实际上是保证是功能,如果你安装它的正确途径。
专有图形驱动程序的安装方式需要特定类型的 OSGS 安装,但您的 OSGS 比预期的新/旧,因此文件或配置不匹配,导致其中一个损坏的场景以上。
您使用的专有图形驱动程序版本太新或太旧。通常,最好使用与您正在运行的 Linux 发行版大约同时(至少在 6 个月内)发布的专有驱动程序版本。例如,如果您正在运行 Ubuntu 10.04(从 2010 年 4 月开始),您不会想要安装 2014 年 9 月发布的 Nvidia 驱动程序。另一方面,您可能希望从运行最新版本的 Ubuntu 开始;这是非常不可取的,因为在最近几年取得的所有增强的运行旧版本。
确保您正在运行 Ubuntu/Xubuntu 14.10——这是撰写本文时的最新版本(20 14 / 10 = 十月)。有充分的理由,任何认真对待 (x)Ubuntu 上的 3d 加速的人都将运行最新版本。事情正在迅速变化,您将无法在旧版本上获得良好的体验。
根据我认为您可能的技术经验水平,我建议您执行以下操作:
从系统中擦除 Xubuntu 和 Ubuntu。
如果您还没有 Ubuntu 14.10,请下载它。获取 64 位版本。不要打扰32位。
安装它。它应该“Just Work”并让您进入桌面。
转到“其他驱动程序”小程序,就像建议的其他答案一样,并获取 Nvidia 专有驱动程序。
重启。
| 归档时间: |
|
| 查看次数: |
610 次 |
| 最近记录: |