openSUSE Tumbleweed 5.8.7 内核安装 NVIDIA 450.66 官方驱动的解决方案

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 驱动 :grin:

好吧,解决方案来了:

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 没用。

2赞

:heart: