安装新的 NVIDIA 驱动程序失败

安装新的 NVIDIA 驱动程序失败

我希望这就像我在 SE 上找不到的一个已经回答的问题一样简单。

因此,我有一个运行 CentOS 6 的 LTSP 服务器。LTSP 映像和服务器的 Linux 内核版本相同:是 2.6.32-504.8.1.el6.x86.64 (uname -r),yum 是最新的两者也是如此。许多无盘客户端配备 nVidia Quadro FX570 卡和双显示器,我们最近将其替换为 Quadro K620。我的问题是尝试安装新的 nVidia 驱动程序 v346.59。

行动和结果概述:

  • chroot 到 LTSP x86_64
  • 运行 nVidia 驱动程序 .run 文件并回答提示(选择“是”以包含 DKMS)。
  • 驱动程序文件 (nvidia.ko) 构建
  • 安装失败(这并不奇怪,因为服务器没有 GPU)。
  • 手动将 /opt/ltsp/x86_64/usr/src/nvidia-356.59/nvidia.ko 复制到 /lib/modules/ uname -r/extra
  • 回声“nouveau”>> /etc/modprobe.d/nouveau.conf
  • cd /boot 和 mkinitrd 并运行内核(生成 initram.img)。
  • 确保 vmlinuz.ltsp 指向正确的内核,initrd.ltsp 指向新制作的 initramfs
  • ltsp 重新包装内核
  • 退出 chroot
  • 作为 root ltsp-update-kernel /opt/ltsp/x86_64
  • 启动瘦客户端至运行级别 3
  • 运行X-配置
  • 验证 xorg.conf.new 包含带有“nvidia”驱动程序的设备。
  • 启动 X:均使用 startx 和 X -conf xorg.conf.new

现在,问题:X11 加载,有一些关于键盘的小抱怨,然后挂起并显示空白/黑屏。 X Kill 命令工作正常,X 应用程序无法启动。

我怀疑 nvidia.ko 没有包含在 initramfs 中,因为:

lsinitrd  /boot/initram.img | grep nvidia

不产生输出。

我还怀疑 nouveau 黑名单有问题,因为:

lsinitrd /boot/initram.img | lsinitrd /boot/initram.img | grep 新

uname -r包含安装在 /lib/modules/ /中的所有 .ko 文件

另外,作为参考,我手动使用 dkms 来制作/安装 nvidia.ko 模块,具有相同的结果。

如果有人能帮助我理解为什么 initrd 不包含 nvidia.ko 驱动程序以及为什么 X 卡在空白屏幕上,我会非常高兴。对于没有实际的错误消息,我深表歉意 - 该机器位于不同的网络上,我无法复制/粘贴到它。

编辑:一些额外的改进/注释。

  • 当我以运行级别 3 启动瘦客户端并运行 startx 时,停止 X 服务器后,如果我查看 /var/log/X.org.conf,我会看到 nvidia 模块正在初始化,并且它正确识别了 K620 设备以及已连接戴尔显示器。

如果是这种情况,问题是否仍然与 nvidia 模块与正在运行的内核不兼容有关?或者 xinitrc 配置不正确?或者其他问题?

答案1

xinitrc请意识到这个问题与或您的 XOrg 设置无关。我坚持我的声明,您可以:

  1. 将 NVIDIA 驱动程序冻结在 3.11.x,因为这是支持 2.6 系列内核的最后一个驱动程序,或者:
  2. 将您环境中的内核至少更新到 3.11。

请参阅下面的理由。


该条目位于我的变更日志中:

2013 年 9 月 5 日; Jeroen Roovers nvidia-drivers-173.14.38.ebuild:将兼容内核提升到 3.11。

这表明即使是较旧的驱动程序集的标准也已提高到 3.11,并且这段代码位于 346.59 ebuild 文件中:

pkg_pretend() {
    if use amd64 && has_multilib_profile && \
        [ "${DEFAULT_ABI}" != "amd64" ]; then
        eerror "This ebuild doesn't currently support changing your default ABI"
        die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
    fi

    if use kernel_linux && kernel_is ge 4 1 ; then
        ewarn "Gentoo supports kernels which are supported by NVIDIA"
        ewarn "which are limited to the following kernels:"
        ewarn "<sys-kernel/gentoo-sources-4.1"
        ewarn "<sys-kernel/vanilla-sources-4.1"
        ewarn ""
        ewarn "You are free to utilize epatch_user to provide whatever"
        ewarn "support you feel is appropriate, but will not receive"
        ewarn "support as a result of those changes."
        ewarn ""
        ewarn "Do not file a bug report about this."
    fi

如果我的内核大于或等于 4.1,则会在安装过程中打印出此警告。请注意,我被告知不要提交错误。因此,利用这两种信息,我得出以下结论:

要使用 346.59 驱动程序,我的内核不能低于 3.11,也不能大于或等于 4.1,并且在使用 multilib 系统时无法启用 32 位模拟。


作为最后的选择,您还可以考虑使用新司机,它可作为大于或等于 3.19 的内核中的标准驱动程序。

相关内容