大家好,欢迎来到IT知识分享网。
目录
三、如果我的初始 ramdisk 映像包含 Nouveau 怎么办?
NVIDIA 的驱动程序存在开源和闭源两种版本。
参考官方文件Chapter 8. Common Problems中的8.1
1. 开源驱动:Nouveau
Nouveau 是由社区开发的开源 NVIDIA 显卡驱动程序。它是 X.Org 的一部分,支持大多数 NVIDIA 显卡。Nouveau 的优点是开源且与 Linux 内核和其他开源组件集成良好,但它的缺点是性能通常不如 NVIDIA 官方驱动,并且不支持最新的 NVIDIA 显卡和一些高级功能。
- 优点:
- 开源,完全透明。
- 与内核和其他开源组件集成良好。
- 通常在大多数 Linux 发行版中默认包含。
- 缺点:
- 性能不如官方闭源驱动。
- 对最新硬件的支持滞后。
- 缺乏某些高级功能,例如 CUDA 支持。
2. 闭源驱动:NVIDIA 官方驱动
NVIDIA 提供的闭源驱动程序是专有的,提供更好的性能、最新的硬件支持和更多高级功能,例如 CUDA 和图形加速。NVIDIA 官方驱动在性能和功能上都优于 Nouveau。
- 优点:
- 最佳性能和稳定性。
- 最新硬件支持。
- 支持高级功能,如 CUDA 和图形加速。
- 缺点:
- 闭源,透明度不如开源驱动。
- 需要手动安装和配置(尽管大多数 Linux 发行版提供了简化安装的工具)。
一、什么是 Nouveau,为什么我需要禁用它?
Nouveau 是一款用于 NVIDIA GPU 的显示驱动程序,它是通过对 NVIDIA 驱动程序进行逆向工程而开发的一个开源项目。它随许多当前的 Linux 发行版一起提供,是 NVIDIA 硬件的默认显示驱动程序。它不是由 NVIDIA 开发或支持的,并且与 NVIDIA 驱动程序无关,除了 Nouveau 和 NVIDIA 驱动程序都能够驱动 NVIDIA GPU 之外。一次只能有一个驱动程序控制一个 GPU,因此如果 GPU 由 Nouveau 驱动程序驱动,则必须在安装 NVIDIA 驱动程序之前禁用 Nouveau。
Nouveau 在内核中执行模式集。这会使禁用 Nouveau 变得困难,因为内核模式集用于显示帧缓冲区控制台,这意味着即使 X 未运行,Nouveau 也会被使用。只要 Nouveau 正在使用,其内核模块就无法卸载,这将阻止 NVIDIA 内核模块加载。因此,在安装 NVIDIA 驱动程序之前,务必确保已禁用 Nouveau 的内核模式集。
二、如何阻止 Nouveau 加载和执行内核模式集?
防止 Nouveau 加载和执行内核模式集的一个简单方法是将模块加载器的配置指令添加到系统模块加载器配置目录之一中的文件中:例如/etc/modprobe.d/
或/usr/local/modprobe.d
。从技术上讲,这些配置指令可以添加到这些目录中的任何文件中,但这些目录中的许多现有文件是由您的分销商提供和维护的,他们可能会不时提供更新的配置文件,而这些文件可能会与您的更改相冲突。因此,建议创建一个新文件,例如 ,/etc/modprobe.d/disable-nouveau.conf
而不是编辑现有文件之一,如流行的/etc/modprobe.d/blacklist.conf
。请注意,某些模块加载器只会在名称以 结尾的文件中查找配置指令.conf
,因此如果您要创建新文件,请确保其名称以 结尾.conf
。
无论您选择创建新文件还是编辑现有文件,都需要添加以下两行:
blacklist nouveau options nouveau modeset=0
第一行将阻止 Nouveau 的内核模块在启动时自动加载。它不会阻止手动加载模块,也不会阻止 X 服务器加载内核模块;请参阅下面的“如何阻止 X 服务器加载 Nouveau?”。
第二行将阻止 Nouveau 执行内核模式设置。如果没有内核模式设置,则可以卸载 Nouveau 的内核模块(如果意外或故意加载)。
添加这些配置指令后,您需要重新启动系统才能使其生效。
如果 nvidia-installer 检测到系统正在使用 Nouveau,它将建议创建这样的 modprobe 配置文件来禁用 Nouveau。
三、如果我的初始 ramdisk 映像包含 Nouveau 怎么办?
一些发行版将 Nouveau 包含在初始 ramdisk 映像中(本文档中以下称为“initrd”,有时也称为“initramfs”),以便 Nouveau 的内核模式集可以在启动过程中尽早发生。这对那些希望阻止模式集发生的人来说是一个额外的挑战,因为模式集将在系统在 initrd 内执行时发生,在处理模块加载器配置文件中的任何指令之前。
如果您有一个加载 Nouveau 驱动程序的 initrd,您还需要确保在 initrd 中禁用 Nouveau。在大多数情况下,重建 initrd 将获取模块加载器配置文件,包括任何可能禁用 Nouveau 的文件。请查阅您的发行版文档以了解如何重建 initrd,因为不同的发行版具有不同的工具来构建和修改 initrd。一些流行的发行版 initrd 工具包括:dracut
、mkinitrd
和update-initramfs
。
一些 initrd 可以理解该rdblacklist
参数。在这些 initrd 上,作为重建 initrd 的替代方法,您可以将该选项添加 rdblacklist=nouveau
到内核的启动参数中。在不支持的 initrd 上rdblacklist
,可以通过将该选项添加nouveau.modeset=0
到内核的启动参数中来阻止 Nouveau 执行内核模式设置。请注意,nouveau.modeset=0
将阻止内核模式设置,但可能不会阻止 Nouveau 加载,因此重建 initrd 或使用rdblacklist
可能比使用更有效 nouveau.modeset=0
。
对默认内核启动参数的任何更改都应在引导加载程序的配置文件中进行,以便每次系统启动时这些选项都会传递到内核。请查阅发行版的文档以了解如何配置引导加载程序,因为不同的发行版使用不同的引导加载程序和配置文件。
四、如何阻止 X 服务器加载 Nouveau?
将 Nouveau 列入黑名单只会阻止它在启动时自动加载。如果 X 服务器作为正常启动过程的一部分启动,并且该 X 服务器使用 Nouveau X 驱动程序,则 Nouveau 内核模块仍将被加载。如果发生这种情况,您可以在停止 X 服务器后使用“modprobe -r nouveau”卸载 Nouveau,只要您注意防止它执行内核模式设置即可;但是,最好首先确保 X 不会加载 Nouveau。
如果您的系统未配置为在启动时启动 X 服务器,那么您只需在重新启动后运行 NVIDIA 驱动程序安装程序即可。否则,最简单的方法是编辑 X 服务器的配置文件,以便 X 服务器使用与您的显卡兼容的非模式设置驱动程序,例如驱动程序vesa
。然后您可以停止 X 并照常安装驱动程序。请查阅 X 服务器的文档以确定 X 服务器配置文件的位置。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/158890.html