我希望这就像我在 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 设置无关。我坚持我的声明,您可以:
- 将 NVIDIA 驱动程序冻结在 3.11.x,因为这是支持 2.6 系列内核的最后一个驱动程序,或者:
- 将您环境中的内核至少更新到 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 的内核中的标准驱动程序。