NVIDIA 官方的 450.66 驱动有点问题,安装会装不上,让你看 /var/log/nvidia-installer.log 文件。
里面报的是 check-libglvnd-install.sh 的 Internal error,其他提示是没有的。
$ sh NVIDIA-Linux-x86_64-450.66.run -x
把驱动解压开,使用
$ cd NVIDIA-Linux-x86_64-450.66
$ sh -x libglvnd_install_checker/check-libglvnd-install.sh
会发现里面提示 /usr/lib64/libGLESv1_CM.so.1 的 code 139 错误。
参考 sh -x check-libglvnd-install.sh 里面的命令:
$ ./libglvnd_install_checker/glvnd_check gl libGLESv1_CM.so.1
得到的是 error eglGetPlatformDisplay failed。
是个跟 NVIDIA 自己的 wayland 的那套 libglvnd 有关的错误。
我猜 NVIDIA 的意思是说只有在已经安装着 NVIDIA 驱动的电脑上(也就是已经有了 NVIDIA 的版本的 libGLESv1_CM.so.1)才可能安装成功 450.66 驱动
好吧,解决方案来了:
check_libglvnd_winsys()
{
result=`LD_LIBRARY_PATH="${BINDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" "$BINDIR/$HELPER_PROGRAM" $1 $2`
code=$?
case $code in
$TEST_EXIT_CODE_SUCCESS) LIBGLVND_LIBRARIES="$2 $LIBGLVND_LIBRARIES" ;;
$TEST_EXIT_CODE_NON_LIBGLVND) NON_LIBGLVND_LIBRARIES="$2 $NON_LIBGLVND_LIBRARIES" ;;
$TEST_EXIT_CODE_NO_LIBRARY) MISSING_LIBRARIES="$2 $MISSING_LIBRARIES" ;;
$TEST_EXIT_CODE_VERSION_MISMATCH) INVALID_LIBRARIES="$2 $INVALID_LIBRARIES" ;;
139) LIBGLVND_LIBRARIES="$2 $LIBGLVND_LIBRARIES" ;;
*)
echo Internal error:
echo "$result"
exit $RESULT_ERROR
esac
return $code
}
看到那个 139 了吗?那行像我那么写,也就是把 code 139 也认为是成功的。保存。
然后
$ cd NVIDIA-Linux-x86_64-450.66
$ ./nvidia-installer
再次安装就可以了。一定要运行解压了的文件夹里面的 nvidia-installer。再去运行那个 .run 没用。