|
本帖最后由 ggdh 于 2020-12-13 20:51 编辑
需求场景:kernel 太老了,无法使用Zen2的睿频,或者运行一些程序报错说内核太老无法运行,
网上有很多教程,但我还是折腾了半天,走了一些弯路,把过程放到这里供大家参考。
0,签署知情同意书
升级kernel的风险,包括但不限于:系统无法启动,数据丢失,硬件无法工作,以及由此引发的失眠,焦虑,师兄被迫延期毕业,老板心脏病发作送ICU等。。。
1,升级kernel
a) 查看当前kernel
b) 添加ELPepo源(需要联网)
- sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
复制代码 centos7:
- sudo yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
复制代码 centos8:
- sudo yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
复制代码
c)安装最新的主线内核(kernel-ml,main line kernel)
- sudo yum --enablerepo=elrepo-kernel install kernel-ml
复制代码 然后重启:
d) 启动到新安装的kernel(可能需要的步骤)
重启后用a步的方法确认kernel升级成功,如果没有升级成功,说明没有启动到新安装的kernel,那么需要进行下面的操作:
- sudo vim /etc/default/grub
复制代码 把其中的GRAB_DEFAULT改成
GRUB_DEFAULT=0
意思是默认启动第一个kernel(也就是新装的kernel)
运行
- sudo grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码 使刚才的设置生效,然后重启。
2,重装Nvidia显卡驱动和cuda 11
更新kernel之后,nvidia显卡驱动会失效,这时候运行
会显示
"NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running."
因此需要重新安装驱动,直接重装驱动是不行的,重装驱动需要kernel-devel 和kernel-header这两个包的版本和当前kernel的版本一致,按照下面的步骤运行:
a)安装dnf(centos 7 专有步骤)
dnf是yum的升级版
这一步主要是为了使用dnf的--allowerasing功能
b)安装kernel-devel kernel-header
到https://elrepo.org/linux/kernel/el8/x86_64/RPMS/(centos 8)或者
https://elrepo.org/linux/kernel/el7/x86_64/RPMS/(centos 7)查看当前有哪些内核版本
然后记住刚才安装的内核版本号,记为XXX
然后输入:
- sudo dnf --allowerasing --enablerepo=elrepo-kernel install kernel-ml*-XXX*
复制代码 这里如果不用--allowerasing,会提示kernel-ml-header 等会和现在的包冲突。这时候不要用yum remove kernel-ml-header去删除冲突的包(不要问我怎么知道的)
c)安装版本匹配GCC (可能需要的步骤)
如果这时候直接安装显卡驱动,有可能会提示
”The kernel was built with gcc (GCC) 9.3.1, ....., but the current compiler version is ....“
意思是编译内核的gcc版本和当前的gcc版本不一致,如果强行编译可能会出问题,我试过强行编译,会失败,这时候退出驱动安装,先安装版本匹配gcc
centos7:
- sudo yum install centos-release-scl
- sudo yum install devtoolset-9
- source scl_source enable devtoolset-9
复制代码 centos8:
- sudo dnf install gcc-toolset-9
- source /opt/rh/gcc-toolset-9/enable
复制代码 这里安装的是gcc 9版本,实际请跟具安装驱动时的提示安装相应的版本。
如果想自动加载gcc 9 版把上面的命令中的最后一行加到~/.bashrc中
d) 安装显卡驱动
这一步还需要屏蔽nouveau驱动,但是这里是重装Nvidia驱动,所以这步省略了,如果是新装Nvidia驱动,请参考网上的教程屏蔽nouveau驱动。- sudo sh NVIDIA-Linux-x86_64-450.66.run
复制代码 如果安装过程中出错,还可怀疑是kernel 版本和驱动不兼容,先确保显卡的驱动是最新版(因为通常是kernel先更新,导致的显卡驱动不兼容),或者是把你的kernel版本号和nvidia作为关键词,去google搜索一下,看看别人是不是都有这个问题。
安装完成后运行
检查显卡驱动是否安装成功
e) 安装cuda 11
运行
- sudo sh cuda_11.0.3_450.51.06_linux.run
复制代码 安装cuda程序,其中可以不用安装驱动了。
安装完成后设置环境变量
把下面三句话加到~/.bashrc中
- export CUDA_HOME=/usr/local/cuda
- export PATH="/usr/local/cuda/bin:$PATH"
- export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
复制代码 然后运行
使设置生效
下面验证cuda的安装,依次运行下面的命令
- cd /usr/local/cuda/samples/1_Utilities/deviceQuery
- make
- ./deviceQuery
复制代码
|
评分 Rate
-
查看全部评分 View all ratings
|