问题描述:
其他人升级系统内核,高低版本内核均无法使用nvidia-smi命令查看显卡使用情况。
在高版本内核上安装旧版本英伟达驱动(430.15版本)后发现无法切换至命令行窗口,并且重启以后黑屏显示“recovering journal”,怎么操作都没反应。
服务器硬件配置:4xTitan RTX
系统版本:ubuntu 18.04.01
高版本内核:4.15.0-112
低版本内核:4.15.0-29
新驱动版本:435.21
老驱动版本:430.50
CUDA版本:10.0.130_410.48
cudnn版本:7.6.3.30-1
GCC:7.5.0
思路分析:
本来以为是因为移动了home目录下的文件导致磁盘出现了问题。在尝试了grub-fsck以及进入系统后使用fsck以及e2fsck均失败后发现问题不是出现在这里。因为有两个内核,一个是安装时附带的旧版本的,一个是新版本的(可能别人升级的)。选择旧版本的内核可以进入系统,选择新版本的就报错。说明旧版本的内核与显卡驱动可以正常的工作。但是在旧版本上无法使用nvidia-smi命令,推测需要重装显卡驱动。然而安装当时装机时备份的430版本驱动一直失败,各种问题。于是下载了新的版本驱动(于是到英伟达官网下载最新版的titan rtx驱动(435版本),打算在就内核系统中安装新驱动,成功进入系统以后把高版本的内核删除掉,这样就既可以进入系统也可以使用显卡了。没想到还是失败!安装435新驱动以后,低版本内核系统也进不去了,出现了和高版本内核系统一样的问题。f**k!
突然灵光一闪,选择进入高版本内核系统,进入安全模式,手动卸载所有nvidia/cuda/cudnn相关的资料及库文件。使用nvidia-smi可以显示显卡信息,回退至grub界面进入高版本内核系统突然发现可以正常进入;显示器显示异常,再次清理nvidia/cuda/cudnn相关的资料及库文件(可能没必要)。
使用ctrl+alt+f6进入CLI界面,安装435版本显卡驱动。一路顺利安装。再次进入GUI系统以后使用nvidia-smi可以显示显卡信息。使用之前备份的cuda10以及cudnn7安装并测试样例程序没有问题。跑起代码也是没有问题,很开心!
解决方案:
1.在进入Ubuntu系统黑屏之前按esc或者shift键(同时按也可以)。按一次就够了,按多次会直接进入grub界面。
使用fsck可以修复文件系统。
使用root模式可以进入系统,卸载驱动或者删除一些软件,类似于windows的安全模式。
使用sudo fsck /dev/sda或者e2fsck dev/sda进行磁盘修复
方案一没有解决问题。
2.
2.1-进入高版本内核系统的root模式,卸载英伟达相关的驱动、cuda、cudnn所有文件。发现GUI界面可以进入。
2.2-进入高版本内核系统的CLI模式安装最新版本的显卡驱动。切换至GUI界面可以使用nvidiasmi命令。
2.3-安装之前备份的CUDA10、cudnn7,测试样例程序没有问题。安装完毕。
方案二完美解决问题。
总结:
这次问题的起因是升级后的linux内核对旧版本的显卡驱动不兼容,所以nvidia-smi命令无法使用。强行在新内核上安装旧版本驱动失败,导致无法进入GUI界面。解决方案是进入grub界面后选择高版本的内核的高级启动选项,使用root模式启动。然后在root模式下卸载掉所有哦英伟达相关的文件后再进入普通CLI模式下安装最新版本的驱动(可能适配了比较新的Linux内核)。