我的问题很大,尽管导致这个问题的原因非常具体,而且我还有其他相关问题。所以这里是完整的故事。
介绍
我目前在一台配有 Nvidia 显卡的经典塔式机上运行带有两个屏幕的 Ubuntu 20.04(我认为计算机的规格在这里无关紧要,所以我将跳过这一点)。其中一个屏幕插入 VGA,另一个插入 DisplayPort。一切都很好,直到我尝试了一些 CUDA 并安装了 CUDA Toolkit 11.7。
问题
此时,VGA 屏幕是计算机唯一识别的屏幕,另一个屏幕无法识别,甚至无法检测到。如果我拔下 VGA 并重新启动,则会使用 DisplayPort,但屏幕分辨率会严重偏离。我尝试让它们都显示一些内容,查看 nvidia 文档和所有用户问题(我知道 Nvidia 和 Ubuntu 之间存在很多问题,以前也遇到过),但没有任何效果。所以我卸载(清除)了工具包、驱动程序和其他东西。仍然没有用。然后我意识到安装已将我的内核从 5.13-... 更改为 5.15...(这很奇怪,因为 CUDA 文档说至少 5.13.0-30 没问题。无论如何)。
所以我将内核改回 5.13...(如果你问的话,是 5.13.0-51.58),然后,两个屏幕都工作正常。
问题)
对我来说,这是一个驱动程序问题,我不明白为什么内核更改可能会解决这个问题。
所以问题如下
- 为什么?为什么?(我不知道这算不算一个真正的问题)
- 这可能是内核的一个错误吗?(尽管我对此表示怀疑)
- 我是否忘记清除一些适用于 5.15.但不能适用于 5.13..的故障驱动程序,并且在降级内核时进行了更新?
- 我现在看到,'nouveau' 驱动程序正在使用中(通过
lspci
),我不记得在 5.15 中看到过它。是否有可能强制在内核 5.15 中使用它?(答案是肯定的,问题是“如何?”)
编辑 :
进行一些测试后,似乎导致我出现该错误的软件包是nvidia-gds
,它会安装 Linux 内核 5.15 以及其他一些内容。我在更改内核之前清除了所有这些内容,因此我很确定是内核更改使我的两个屏幕再次工作。我重新安装了 cuda 工具包,它工作正常,没有 GDS。我仍然不知道为什么。
答案1
为什么?为什么?(我不知道这算不算一个真正的问题)
一般来说,要使具有 Nvidia 专有图形驱动程序和 CUDA 的系统正常工作,一切都必须兼容。可能有上千种不同的方法来匹配 Nvidia、CUDA 和内核包,但只有其中一种是最好的,那就是匹配一切。
将不匹配的 Nvidia 和 CUDA 软件包拼凑在一起会带来麻烦。此外,Nvidia 专有图形驱动程序和 CUDA 软件包都必须与 Linux 内核版本兼容。将不匹配的 Nvidia、CUDA 和内核软件包拼凑在一起也会带来麻烦。所有这些软件包都在默认的 Ubuntu 存储库中,因此如果您坚持使用默认的 Ubuntu 存储库,则所有已安装的软件包将始终相互兼容。
这可能是内核的一个错误吗?
在这种情况下,这种情况不太可能发生。我发现这里存在太多用户错误累积的可能性。
我是否忘记清除一些适用于 5.15 的错误驱动程序,但没有清除适用于 5.13 的错误驱动程序,并且在降级内核时进行了更新?
查看日志,日志会告诉你哪些包被清除了。在这种情况下,我总是先卸载所有 Nvidia 包,这样我就可以重新开始工作。这是从一开始就避免引入错误源的最简单的方法。
我现在看到,'nouveau' 驱动程序正在使用中(通过
lspci
),我不记得在 5.15 中看到过它。是否有可能强制在内核 5.15 中使用它?(答案是可以的,问题是“如何做?”)
卸载 nouveau 毫无意义,因为如果您在安装专有 Nvidia 图形驱动程序时出错,它就是您的故障安全驱动程序。无论您做什么,都请保留 nouveau 的安装。如果专有 Nvidia 图形驱动程序出现问题,Ubuntu 将尝试使用 nouveau 驱动程序启动。