文章目录
- 一、报错提示
- 二、解决方案
- 2.1 原因1的解决办法
- 2.2 原因2的解决方案
一、报错提示
- Ubuntu20.04出现Failed to initialize NVML: Driver/library version mismatch问题
- NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.
二、解决方案
如果是这两种报错,则可能是两个原因:
原因1:系统自动升级导致内核版本和Nvidia驱动版本不匹配;
原因2:操作系统的BIOS的设置问题;
2.1 原因1的解决办法
- 首先查看下Nvidia驱动的版本和内核的版本
ls /usr/src | grep nvidia
uname -a
- 然后卸载nvidia驱动程序
sudo apt-get purge nvidia*
- 查询自带的驱动
ubuntu-drivers devices
- 选择recommend标志的驱动程序安装
sudo apt install XXXXXX
- 安装完毕后验证一下,观察是否会报错
sudo modprobe nvidia
- 最后看是否正常
nvidia-smi
参考链接:
- https://blog.csdn.net/ccsodefhy/article/details/122846921
- https://blog.csdn.net/weixin_43994864/article/details/116143207
- https://blog.51cto.com/u_4029519/5909904
- https://www.volcengine.com/theme/2267486-J-7-1
- Ubuntu:解决显卡驱动问题NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver._ubuntu
- Nvidia-smi gives “No devies were found” - incorrect gcc version
2.2 原因2的解决方案
方法1. 禁用 Secure Boot
- 进入 BIOS 设置,找到 Secure Boot 选项,并将其禁用。
- 保存更改并退出 BIOS,然后重新启动系统。
- 之后再尝试加载 NVIDIA 模块:
sudo modprobe nvidia
方法2. 手动签名内核模块(如果你需要启用 Secure Boot):
如果你不想禁用 Secure Boot,可以手动签名 NVIDIA 模块。以下是大致步骤:
- 安装 mokutil工具:
sudo apt-get install mokutil
- 生成自签名证书:
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=My NVIDIA Module Signing Key"
- 注册 MOK(Machine Owner Key):
sudo mokutil --import MOK.der
你将被要求设置一个密码,这将在下一次启动时使用。
- 重启系统并进入 MOK 管理界面:
- 系统重启时,系统会提示你进入 MOK 管理界面,在那里你可以选择“Enroll MOK”并输入刚才设置的密码。
- 签名 NVIDIA 模块:
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n nvidia)
- 再次加载 NVIDIA 模块:
sudo modprobe nvidia
注意事项:
- 签名工具和步骤:确保你使用了系统当前内核版本的 sign-file 工具,路径可能会因内核版本而不同。
- 恢复操作:如果出现问题,你可以随时禁用 Secure Boot 或删除 MOK 来回到原始状态。
∼ O n e p e r s o n g o f a s t e r , a g r o u p o f p e o p l e c a n g o f u r t h e r ∼ \sim_{One\ person\ go\ faster,\ a\ group\ of\ people\ can\ go\ further}\sim ∼One person go faster, a group of people can go further∼