安装Nvidia 375/384驱动后Ubuntu无法启动,Tesla K20适配Tensorflow遇阻
我之前也碰到过类似的Tesla K20在老Ubuntu版本上的驱动兼容矛盾,结合NVIDIA官方文档和实际调试经验,给你梳理一套可行的解决思路:
你的核心矛盾很明确:
- 304版本驱动能让系统正常启动,但版本过低不满足CUDA 8.0(要求≥361)的最低要求,无法运行依赖CUDA的TensorFlow
- 安装361及以上版本驱动(如375、384)后系统重启崩溃,必须进入恢复模式卸载才能恢复
一、先明确Tesla K20的驱动支持范围
Tesla K20属于Kepler架构,NVIDIA官方对该架构的驱动支持到470.x系列(这是最后支持Kepler的长期支持分支),361-470之间的版本理论上都适配,但启动失败大概率是安装方式或系统组件冲突导致的。
二、避开冲突的驱动安装步骤
不要用Ubuntu自带的“附加驱动”工具或简单的apt install安装,建议用NVIDIA官方.run包手动安装,步骤如下:
彻底清理现有驱动残留
先进入恢复模式,挂载系统分区为可读写状态:mount -o rw,remount /卸载所有NVIDIA相关组件:
apt purge nvidia* apt autoremove rm -rf /usr/local/cuda*禁用nouveau开源驱动
这是导致高版本闭源驱动冲突的常见原因,创建禁用配置:echo -e "blacklist nouveau\noptions nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf更新initramfs使配置生效:
update-initramfs -u重启系统,此时系统会进入纯命令行模式(如果没自动进入,按
Ctrl+Alt+F1切换到tty1控制台)。安装适配的稳定驱动版本
选择同时支持Tesla K20和CUDA 8.0的版本,比如390.147(这个版本是CUDA 8.0兼容的较高稳定版本,且完美支持Kepler架构)。
先给.run安装包赋予执行权限:chmod +x NVIDIA-Linux-x86_64-390.147.run执行安装时添加关键参数避免桌面环境冲突:
./NVIDIA-Linux-x86_64-390.147.run --no-opengl-files --no-x-check--no-opengl-files:跳过OpenGL组件安装,避免和Ubuntu桌面环境的OpenGL库冲突导致启动失败--no-x-check:安装时不检查X服务器状态,适合纯命令行环境安装
验证驱动安装结果
重启系统后,执行以下命令检查GPU状态:nvidia-smi如果能正常显示Tesla K20的GPU信息、驱动版本,说明驱动安装成功。
三、安装CUDA 8.0并配置环境
- 下载对应Ubuntu版本的CUDA 8.0.run安装包,执行安装时,不要选择安装驱动(我们已经手动装了兼容的390版本),只勾选安装CUDA Toolkit和Samples。
- 配置环境变量,编辑
~/.bashrc文件:
使配置立即生效:echo "export PATH=/usr/local/cuda-8.0/bin:\$PATH" >> ~/.bashrc echo "export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:\$LD_LIBRARY_PATH" >> ~/.bashrcsource ~/.bashrc - 验证CUDA是否正常工作:
编译并运行CUDA Samples中的设备查询程序:
如果输出末尾显示cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery make ./deviceQueryResult = PASS,说明CUDA配置成功。
四、安装适配的TensorFlow版本
TensorFlow 1.x系列支持CUDA 8.0,推荐安装最后支持CUDA 8.0的稳定版本:
pip install tensorflow-gpu==1.15.5
验证TensorFlow是否能识别GPU:
import tensorflow as tf print(tf.test.is_gpu_available())
如果输出True,说明整个环境配置完成,可以正常运行TensorFlow了。
内容的提问来源于stack exchange,提问作者laradov

