Ubuntu安装Nvidia470驱动踩坑

news/2024/12/13 5:00:30/

实验室有个几年前的服务器,装了GTX 1080Ti显卡。之前我装了NVIDIA最新的470版本驱动,通过 nvidia-smi 命令也可以看到显卡工作情况,因此我以为搞定了。

然而今天打算跑个程序的时候,突然发现Torch报错了:

torch._C._cuda_init()

RuntimeError: CUDA error: unknown error

试了网上的一些方法,也没有用。

而且发现,最简单的:torch.tensor(1).cuda() 也会报这个错。

于是打算重新安装驱动。

从NVIDIA官网下载了最新版的470.63.01驱动再安装,却出错了。到/var/log/nvidia-installer 里面看,出错的原因在

executing: ‘/bin/sh ./libglvnd_install_checker/check-libglvnd-install.sh’…

Core dumped

在网上搜了半天,都没找到合适的解决方案。

收到某个帖子启发(忘记哪一篇了),首先使用

 ./NVIDIA-Linux-x86_64-470.63.01.run -x  (通过 --help 可以查看可以使用的参数)

将安装包进行解压,然后找到脚本/libglvnd_install_checker/check-libglvnd-install.sh,运行之:

sh -x check-libglvnd-install.sh  (这里的-x是用来看执行到第几行)

结果发现:

LD_LIBRARY_PATH=/home/zf/temp/NVIDIA-Linux-x86_64-470.63.01/libglvnd_install_checker /home/zf/temp/NVIDIA-Linux-x86_64-470.63.01/libglvnd_install_checker/glvnd_check glx libGL.so.1

Core dumped

这时候看出,是 glvnd_check glx libGL.so.1 这行代码出了问题。手动运行也发现了,这样代码会报错:Segmentation fault + Core dumped。

这时候我做了一个蠢事!

我想:既然是libgl的问题,是不是把它全删了就完事了。于是我直接sudo apt remove libgl*

结果一下子删了几百个包。不过这时候NVIDIA 驱动可以装了。

更蠢的是我又运行了一下:sudo apt autoremove,结果刚刚装的显卡驱动也没了。于是我很蠢地重启了服务器,结果服务器居然连不上了!

为此我只能用显示屏连接服务器,等待了很久,万幸还能登陆。

结果发现,ping局域网都ping不通了,彻底断网。

于是又搜索半天,使用ip a 查看网络接口,然后再通过修改/etc/network/interfaces手动改网络配置(因为netplan, ifconfig什么的命令都找不到),然后sudo systemctl restart network-manager; sudo systemctl restart networking,总算是可以访问局域网了。

但是我发现虽然在/etc/network/interfaces里面加了dns-nameservers,结果ping baidu.com 还是不行。于是只好手动在/etc/resolv.conf里面添加。一通操作,居然成功了!可以连网了。

于是我继续研究NVIDIA驱动的问题,这时候我发现,其实只要把那几个.so文件删了就行了,根本不需要apt remove

首先,locate -b 'libGL.so.1',发现是在/usr/lib/x86_64-linux-gnu/libGL.so.1这个位置。

ls /usr/lib/x86_64-linux-gnu/ | grep libGL

出现了不少信息

libGLdispatch.so.0
libGLESv1_CM_nvidia.so.1
libGLESv1_CM_nvidia.so.470.63.01
libGLESv1_CM.so
libGLESv1_CM.so.1
libGLESv1_CM.so.1.2.0
libGLESv2_nvidia.so.2
libGLESv2_nvidia.so.470.63.01
libGLESv2.so
libGLESv2.so.2
libGLESv2.so.2.1.0
libGL.so
libGL.so.1
libGL.so.1.7.0
libGLX_indirect.so.0
libGLX_nvidia.so.0
libGLX_nvidia.so.470.63.01
libGLX.so
libGLX.so.

注意,这些是我安装驱动之后的。

由于我发现,删除了libGL.so.1之后,还会有类似的错,于是我直接把这些libGL开头的.so文件都删了。(sudo rm /usr/lib/x86_64-linux-gnu/libGL*

然后重新安装驱动,成功了!不得不说NVIDIA的安装程序真的脑有病,这几个库文件删除了倒是可以在安装驱动的时候自动地恢复,但是如果没有删除,却会出现很难排查的错误。

折腾了大半天,总算是搞定了,所以记录一下,帮助一下可能踩坑的人。

装程序真的脑有病,这几个库文件删除了倒是可以在安装驱动的时候自动地恢复,但是如果没有删除,却会出现很难排查的错误。

折腾了大半天,总算是搞定了,所以记录一下,帮助一下可能踩坑的人。


http://www.ppmy.cn/news/142102.html

相关文章

Thinkpad T470 内置电池问题

进入BIOS模式,选择F1,找到Power->disable built-in battery选项,选择enter Temporarily disable battery for servicing the system. Afterselecting this item, the system will be automatically powered off, then ready to be servic…

t470换屏线_硬件笔记之Thinkpad T470P更换2K屏幕

0x00 前言 手上的Thinkpad T470P屏幕是1920x1080的屏幕,色域范围NTSC 45%,作为一块办公用屏是正常配置,但是考虑到色彩显示和色域范围,计划升级到2K屏幕。 2k屏幕参数如下,已经达到了视网膜级别,而且色域提升到了72%,颜色显示深度更高。 0x01 注意要点 拆机换屏的时候,…

t470键盘拆解_Thinkpad 二手T470笔记本拆解|支持双硬盘|拆机教程

可靠的品质还有小红点这些经典的设计就是它最大的卖点,尤其是T系列,可以说是商务本中的典范了! 市场竞争越发激烈,消费者可选择的商务本越来越多,那么作为商务本的始祖,ThinkPad 2017年又有什么大招呢?全新的ThinkPad T470在继承经典设计与ThinkPad独立思考的同时,还带…

c# 文件下载的前后端实现(RestSharp+WPF)

后端返回文件实现: 在 .NET 项目中添加一个 API 接口,用于生成文件并返回。 在接口中获取前端传递的相关数据生成文件。 返回对应文件流程 WPF实现下载: 在 WPF 窗口中添加一个按钮下载文件。 在按钮的 Click 事件中,调用生成…

t470键盘拆解_做工保持良好水准 ThinkPad T470笔记本拆机解析

T470是ThinkPad T系列的最新一代产品,也许在如今这个笔记本逐渐轻薄化的时代中T470显得并不是那么显眼:既没有X1 Carbon那种超轻薄的机身,也没有T470S配备的超窄屏幕边框,但是作为T系列的主力机型,T470却有着一种中庸的优秀,那就是实用性和易用性的优秀表现。 相比上一代…

t470键盘拆解_张大妈 ThinkPad T470p 首篇 开箱拆机晒物

张大妈 ThinkPad T470p 首篇 开箱拆机晒物 2017-06-18 09:34:38 26点赞 54收藏 90评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情 购买理由 之前大学时预算有限,撸了一个E520起就对Thinkpad是分心水,直到有一次在体验店…

HP台式计算机470配置,HPProBook470G1笔记型电脑.PDF

HPProBook470G1笔记型电脑.PDF 資料表 HP ProBook 470 G1 筆記型電腦 HP ProBook 纖薄耐用,且足以承受您的工作量。 HP 推薦使用Windows 。 HP ProBook 的出色效能讓您無往不利,更針對長時間埋首 電腦的辦公族,全速提升您的工作效率與生產力&…

g470联想计算机,联想笔记本g470系列的参数详解

笔记本现在是一件比较常见的数码产品,而且现在市面上比较不错的笔记本也就那么几个牌子,其中比较不错有联想, 戴尔 和华硕。这是比较不错的几个 笔记本电脑 。而今天要给大家介绍的这款笔记本电脑是联想笔记本g470系列,这个系列的…