运维系列&AI系列&Lenovo-G双系统系列(前传-装之前搜索的):ubuntu 显卡驱动与gcc版本不匹配,升级gcc为9.3.0&&&ubuntu重启后显卡挂了:报错NVIDIA-SMI has




一、 ubuntu 显卡驱动与gcc版本不匹配,升级gcc为9.3.0

先决条件

root管理权限

su root
# 或者 
sudo root

准备工作

1_1下载GCC-9.3.0安装包
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz
1_2 解压安装包
tar -xvf gcc-9.3.0.tar.gz
1_3进入GCC解压目录
cd gcc-9.3.0
2_1下载依赖版本gmp-6.1.0
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gmp/gmp-6.1.0.tar.xz

解压

tar -xvf gmp-6.1.0.tar.xz

改名成需要的目录名

mv gmp-6.1.0 gmp
2_2 下载依赖版本mpfr-3.1.4
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/mpfr/mpfr-3.1.4.tar.gz

解压

tar -xvf mpfr-3.1.4.tar.gz

改名成需要的目录名

mv mpfr-3.1.4 mpfr
2_3 下载依赖版本mpc-1.0.3
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/mpc/mpc-1.0.3.tar.gz

解压

tar -xvf mpc-1.0.3.tar.gz

改名成需要的目录名

mv mpc-1.0.3 mpc

其依赖关系为 gcc->mpc->mpfr->gmp->m4

编译安装

1 设置配置信息

建立编译目录,并进入

mkdir gcc-build
cd gcc-build
#(/usr/local/gcc-9.3.0是新版本GCC的安装目录,可以更换,原始gcc运行目录为/usr/bin/gcc)
../configure --prefix=/usr/local/gcc-9.3.0 --disable-multilib --enable-languages=c,c++
2 编译
# 4是cpu核心数,可根据cpu核数设置,因为编译过程很长,尽可能使用全部cpu资源
make -j 4
3 安装
make install -j 4

替换命令链接和配置环境变量

1. 替换gcc cc命令的链接
ln -s /usr/local/gcc-9.3.0 /usr/local/gcc
ln -s /usr/local/gcc-9.3.0/bin/gcc /usr/local/cc

如果发生错误 可以先备份原来的链接比如

mv /usr/local/gcc /usr/local/gcc.bak
mv /usr/local/cc /usr/local/cc.bak
2. 配置环境变量

将以下配置写入环境变量中,如全局变量/etc/profile个人变量~./.bashrc 文件最后

export PATH=/usr/local/gcc/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/gcc/lib64
export MANPATH=/usr/local/gcc/share/man:$MANPATH
3. 使用 . /etc/profile 或 . .bashrc 可以更新环境变量(注意有一个’.')

检查安装是否成功

使用以下命令
gcc -v
g++ -v
cc -v
可以得到类似的结果说明安装成功
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-9.3.0/libexec/gcc/x86_64-pc-linux-gnu/9.3.0/lto-wrapper
目标:x86_64-pc-linux-gnu
配置为:../configure --prefix=/usr/local/gcc-9.3.0 --disable-multilib --enable-languages=c,c++
线程模型:posix
gcc 版本 9.3.0 (GCC) 
正常安装显卡驱动或cuda即可,注意gcc与cuda的匹配。

二、 ubuntu重启后显卡挂了:报错NVIDIA-SMI has failed

ubuntu重启以后开机显卡挂了

nvidia-smi报错信息:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

中文意思:NVIDIA-SMI失败了,因为它无法与英伟达驱动程序通信。请确保安装并运行了最新的NVIDIA驱动程序

也就是说他的驱动程序不行了,得安装新版本驱动。然后一顿重装驱动,解决,但是次数多了恐怕不行。

深究其底层原因

重启之前好使,说明驱动正常,重启之后不好使,说明驱动损坏。不一定每次重启都挂掉驱动。检查原因,是因为自动更新内核导致,只要更新了内核,原来的驱动向上不兼容导致出问题。

如何解决

1. 禁用更新啊,内核不更新不就

2. 重装驱动啊,这不就是我原来的笨方法吗

3. 自动化重装驱动啊,好的,重点来了

一个非常好的想法是我动态的根据内核版本来对我的驱动进行编译(事实上就是重装,但是期望他是自动执行的)。但是如何实现呢?
我可不会写代码啊,问题不大,前任已经写好啦。呐:DKMS全称是Dynamic Kernel Module Support,它可以帮我们维护内核外的这些驱动程序,在内核版本变动之后可以自动重新生成新的模块。 不只是显卡驱动是这个bug啊,多数都有这个毛病。

命令命令

sudo apt-get install dkms
sudo dkms install -m nvidia -v 455.23.04  #455.23.04 是安装驱动的版本

查看dkms管理的驱动
dkms status 显示
没有执行sudo dkms install -m nvidia -v 455.23.04之前
之后
nvidia, 455.23.04, 5.8.0-38-generic, x86_64: installed







loving灬漠然丶

ubuntu 显卡驱动与gcc版本不匹配,升级gcc为9.3.0

ubuntu重启后显卡挂了:报错NVIDIA-SMI has failed

posted @ 2024-09-01 20:14  坦笑&&life  阅读(74)  评论(0编辑  收藏  举报  来源