马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Ubuntu 20.04 安装 NVIDIA 驱动:gcc 降级与 Secure Boot MOK 全流程
这篇面对的是「之前试过无数方法都不行」的场景——典型症状是 nvidia-smi 一跑就报 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver。这种「装了但驱动没加载」的局面,通常卡在两个点:驱动要求的 gcc 版本和系统自带 gcc 9 不匹配,以及 Secure Boot 开启导致内核模块被拒绝加载。两条都处理掉,重启后基本就通了。
一、安装前后必须先注意的两件事
1. 别乱跑系统升级
sudo apt-get upgrade 可能会导致 Ubuntu 内核被更新,内核一更新,之前装的 nvidia 驱动就作废了。所以装驱动前后这段时间,务必避开这条命令——需要补别的包就只装指定的那个,别做全量升级。
2. nvidia-smi 报错的根因:gcc 版本
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
Make sure that the latest NVIDIA driver is installed and running
原因很明确:Ubuntu 20.04(以及部分 18.04)自带的 gcc 版本是 9,而 nvidia 驱动不支持 gcc-9,编译出的内核模块装不上。解决办法是手动装 gcc-7 并把默认版本切过去。
二、安装 gcc-7 并切换默认版本
sudo apt-get install gcc-7 g++-7
装完之后系统里就有两个版本的 gcc 了,需要指定默认用哪个:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1
优先级数字最高的就是系统默认版本,可以用下面这条确认当前优先级:
sudo update-alternatives --display gcc
g++ 同理:
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1
把之前的 nvidia 卸载干净,再重走一遍安装流程即可。
三、安装 NVIDIA 驱动的实际步骤
1. 卸干净旧驱动
sudo apt-get remove nvidia-*
2. 删掉旧内核
sudo apt autoremove
3. 看系统推荐装哪个版本
sudo ubuntu-drivers devices
根据推荐结果选一个,一般选后面带 recommend 字样的那个版本。示例里选的是 525 版:
sudo apt install nvidia-driver-525
4. 装完必须重启
reboot
四、卡在 87% 与蓝屏:Secure Boot 的 MOK 三步
顺利的话装完直接生效;不顺的就到了最关键的一步——安装到 87% 卡住并弹出 configuring secure boot 界面。注意:直接点界面的确定/OK 没用,必须用键盘指令控制。
第一步:设密码
Ubuntu 体系按 Ctrl + PgDn 两个键同时按,会弹出输入密码的界面,让你设置密码(8–16 位),需要设置两次,两次输入相同。设完它会接着把 87% 那步装完。这个密码一定要记着,后面还会用。
第二步:重启遇蓝屏,进 Enroll MOK
装完 reboot,重启会进到一个蓝色界面,别慌。按这个顺序按:
- 键盘上下键选 Enroll MOK,回车;
- 再上下键选 continue,回车;
- 再选 yes,回车;
- 最后弹出输入密码界面,输入上一步设置的那个密码。
第三步:再重启一次验证
reboot
重启后看驱动是否装好:
nvidia-smi
能打印出显存和驱动版本,整条链路就通了。
五、排查清单
- 还是报 couldn't communicate:回头确认
update-alternatives --display gcc 里默认是不是 gcc-7;
- 驱动模块没加载:
dmesg | grep -i nvidia 看有没有 signature 相关的拒绝信息,有的话就是 MOK 没 enrollment 成功;
- 忘记 MOK 密码:只能进 BIOS 关掉 Secure Boot 或者重置 MOK 密钥,比较麻烦,所以当初设的时候记下来;
- 内核升级后驱动失效:重新
sudo apt install --reinstall nvidia-driver-525 再 enrollment 一轮。
小结
Ubuntu 20.04 装 NVIDIA 驱动,真正决定成败的就两件事:把默认 gcc 切到 7(解决驱动编译),以及走完 Secure Boot 的 MOK enrollment(解决模块加载)。前者在装驱动之前处理,后者卡在 87% 和重启蓝屏那两步,跟着键盘提示走一遍就好。全程别碰 apt-get upgrade,不然内核一换前面全白做。
qidao123.com企服评测-应用市场 编辑提示 |